20222315 2024-2025-1 《网络与攻防技术》实验四实验报告
1、实验内容
1.1、恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
1.2、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
1.3、分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
1.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)那些攻击成功了?是如何成功的?
2、实践过程
2.1、对恶意代码的文件格式、运行平台和加壳工具进行识别
(1)在kali中使用file命令查看文件类型。
从图中可以看出该文件是32位的pe文件,并且运行在Intel 80386的cpu上,而且支持的操作系统是windows。
PE文件:PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)
(2)使用PEID解析文件
图中可以看到RaDa.exe文件的入口点、文件偏移、EP段
(3)使用学习通上给出的脱壳软件进行脱壳。得到unpack.exe文件
(4)使用string命令对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁
(5)翻找后成功找到作者
2.2.1使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
crackme1.exe
(1)用IDA选择“View”→“Open subviews”→“strings”,查看字符串。
我们可以看到执行文件的内容中有这些输出信息。
(2)“View”→“Open subviews”→“Generate pseudocode”得到main函数的伪代码:
经过分析可以得出结论:
如果第二个参数是“I know the secret”,则输出“You konw how to speak to programs,Mr.Reverse-Engineer”。
如果第二个参数不是“I know the secret”,输出“Pardon? What did you say?”。
如果参数个数不为2,输出“I think you are missing something"
(3)根据上述代码我们在命令行运行,看是否输出特定信息。
2.2.2、分析crakeme2.exe文件
(1)这次我们直接分析代码
经过分析可以得出结论:
程序首先判断参数个数,若参数个数为2(包含函数名),其中中途需要修改crackme2.exe为crackmeplease.exe:
①第一个参数是“crackmeplease.exe”,第二个参数是“I know the secret”,若是则输出成功信息,否则输出“Pardon? What did you say?”。
②第一个参宿不是“crackmeplease.exe”,输出“I have an identity problem.”。
若参数个数不为2(包含函数名),输出“I think you are missing something.”
(2)我们运行程序来进行验证
2.3、分析一个自制恶意代码样本rada,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息:
利用md5sum和file命令获取基本信息
找出并解释这个二进制文件的目的;
先运行脱壳后的程序,打开Process Explorer,查找脱壳后的RaDa,点进去:
注:运行后有弹窗说明程序已经运行,不要关闭弹窗。
可得到以下信息:
1.访问10.10.10.10\RaDa\RaDa_commands.html网页。
2.下载并上传信息,并存储到对应位置
3.HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,控制计算机启动,实现开机自启动rada。
4.在RaDa文件夹中,创建了bin文件夹,将RaDa.exe复制在bin文件夹中。
5.HKLM\Software\VMware, Inc.\VMware Tools\InstallPath,该注册表项可控制远程桌面上的客户端驱动器重定向行为。猜想这个操作是为了实现远程控制桌面。
6.注册表进行读、写、删操作
(3)识别并说明这个二进制文件所具有的不同特性;
1.可以修改系统,并且添加了注册表,实现了开机自启动
2.可以远程控制。运行远程连接被攻击者连接
3.可以控制桌面,并且可以进行读写删操作,使得计算机完全陷入攻击者的掌控当中,属于具有强大攻击性的恶意代码
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
主要运用了加壳技术,我们查看rada.exe文件是看不到字符串信息的。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由:
后门程序
该恶意代码不会传播,可以判断非蠕虫和病毒。没有进行伪装,不是木马。该代码设置了自启动控制,属于后门。
(6)给出过去已有的具有相似功能的其他工具;
实验二生成的backdoor控制主机。
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,之前的步骤中我们就用kali输入file命令查看到了作者。有工具并且有文件,就可以查出。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
基于特征码的方法:
这种方法依赖于已知恶意软件的特征码数据库,通过比较可疑文件与数据库中的签名进行匹配。如果发现匹配则标记为恶意软件。这种方法对于已知的恶意软件有效,但对于未知或变种的检测能力有限。
基于行为分析:
监控软件运行时的行为,如网络活动、文件系统调用等。恶意软件常表现出特定的行为模式,通过分析这些行为可以识别出恶意软件。这种方法对于检测未知或变种的恶意软件较为有效。
沙箱技术:
在隔离的环境中运行可疑文件,观察其行为。沙箱可以防止恶意软件对系统造成实际伤害,同时允许安全专家分析其行为。
静态分析:
通过检查恶意软件的代码结构、API调用等静态特征,寻找恶意行为的迹。静态分析不需要运行文件,但可能需要专业知识解读代码。
动态分析:
实际运行可疑文件并监控其行为。动态分析可以捕获恶意软件在运行时产生的网络流量、文件变化等信息,这有助于发现隐藏的行为。
2.4.取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC(Internet Relay Chat)是一种基于互联网的实时聊天协议,它允许用户加入不同的频道进行在线交流和讨论。IRC客户端在申请加入一个IRC网络时,通常会发送一个NICK消息,这是客户端向服务器注册自己并请求加入网络的第一步。IRC一般使用以下TCP端口:
6667:这是最常用的IRC端口号,大多数IRC服务器都默认使用此端口号作为标准连接端口。
6697:这是用于IRC安全连接(SSL/TLS加密)的端口号。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet)是由被劫持的计算机设备组成,用于实施各种欺诈和网络攻击的网络
僵尸网络的组建通常是多层计划中的渗透阶段。僵尸网络控制者通过远程命令控制一批被劫持的设备。一旦编译好机器人程序,僵尸网络控制者就会使用指令编程来推动下一步行动。负责指挥的一方可能是僵尸网络的建立者,也可能是以租借的方式运营僵尸网络
僵尸网络通常用于以下目的:
DDoS攻击:僵尸网络最常见的用途之一是发动DDoS攻击,通过大量Bots同时向目标服务器发送请求,导致服务器崩溃或不可用
数据窃取与间谍活动:僵尸网络可以用于大规模的数据窃取,包括个人身份信息、企业机密、金融数据等。此外,僵尸网络还可用于长期的间谍活动,持续监控受害者的计算机并窃取敏感信息
发送垃圾邮件与钓鱼邮件:利用僵尸网络发送垃圾邮件是一种常见的非法牟利手段。攻击者可以通过发送钓鱼邮件来获取更多的受害者信息,或者通过广告邮件赚钱
分发其他恶意软件:僵尸网络可以作为恶意软件的分发平台,通过感染新的计算机或扩展到其他网络,进一步扩大其控制范围。某些僵尸网络甚至专门用于租赁,供其他犯罪团伙使用
加密货币挖矿:僵尸网络可用于在设备所有者同意或不知情的情况下挖掘加密货币。利用多个受感染设备的计算能力来执行资源密集型的加密货币挖掘操作,使僵尸主机能够以受损设备的性能和能源消耗为代价来赚取利润
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
用wireshark打开botnet_pcap_file.dat文件,设置过滤条件“ip.src == 172.16.134.191 && tcp.dstport == 6667 and tcp.flags == 0x2”,得到如下结果:
蜜罐主机与如下的服务器进行通信:
209.126.161.29
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
下载tcpflow
执行以下指令:tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667':
生成了三个文件。
输入指令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台主机访问了僵尸网络
(5)哪些IP地址被用于攻击蜜罐主机?
使用如下指令将ip输入到20222315.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> 20222315.txt;wc -l 20222315.txt
发现有165台主机被用于蜜罐攻击
(6)攻击者尝试攻击了那些安全漏洞?
使用wireshark的“统计-协议分级”
分别筛选TCP和UDP响应端口,读取dat文件,查看哪些端口是开放的:
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
135/139/25/445/4899/80端口的开放的,攻击很可能发生在这些端口中。
(7)那些攻击成功了?是如何成功的?
tcp135端口,没有攻击
139端口,没有攻击
25端口,没有攻击
445端口此时不再是简单的连接,出现了SMB网络文件系统协议
我们可以看到SMB数据包,其中包含了NTLMSSP身份验证协商信息,以及尝试使用管理员账户进行身份验证,客户端正在尝试与服务器建立一个SMB会话,访问共享资源或执行管理任务,表明有潜在的未授权访问尝试或攻击行为。
4899端口是一个远程控制软件服务端监听的端口,具有远程控制功能,通常杀毒软件是无法查出它来的。可能被黑客用此来进行远程控制。
源IP地址24.197.194.106和源端口4899在网络中未授权或异常,这可能表明潜在的攻击尝试。
80端口,发现了传递大量的NNNNNN的内容,有可能是为了实现缓冲区溢出攻击或者蠕虫攻击
udp的137端口
源端口1025向目的端口137发送了一个UDP包。目的端口137通常用于NetBIOS服务,源端口1025在网络中未授权或异常,这可能表明潜在的攻击尝试。
3、实验中的问题及解决方法
1、在使用Process Explorer打开RaDa脱壳后的文件,发现找不到相关相关程序。
解决方法:经过我多次运行尝试,发现运行完程序后生成的弹窗不要关闭,后来找到对应文件。
4、实验总结与感悟
通过对恶意代码的各种分析,我深刻地理解了恶意代码的工作机制,比如通过什么原理攻入主机,攻入主机对主机做了什么操作,如何查找恶意代码的作者信息。同时我还学会了如何处理加壳后的后门程序,并得到后门程序的相关信息,并通过抓包来分析恶意程序攻击了哪些端口,深入理解了IRC,后门程序,蠕虫病毒等相关知识。通过这次实验我深刻地体会到信息安全的重要性,感受到了攻击者的阴险和狡诈,在未来我要努力地学习相关知识,不断提高自身对恶意程序的识别和防范能力。