20192406梁健 2021-2022-2 《网络与系统攻防技术》实验四实验报告
20192406梁健 2021-2022-2 《网络与系统攻防技术》实验四实验报告
1.实验内容
一、恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
三、分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
四、取证分析实践
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.实验过程
一、恶意代码文件类型标识、脱壳与字符串提取
实践过程
- 在kali中使用file命令查看rada.exe。
- 使用Stud_PE工具查看rada的基本信息。
- 使用超级巡警工具对文件进行脱壳,提示存在壳的样本库,对程序进行自动脱壳。
- 在kali中使用strings命令查看脱壳后的程序RaDa_unpacked.exe,可以看到一些字符串和乱码。
- 执行RaDa_unpacked.exe程序,在Win10中使用ProcessExplorer查看程序的Properties,看到
Copyright (C) 2004 Raul Siles & David Perez
,可知作者是Raul Siles和David Perez。
- 执行RaDa_unpacked.exe程序弹出的窗口不要关闭,关闭进程就结束了。
二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
实践过程
-
在kali中分析crackme1.exe的文件类型,得到该程序为32PE命令行程序。
-
根据提示可知该程序在命令行携带了参数,数量为1个,因为输入2个和输入0个的提示信息一样。
- 在WinXP中使用IDA pro分析crackme1.exe文件
- 查看函数调用信息,操作栏
View->Graphs->Function calls
- 通过分析函数调用信息,可以猜测主要的函数为
sub_401280
,通过jump->jump to function->sub_401280
- 查看伪代码
view->Open subviews->Generate pseudocode
- 分析伪代码功能
程序存在两层判断,第一层判断命令行中输入的参数个数是否为2,第二层判断第二个参数是否等于字符串"I know the secret"
。如果都满足则输出"You know how to speak to programs, Mr. Reverse-Engineer\n"
- 使用IDA pro查看crackme2.exe的伪代码
- 分析伪代码可知程序使用了三层if语句,第一层判断为命令行中输入的参数个数是否为2,第二层判断第一个参数(即程序名)是否等于字符串
"crackmeplease.exe"
,第三层判断第二个参数是否等于字符串"I know the secret"
。如果都满足则输出正确结果。
三、分析一个自制恶意代码样本rada
实践过程
- 使用FileAlyzerPortable查看RaDa.exe的MD5值
CAAA6985A43225A0B3ADD54F44A0D4C7
- 使用ProcessExplorer查看RaDa_unpacked.exe的Properties->Strings,有如下行为:
(1)请求网页http://10.10.10.10/RaDa/RaDa_commands.html
(2)在系统盘(C:)创建C:\RaDa\bin\RaDa.exe
和C:\RaDa\tmp
(3)修改注册表将RaDa.exe设为开机自启动HKLM\Software\Microsoft\Windows\CurrentVersion\Run\RaDa REG_SZ C:\RaDa\bin\RaDa.exe
-
完成上面的任务后,程序开始远程DDoS攻击。
-
之后程序执行注册表指令
RegWrite RegRead RegDelete
- 程序在后台执行,它支持一些执行指令
exe put get screenshot sleep
。从上述程序功能可以合理猜测,这是个后门程序,能够远程连接,并提供给攻击者宿主机器支持的指令。
- 使用IDA pro查看RaDa_unpacked.exe的Strings window,发现该程序支持一系列参数
参考其他博客整理如下:
参数 | 作用 |
---|---|
--verbose | 显示Starting DDoS Smurf remote attack |
--visible | 决定在获取html文件时,IE窗口是否可见 |
--server | 指定命令文件控制服务器的ip地址、访问协议及目录等,默认是http://.10/RaDa |
--commands | 指定命令文件,默认是RaDa_commands.html |
--cgipath | 指定服务器上cgi文件的根目录,默认是cgi-bin |
--cgiget | 指定负责文件上传的cgi脚本,默认是upload.cgi |
--cgiput | 指定负责文件下载的cgi脚本,默认是download.cgi |
--tmpdir | 指定临时文件夹的位置,默认是C:\RaDa\tmp |
--period | 指定两次向服务器请求命令文件的时间间隔,默认是60秒 |
--cycles | 指定多少次向服务器请求命令文件后退出,默认是0(没有限制) |
--help | 输出版权信息 |
--gui | 使用该参数会使样本出现一个GUI窗口 |
--installdir | 指定样本的安装路径,默认是C:\RaDa\bin |
--noinstall | 使用该参数,样本将不会安装、也不会添加注册表 |
--uninstall | 卸载样本 |
--authors | 如果确认不是在VMware的虚拟机中运行,则显示样本的作者;否则显示参数不存在 |
- 对
--authors
分析,双击进入变量的定义位置
- 右键变量名选择跳转到引用位置
jump to xref to operand..
,经过查看引用位置,应该选择sub_40B010+76 push offset aAuthors; "--authors"
位置
sub_40B010+76 push offset aAuthors; "--authors"
位置如下
- 此部分代码判断程序是否在Vmware虚拟机上执行,其结果存在两种情况,在Vmware虚拟机上则输出
Unknown argument: --authors
,不在则输出Authors:Raul siles&David Perze, 2004
。
- 回答问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
MD5值CAAA6985A43225A0B3ADD54F44A0D4C7
PE32 executable for MS Windows
(2)找出并解释这个二进制文件的目的;
从程序功能分析可以合理猜测,这是个后门程序,能够发出http请求,供攻击者远程连接,并提供给攻击者宿主机器支持的指令。
(3)识别并说明这个二进制文件所具有的不同特性;
程序执行后将自己复制到系统盘,并将程序自身写入开机自启动中。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
使用了UPX加壳处理,并且在程序执行时对作者信息进行了隐藏。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
后门程序,该程序不具有自动传播功能,并且没有对程序进行伪装,但该程序可以提供攻击者远程连接和远程操作指令。
(6)给出过去已有的具有相似功能的其他工具;
2004年发现的木马Bobax,还有特洛伊木马Setiri及其前辈GatSla
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可能,通过--authors
参数可以在非VMware的虚拟机中运行,并显示样本的作者;在VMware的虚拟机中执行,则显示参数不存在Unknown argument: --authors
。作者:Raul siles和David Perze。
四、取证分析实践
实践过程
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC:因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。
它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。
申请加入一个IRC网络时会发送服务器的域名,TCP申请端口和昵称。
一般端口号为6667,或者6660-6669范围的端口,该端口为明文传输,SSL加密传输在6697端口。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指攻击者(称为botmaster)出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
它往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
使用抓包和分析工具Wireshark分析文件botnet_pcap_file.dat,并且设置相应的过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667
,过滤源IP为蜜罐主机且tcp目的端口为6667的数据包。通过分析,IRC服务器IP包括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 -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
,
会生成172.016.134.191.01152-209.196.044.172.06667
,209.196.044.172.06667-172.016.134.191.01152
和report.xml
三个文件。
report.xml内容如下:
<configuration>
<fileobject>
<filename>209.196.044.172.06667-172.016.134.191.01152</filename>
<filesize>1082018</filesize>
<tcpflow startime='2003-03-06T04:23:18.829879Z' endtime='2003-03-06T08:27:57.736205Z' mac_daddr='00:05:69:00:01:e2' mac_saddr='00:e0:b6:05:ce:0a' family='2' src_ipn='209.196.44.172' dst_ipn='172.16.134.191' srcport='6667' dstport='1152' packets='9798' out_of_order_count='223' len='1630694' />
</fileobject>
<fileobject>
<filename>172.016.134.191.01152-209.196.044.172.06667</filename>
<filesize>1046</filesize>
<tcpflow startime='2003-03-06T04:23:18.775202Z' endtime='2003-03-06T08:27:57.867166Z' mac_daddr='00:e0:b6:05:ce:0a' mac_saddr='00:05:69:00:01:e2' family='2' src_ipn='172.16.134.191' dst_ipn='209.196.44.172' srcport='1152' dstport='6667' packets='8902' len='536112' />
</fileobject>
</configuration>
将得到的209.196.044.172.06667-172.016.134.191.01152
以utf-8的编码保存为test.txt
编写并执行如下程序可计算得到主机数量,数量为3457
(5)哪些IP地址被用于攻击蜜罐主机?
使用tcpdump
指定IP地址收集被攻击的端口写入1.txt,然后执行tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >1.txt; wc -l 1.txt
统计个数为148
通过snort获取所有可能链接的主机IP地址,将内容输出到2.txt,指令
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 > 2.txt;wc -l 2.txt
,共计165个
(6)攻击者尝试攻击了那些安全漏洞?
使用sudo snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii
指令先查一下网络流分布情况,根据包的协议情况,进一步筛选出响应的TCP端口和UDP端口
查看一下TCP响应过的端口,命令如下
tcpdump -r botnet.pcap -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
查看一下UDP响应过的端口,命令如下
tcpdump -r botnet.pcap -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq
TCP 响应端口为135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin)和80(http)。udp 响应端口137(netbios-ns)。
分析如下不同端口:
- TCP135只是进行了连接,没有数据内容交换,很有可能是对这个端点进行了connect扫描
- TCP25只是进行了连接,没有数据内容交换,很有可能是对这个端点进行了connect扫描
- TCP139这里大部分连接也没有传递具体会话内容,主要是SMB查点
- TCP445 发现一个PSEXESVC.EXE的文件,这个二进制文件主要是一种Dv1dr32蠕虫,这种蠕虫通过IRC进行通信。
该源IP地址与蜜罐主机建立了会话,攻击成功,这里Windows的svcctl MSRPC接口用于同SCM(服务控制管理器)通讯,svcctl漏洞允许匿名用户连接到SCM,然后就可以枚举所安装的或正在运行的服务。
- TCP4899 4899是远程控制软件所开启的服务端端口,经常被黑客用来控制被自己控制的远程电脑。
- TCP80 通过该端口使用脚本攻击IIS服务器的漏洞,从而获取系统权限。
210.22.204.101访问了80端口,攻击者通过缓冲区溢出获得命令行:
源IP 218.25.147.83,这里会看到c:\notworm,是一个蠕虫攻击:
其余对80端口攻击,蜜罐主机均以IIS服务器的默认页面作为回应,这些攻击均失败了:
- UDP137 网络基本输入/输出系统(NetBIOS) 名称服务器(NBNS) 协议是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它在基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法,在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是 NetBIOS 查点了
(7)哪些攻击成功了?是如何成功的?
综上所述,SVCCTL服务漏洞攻击成功,PSEXESVC蠕虫攻击成功,缓冲区溢出攻击成功了。
3.问题及解决方案
- 问题1:忘记使用IDA pro的反编译功能分析程序功能
- 问题1解决方案:使用IDA快捷键F5,快速反编译,之后分析程序非常简单。
- 问题2:使用其他同学编写好的代码时,存在参数不存在的情况
- 问题2解决方案:通过合理推测和分析,将得到的
209.196.044.172.06667-172.016.134.191.01152
以utf-8的编码保存为test.txt
4.学习感悟、思考等
本次实验的任务量非常大,在理解与实际动手操作上花费的时间比其他实验内容要多很多,在分析和研究实验内容的同时,也发现很懂学习内容并没有很好的学到,如汇编语言等都不是很能理解。在后两个实验内容上,体现出我的分析能力和知识水平还有待提高,在学习和实践中需要多思考,但时间成本又是无法避免的,还是要多花时间在深入学习上,争取下次实验能够做的更好。