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恶意代码文件类型标识、脱壳与字符串提取
2.1.1使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
输入file RaDa.exe使用file命令确定文件格式,使用strings命令分析恶意代码样本。
使用strings命令对RaDa.exe进行分析后,没有得到有效的结果。这可能是因为该命令主要用于提取可打印的字符串,而在某些情况下,它可能无法提供有用的信息,特别是当文件被加密或包含大量非文本数据时。
在Windows主机中用PEiD工具查看RaDa.exe的信息,得到如下结果:
RaDa.exe是一个PE32格式的可执行文件,这意味着它是为Microsoft Windows操作系统设计的该文件是为Intel 80386处理器架构构建的,这是一种较早期的x86架构。RaDa.exe具有图形用户界面(GUI),这表明它包含窗口、菜单、按钮等可视化元素,供用户进行交互操作。
2.1.2使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
获得了一个unpacked文件,即脱了压缩壳的文件。
脱壳后再使用strings命令对这个unpacked文件进行分析
最后找到作者:
2.1.3
使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
发现作者为:Raui Siles和David Perez
2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
2.2.1分析crackme1.exe
依然使用file命令,与rada样本区别就是没有图形化界面。
在Windows主机运行crackme1.exe,并尝试猜测参数,如下
若是输入的参数为不为2个(crack.exe+一个参数),则会输出:I think you are missing something.
若是输入的参数为2个,则会输出:Pardon? What did you say?
在kali用string查看四段文字:
用IDA pro继续分析,查看strings模块如下
猜测“I know the secret”是关键参数,而第四句为相应的回答。
用Function calls查看函数调用过程
查看main函数,如下
双击Function中的main函数,点击 View ->Graphs->Flow chart
得到函数具体调用图如下
因此,猜测输入的参数应该是:crackme1.exe "I know the secret"
进行验证
2.2.2分析crackme2.exe
在kali中用'file'指令查看crackme2.exe,如下
终端上运行crackme2.exe
用IDA pro继续分析
查看strings模块如下
查看main函数的具体调用图,如下
猜测如下:
一是判断命令行参数个数是否为2→若是,则进入第二个判断;若否,则输出I think you are missing something.
二是判断运行的程序名称是否为crackplease.exe→若是,则进入第三个判断;若否,则输出I have an identity problem.
三是判断命令行第二个参数是否为"I know the secret"→若是,则输出We have a little secret: Chocolate;若否,则输出Pardon? What did you say?
进行验证
运行crackme2.exe
运行crackmeplease.exe
发现成功运行。
2.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
2.3.1提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
在kail中使用MD5生成摘要:
2.3.2找出并解释这个二进制文件的目的
在PE explorer监听下,运行目标二进制文件
目的:通过HTTP协议向IP地址为10.10.10.10的服务器发起请求,目的是访问路径为“\RaDa\RaDa_commands.html”的页面,,同时在C盘创建“RaDa”文件夹并复制自身至其中,执行注册表读写操作以添加自启动项,具备执行截图、上传下载等指令的能力,并可能利用IE浏览器漏洞进行攻击,表现出明显的恶意软件特征,推测其用于DDoS攻击等恶意行为。
2.3.3识别并说明这个二进制文件所具有的不同特性
通过上一个问题可以知道,该二进制文件可以在执行时自动复制,来隐藏自己,并且可以通过修改注册表实现在每次系统启动时自动运行,通过IE浏览器请求页面并获得来自攻击者的指令,能够screenshot对别攻击者截屏,put和get上传和下载等获得隐私信息。
2.3.4识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
该程序利用UPX进行加壳,这不仅有助于减小文件体积,还可能在某些情况下隐藏代码细节。此外,程序中可能集成了虚拟机检测代码,能够识别是否在虚拟机环境中运行。例如,使用“--authors”参数时,程序在虚拟机中不输出结果,仅在物理机上显示,可能是因为程序检测到虚拟机特有的工具并采取措施隐藏作者信息。
2.3.5对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
这个程序是一种后门程序,不具备病毒、蠕虫或木马的传播和伪装特性,而是通过隐蔽手段监控和窃取受害者计算机信息,即使受害者不知情,它也能在后台持续运行并向攻击者泄露敏感数据。
2.3.6给出过去已有的具有相似功能的其他工具
root kit:与上述后门程序相比,root kit技术更为高级,检测难度大,尤其在SunOS和Linux操作系统上。
2.3.7可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以。正如问题4中,可以使用--authors在主机环境下看到。
2.4取证分析实践
2.4.1IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC(Internet Relay Chat)是一种实时的互联网聊天协议,允许用户通过IRC客户端在IRC网络上进行即时通讯。当IRC客户端申请加入一个IRC网络时,会发送包括PASS(口令)、NICK(昵称)和USER(用户信息)等注册账户的消息,以及JOIN消息来加入频道。IRC一般使用的TCP端口包括6667(明文传输)和6697(SSL加密传输)。此外,IRC服务器也可能使用6660至6669之间的端口。
2.4.2僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet)是由被恶意软件感染并被远程控制的计算机设备组成的网络。这些设备被称为“僵尸计算机”,它们在不知情的情况下被黑客控制,用于实施各种网络攻击和欺诈活动。僵尸网络通常用于以下目的:
分布式拒绝服务(DDoS)攻击:僵尸网络可以发起大规模的DDoS攻击,通过协调大量受感染设备的操作,用大量流量淹没目标服务器或网络基础设施,使合法用户无法访问目标。
垃圾邮件和电子邮件网络钓鱼:僵尸网络用于发送大量垃圾邮件,这些邮件可能包含不需要的广告、网络钓鱼尝试或受恶意软件感染的附件。
撞库和暴力攻击:僵尸网络可用于自动进行撞库攻击,尝试使用窃取的用户名和密码组合登录各种在线账户。暴力攻击是僵尸网络用来破解弱密码或常用密码的方法,即机器人系统地尝试所有可能的组合。
2.4.3蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
使用Wireshark打开botnetpcapfile.dat,过滤出所有源IP为172.16.134.191,目的端口为6667,TCP标志位为SYN(即0x02)的数据包。根据抓包结果,可以发现蜜罐主机尝试连接了4台IRC服务器,分别是:
209.126.161.29
66.33.65.58
63.241.174.144
209.196.44.172
2.4.4在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
下载tcpflow,tcpflow是一种网络监测工具,它通过监视网络流量,可以捕获发送和接收的TCP/IP数据包,并将它们重建为可以理解的数据流
tcpflow-r进行分析
查找有多少访问了以209.196.44.172为服务器的僵尸网络的主机
2.4.5哪些IP地址被用于攻击蜜罐主机?
使用tcpdump工具,使用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> 20222417.txt;wc -l 20222417.txt指令( tcpdump -nn见1.tcpdump介绍;cut -d '.' -f 10截取以'.'为分隔符的第10列;uniq检查并删除 文本文件中重复出现的行列;wc -l获得行数)。
共有165个IP地址
2.4.6攻击者尝试攻击了那些安全漏洞
看到TCP数据包占99.7%,UDP包只占0.3%
继续使用tcpdump工具,查看被扫描了的tcp和udp端口,并确定响应的端口
tcp:
udp:
查看TCP 135 25端口,发现正常连接,没有数据交换,不是攻击
查看TCP 139端口,发现基本上都是普通连接,没有传递具体会话内容
TCP 445端口相关的通信中,第33280号报文内能够观察到PSEXESVC.EXE,这实际上揭示了Dv1dr蠕虫的存在,它是一种通过IRC(互联网中继聊天)进行通信的恶意软件。Dv1dr蠕虫特别之处在于它是一种口令蠕虫,其感染机制在于利用其他电脑的弱口令。紧接着33280号报文之后,出现了来自主机的响应报文,这一迹象表明攻击已经取得成功,即蠕虫已经成功侵入了该主机,并且该主机已向服务器发送了响应,确认已被感染。
TCP4899端口,通过分析报文,可以发现攻击者成功地使用了Radmin远程控制软件,并且在攻击成功后对受控机进行了控制。这种攻击手段属于远程控制攻击,黑客通过远程控制工具控制受控机,进而实现窃取敏感信息、攻击其他网络等行为。
TCP80端口,发生了缓冲区溢出攻击和蠕虫攻击
UDP137端口,有大量NBNS数据包
3.问题及解决方案
问题1:使用Process Explorer无法查看rada.exe的信息
解决方案:运行Process Explorer要用管理员才有权限查看
4.学习感悟、思考等
通过这次实验,我不仅复习并深化了之前在信息安全保障技术课程中学到的Wireshark抓包分析技能,还掌握了更为进阶的恶意代码分析技术,包括但不限于恶意代码的脱壳处理、字符串提取以及函数调用分析。这些实践操作不仅让我将理论知识与实际操作紧密结合,还促使我对信息安全领域的理解迈向了一个新的高度。
实验过程中,我深刻体会到,网络安全攻防是一个既需要扎实理论基础又强调实践操作的领域。我运用了大量网络安全相关的命令和工具,以应对和分析不同类型的恶意代码攻击。这些工具的使用不仅提升了我的技术操作能力,也让我意识到,随着技术的不断进步,恶意代码的手段也日益复杂多变.