20212920 许邵 2021-2022-2 《网络攻防实践》实践八报告

20212920 许邵 2021-2022-2 《网络攻防实践》实践八报告

1.实践内容

1.1 动手实践

1.1.1 恶意代码脱壳与提取

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

1.1.2 分析Crackme程序

在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

1.2 分析实践

1.2.1 分析一个自制恶意代码样本rada

1.2.2 攻击过程分析

Windows 2000系统被攻破并加入僵尸网络
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。

2.实践过程

本实践需要使用的工具:
PEID、strings、超级巡警自动脱壳器、IDA Pro、wireshark、md5sum、监视软件Process Explorer、tcpdump
平台:原则上不限,但是上述工具在WinXP攻击虚拟机中均有提供。

2.1 恶意代码脱壳与提取

打开rada.exe的属性,发现其为exe文件。

使用PEID查看这个程序,发现加壳工具为:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo,运行平台为Win32。

使用strings命令分析RaDa.exe,发现有一部分是乱码。

使用超级巡警进行脱壳,输出RaDa_unpacked.exe。

(这一部分建议将脱壳后的exe文件放到主机上做,虚拟机的命令提示符显示行数不够)
再使用strings.exe对RaDa_unpacked.exe进行分析。可以看到输出了一些类似于函数名的字符串。

再往上翻,可以找到作者信息。

2.2 Crackme程序分析

将crackme1.exe拖入IDA中。

分析函数调用图,不难看出,处理输入信息的可能是sub_401280函数段,因为有strcmp和printf等函数。

对sub_401280函数段进行分析。

可以得出函数的运作过程:
首先判断输入的参数个数是否为1。如果不是,输出“I think you are missing something”;否则,将输入的参数与“I knew the secret”作比较,正确则输出“You know how to speak to programs...”。
运行该程序,输入参数"I knew the secret",可见,我们的分析是正确的。

再分析crackme2.exe。
负责输入的函数还是在sub_401280中。

分析该函数段的流程图,发现大致的流程与crackme1.exe差不多,但是多了一个crackmeplease.exe文件了。

按照crackme1.exe的输入方式输入参数,返回的却是I have an identity problem。流程图里说明:你的这个文件名字不是“crackmeplease.exe”,所以会输出这个提示。

将这个文件改名为crackmeplease.exe,再输入之前的参数,输出了我们想要的“秘密”。

2.3 分析代码样本rada

打开命令提示符,cd到RaDa.exe的文件夹下,运行命令md5sum RaDa.exe,输出md5值。运行命令file RaDa.exe,输出文件的基本信息。

打开监视软件Process Explorer,然后运行脱壳后的RaDa,也就是RaDa_unpacked.exe(脱壳后的RaDa,乱码更少,更有利于分析)。
在RaDa进程的属性中,我们可以看出许多有用的信息。

1.RaDa.exe先通过HTTP,请求了10.10.10.10\RaDa\RaDa_commands.html
2.将RaDa.exe缓存到C:\RaDa\tmp文件夹下
3.修改注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,将RaDa.exe设为开机启动
4.将RaDa.exe文件存放到C:\RaDa\bin文件夹下
5.发动DDOS远程攻击

至此,我们可以回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
MD5摘要为caaa6985a43225a0b3add54f44a0d4c7
基本信息为:这是个32位的PE文件,在Windows GUI界面下运行。
2、找出并解释这个二进制文件的目的;

  • 利用HTTP协议,发动DDOS攻击
  • 恶意修改注册表信息,将该文件设为开机启动,使其每次开机都能发动攻击
  • 擅自对主机做上传下载操作

3、识别并说明这个二进制文件所具有的不同特性;
RaDa.exe存放在宿主的C盘的RaDa文件夹下,然后通过修改注册表,让它开机启动,使得每当宿主主机启动就能发起DDOS攻击。
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
在前面的实践中可以看出,该文件采用UPX对文件进行加壳。
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
应该是一种后门程序。这个文件的主要工作是完成对特定IP地址的DDoS攻击,也有一些控制主机的功能,但不会在其他主机之间进行传播。
6、给出过去已有的具有相似功能的其他工具:
msfvenom
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以。脱壳之后,用strings分析就行。

2.4 攻击过程分析

用wireshark打开botnet_pcap_file.dat。
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?
因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称:IRC。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,世界上有超过60个国家 提供了IRC的服务。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。
要加入一个IRC网络,需要发送口令、昵称和用户信息;注册后,会使用JOIN信息加入网络。
IRC使用的端口有:6667(明文传输,如irc://irc.freenode.net)、6697(SSL加密传输,如ircs://irc.freenode.net:6697)等。
2、僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
通常用于发动DDoS攻击。
3、蜜罐主机(IP地址:172.16.134.191)与哪些IRC服务器进行了通信?
在wireshark中输入筛选条件ip.src == 172.16.134.191 && (tcp.dstport == 6667 or tcp.dstport == 6697),筛选源地址为172.16.134.191、目的端口为6667或6697的数据包。

分析可得以下目的主机的地址:
66.33.65.58 63.241.174.144 217.199.175.10 209.196.44.172 209.126.161.29

4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
使用tcpflow进行分析,如果是在Kali Linux环境下,需要先安装tcpflow。
tcpflow -r /home/kali/Desktop/botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
这个命令会将分析的结果输出到report.xml文件中。
打开这个文件,会看到有关TCP流的信息。

使用管道命令查看文件。
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

可以看到,一共有3461台主机访问了僵尸网络。

5、哪些IP地址被用于攻击蜜罐主机?
使用tcpdump分析一下。指令是:tcpdump -n -nn -r /home/kali/Desktop/botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > tcpdump.txt;wc -l tcpdump.txt,文件会输出到tcpdump.txt文件下。

打开输出的文件,可以看到有156个IP地址被用于攻击蜜罐主机。

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端口有:
135(rpc)、139(netbios-ssn)、25(smtp)、445(smb)、 4899(radmin)、 80(http)
运行如下命令:
cpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
筛选响应的TCP端口

发现,只有137端口,说明攻击者成功访问了137号端口。137端口主要用于“NetBIOS Name Service”(NetBIOS名称服务),属于UDP端口。

7、哪些攻击成功了?是如何成功的?
使用wireshark,逐一对筛选出的端口进行排查
ip.addr == 172.16.134.191 && tcp.port == 要排查的端口号

  • 135端口

只是进行了数据连接。

  • 139端口

发现了TCP协议、SMB协议和NBSS协议。

  • 25端口

只是进行了连接。

  • 445端口

    发现了可疑程序PSEXESVC.EXE。
    查阅互联网,可以得到以下信息:
    PsExec 是由 Mark Russinovich 创建的 Sysinternals Suite中包含的工具。最初,它旨在作为系统管理员的便利工具,以便他们可以通过在远程主机上运行命令来执行维护任务。后来因为太过方便,被利用到内网渗透之中。psexec远程运行需要远程计算机启用文件和打印共享且默认的Admin$共享映射到C:windows目录。psexec建立连接之后目标机器上会被安装一个“PSEXESVC”服务。但是psexec安全退出之后这个服务会自动删除(在命令行下使用exit命令退出)。
    继续查阅分组,发现返回的信息中,含有\PIPE\ntsvcs,这是一个远程调用,攻击者应该拿到了访问权限,说明这次攻击是成功的。

  • 4899端口

    只是进行了连接。

  • 80端口
    首先发现了/NULL.IDA?CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC...,说明攻击者想通过缓冲区溢出攻击来获得命令行。

    后来又发现了很多使用cmd.exe命令行的信息,怀疑攻击者使用了脚本。


    随后发现了网站www.worm.com,说明攻击者使用了蠕虫。

    但是没有成功

    追踪24号tcp流,发现了类似于Please try this site again later.的提示,说明攻击者访问失败,攻击没有成功。

总结得知,只有对445端口的漏洞发起的PsExec蠕虫攻击是成功的。在这次攻击中,攻击者使用PsExec.exe,获得了远程主机的访问权限。

3.学习中遇到的问题及解决

暂未发现问题。

4.实践总结

本次实验,让我了解了一些通过恶意代码进行攻击的原理,包括恶意代码的结构、对目标的操作、取证分析等,能够帮助我们对更多的恶意代码进行破解和分析,从而制定安全的防守策略,进一步保证互联网安全。
另外,取证分析是一个细活,不能太粗心了,也不要急躁。

参考资料

posted @ 2022-05-03 17:16  言午召耳  阅读(91)  评论(0编辑  收藏  举报