20192403赵秋涵 2021-2022-2 《网络与系统攻防技术》实验四实验报告
20192403赵秋涵 2021-2022-2 《网络与系统攻防技术》实验四实验报告
实验内容
借助软件分析恶意代码的组成、运行原理
1. 恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。
1.1 使用文件格式和类型识别工具分析rada
- 文件格式:可执行文件exe
右键查看属性
- 运行*台:win32
使用winhex打开文件
- 加壳工具:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
用PEID查看文件
1.2 使用脱壳软件对rada脱壳处理
-
用
strings
命令查看脱壳前文件 发现全是乱码
-
用超级巡警脱壳
1.3 用字符串提取工具对分析脱壳后样本
用strings
命令查看 发现函数名
仔细查看发现编写作者是Raul Siles 和 David Perez
2. 使用IDA Pro寻找crackme1、2的特定输入
2.1 分析crackme1.exe
用IDA PRO打开crackme1.exe
先查看函数调用图,发现负责判断输入参数的是401280
函数段
ida veiw——veiw——Gragh——Function calls
Setunhandledexceptionfilter:异常处理函数
setmode:打开文件方式的函数程序
getmainargs:调用命令行解析,并通过传递的指针将参数复制到 main()
ExitProcess:结束调用的进程及其所有的线程
接着找到sub_401280
函数的流程图
strcmp(str1,str2)函数用于比较输入的参数,根据比较结果返回整数:
str1=str2,返回零;
str1<str2,返回负数;
函数首先判断参数个数是否为2:
若参数个数不为2,输出I think you are missing something
;
若参数个数为2,则将第二个参数与I know the secret
作比较,正确则输出You know how to programs
所以我们推测,输入的口令是I know the secret
再次运行程序验证猜想
运行成功!
2.2 分析crakeme2.exe
打开crackme2.exe调用图,发现和crakeme1是一样的,负责判断输入参数的都是401280
函数段
再去找sub_401280
函数的流程图,发现逻辑和crack1是一样的,但多了一个crackmeplease.exe
分析推测这次负责判断的是crackmeplease
了,所以要先复制出一个crackmeplease
再输入口令
验证成功!
3. 分析自制恶意代码样本rada
3.1 实验过程
- 在Kali终端下使用
md5sum
命令查看摘要信息
md5摘要为caaa6985a43225a0b3add54f44a0d4c7
2. 打开process explorer
后运行软件,查看属性发现rada启动后有如下行为:
(1)通过HTTP协议请求10.10.10.10\RaDa\RaDa_commands.html
(2)将文件RaDa.exe
复制到了C:\RaDa\bin
目录下
(3)修改注册表,将rada设置为开机启动HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
(控制计算机启动项的注册表信息)
(4)信息里反复提到了cgi,经过查询发现cgi程序是在远程访问服务器时自动运行的程序。它不能放在任意目录下,必须放在cgi-bin目录下才可以运行
radar用cgi程序实现了文件的上传下载,下载的文件保存在了C:/RaDa/tmp目录下
(5)完成这一系列操作后 程序开始执行DDOS远程攻击 即控制主机来攻击其他主机
运行没有脱壳的rada,打开后还是很多乱码,还是运行脱壳以后的rada看的更清楚
3.2 回答问题
-
提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
md5摘要为caaa6985a43225a0b3add54f44a0d4c7
;
是32位的、在windows系统上运行的、有图形化界面的可执行文件,用加壳软件upx做了加壳处理 -
找出并解释这个二进制文件的目的
此恶意程序首次运行后会自动将自己添加入自启动列表;
每次启动后,会控制本机对指定IP发送大量http请求,即发动ddos拒绝服务攻击;
攻击者也能远程控制主机做上传下载等操作;
综上分析,这是一个远程后门控制程序。 -
识别并说明这个二进制文件所具有的不同特性
Rada.exe在c盘某目录下生成了两个子目录:bin和tmp;
程序激活后将木马文件存入bin目录,并把自己的木马文件目录添加到了自启动列表,以保证之后木马可以自启动。 -
识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
程序用upx做了加壳 -
对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
这个程序可以远程控制主机,但控制主机后主要完成的是对特定IP的DDOS攻击,所以怀疑这个程序是意在组成僵尸网络的僵尸病毒,不是蠕虫。 -
给出过去已有的具有相似功能的其他工具
SubSeven 2.1 版、GTBot、Sdbot -
可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
根据查看脱壳后的程序字符串可知,此病毒的作者是是Raul Siles 和 David Perez,创建时间是2004年。
4. 取证分析实践
Windows 2000系统被攻破并加入僵尸网络
数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
- IRC(Internet Relay Chat),即因特网中继聊天。 用户用自己的PC运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器即可聊天。
- 当IRC客户端申加入一个IRC网络时将发送JOIN信息来加入频道
3.IRC服务器通常在6667端口监听,也会使用6660—6669端口
4.2 僵尸网络是什么?僵尸网络通常用于什么?
- 僵尸网络Botnet是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络
- 僵尸网络通常被用于发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等
4.3 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
IRC服务器通常在6667端口监听,使用ip.src == 172.16.134.191 and tcp.dstport == 6667
过滤规则进行查找
发现蜜罐主机与5台IRC服务器进行了连接:
209.126.161.29
、66.33.65.58
、63.241.174.144
、217.199.175.10
、209.196.44.172
4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
- 使用kali虚拟机分析
首先安装tcpflowr
分流,依次输入命令sudo apt install tcpflow
、sudo apt install tcpflow-nox
输入命令tcpflow -r botnet_pcap_file "host 209.196.44.172 and port 6667
筛选指定host与端口
产生的3个文件是209.196.044.172.06667-172.016.134.191.01152
、172.016.134.191.01152-209.196.044.172.06667
、report.xml
2. 因为我们要找的是访问 209.196.44.172的主机,所以着重看第一个文件
使用管道命令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
查看文件
cat命令:连接209.输出文件
grep:搜索获取昵称输出行
sed:去除前缀
tr:将空格转换为换行
tr -d:删除\r
grep -v:去除空行
sort -u:排序并去除重复
wc -l:输出行数
得到结果显示有3461台主机访问了
关于这个命令的输出结果,我和有些同学的不太相同:有人和我一样是3461,有人则是3457,还不太清楚这是因为什么。
4.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 > 20192403.txt;wc -l 20192403.txt
将攻击蜜罐主机的ip筛选出输出至20192403.txt
文件中
结果显示有165个IP地址用于攻击蜜罐主机
4.6 攻击者尝试攻击了那些安全漏洞?
kali终端输入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端口
得到的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
筛选响应的udp端口
结果显示程序访问量udp 137
端口,此端口在局域网中提供计算机的IP地址查询服务,处于自动开放状态,可用于NetBIOS查点
4.7 哪些攻击成功了?是如何成功的?
用wire shark
逐一分析前一问排查出被扫描的端口
tcp 445
端口
有61.111.101.78向蜜罐主机发送PSEXESVC.EXE
PsExec通常会被攻击者用作远程主机执行命令,客户端执行psexec.exe后若服务器认证成功,会将psexesvc.exe上传到服务端的ADMIN$目录并作为服务运行,在执行完命令后删除对应的服务和psexesvc.exe。
通过对客户端和服务端的事件日志、注册表、文件系统进行分析,可以从客户端主机获得连接的目的主机,连接时间等信息;从服务端主机可以获得连接的客户端信息,连接时间等信息。
点进去分析数据包发现主机是有响应的,此攻击成功
2. tcp 80
端口
发现24.197.194.106 与蜜罐的有交互连接数最多
snort
对数据包扫描发现,大部分报警信息都为WEB-IIS、WEB-CGI、 WEBFRONTPAGE、WEB-MISC,即24.197.194.106
利用IIS漏洞对蜜罐主机进行 了Web探测,但是没有成功
- 分析发现
218.25.147.83
向蜜罐主机发送的http报文带有蠕虫(c:\notworm)
5. 实验中遇到的问题
管道命令grep
报错提示“匹配到二进制文件(标准输入)”
网上查资料说是LC_COLLATE环境变量的问题,输入命令export LC_COLLATE='C'
把LC_COLLATE
环境变量设置成C
但还没能解决问题
继续找资料发现grep里需要含有-a
参数,因为grep如果碰到\000 NUL字符,就会认为文件是二进制文件,但grep 匹配是默认忽略二进制数据的。
所以要使用grep -a
属性:不忽略二进制的数据。
grep的
-a
或--text
参数功能:将 二进制文件以text
文件的方式搜寻数据
在命令中添加-a
,问题解决
6. 实验感想
这次实验相比前几次涉及的虚拟机使用比较少,主要要借助软件分析程序,观察数据理解理论。
根据前两次的实验,我对后门程序、加壳等技术有了一定的了解,大致明白了该怎么设计实现,但其实对软件实现时的机制还是一知半解。这次实验中通过分析程序本身、程序实现时的数据流,我对恶意代码有了更深刻的认识。
做实验前我还在想,本学期的恶意代码选修和这个实验会不会有一定的重复性?实验中发现,两者还是不一样的:恶意代码选修主要是在分析PE文件的结构组成,关注的是比较底层的东西,而网络攻防实验关注的是攻击时具体怎么做,是更贴**时实战的。