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)使用file命令查看RaDa.exe的文件类型
可以看出说明该文件是运行在Intel 80386的cpu上的32位的pe文件,且支持的操作系统是windows。
(2)在Windows系统使用PE explorer
(3)使用PEID解析文件
(4)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
(5)使用字符串提取工具,对脱壳后的rada恶意代码进行分析,从中发现rada恶意代码的编写作者是谁
作者是这两位
通过IDApro查看字符串,寻找到作者的信息。
2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
2.2.1分析crackme1.exe
(1)cmd测试crackme1.exe文件,试探输入格式
(2)利用IDA查看字符串。
可以看到cmd执行的内容
(3)使用IDApro查看crackme
点击View->Graphs->Function calls,打开函数调用图,发现sub_401280调用了strcmp、printf、fprintf等这些有关字符串处理的函数。
(5)查看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.”。
重新回到cmd测试
发现与分析结果一致
2.2.2分析crackme2.exe
(1)cmd测试crackme2.exe文件试探输入格式
(2)使用IDA查看字符串
可以看到cmd执行的内容
查看函数调用图
查看main函数伪代码
分析可得若参数个数不为2(包含函数名),输出“I think you are missing something.”
若参数个数为2:
若第一个参数是“crackmeplease.exe”,第二个参数是“I know the secret”,输出成功信息
若第二个参数不是“I know the secret”则输出“Pardon? What did you say?”。
若第一个参数不是“crackmeplease.exe”,输出“I have an identity problem.”。
复制一个crackme2.exe改名为crackmeplease.exe
回到cmd验证
发现与分析结果一致
2.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息:
利用md5sum和file命令获取基本信息
(2)找出并解释这个二进制文件的目的
打开Process Explorer,然后搜索脱壳后的RaDa,双击对应的进程,点击字符串,可以看到
1.通过HTTP协议请求10.10.10.10\RaDa\RaDa_commands.html。
2.对download.cgi和upload.cgi进行某些操作
3.在C盘中创建一个RaDa文件夹,里面创建了tmp文件夹。
4.添加了一个注册表项:HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,这个注册表项是控制计算机启动的信息,这样实现了开机自启动rada。
5.在RaDa文件夹中,创建了bin文件夹,将RaDa.exe复制在bin文件夹中。
6.添加了一个注册表项:HKLM\Software\VMware, Inc.\VMware Tools\InstallPath;该位置的注册表项可控制远程桌面上的客户端驱动器重定向行为。猜想这个操作是为了实现远程控制桌面。
7.该位置的字符串显示发起DDOS Smurf远程攻击。
8.注册表进行读、写、删操作
(3)识别并说明这个二进制文件所具有的不同特性;
1.可以修改系统,并且添加了注册表,实现了开机自启动
2.可以远程控制。运行远程连接被攻击者连接
3.可以控制桌面,并且可以进行读写删操作,使得计算机完全陷入攻击者的掌控当中,属于具有强大攻击性的恶意代码
(4)识别这个二进制文件中所采用的防止被分析或逆向工程的技术;
运用了加壳技术
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由:
属于后门程序。
理由:①该恶意代码不会进行传播,不是蠕虫或者病毒。
②没有伪装成正常程序,不是木马,是直接存在的。
③该恶意代码可以实现远程控制,并且设置了开机自启动。
(6)给出过去已有的具有相似功能的其他工具
msfvenom,veil
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,在上面实验的多个工具中都可以查到该文件的作者是两位外国友人。只要有工具并且在安全的环境下保存了这个文件就可以查出文件的作者。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
①基于特征码的检测
基于特征码的检测是最传统的恶意软件检测方式之一。这种方法通过收集已知恶意软件的特征码(即恶意软件中独特的二进制模式或字符串),将其存储在数据库中。当扫描文件时,将文件与数据库中的特征码进行比较,如果发现匹配项,则认为该文件可能包含恶意软件。
②行为分析
行为分析侧重于观察程序运行时的行为,而不是仅仅依赖静态特征。它会监控系统调用、网络活动等,寻找异常或不符合正常应用程序行为的迹象。
③虚拟机沙箱检测
虚拟机沙箱是一种隔离环境,在这个环境中可以安全地运行可疑程序而不会影响宿主系统。通过在沙箱内执行程序并监控其行为,可以评估程序是否具有恶意性质。
④主动防御技术
主动防御技术不仅仅是在发现威胁后做出反应,而是通过预测和阻止可能的攻击途径来防止恶意软件的安装和传播。这包括但不限于实时监控、应用程序控制、自动更新安全策略等措施。
⑤机器学习与人工智能
利用机器学习算法分析大量数据集,从中学习正常和异常行为之间的差异。一旦训练完成,模型就可以用于预测新的样本是否可能是恶意的。
2.4取证分析实践
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
IRC,即因特网中继聊天,是一种网络聊天协议。它允许任意的因特网用户之间做即时的交谈。用户可以使用特定的客户端聊天软件,通过因特网以IRC协议连接到IRC服务器上,再通过服务器中继与其他连接到这一服务器上的用户交流。
当IRC客户端连接到一个IRC网络时,通常会发送一条消息以建立连接和进行身份验证。这条消息一般为:USER
其中,各项的含义如下:
username:客户端用户的用户名,用于标识用户。
hostname:客户端的主机名,即客户端所在的计算机的主机名。
servername:客户端所连接的服务器名,即用户要加入的IRC服务器的名称。
realname:客户端用户的真实姓名,用于显示给其他用户。
这条消息的发送旨在建立与服务器的连接,并向服务器提供用户的身份信息,以便服务器对用户进行识别和授权。
IRC一般使用TCP 6667端口进行通信。这是IRC协议默认的登录端口。然而,当TCP 6667端口不通时,IRC客户端会尝试其他不同的TCP端口,直到登录失败。这意味着,虽然6667是主要的通讯端口,但IRC也可能使用其他端口进行通信,具体取决于服务器的配置和客户端的设置。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet)是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,这些被感染的主机将通过一个控制信道接收攻击者的指令,并组成一个僵尸网络。之所以用“僵尸网络”这个名字,是为了更形象地让人们认识到这类危害的特点:众多的计算机在不知不觉中如同中国古老传说中的僵尸群一样被人驱赶和指挥着,成为被人利用的一种工具。
僵尸网络有多种用途,以下是一些最常见的应用:
分布式拒绝服务(DDoS)攻击:僵尸网络可以通过同时向目标服务器发送大量请求,导致服务器过载并最终崩溃。这种攻击不仅会导致目标网站无法访问,还可能对企业造成巨大的经济损失。
发送垃圾邮件:僵尸网络可以用来发送大量垃圾邮件,这些邮件可能包含广告、诈骗信息或钓鱼链接。
窃取敏感数据:僵尸网络可以用来从受感染的计算机上窃取敏感数据,例如登录凭证、银行信息和个人身份信息。
加密货币挖矿:僵尸网络可以利用受感染计算机的计算资源来进行加密货币挖矿。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
蜜罐(Honeypot)是一种安全机制,旨在诱使攻击者入侵、攻击或探测计算机系统、网络或应用程序,从而收集有关攻击者行为和策略的信息,以及提高对抗网络攻击的能力。蜜罐通常是一个看似有漏洞或价值的系统、网络或应用程序,但实际上是由安全专家部署和监控的虚拟或实体资源。攻击者可能会对蜜罐进行攻击,试图入侵、获取权限或进行其他恶意活动,而安全团队则可以监视并分析这些攻击行为。
用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,输入apt-get install tcpflow
使用tcpflow工具读取名为botnet_pcap_file.dat的pcap文件。
其中过滤规则指定了要匹配的数据包的主机地址和端口号。具体来说,这个规则表示只匹配目标主机地址为209.196.44.172且目标端口号为6667的数据包。
输入tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
查看report.xml文件:
输入代码
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 "\r" | grep -v "^$" | sort -u | wc -l
统计访问以209.196.44.172为服务器的僵尸网络的主机数:发现有3461台
输入代码
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 > 20222302lzy.txt;wc -l 20222302lzy.txt
打开文件发现有165台主机被用于蜜罐攻击
(6)攻击者尝试攻击了那些安全漏洞?
使用wireshark的“统计-协议分级”:发现主要是TCP包,其次是UDP包
筛选TCP响应端口,读取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
筛选UDP响应端口,读取dat文件,查看哪些端口是开放的,输入代码:
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
(7)哪些攻击成功了?是如何成功的?
tcp135端口,发现是普通连接并没有进行攻击
139端口,也没有什么攻击
25端口,也没有攻击
445端口此时不再是简单的连接,出现了SMB网络文件系统协议
4899端口是一个远程控制软件服务端监听的端口,具有远程控制功能,通常杀毒软件是无法查出它来的。可能被黑客用此来进行远程控制。
80端口,发现了传递大量的CCCCCCCCCCC的内容,有可能是为了实现缓冲区溢出攻击或者蠕虫攻击
udp的137端口,发现了大量NBNS协议包
3.问题及解决方案
问题1:不能用cmd运行crackme1.exe文件
解决方案:将文件剪切到对应路径下后可以运行
问题2:输入参数crackme1.exe "I know the secret"后没有出现想要的回复
解决方案:将中文“ ”改为英文" "
4.学习思考、感悟等
本次实验与之前实验相比简单一些,主要是抓包和分析。通过这次实验,我对恶意代码、僵尸网络、病毒、蠕虫等概念有了更深入的理解,并掌握了PEID、IDA Pro、Process Explorer等软件的使用。特别是在运用IDA Pro进行静态或动态分析的过程中,需要借助函数调用图、流程图等手段推测程序的行为模式。在实验的过程中,我深刻体会到了理论与实践相结合的重要性。