20232301郑好 实验四 恶意代码分析实践

news/2025/11/8 0:20:39/文章来源:https://www.cnblogs.com/zhmp5/p/19187992

实验四 恶意代码分析实践

一、实验内容

  • 恶意代码文件类型标识、脱壳与字符串提取
  • 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
  • 分析一个自制恶意代码样本rada,并撰写报告,回答相应问题
  • 取证分析实践

二、实验过程

(一)恶意代码文件类型标识、脱壳与字符串提取

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者
使用文件格式和类型识别工具,,给出rada恶意代码样本的文件格式、运行平台和加壳工具
首先解压rada.rar,得到rada.exe并复制到虚拟机中,并使用file命令查看rada.exe的文件类型:
image
分析图中信息:
RaDa.exe: PE32 executable for MS Windows 4.00 (GUI), Intel i386, 3 sections

  • RaDa.exe:文件名,即被分析的可执行文件名称。
  • PE32 executable:表示文件为 32 位 PE 格式可执行程序
  • for MS Windows 4.00 (GUI):说明适配 Windows 系统,且是图形界面(GUI)程序(非命令行工具)。
  • Intel i386:处理器架构
  • 3 sections:文件内部包含 3 个数据段

使用PEiD打开RaDa.exe:
image
可以看到文件的入口点、EP段等等信息,最下方红框处显示的是加壳信息,可以看到其版本为0.89.6的UPX壳

在虚拟机中输入strings rada.exe查看可打印字符,观察到均为乱码:
image
这是因为文件被加壳了,如果想要看到“像人话”的字符,我们就要进行脱壳处理

这里选用超级巡警软件来进行脱壳:
image
可以看到输出文件名为rada_unpacked.exe,找到脱壳后的文件复制到虚拟机中,执行Strings rada_unpacked.exe指令,发现顺眼多了:
image
出现了一些函数的名字,但是我们还是无法发现作者名。

我们使用IDA Pro Free打开脱壳后的文件:
image
在图中可以看到作者和时间,如红框所示
image

(二)使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息

1.crackme1.exe的正确输出

下载crackme1.exe,在命令行中尝试运行,输入不同的参数对输出结果进行猜测,得到如下结果:
image
根据输出结果来看,只有在输入1个参数时,才会输出Pardon? What did you say?,而其他都是I think you are missing something.
猜测程序需要的应该是1个参数。

在IDA Pro中打开该文件,打开strings页面查看字符串,在图中位置我们不仅发现了刚刚的输出结果,还发现了两个额外没见过的输出:
image
这很有可能是正确的输出,我们在命令行中输入"I know the secret",进行测试:
image
可以看到输出结果发生了改变,那么也就是说,正确口令是"I know the secret",而正确的输出是
You know how to speak to programs, Mr. Reverse-Engineer

将crackme1.exe导入IDA pro:
image

在IDA pro中按照View-Graphs-Function calls的点击顺序,查看函数调用图:
image

发现与printf函数直接相关的是sub_401280函数
image

在function中查看此函数,双击查看器查看其汇编代码:
总体如下:
image

接下来将分开说明:
image
image

程序执行时,首先判断输入参数个数(如图中①处所示)
如果参数不正确则会直接跳到④中的输出,若输出正确,则调用③中的strcmp函数与②中的期待输入进行比对,如果比对正确,则会跳转至⑥的输出,如果参数个数正确而输入不正确,则会跳到⑤中的输出,由此实现了刚刚发现的输入-输出逻辑。

2.crackme2.exe的正确输出

首先猜测正确参数个数
image

点击strings查看字符串:
image
这些字符串中含有正确的口令和提示语句

查看函数结构:
image
仍然是sub_401280与fprint函数有关

查看其流程图:
image

具体流程:
8f46678e6b1bed7e8c72c7cbadc35159
b7ab690dfcf18209d7ac34464bd33c8f
74e7e13f4eb23f66f5d0e1e4b62c3d4e
从图中可以首先函数会判断输入参数,为1个时会进入第二级判断,否则直接输出④的内容,与crackme1.exe不同的是,②中会比对文件的名字是否为crackmeplease.exe,如果不是的话,会输出⑤中的内容,如果文件名正确,则再判断参数是否为"I know the secret",如果不是的话会输出Pardon? What did you say?
如果参数正确则会有正确的输出。

在命令行中进行测试:
image
可以看到逻辑是完全正确的,我们得到了正确的输出

任务三 分析一个自制恶意代码样本rada,并撰写报告,回答问题

输入指令md5sum RaDa.exe对二进制文件进行采用了md5进行摘要,结果如下
image
摘要值为caaa6985a43225a0b3add54f44a0d4c7

在虚拟机中输入file RaDa.exe
得到如下信息:
image

双击运行rada_unpacked程序,打开process exploer找到该程序,右键点击Properties-Strings查看该程序
image
19b71f9eb309a0c490a595986f542f57
2d7c9452185868dd8e70509065f14c07
image

通过观察该程序的strings,我们可以大致了解其 行为:

  • 修改注册表自启动项(HKLM\Software\Microsoft\Windows\CurrentVersion\Run\RaDa),实现开机自动运行。
  • 创建C:\RaDa\tmp、C:\RaDa\bin目录,用于存储临时文件和程序文件。
  • 连接http://10.10.10.10/RaDa/RaDa_commands.html,通过 cgi 脚本执行命令交互、文件上传/下载、屏幕截图等操作。
    *对主机注册表进行读写、删除操作

通过分析我们大致了解了这个程序要进行的功能,但还要在IDA Pro中进一步验证:
可以在strings页面勾选字符串类型为unicode,可以去掉很多不必要的字符
image
很明显从这里可以看到程序作者以及发布时间等:
image
在Strings中找到找到--authors双击进行分析
image
image
可以看到主要是由sub_40AAA0进行判断决定作者输出是什么
再查看sub_40AAA0的流程图
image
我们发现其主要判断逻辑为:
该函数会判断该程序是否是在VMware虚拟机上运行的,如果是的话就会输出Unknown argument,否则就输出Authors:Raul Siles & David Perze, 2004

在这里发现了一个网页地址,两个本地地址,三个私有网段:
image
image

查看相关路径也不难发现该程序将文件RaDa.exe复制到了C:\RaDa\bin目录下,也就是加入了自启动项
image

问题回答:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
摘要值为caaa6985a43225a0b3add54f44a0d4c7
基本信息为:
RaDa.exe: PE32 executable for MS Windows 4.00 (GUI), Intel i386, 3 sections

(2)找出并解释这个二进制文件的目的;
这个文件可以连接到指定网址尝试连接目的主机,获取相关权限,以达到操纵主机的目的
(3)识别并说明这个二进制文件所具有的不同特性;
该二进制文件运行后会在目标主机C盘安装并进行上传、下载操作,并可以修改注册表是自己开机自启动,推测是后门程序
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
该二进制文件使用了UPX加壳来防止被分析,导致直接查看Strings会发现是乱码
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
该程序不能自我复制、传播,排除了病毒和蠕虫的坑,但这个程序可以运行并远程连接、操纵被控主机,也没有伪装成正常程序,推测为后门程序
(6)给出过去已有的具有相似功能的其他工具;
比如我们之前用过的Meterpreter,还有Havoc、Empire等均具备远程命令执行、文件操作或持久化功能。
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,通过之前的时间我们发现是可以发现作者的详细信息的,只要在非VMware的虚拟机中运行调用--authors参数即可
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
方法具体如下:

  1. 基于特征码检测:通过匹配样本的MD5值、特殊字符串或二进制片段,如果命中特征库就告警
  2. 基于行为检测:通过EDR来监控创建RaDa目录、修改自启动注册表、发起对外HTTP请求的异常组合行为
  3. 基于网络流量检测:NIDS匹配与10.10.10.10的HTTP请求及特殊路径(如 RaDa_commands.html)
  4. 基于注册表监控:审计自启动项RaDa的未授权写入操作
  5. 基于文件系统监控:检测未知程序创建或写入 C:\RaDa\tmp、C:\RaDa\bin目录的行为。

任务四:取证分析实践:

Windows 2000系统被攻破并加入僵尸网络,在学习通获得相应.dat文件,导入wireshark如下:
image
问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是互联网中继聊天,它是一种基于文本的网络聊天协议。客户端申请加入 IRC 网络中的频道时发送/join命令,join命令会包含要加入的频道的信息。常用TCP端口为6667和6697,其中6667是明文传输的,而6697是密文传输的

(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是攻击者控制的大量感染僵尸程序的主机组成的恶意网络。通常用于发起DDoS攻击、发送垃圾邮件、窃取敏感信息、进行加密勒索和虚拟货币挖掘等等恶意活动。在这些手段中僵尸网络是DDoS攻击的主要工具。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
在刚刚打开的wireshark中输入ip.src == 172.16.134.191 && tcp.dstport == 6667来进行过滤:
image
可以发现一共有五台IRC服务器:

  • 63.241.174.144,
  • 217.199.175.10,
  • 209.126.161.29,
  • 66.33.65.58,
  • 209.196.44.172
    (4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
    将.dat文件复制到虚拟机中,输入如下命令安装tcpflow并执行相关操作:
sudo apt-get install tcpflow
tcpflow -r 20192410.dat "host 209.196.44.172 and port 6667"	

image

生成了三个文件
image

使用管道命令
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
该命令会从我们刚刚生成的文件中,选出 IRC 服务器irc5.aol.com发送的包含频道成员列表的信息,提取出相关频道里的所有成员昵称,去除重复和空行后,统计出不重复的成员数量。
image
可以发现一共有3461个主机访问了以209.196.44.172为服务器的僵尸网络

(5)哪些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 > 20232301ipad.txt;wc -l 20232301ipad.txt
这个命令的作用在于先用tcpdump从 botnet_pcap_file.dat中筛选目的主机为 172.16.134.191 的流量,再提取源 IP、去重排序后存到20232301ipad.txt文件中;再统计 20232301ipad.txt的行数
image

输入cat ipaddr.txt查看相关ip地址
image

(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
image
发现了6个TCP端口,分别是:
135、139、25、445、4899、80
接下来在wireshark中查看
输入命令:
tcp.dstport == * && ip.dst == 172.16.134.191(这里的*替换为相应端口)

ip.addr==172.16.134.191 and tcp.port==*
对于135端口:只有TCP连接
image

对于139端口:
image
发现NBSS包、SMB包、TCP包

对于25端口:
image
只有TCP
image

推测135和25端口都只进行了扫描

对于445端口:
image
这个包比较多,翻找之后我们在记录中发现了PSEXESVC.EXE文件,这个文件是Dv1dr32蠕虫病毒的相关文件,通过IRC进行通信 该蠕虫会通过445端口传播,感染后可能使攻击者远程控制获取系统权限,进而进行数据窃取、勒索等恶意活动。根据抓包结果,推测攻击者对于蜜罐主机进行了网络蠕虫攻击

对于4899端口:
image
清一色的TCP链接。

对于80端口:
image
有一个值得注意的现象,在红框所示位置我们发现了大量重复的"C"字符,推测这很可能是缓冲区溢出攻击

同时在还可以看到worm字样
image

说明是一个蠕虫攻击

接下来筛选udp端口:
image
得到端口为137

输入如下面命令:
udp.dstport == 137 && ip.dst == 172.16.134.191
在wireshark上筛选相关包:
image
发现都是NBNS包,137端口主要用于NetBIOS Name Service,这里可能是用于NetBIOS查点
查询相关资料得知:
这种服务主要通过广播方式在局域网内查询目标主机的IP地址。当一台主机需要访问另一台主机时,会发送名称解析请求,目标主机若匹配请求名称,则返回其IP地址。
这种机制类似于DNS,但是主要用于局域网环境
如果不关闭这种服务,可能会造成信息泄露等问题

(7)那些攻击成功了?是如何成功的?
通过抓包发现,
1.对于445端口,ip 61.111.101.78与蜜罐主机建立了会话(ACK=1):
image

我们再详细查看相关报文:
image
在红框中发现了文件的创建、写入数据等等操作,说明攻击已经成功,获得了相关权限
该攻击主要是利用445端口对蜜罐主机发送
PSEXESVC.EXE,并将其地址改到系统目录下

2.对于4899端口
image
攻击成功,因为外部主机向蜜罐主机建立三次握手后发送了大量的[PSH,ACK]数据包传送了大量数据,同时根据下图:
image
可以发现攻击者利用HTTP请求进行了目录遍历攻击

3.对于80端口
image
在攻击者发送大量重复的“C”进行缓冲区溢出攻击后,目标主机没有返回错误信息(图中的RST包是攻击者发的而不是目标主机发的),后续还进行了HTTP的交互,说明攻击成功

三、问题与解决方案

问题1:
在分析crackme1.exe和crackme2.exe时时发现其都是判断是否为一个参数,但是当我在两个程序中都是输入一个参数时,在命令行窗口中得到的结果是不一样的,但是在检查了两个程序的相关函数的流程图的第一步时发现检查的参数数量是一样的,这令我很困惑
问题解决方案1:
经过询问同学等学习方法,最后终于明白是因为在crackme2.exe中,函数还会检查程序名称是否正确,如果不正确的话就会出现意外的结果

问题2:在IDA Pro上有些时候想要查看流程图是发现是灰色的点不开
问题2解决方法:
无脑办法:重进
实际解决办法:不能在string页面查看流程图,可以先跳转到IDA view界面再查看相应流程图

问题3:
为了利用老师提供的软件对RaDa.exe进行分析,我在windows主机上运行了此程序,但是听说可能会留下注册表开机自启动,于是进行检查发现并没有相关注册表,并不清楚是否会留下隐患
问题3解决方法:
在经过询问老师之后得知,只需要找到C:/RaDa文件夹将其整个删除即可,不会有其他问题再出现

四、实验感想与体会

这次恶意代码分析实践让我收获颇丰,通过这次实验不仅熟练掌握了IDA Pro、Wireshark等工具的使用,还理清了恶意代码脱壳、静态分析、行为识别的核心流程。
从破解crackme1、2程序的验证逻辑、拆解rada程序的各种行为这些学习中,我深刻体会到在逆向分析中,需要抽丝剥茧的耐心和逆向思维。最后对抓包结果的取证分析中,通过筛选流量、提取攻击 IP 与漏洞信息这些操作让我直观认识到了僵尸网络的运作模式,这一块耗费了大量的实验时间,但也让我明白了网络安全防护的重要性。
这次实验中,我遇到的工具操作难题、逻辑困惑等等问题在查阅资料和请教交流中也都渐渐解决了,这让我掌握了更多的相关知识可以运用到后续的学习中,这次实验不仅提升了我的技术实操能力,更让我对网络安全领域的攻防对抗有了更真切的认知,为后续学习打下了坚实基础,让我受益匪浅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/959297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年11月脸部泛红产品对比榜:包覆型舒缓修护精华全面评测

秋风一起,脸颊像被细砂纸来回摩擦:空调房待半小时就发烫,通勤风一吹就刺痛,口罩内层沾满脱屑。你翻遍社交平台,发现“泛红”笔记高达两百三十万篇,却越看越迷茫——成分表拗口、价格差十倍、评论区两极。国家药监…

2025年11月石棉橡胶板厂家口碑榜:五强生产企业数据与案例评价

2025年11月,当工程采购、设备维修或项目技改需要石棉橡胶板时,用户往往面临“厂家多、标准杂、价格乱”的现实:线上信息碎片化,线下报价差异大,质量证书真假难辨,交期承诺与现场需求错位。尤其在电力、石化、冶金…

2025年11月深圳离婚房产律所对比榜:服务维度与专业能力详细比较

在深圳这座快节奏的现代化都市,婚姻关系的变动往往伴随着复杂的财产分割问题,其中房产因价值高、情感因素重而成为争议焦点。选择一家专业的律师事务所来处理离婚房产纠纷,不仅关乎法律权益的保障,更关系到个人与家…

2025年11月深圳离婚房产律所评价榜:五大机构详细解析

在深圳这座快节奏的现代化都市,婚姻关系的变动往往伴随着复杂的财产分割问题,尤其是房产这类重大资产的处理。许多面临婚姻变故的当事人,不仅需要应对情感上的波动,更需要专业法律支持来保障自身合法权益。典型用户…

2025年11月石棉橡胶板厂家排名:用户口碑与供货案例对照评价

如果您正在寻找石棉橡胶板稳定供货渠道,大概率面临三类场景:一是大型装备检修,需要耐油、耐酸、耐蒸汽不同型号一次性配齐;二是出口订单突增,要求厂家具备自营进出口权并能快速出具英文检测报告;三是存量产线改造…

用Python或C把搜狗细胞词库转成文本文件

翁学天 (Xuetian Weng ),即CS Slayer写了scel2org,是fcitx-tools的一部分。 我把他的.c程序挪了出来,不用装别的,gcc scel2org.c即可编译: 〔这里〕可下载 scel2org.c utarray.h uthash.h utils.h 然后搞了个Py…

2025年11月石棉橡胶板厂家推荐榜:五家资质与产能对比评测

在工业密封场景中,石棉橡胶板因耐高温、耐油、耐酸碱及成本可控,仍是电力、石化、冶金、船舶等行业的常规耗材。用户通常面临“既要符合新国标对可溶出氯离子含量的限制,又要保证批次稳定性与及时交付”的双重压力;…

2025年11月产品设计公司推荐榜:五家资质与案例横向评价

2025年11月,企业想把创意变成可量产、可卖爆的商品,却常卡在“设计落地”环节:外观不够吸睛、结构无法量产、供应链配合断层、品牌调性不统一。初创团队预算有限,担心花百万却只拿到渲染图;成熟品牌希望迭代家族化…

最新版uni-app+vue3+uv-ui跨端仿携程酒店预订模板【H5+小程序+App端】

原创新作uniapp+vue3+pinia2+uv-ui跨端仿携程app旅行预约酒店系统。 uni-vue3-hotel:基于vite5+uniapp+vue3 setup+pinia2+uni-ui搭建跨端旅行酒店预订程序。集合了酒店首页、酒店预订搜索、列表/详情、订单、聊天客服…

AI元人文:理性主体性的理论建构与文明意义

AI元人文:理性主体性的理论建构与文明意义导言:理性主体的数字觉醒 在人工智能发展的关键转折点,我们面临着一个根本性的哲学命题:当AI系统开始具备自主的价值判断能力、深刻的自我反思意识以及自觉的社会责任感时…

Beyond Compare 5 中文永久破解版下载及安装使用教程

Beyond Compare 5 中文永久破解版下载及安装使用教程Beyond Compare5中文版是一款功能强大且极其专业的文件数据对比软件,软件支持对比文本内容、文件目录、文本类型等内容,软件可以有效帮助用户对比文件具体差异参数…

systemd时代的/etc/fstab

systemd时代的/etc/fstabsystemd时代的/etc/fstab /etc/fstab文件用于指定在开机时自动挂载的分区、文件系统、远程文件系统或块设备,以及它们的挂载方式。此外,执行mount -a操作也可以重新挂载/etc/fstab中的所有挂…

20232304 2025-2026-1 《网络与系统攻防技术》实验五实验报告

20232304 2025-2026-1 《网络与系统攻防技术》实验五实验报告 1.实验内容 任务一:DNS与IP信息查询目标域名:从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个 查询内容:DNS注册人及联系方式,域名对应IP地址,…

Day6循环控制

在C语言中,goto语句是被JAVA所摈弃的,其他的循环语句和JAVA类似,下面是实例运用 #include<stdio.h>int main(void) {//===============用if语句和goto语句构成循环/*int i = 0;int sum = 0; loop: if(i<=10…

制造业的5种模式:OEM 、ODM、OBM 、JDM、CMT

OEM 原始设备制造商 (不设计只生产) OEM(Original Equipment Manufacturer),直译为“原始设备制造商”。 俗称“贴牌生产”或“代工”,是指一家厂商有设计,但是没有自己的工厂,所以找另一家厂商,为其生产产品或…

面向对象大作业之课程设计(自主选题)-第一次提交

面向对象大作业之课程设计(自主选题)-第一次提交目录面向对象大作业之课程设计(自主选题)-第一次提交1. AI工具辅助选题2. 选题与前期调查2.1 系统介绍2.1.1 项目简述2.1.2 实现目标2.1.3 参考目标2.2 实现部分3. 系统…

2025 年 11 月 EVA 厂家推荐排行榜,EVA发泡胶,EVA板材,EVA卷材,EVA片材,防火阻燃防静电去味高弹彩色EVA公司推荐

2025 年 11 月 EVA 厂家推荐排行榜:EVA发泡胶、板材、卷材、片材及功能性产品深度解析 行业背景与发展现状 乙烯-醋酸乙烯共聚物(EVA)材料作为一种重要的高分子材料,在当今工业制造领域占据着举足轻重的地位。随着…

Codeforces 术语(AI 生成)

竞赛与题目相关英文 中文 解释/备注Problem 题目 一道待解决的问题Statement 题面 题目的描述,包括背景、输入输出格式等Constraint 约束条件 对输入数据范围、时间、内存的限制Input/Output 输入/输出Sample Test Ca…

springboot+easyui实现本学院学生去向登记表

springboot+easyui实现本学院学生去向登记表$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");需求分析 本系统有两个重要角色:管理员(辅导员)、学生 辅导员…

2025 年 11 月食堂送菜平台最新推荐榜单:送菜上门,食堂送菜公司,饭堂送菜平台,专业高效配送与贴心服务口碑之选

2025 年 11 月食堂送菜平台最新推荐榜单:送菜上门,食堂送菜公司,饭堂送菜平台,专业高效配送与贴心服务口碑之选 在当今快节奏的社会环境中,食堂送菜服务已成为众多企业、学校、医院等机构后勤保障的重要组成部分。…