20222410 2024-2025-1 《网络与系统攻防技术》实验四实验报告
1.实验内容
1.1 本周学习内容
恶意代码是使计算机按照攻击者的意图运行以达到恶意目的的指令集合。类型有计算机病毒, 蠕虫, 恶意移动代码, 后门, 特洛伊木马, 僵尸程序, Rootkit(内核套件),融合型恶意代码等。分析恶意代码的方式通常有系统监控、静态分析和动态分析等方法。
1.2 实验要求
-
恶意代码文件类型标识、脱壳与字符串提取
-
使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
-
分析一个自制恶意代码样本rada,并撰写报告,回答问题。
-
Windows 2000系统被攻破并加入僵尸网络的取证分析实践。
2.实验过程
2.1 恶意代码文件类型标识、脱壳与字符串提取
2.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
kali虚拟机通过file 命令查看文件类型,这是微软 Windows平台、英特尔80386处理器的一个32位PE文件,并且是GUI文件;脱壳前有很多乱码
用PEID查看,发现用了UPX的压缩壳
2.1.2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
2.1.3 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者和编写时间
2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
ida打开crackme1.exe
推测特定输入为I know the secret
在Linux终端测试,发现无法执行,报错指出系统无法找到适合解释或执行这个文件的解释器
解决方法:我先输入命令sudo apt-get install wine
安装Wine,然后再用命令 wine crackme1.exe "I know the secret
来运行它,最后运行成功。
ida打开crackme2.exe
推测特定输入为I know the secret
在Linux终端测试,发现提示有一个身份的问题。
经过考虑,我们发现在powershell输入的第一个参数为./crackmeplease.exe,而不是
crackmeplease.exe。但是在powershell直接输入crackmeplease.exe不会执行,会报错。
去CMD中运行代码,先将crackme2.exe复制为crackmeplease.exe,再输入crackmeplease.exe “I know the secret”
2.3 分析一个自制恶意代码样本rada
用MD5生成RaDa.exe的摘要信息
执行RaDa.exe,发现它将文件RaDa.exe 复制到了 C:\RaDa\bin 目录下
使用process explorer,查看rada程序的执行信息
(1)二进制文件的摘要及其他信息:caaa6985a43225a0b3add54f44a0d4c7,是Windows平台下32位的可执行文件,使用upx加壳
(2)二进制文件的目的:生成文件,反弹连接到10.10.10.10,方便攻击者进行后续攻击
(3)不同特性:自行复制到指定文件夹,修改注册表实现自启动
(4)采用的防止被分析或逆向工程的技术:UPX
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由:该程序并没有自主传播,也没有伪装成正常程序,因此它是病毒和蠕虫也不是木马,而是一个后门程序,绕过了安全性控制而获取对系统的访问权限
(6)给出过去已有的具有相似功能的其他工具:2013年Sercomm在一些采用其硬件的DSL网关被发现有后门后采取的做法。 这个后门被发现是厂商自己加进去的,利用32764端口进行远程访问
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
Raul siles和David Perze,2004。先脱壳,通过ida pro查看。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
- 基于特征码的检测方法
原理:基于特征码的检测方法是通过在恶意软件中查找特定的、独一无二的字节序列(即特征码)来识别恶意软件。这些特征码通常是恶意软件代码中不变的、具有标识性的部分。
实施步骤:
- 使用反汇编工具或字符串提取工具(如strings命令)从恶意软件样本中提取字符串和字节序列。
- 分析这些字符串和字节序列,找出可能的特征码。
- 将这些特征码添加到安全软件的数据库中。
- 当安全软件扫描文件时,它会查找这些特征码,如果找到匹配项,则将该文件标记为恶意软件。
优点:准确度高,误报率低。
缺点:需要不断更新特征码数据库以应对新出现的恶意软件。
- 启发式扫描
原理:启发式扫描通过分析恶意软件的行为和特征来识别潜在的恶意活动,而不是仅仅依赖于特征码。它使用一系列规则和算法来评估文件的可疑程度。
实施步骤:
- 安全软件会分析文件的代码结构、行为模式、资源使用情况等。
- 根据预设的规则和算法,评估文件是否表现出恶意行为。
- 如果文件的行为与恶意软件的行为模式匹配,则将其标记为恶意软件。
优点:能够检测未知和新的恶意软件。
缺点:可能会产生误报,因为某些合法软件的行为可能与恶意软件相似。
- 行为分析
原理:行为分析通过监控恶意软件在系统中的实际行为来识别恶意活动。它通常涉及在沙箱或虚拟环境中运行恶意软件样本,并观察其行为。
实施步骤:
- 在受控的虚拟环境中运行恶意软件样本。
- 监控恶意软件的文件操作、网络通信、进程创建等行为。
- 分析这些行为是否与已知的恶意行为模式匹配。
- 如果匹配,则将该文件标记为恶意软件。
优点:能够检测未知和复杂的恶意软件。
缺点:需要消耗较多的计算资源,并且可能需要较长的时间来进行分析。
- 网络流量分析
原理:网络流量分析通过监控恶意软件产生的网络通信来识别恶意活动。恶意软件通常会尝试与远程服务器进行通信,以接收指令、发送数据或下载额外的恶意代码。
实施步骤:
- 使用网络监控工具来捕获和分析系统产生的网络通信。
- 识别与恶意软件相关的网络通信模式,如特定的IP地址、端口号、协议等。
- 如果发现与恶意软件相关的网络通信,则采取相应的安全措施,如阻止通信、隔离受感染的系统等。
优点:能够实时检测恶意软件的网络通信活动。
缺点:需要专业的网络监控和分析技能,并且可能会受到网络加密和混淆技术的干扰。
- 静态代码分析
原理:静态代码分析是通过分析恶意软件的代码结构、函数调用、变量使用等来识别恶意行为。它不需要运行恶意软件样本,因此可以在不产生实际危害的情况下进行分析。
实施步骤:
- 使用反汇编工具或逆向工程工具来查看恶意软件的代码。
- 分析代码中的函数调用、变量使用、控制流等。
- 识别可能的恶意行为,如文件操作、网络通信、进程创建等。
- 根据分析结果,采取相应的安全措施,如删除恶意软件、修复漏洞等。
优点:可以在不运行恶意软件的情况下进行分析,降低了风险。
缺点:需要较高的技术水平和专业知识,并且可能会受到代码混淆和加密技术的干扰。
2.4 取证分析实践
2.4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
答:IRC(Internet Relay Chat)是一种实时的互联网聊天协议,允许用户通过客户端软件在聊天频道中进行交流。
当IRC客户端申请加入一个IRC网络时,它会发送一条 "NICK" 消息来设置用户昵称,以及 "USER" 消息来提供用户信息。
IRC一般使用的TCP端口是 6667(标准端口)和 6660-6669、7000等其他端口。这些端口用于客户端与IRC服务器之间的通信。
2.4.2 僵尸网络是什么?僵尸网络通常用于什么?
答:僵尸网络(Botnet)是由大量被恶意软件感染的计算机(称为“僵尸”或“机器人”)组成的网络,这些计算机在黑客的控制下,能够执行各种自动化任务。
僵尸网络通常用于:
- DDoS攻击:通过同时向目标发送大量流量使其瘫痪。
- 发送垃圾邮件:利用被感染的计算机发送大量的垃圾邮件。
- 窃取信息:收集用户的个人信息、账号密码等。
- 传播恶意软件:通过感染更多的设备扩大僵尸网络。
2.4.3 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
答:使用wireshark抓包,设置过滤规则ip.src==172.16.134.191&&tcp.dstport==6667
,发现有五台IRC服务器,分别是
- 63.241.174.144
- 217.199.175.10
- 209.126.161.29
- 66.33.65.58
- 209.196.44.172
2.4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
答:输入命令如下:
sudo apt-get install tcpflow//下载tcpflow
tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172'
//-r 后是分析的文件,'host 209.196.44.172'是过滤器表达式
使用命令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台主机访问过这台服务器所在的僵尸网络。
2.4.5 哪些IP地址被用于攻击蜜罐主机?
答:
tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more > 20222410.txt;wc -l 20222410.txt
vim 20222410.txt
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 > 20222410_2.txt;wc -l 20222410_2.txt
vim 20222410_2.txt
所以有165个IP地址被用来攻击蜜罐主机
2.4.6 攻击者尝试攻击了那些安全漏洞?
答:
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的
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
//udp的
所以tcp的端口有:
- 135(rpc)
- 139(netbios-ssn)
- 25(smtp)
- 445(smb)
- 4899(radmin)
- 80(http)
udp的端口有:137(该端口属于NetBIOS名称服务,主要用于在局域网或互联网上提供计算机名称、注册用户名、是否安装主域控制器以及IIS是否运行等信息的查询服务。当向某台计算机的137端口发送一个请求时,就可以获取这些相关信息。)
2.4.7 那些攻击成功了?是如何成功的?
答:wireshark抓包,逐个分析:
(1)135端口:只有连接,无数据交互
(2)139端口:大部分是普通连接
(3)25端口:[FIN ACK],很多重传,并且长度都是0,应该是没有成功
(4)445端口:发现PSEXESVC.EXE,查找资料发现这是一种Dv1dr32蠕虫,说明在进行蠕虫攻击,并且返回信息中含有\PIPE\ntsvcs,这是一个远程调用,因此推断攻击者获得了权限,攻击成功的
(5)4899端口:是远程控制工具Radmin的监听端口,不是木马但可能是攻击者攻击成功后装来方便控制,只有210.22.204.101访问
(6)80端口:发现缓冲区溢出攻击及蠕虫
(7)137端口:137端口是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态,因此访问这个端口应该是NetBIOS查点
所以攻击成功的端口为:80和4489
没有攻击行为的端口为:135,137,25,445和139
3.实验中遇到的问题和解决方法
3.1 使用IDA Pro静态或动态分析crackme1.exe时测试特定输出时发现无法执行,报错指出系统无法找到适合解释或执行这个文件的解释器。
解决方法:我先输入命令sudo apt-get install wine
安装Wine,然后再用命令 wine crackme1.exe "I know the secret
来运行它,最后运行成功。
3.2 使用IDA Pro静态或动态分析crackme2.exe,在Linux终端测试,发现提示有一个身份的问题。
经过考虑,我们发现在powershell输入的第一个参数为./crackmeplease.exe,而不是
crackmeplease.exe。但是在powershell直接输入crackmeplease.exe不会执行,会报错。
去CMD中运行代码,先将crackme2.exe复制为crackmeplease.exe,再输入crackmeplease.exe “I know the secret”
4.学习感悟、思考等
- 在本次实验中,我深入学习了恶意代码分析技术,利用IDA Pro等工具进行静态和动态分析,掌握了剖析可执行文件内部结构的方法。通过实践,我提高了识别和分析恶意代码的能力,对恶意程序的工作原理和常见特征有了更深的理解。
- 我认识到取证分析在安全事件响应中的重要性,学习了使用取证工具提取和分析系统数据的方法。同时,在逆向分析crackme样本时,我体会到逆向工程的复杂性,但IDA Pro的伪代码生成功能帮助我理解程序逻辑,锻炼了我的技术能力和问题解决能力。
- 这次实验不仅提升了我的技术能力,更让我对网络安全有了更深刻的理解。通过分析自制恶意代码样本和Windows 2000系统被攻破的案例,我熟悉了网络取证的实际应用,并意识到恶意代码对网络安全构成的巨大威胁。我将继续学习和探索,为维护网络安全贡献自己的力量。