20212909 2021-2022-2 《网络攻防实践》实践八报告
20212909 2021-2022-2 《网络攻防实践》实践八报告
一、实践内容
1.动手实践内容一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
2.动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
3.分析实践任务一
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
4.分析实践任务二
Windows 2000系统被攻破并加入僵尸网络
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
(2)僵尸网络是什么?僵尸网络通常用于什么?
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
(5)那些IP地址被用于攻击蜜罐主机?
(6)攻击者尝试攻击了那些安全漏洞?
(7)那些攻击成功了?是如何成功的?
二、实践过程
1.动手实践任务一
- 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(1)在kali命令行中输入命令file RaDa.exe
,打开PEid查看运行平台和加壳工具,使用超级巡警脱壳机,对rada恶意代码样本进行脱壳处理,生成RaDa_unpaked.exe。
发现RaDa是32位PE文件,还是个GUI文件,加壳工具为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo,运行平台为Win32。
(2)在kali中输入命令strings RaDa.exe
分析RaDa.exe,发现都是乱码,输入命令strings RaDa_unpaked.exe
,分析脱壳后的文件,可以发现一些有用的信息。
发现作者是:Raul Siles && David Perez
2.动手实践任务二
- 分析crackme1.exe
(1)在WinXP_attacker命令行中输入crackme1.exe +不同的个数的数字,来进行参数的猜测,根据输出,猜测参数的个数应该是1个。
(2)打开WinXP_attacker的IDA Pro,用它打开分析crackme1.exe,打开发现一些有用的明文信息!
(3)Ctrl +F12
打开函数关系调用图,发现关键C语言字符strcmp
和关键代码段401280。
(4)在Functions window窗口打开代码段401280,通过查看汇编代码段可以看到一些信息,具体看图片。
猜测密码是: "I konw the secret"。
(5)在命令行输入命令crackme1 "I konw the secret"
,验证猜想,成功!
- 分析crackme2.exe
(1)同样在在WinXP_attacker命令行中输入crackme2.exe +不同的个数的数字,来进行参数的猜测,根据输出,猜测参数的个数应该是1个。
(2)打开WinXP_attacker的IDA Pro,用它打开分析crackme2.exe,打开发现一些有用的明文信息!
(3)Ctrl +F12
打开函数关系调用图,发现关键C语言字符strcmp
和关键代码段401280。
(4)F12
打开Flow chart,查看程序流程图,猜测密码是crackmeplease.exe
,输入发现不对
(5)根据代码分析,程序名应该是crackmeplease.exe,在命令行中输入copy crackme2.exe crackmeplease.exe
,复制crackmeplease.exe并改名为crackmeplease.exe,再次用crackmeplease.exe尝试参数个数,发现通过了第一层判断。
猜测密码是: "I konw the secret"。
(6)在命令行输入命令crackmeplease.exe "I konw the secret"
,验证猜想,出现了没有出现过的输出,验证成功。
3.分析实践任务一
(1)在kali中输入md5 RaDa.exe
,输出md5值。
(2)打开监视软件Process Explorer,然后运行脱壳后的RaDa,也就是RaDa_unpacked.exe。在RaDa进程的属性中,我们可以看出许多有用的信息。
- RaDa.exe先通过HTTP,请求了10.10.10.10\RaDa\RaDa_commands.html
- 将RaDa.exe缓存到C:\RaDa\tmp文件夹下
- 修改注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,将RaDa.exe设为开机启动
- 将RaDa.exe文件存放到C:\RaDa\bin文件夹下
- 发动DDOS远程攻击
至此,我们可以回答以下问题:
- 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
MD5摘要为caaa6985a43225a0b3add54f44a0d4c7
基本信息为:这是个32位的PE文件,在Windows GUI界面下运行。 - 找出并解释这个二进制文件的目的;
利用HTTP协议,发动DDOS攻击
恶意修改注册表信息,将该文件设为开机启动,使其每次开机都能发动攻击,擅自对主机做上传下载操作 - 识别并说明这个二进制文件所具有的不同特性;
RaDa.exe存放在宿主的C盘的RaDa文件夹下,然后通过修改注册表,让它开机启动,使得每当宿主主机启动就能发起DDOS攻击。
*识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
在前面的实践一中可以看出,该文件采用UPX对文件进行加壳。 - 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
应该是一种后门程序。这个文件的主要工作是完成对特定IP地址的DDoS攻击,也有一些控制主机的功能,但不会在其他主机之间进行传播。 - 给出过去已有的具有相似功能的其他工具:
msfvenom - 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以。脱壳之后,用strings命令分析就行,实践一也介绍了。
4.分析实践任务二
- IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称:IRC。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,世界上有超过60个国家 提供了IRC的服务。IRC的工作原理非常简单,
您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可,要加入一个IRC网络,需要发送口令、昵称和用户信息;注册后,会使用JOIN信息加入网络。
IRC使用的端口有:6667(明文传输,如irc://irc.freenode.net)、6697(SSL加密传输,如ircs://irc.freenode.net:6697)等。 - 僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
(1)在wireshark中打开分下材料botnet_pcap_file.dat,输入筛选条件ip.src == 172.16.134.191 && (tcp.dstport == 6667 or tcp.dstport == 6697)
,筛选源地址为172.16.134.191
、目的端口为6667
或6697
的数据包。
分析可得蜜罐主机(IP地址:172.16.134.191)与66.33.65.58
,63.241.174.144
,217.199.175.10
,209.196.44.172
,209.126.161.29
,进行了通信。
(2)在kali中输入sudo apt install tcpflow
安装tcpflow,然后输入命令tcpflow -r /home/kali/Desktop/botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
,这个命令将分析的结果输出到report.xml文件中,
在浏览器中打开分析文件。
(3)使用管道命令cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l
。
查看文件,可以看到一共3461台主机访问了僵尸网络。
(4)使用tcpdump进行分析,输入tcpdump -n -nn -r /home/kali/Desktop/botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > tcpdump.txt;wc -l tcpdump.txt
将分析结果输入到了tcpdump.txt文件下,可以看到有165个IP地址被用于攻击蜜罐主机。
(5)输入命令tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191 and tcp[tcpflags]== 0x12' | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
。
可以看出筛选出的TCP端口有:135(rpc)、139(netbios-ssn)、25(smtp)、445(smb)、 4899(radmin)、 80(http)。
(6)输入命令cpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
,筛选响应的TCP端口。
发现,只有137端口,说明攻击者成功访问了137号端口。137端口主要用于“NetBIOS Name Service”(NetBIOS名称服务)。
(7)使用wireshark,逐一对筛选出的端口进行排查 - 135端口
发现进行了三次握手。 - 139端口
发现了TCP协议、SMB协议和NBSS协议。 - 25号端口
发现进行了三次握手。 - 445端口
发现了可疑程序PSEXESVC.EXE。
PSEXESVC.EXE:在横向移动过程,攻击者通常会使用PsExec在远程主机执行命令。在客户端执行psexec.exe后,如果服务器认证成功,会将psexesvc.exe上传到服务端的ADMIN$目录并作为服务运行,在执行完命令后删除对应的服务和psexesvc.exe。
通过对客户端和服务端的事件日志、注册表、文件系统进行分析,可以从客户端主机获得连接的目的主机,连接时间等信息;从服务端主机可以获得连接的客户端信息,连接时间等信息。
通过图中看出,返回分组中包含\PIPE\ntsvcs,说明这次的攻击成功了。 - 4899端口
发现进行了三次握手。 - 80端口
发现了/NULL.IDA?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...,说明攻击者进行了缓冲区溢出攻击。
发现了分组信息有www.worm.com,说明攻击者使用了蠕虫,但是根据tcp流内容分析,攻击者可能没有攻击成功。
综上,攻击者对445端口的漏洞发起的PsExec蠕虫攻击是成功的。在这次攻击中,攻击者使用PsExec.exe,获得了远程主机的访问权限。
三、学习中遇到的问题及解决办法
P1:RaDa.zip密码
S1:猜的密码是rada,猜对了。
P2:在对crackme.exe分析时,视频中的对汇编代码的分析,有一部分看不懂。
S2:新的IDA似乎可以直接反汇编成一些高级语言,可以通过直接获得关键信息。
四、实践总结
通过本次实验本次实验,让我了解了一些通过恶意代码进行攻击的原理,包括恶意代码的结构、对目标的操作、取证分析等,了解并掌握了更多的分析工具,比如PEiD、超级巡警脱壳机、IDA Pro、process explorer。