20241902 2024-2025-2 《网络攻防实践》第八周作业
1.实践内容
通过本周的实验学习,初步学习了如何对恶意代码样本的分析,包括文件格式和类型的识别、使用工具对其壳进行识别和脱壳、使用字符串提取工具对脱壳后的代码进行分析等,从中找到作者等信息,并进一步分析其特性、目的、防逆向技术等。此外,还学习了如何利用IDA对软件进行动态或静态的分析,寻找特定的输入以获得正确的输出信息。本次实验还利用wireshark、tcpflow等对蜜罐网络被攻击的数据流量进行了分析,探明攻击者的ip、攻击方式和所利用的安全漏洞等信息。
2.实践过程
动手实践任务一
输人命令file RaDa.exe
查看rada.exe的文件格式,可知其为32为的可执行文件,有GUI界面,架构为Intel 80386:
输入命令strings RaDa.exe
查看字符串,为乱码,猜测加了壳:
输入命令RaDa.exe --authors
获得作者等信息:
打开PEid对恶意代码查壳,其壳为UPX 0.89.6:
打开超级巡警虚拟机脱壳器对恶意代码脱壳,获得RaDa_unpacked.exe:
再次查看字符串,获得正确的信息:
将RaDa_unpacked.exe拖入PEid,可见其编写语言为VB 5.0/6.0:
打开IDA,对恶意代码进行分析,在Strings窗口中可见其作者信息,与上述一致,为"Raul Siles & David Perez":
动手实践任务二
尝试运行crackme1.exe,通过传入不同的参数猜测程序运行方式,并file crackme1.exe
查看其文件格式:
打开IDA对crackme1.exe进行分析,在strings中可见上述的返回信息:
依次选择view->graphs->function calls,打开函数调用架构图,可见控制输出的关键函数为sub_401280:
在functions中打开sub_401280查看其代码:
依次选择view->graphs->flow chart查看代码块调用图,结合前述输入尝试,通过比较局部变量arg_0的值和2,可见此程序需要两个参数传入,当输入参数为"I know the secret",获得正确的输出,否则返回不同的错误信息:
验证上述猜想:
对于crackme2.exe的分析与上述流程类似,先进行尝试,再利用IDA进行分析,得到关键函数sub_401280,查看其代码块调用,获得正确的输入参数"I know the secret":
但与crackme1.exe不同的是,我们可以看到对第一个参数也有指定字符串"crackmeplease.exe",所以将crackme2.exe重命名为crackmeplease.exe,尝试输入,可见得到正确返回信息:
分析实践任务一
问题1:输入命令md5sum RaDa.exe
获取其md5值caaa6985a43225a0b3add54f44a0d4c7:
打开Process Explorer后,打开脱壳后的RaDa_unpacked.exe程序:
双击此程序,观察其执行的字符串信息:
问题2:从上述字符信息可见,此程序访问了http://10.10.10.10/RaDa,并请求RaDa_commands.html页面,猜测此页面包含执行命令脚本,并进行了上传/下载文件的操作;创建了路径C:\RaDa\bin和C:\RaDa\tmp,并传入了RaDa.exe文件;进行了DDoS Smurf攻击;对注册表进行了写入、读取和删除操作;扫描了网段192.168.x.x、172.16.x.x、10.x.x.x等。
可见此二进制文件通过与服务器连接,下载后门程序放入系统盘开机自启动,对内网网段进行扫描,执行了DDoS攻击,修改注册表删除痕迹等。
问题3:此二进制文件可以对注册表进行修改,可以将自己复制到系统盘进行自启动,会对内网网段进行扫描,可以发动DDoS攻击。
问题4:在动手实践一中,查询到此程序加了UPX壳以反逆向。
问题5:该程序通过修改注册表、复制到系统盘等实现自启动,还可以对内网进行扫描,通过连接服务器下载后门程序,读取系统信息等,具备木马的特征,并且不具备大量复制和传播感染的特征,所以此样本属于木马(后门程序)类。
问题6:黑防灰鸽子、中国菜刀+webshell。
问题7:从上图可见,以及在动手实践一中,采用了不同方式(命令RaDa.exe --authors
、IDA分析字符串、Process Explorer监听字符串)获取作者的信息为"Raul Siles & David Perez"。
分析实践任务二
问题1:IRC(Internet Relay Chat),即因特网中继聊天,是一种基于客户端-服务器模型的即时通讯协议,允许用户通过互联网进行实时文本交流。它由芬兰人Jarkko Oikarinen于1988年首创。IRC服务器可以连接其他服务器以扩展为一个IRC网络,用户通过连接到一个IRC服务器,可以访问该服务器以及它所连接的其他服务器上的频道。频道类似于聊天室,名称以#符号开始。
当IRC客户端申请加入一个IRC网络时,通常会发送以下消息:
PASS:如果需要,客户端可能会发送服务器密码以进行连接。
NICK:客户端请求在IRC网络上使用的昵称。
USER:客户端发送用户信息,包括用户名、主机名、服务器名和真实姓名等。
JOIN:客户端使用该命令加入一个特定的频道,从而与其他用户进行交流。
IRC一般使用的TCP端口包括:
6667:这是最常用的IRC端口号,用于非加密的通信。
6697:这是用于IRC安全连接(SSL/TLS加密)的端口号。
问题2:僵尸网络(Botnet)是指由黑客通过恶意软件感染大量主机后,形成的一个可一对多控制的网络。这些被感染的主机被称为“僵尸主机”,黑客通过控制协议远程操控这些主机,执行各种恶意任务。
僵尸网络通常被用于以下恶意活动:
分布式拒绝服务攻击(DDoS):利用大量僵尸主机向目标系统发送海量请求,使其瘫痪。
发送垃圾邮件:通过僵尸主机发送大量垃圾邮件,传播恶意软件或进行欺诈活动。
挖掘加密货币:利用僵尸主机的计算能力进行加密货币挖矿。
窃取敏感信息:通过键盘记录器等手段窃取用户密码、信用卡信息等。
在kali中使用wireshark打开botnet_pcap_file.dat,并通过ip.src == 172.16.134.191 && tcp.port == 6667
和ip.src == 172.16.134.191 && tcp.port == 6697
筛选数据包:
问题3:可见蜜罐主机与209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10和209.196.44.172IRC服务器进行了通信。
输入命令apt-get install tcpflow
安装tcpflow:
输入命令tcpflow -r Desktop/botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
,得到三个文件:
问题4:输入命令at 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
以计算有多少不同的主机访问了以209.196.44.172为服务器的僵尸网络,可见共有3461个:
问题5:输入命令tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more >connect_host_ip.txt;wc -l connect_host_ip.txt
分析哪些IP被用于攻击蜜罐主机,可见共有165台主机,详细地址输出到connect_host_ip.txt文件中:
输入命令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
和tcpdump -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开放端口为135:、139、25、445、4899和80,udp开放端口127:
打开wireshark,分别tcp.port ==
对上述端口进行筛选,135端口,只有tcp三次握手的数据包,无攻击行为:
25端口,只有tcp三次握手的数据包,无攻击行为:
139端口,有TCP、SMB和NBSS类型的数据包,未发现攻击行为:
4899端口,只有tcp三次握手的数据包,无攻击行为:
udp端口137,只有NBNS包,负责在基于NetBIOS名称访问的网络上提供主机名和地址映射服务,未发现攻击行为:
80端口:
分析发现大量数据包有无效填充内容发送至靶机,且靶机发送大量的tcp错误传输反馈包,如TCP dup ack(重复应答)、TCP Out-Of-Order(报文乱序)等,故攻击者发起了缓冲区溢出攻击,在后续数据包中,发现有蠕虫文件:
445端口:
在SMB协议数据包中发现PSEXESVC.EXE文件,经搜索得知此文件是一种通过IRC进行通信的Dv1dr32蠕虫。
可见攻击者成功拿到ADMIN和Administrator权限,此计算机被攻破。
问题6:针对80端口,攻击者尝试了缓冲区溢出攻击和蠕虫攻击;针对445端口,攻击者利用Dv1dr32蠕虫病毒进行攻击。
问题7:针对445端口利用Dv1dr32蠕虫病毒进行的攻击取得了成功,获得了系统的管理员权限。
3.学习中遇到的问题及解决
- 问题1:无法将学习通的文件导入虚拟机
- 问题1解决方案:安装vmware tools或生成iso文件导入虚拟机
- 问题2:无法安装tcpflow
- 问题2解决方案:将kali的网络适配器换为桥接模式
- 问题3:crackme1.exe分析后仍无法得到正确输出
- 问题3解决方案:参数两边要加上引号
4.实践总结
通过本次实验,掌握了恶意代码样本的文件类型识别、脱壳和字符串提取技巧,了解恶意代码的编写作者及相关信息。还学习了如何使用IDA Pro分析Crackme程序,学习寻找特定输入以获取成功信息。通过分析恶意代码进一步加深对恶意代码样本的分析能力,包括文件摘要、目的、特性、防止逆向工程技术、分类及相似工具的识别。最后通过分析Snort收集的流量数据,了解IRC、僵尸网络、蜜罐主机等概念,从中分析攻击者的行为模式和攻击所利用的漏洞。通过上述实验不仅提升了技术能力,还培养了分析思维和问题解决的能力。