20242935 2024-2025-2 《网络攻防实践》第八周作业
20242935 2024-2025-2 《网络攻防实践》第八周作业
实践八 恶意代码分析实践
一、实践要求
动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
2、找出并解释这个二进制文件的目的;
3、识别并说明这个二进制文件所具有的不同特性;
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
6、给出过去已有的具有相似功能的其他工具;
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
分析实践任务二:
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、那些攻击成功了?是如何成功的?
二、实验过程
任务一:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者
-
实验环境是在WinXP Attacker虚拟机中
-
输人命令,查看rada.exe的文件格式
file RaDa.exe
- 输入命令,查看字符串,为乱码,猜测加了壳
strings RaDa.exe
- 点击页面左下角的“开始”-->“所有程序”-->"PE"-->"PEiD"-->"PEiD_en"
- 使用PEID工具,我们可以看到这个是一个版本为0.89.6的UPX壳
- 接着点击页面左下角的“开始”-->“所有程序”-->"脱壳和加壳工具"-->"超级巡警虚拟机脱壳器CN"
- 打开超级巡警虚拟机脱壳器对Rada.exe文件脱壳,获得RaDa_unpacked.exe
- 用命令,查看脱壳后的RaDa.exe,可以看到产生大量函数调用名以及其他有用字符串
strings RaDa_unpacked.exe
- 接着点击页面左下角的“开始”-->“所有程序”-->"反汇编"-->"IDA Pro Free"-->"IDA Pro Free"
- 用 IDA PRO Free 打开一下脱壳后的程序RaDa_unpacked.exe,可以看到作者信息和发布时间,还有邮箱
-
接着点击PE Executable-->"桌面"(放rada文件的地方)-->"rada文件"-->"RaDa_unpacked.exe"
-
再一直下一步-->下一步-->完成即可
- 在string界面中选择Unicode编码
- 找到Authors:Raul Siles & David Perez,2004,此处信息即编写作者
任务二:分析Crackme程序
-
我是在本地将crackme1.exe和crackme2.exe放到我新建的crackme文件夹了
-
再将crackme文件夹复制到WinXP Attacker虚拟机的桌面中
cd crackme
- 输入命令,来查看两个文件信息
file crackme1.exe
file crackme2.exe
- 这两个文件均为windows系统下运行的32-bit可执行程序,是命令行程序
- 输入crackme1.exe,尝试运行该程序,试探其输入格式
- 但弹出了缺乏相关口令的提示
- 在接受一个参数的时候,程序反馈跟其他的不一样,所以猜测该程序接受一个参数
- 接着使用IDA pro工具打开文件,尝试验证我们的猜想
- 点击页面左下角的“开始”-->“所有程序”-->"反汇编"-->"IDA Pro Free"-->"IDA Pro Free"
-
接着点击PE Executable-->"桌面"(放rada文件的地方)-->"crackme文件"-->"crackme1.exe"
-
再一直下一步-->下一步-->完成即可
-
查看到该程序中出现的明文字符串,可以看到前面的两种输出信息,"I think you are missing something." "Pardon? What did you say?",还发现了"I know the secret"和"You know how to speak to programs, Mr. Reverse-Engineer"这两个字符串
-
"I think you are missing something."是参数不对的返回情况
-
"Pardon? What did you say?"是参数数量对但内容不对的返回情况
-
“I know the secret”猜测为密码口令
-
"You know how to speak to programs, Mr. Reverse-Engineer"猜测为口令成功输入的反馈
- 查看函数调用图,在IDA上选择view—Graphs—function calls
- 发现输出函数fprintf和printf 即为程序输出,则sub_401280即为核心函数
- 打开sub_401280函数的流程图
- 点击“Functions”-->"sub_401280"
- 在IDA上选择view—Graphs—Flow chart
- 可以看到入口那里会比较判断输入的参数个数是否为2,若参数个数不为2时输出"I think you are missing something",若参数个数为2则会将第二个输入与"I know the secret"作比较,正确则输出"You know how to programs"
- 验证猜想
- 输入命令
crackme1.exe "I know the secret"
- 验证刚刚口令为“I know the secret”的猜想,得到了程序反馈信息“You know how to speak to programs, Mr.Reverse-Engineer”,验证猜想正确
- 同理验证crackme2.exe
- 试探输入格式
- 接着使用IDA pro工具打开文件,尝试验证我们的猜想
- 点击页面左下角的“开始”-->“所有程序”-->"反汇编"-->"IDA Pro Free"-->"IDA Pro Free"
- 接着点击PE Executable-->"桌面"(放rada文件的地方)-->"crackme文件"-->"crackme2.exe"
- 再一直下一步-->下一步-->完成即可
- 查看明文字符串
- 查看函数调用图
- 查看函数调用图,在IDA上选择view—Graphs—function calls
- 发现输出函数fprintf即为程序输出,则crackme2.exe的核心函数也是sub_401280
- 打开sub_401280函数的流程图
- 点击“Functions”-->"sub_401280"
- 在IDA上选择view—Graphs—Flow chart
- 发现该函数首先判断参数个数是否为2,若参数个数为2,则判断第一个参数是否为crackmeplease.exe,若正确则判断第二个参数是否为I know the secret
- 代码逻辑中的程序名称改变了,因此需要对程序名称进行修改
copy crackme2.exe crackmeplease.exe
- 再输入命令
crackmeplease.exe "I know the secret"
- 得到结果We have a little secret:Chocolate,验证正确
任务三:分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
- 使用命令得到文件md5摘要
md5sum RaDa.exe
- 使用命令得到文件类型为:32位GUI文件
file RaDa.exe
2、找出并解释这个二进制文件的目的;
- 利用wireshark监听
- 打开C:\Monitor\ProcessExplorer路径下的 process explorer
- 用process explorer软件监测radaunpacked.exe
- 并运行恶意程序radaunpacked.exe,分析其程序运行详细信息
- 可见脱壳后的通过HTTP协议连接到10.10.10.10主机下RaDa的网页上
- 该文件下载后门到目标主机,发动DOS攻击,与10.10.10.10主机进行了通信,并查询了Mac地址
- 查询了数据库相关信息、对应Mac地址等等
- 执行了读写、删除、下载,上传,截屏,休眠等操作
- 使用wireshark进行分析,可以看到受害主机向目标主机 10.10.10.10 发送了大量的数据包
3、识别并说明这个二进制文件所具有的不同特性;
- 该程序启动之后将自己复制到c盘之中,并且每过一段时间就会尝试与10.10.10.10建立tcp连接
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
- 文件被加壳处理,为乱码形式
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
- 不具有传播和感染的性质,所以它不属于病毒和蠕虫
- 也没有将自己伪装成有用的程序以欺骗用户运行,不是木马
- 并且该程序执行需攻击者远程发送指令,故猜测是一个后门程序
6、给出过去已有的具有相似功能的其他工具;
- 木马Bobax
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
- 将rada.exe脱壳后,获得开发作者信息Authors: Raul Siles & David Perez, 2004
任务四:Windows 2000系统被攻破并加入僵尸网络
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用那些TCP端口?
- IRC是一种基于文本的实时通信协议,允许用户通过客户端连接到IRC服务器,与其他用户在频道(聊天室)或私聊中交流,它广泛用于群组讨论、协作和信息共享
- 当 IRC客户端申请加入一个IRC网络 时,通常会发送以下两个主要消息,这两条消息用于注册客户端连接并识别用户身份:
NICK <nickname>
:设置用户的昵称USER <username> <hostname> <servername> :<realname>
:提供用户名、主机名、服务器名和真实名称
- IRC默认使用的TCP端口:
- 6667 是最常用的端口
- 其他常见端口包括:6660~6669、7000 等
2、僵尸网络是什么?僵尸网络通常用于什么?
-
僵尸网络是由一组受恶意软件感染并被攻击者远程控制的计算机或设备组成的网络。这些被感染的设备可以在攻击者的指令下执行协调的操作,通常在用户不知情的情况下
-
僵尸网络通常用于以下恶意活动:
-
分布式拒绝服务(DDoS)攻击:通过大量请求使目标服务器或网络瘫痪
-
垃圾邮件发送:发送大量垃圾邮件或钓鱼邮件
-
数据窃取:窃取敏感信息,如凭据、银行账户信息等
-
恶意软件传播:分发其他恶意软件,如勒索软件或间谍软件
-
点击欺诈:生成虚假流量以获取广告收入
-
加密货币挖矿:利用受感染设备的计算资源进行加密货币挖矿
-
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
- 在学习通下载botnet_pcap_file.dat文件并用wireshark打开,IRC服务器明文传输通常在6667端口监听
- 我们设置过滤条件
ip.src == 172.16.134.191 and tcp.dstport == 6667
- 得到五个服务器地址: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
apt-get install tcpflow
- 使用命令,使tcpflow分流筛选指定host与端口6667,将将分析的结果输出到report.xml文件中
tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
- 产生了两个文件是:209.196.044.172.06667-172.016.134.191.01152和172.016.134.191.01152-209.196.044.172.06667
- 查看第一个文件
- 使用管道命令进行筛选
- 可知有3461台主机访问了以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
5、那些IP地址被用于攻击蜜罐主机?
- 使用tcpdump查找可能连接主机ip的地址
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 > ip.txt;wc -l ip.txt
- 可见共有165个IP地址可能连接蜜罐主机
- 查看生成的ip.txt文件
vim ip.txt
6、攻击者尝试攻击了那些安全漏洞?
- 使用Tcpdump工具筛选出蜜罐主机有哪些端口是响应的,筛选有响应的TCP端口,即SYN/ACK标志为1
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
- 可以看到有135(rpc)、 139(netbios-ssn)、 25(smtp)、 445(smb)、 4899(radmin)、 80(http)
- 再用命令筛选有响应的UDP端口
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
- 137端口在局域网中提供计算机的IP地址查询服务,处于自动开放状态
7、那些攻击成功了?是如何成功的?
-
打开wireshark,分别输入ip.addr == 172.16.134.191 && tcp.port ==端口号
-
135端口:进行数据连接
ip.addr == 172.16.134.191 && tcp.port ==135
- 25端口:进行数据连接
ip.addr == 172.16.134.191 && tcp.port ==25
- 80端口:相关攻击的信息包括null.ida为标识的WEB-IIS ISAPI、dafault.ida为标识的code red,是一个红色代码蠕虫攻击
ip.addr == 172.16.134.191 && tcp.port ==80
- 445端口:发现执行了
\System32\PSEXESVC.EXE
,这是一种蠕虫病毒的特征码,攻击者对系统注入了蠕虫病毒并成功获取了远程调用。所以只有对445端口实施的攻击是成功的
ip.addr == 172.16.134.191 && tcp.port ==445
三、学习中遇到的问题及解决
问题一:最开始下载不了学习通里的rada.rar文件。
解决方法:
-
按下
Win
键,输入 “Windows 安全中心” 或 “Windows 安全”,打开它 -
打开后点击左侧的【病毒与威胁防护】(或界面上的图标)
-
往下拉,找到并点击「保护历史记录」或「威胁历史记录」
-
会看到最近被隔离或阻止的项目,找到含有
rada.rar
-
点击该记录
-
然后选择「允许此项」或「还原」
四、学习感想和体会
通过对恶意代码样本 RaDa 的识别、脱壳、字符串分析,以及 CrackMe 程序的逆向破解练习,不仅加深了我对静态分析、反汇编工具(如IDA Pro)、网络数据分析(如tcpdump与Wireshark)等工具的实战应用能力,也让我系统理解了恶意代码的行为特征、防御绕过手段以及僵尸网络的组织机制