1.实践内容
总结一下本周学习内容并介绍下实践内容,不要复制粘贴
2.实践过程
实验一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。
实验环境:WinXPattacker
实验材料:由老师提供在学习通的rada
键入命令file Rada.exe查看文件类型,查看该文件类型,是一个有图形化界面(GUI)的 Win32 PE(可移植可执行)程序。其中 PE32 表示这是一个32位的运行在windows操作系统上的程序, GUI 表示这个程序是一个有图形界面的程序, intel 80386 表示处理器架构。

可以看到其内容为乱码查看相关的资料发现,其可能是加壳了。使用PEiD对该文件查壳。可以看到Rada.exe加了UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo壳。

使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。选择RaDa.exe文件,开始脱壳,完成后其脱壳的输出路径与Rada.exe在同一目录(桌面)。文件名为RaDa_unpacked.exe。

如下图我们再次使用strings命令查看其字符串,可以看到出现大量函数调用名以及其他有用字符串,但是并未查找到作者信息。
我们换用idapro进行静态分析:

将脱壳后的文件直接拖入即可分析,可以成功找到作者信息和发布时间


实验二
实验环境:WinXPattacker
实验材料:由老师提供在学习通的crackme1.exe、crackme2.exe
实验工具:IDA Pro
实验目的:寻找特定的输入,使其能够输出成功信息。

对其输入参数进行试探,分别输入1个、2个、3个参数…,直到出现重复的回复。可以看到只有在输入一个参数的时候它的回复和其他的不一致,所以猜测输入应该为一个参数。

将目标程序拖入后 我们在ida的string栏先来查看输出的字符串相关位置。

发现在Strings窗口一共发现四个字符串,分别是
I think you are missing someting
I know the secret
Pardon?What did you say?
You know how to speak to programs,Mr.Reverse—Engineer
根据前面的猜猜发现只出现过两句,所以根据内容猜测
think you are missing someting是输入的参数数量不正确
Pardon?What did you say?是从参数数量正确,但可能参数的内容或范围不正确。所以目标应该放在没有出现的两句上。
- 找到代码中输出 ”I know the secret“的地方右键点击Edit function,可以发现是sub_401280中的输出
![image]()
查看exe程序的调用函数图,查看哪里会调用该函数依次点击ida veiw——veiw——Gragh——Function calls。

I know the secret是函数sub_401280中的输出。
从函数调用图中可以看到sub_401280函数调用的strcmp比较函数,fprintf、printf输出函数,以及sub_401510和sub_401840函数,

从上图可以看到如果命令行输入两个参数,(crackme1.exe也算一个参数,所以实际上就是crackme1.exe + 一个参数)则跳转至loc_4012D2。然后比较该参数是否是”I know the secret”,是的话,输出You know how to speak to programs, Mr.Reserve-Engineer;否则,输出Pardon? What did you say?;
如果命令行输入参数个数不为2,则输出I think you are missing something
- 程序验证
![image]()
键入”I know the secret”,发现输出”You know how to speak to programs, Mr.Reserve-Engineer”,表示成功运行程序。
分析无误!
分析crackme2.exe
和上一步类似,我们先对crackme2.exe输入的参数个数进行测试,可以看到仍然是输入一个参数的时候,和输入其他数量的参数时不一致,因此还是猜测输入的参数是1个。

与上一步类似依旧使用IDA Pro工具分析可以发现Strings窗口发现五个字符串,其中 I think you are missing something.和I have an identity problem.在进行参数猜测时出现过,猜测:
I think you are missing something.是输入的参数数量不正确的情况;
I have an identity problem.是参数数量正确,但可能参数的内容或者范围不正确;
另外3句没有出现过,还是和上一步一致,接下来应该找i know the secret。
查看i know the secret的来源可以发现,还是在函数sub_401280中。

和之前一样,查看sub_401280的汇编值,可以发现仍为401280。

查看程序整体的函数调用图例

查看sub_401280函数的流程图



从上图可知,如果命令行输入两个参数,则跳转至loc_4012D5;
比较第一个参数是否为”crackplease.exe”。
是的话,比较是否为第二个参数”I know the secret”;
是的话,输出We have a little secret : Chocolate;
否则,输出Pardon? What did you say?;
否则,输出I have an identity problem.。
如果命令行输入参数个数不为2,则输出I think you are missing something.
验证如下:

实验三
通过学习md5sum命令用于生成和校验文件的md5值,是一种逐位校验文件内容的算法。故这里使用md5sum命令查看Rada.exe文件摘要

可以看出摘要为caaa6985a43225a0b3add54f44a0d4c7
接着在和exploer.exe同文件夹下运行RaDa.exe。在Strings 对话框,在菜单栏中的Edit中点击Setup,设置类型为 Unicode。

查看Strings信息参数:可以看到作者和日期信息

分析程序运行信息:

HTTP请求 10.10.10.10\RaDa\RaDa_commands.html ,连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页。
之后又下载和上传文件到 C:/RaDa/tmp 。
将文件 RaDa.exe 复制到了 C:\RaDa\ 目录下。

往下看Starting DDoS Smurf remote attack可以发现该恶意程序似乎对主机实行了DDos拒绝服务攻击

再往下看可以发现该恶意程序对主机的注册表进行了读写和删除操作

exe 在宿主主机中执行指定的命令, get 下载, put 上传, screenshot 截屏, sleep 休眠。

宿主主机C:\RaDa\bin目录下确实存在RaDa.exe

使用wireshark进行分析,可以看到受害主机向目标主机 10.10.10.10 发送了大量的数据包:


问题回答总结:
1.提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息: 摘要为caaa6985a43225a0b3add54f44a0d4c7; 使用了UPX加壳工具进行了加壳处理,加壳方式: UPX
0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
2.找出并解释这个二进制文件的目的: 这个二进制文件通过网络获取指令,连接互联网时,该恶意程序就会通过http请求连接到指定主机,进行接受攻击者指令操作,并且攻击者可以完全控制该系统,所以这应该是一个后门程序。
3.识别并说明这个二进制文件所具有的不同特性: 该程序启动之后将自己复制到c盘之中,并且每过一段时间就会尝试与10.10.10.10建立tcp连接
4.识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术: UPX加壳; 通过查看网卡的 MAC 地址以及查看 VMware Tools 的注册表项 来判断操作系统是否运行在 VMware 虚拟机上,如果是,则使用–authors参数时将不会输出作者信息;
一些干扰字符串Starting DDoS Smurf remote attack,让分析者误认为是程序执行 DDoS 攻击,实际上并没有。
5.对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由: 这个样本不具有传播和感染属性,所以不是病毒或者蠕虫; 没有将自己伪装成有用的程序以欺骗用户运行,所以他也不属于木马; 所以应该是一个后门程序,如果是多对一控制,还可能是 HTTP
Bot(僵尸程序)
6.给出过去已有的具有相似功能的其他工具: Bobax——2004也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令
7.可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下? 作者为Raul siles 和 David Perze。使用ida或strings能查看,或者在非vmware环境下执行–authors参数。
实验四:
分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。
1.RC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口? IRC是Internet Relay Chat
的英文缩写,中文一般称为互联网中继聊天。只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。
所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称),所有的沟通就在他们所在的Channel内以不同的Nickname进行交谈。
申请加入的时候要发送口令、昵称和用户信息:USER 、PASS 、NICK 6667端口(明文传输)、6697端口(SSL加密)
2.僵尸网络是什么?僵尸网络通常用于干什么? 僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络
攻击者可以向自己控制的所有bots发送指令,让它们在特定的时间同时开始连续访问特定的网络目标,从而达到DDos的目的。
利用Botnet发送大量的垃圾邮件,而且发送者可以很好地隐藏自身的IP信息
Botnet的控制者可以从僵尸主机中窃取用户的各种敏感信息和其他秘密,例如个人帐号、机密数据等
攻击者利用Botnet从事各种需要耗费网络资源的活动,从而使用户的网络性能受到影响,甚至带来经济损失
3.蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通信?
使用Wireshark打开数据文件,并设置过滤条件ip.src == 172.16.134.191 && tcp.dstport ==6667,因为我们上面的分析知道IRC通过6667端口,我们可以找到五个IRC服务器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“去tcpflow分流筛选指定host与端口6667
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、report.xml
查看配置文件report.xml

可获知两个主机互相通信的时间、IP、mac地址、使用端口!
使用管道命令进行筛选,键入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 -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 > swl123.txt;wc -l swl123.txt,找出所有连接主机的IP地址放入swl123.txt文件中,显示有165个。


打开swl123.txt发现确实有165条
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,这条命令的作用是筛选TCP包。

再键入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,这条命令的作用是筛选UDP包。

可以看到,TCP一共有5个端口响应,分别是135(RPC:RemoteProcedureCall,远程过程调用)、139(NetBIOS会话服务)、445(SMB:Server Message Block,服务器消息块)、4899(远程控制软件(remote administrator)服务端监听的端口)、80号端口(HTTP协议)。UDP端口一共有1个端口响应,即137号端口(NetBIOS名字服务)。
这些端口都是流行网络病毒喜爱的后门端口,是黑客们最喜欢扫描的一些端口。
因此,我们接下来有目的性地使用wireshark分析如上面提到的ip和 端口来筛选流量。
7、那些攻击成功了?是如何成功的?
用wireshark打开该文件,在过滤器中键入tcp.dstport==80,查看所有有关80端口的攻击。



由上三图,我们可以看到攻击机向蜜罐发送了大量的无意义填充符号,靶机经常性发送错误报告报文,例如TCP Dup ACK(重复确认)和TCP ZeroWindow(接受缓冲区满)。这表明靶机遭受了缓冲区溢出攻击。
对于端口135,在过滤器中键入tcp.port135,发现只是对端口的一个简单扫描,并没有攻击。

对于端口139,在过滤器中键入tcp.port139,发现企图与许多主机建立连接,但是都失败了,该攻击没有成功。

对于端口445,这个端口连接非常多,可以看到许多 \samr,\srvsvc 字符串。61.111.101.78向蜜罐放了PSEXESVC.EXE,这是一种Dv1dr32蠕虫病毒的特征码,这种蠕虫正是通过IRC进行通信,攻击者对系统注入了蠕虫病毒并成功获取了远程调用。对445端口实施的攻击是成功的。


分析137号udp服务端口:

未发现异常流量。
我们再来分析80号端口数据包
tcp.dstport == 80 and ip.dst == 172.16.134.191

如下图,大量源ip24.197.194.106的数据包目标访问80端口,的行为就是不停的用脚本攻击 IIS 服务器的漏洞,从而获取系统权限。

过滤结果中还有218.25.147.83访问80端口,追踪tcp流发现:
c:\notworm,说明这是一个蠕虫攻击。上网搜索发现是红色代码(red code)病毒。

此外,其余的 ip 地址均为正常访问蜜罐
分析完毕!


