20222425 2024-2025-1 《网络与系统安全技术》实验四报告
目录
1.实践内容
2.实践过程
2.1 恶意代码样本的文件类型识别,脱壳与字符串提取
2.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
2.1.2 使用脱壳软件,对rada恶意代码样本进行脱壳处理
2.1.3 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析
2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
2.2.1 分析crackme1.exe
2.2.2 分析crackme2.exe
2.3 分析自制恶意代码样本rada,并回答问题
2.3.1 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
2.3.2 找出并解释这个二进制文件的目的
2.3.3 识别并说明这个二进制文件所具有的不同特性
2.3.4 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
2.3.5 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
2.3.6 给出过去已有的具有相似功能的其他工具
2.3.7 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
2.4 取证分析实践:Windows 2000系统被攻破并加入僵尸网络
2.4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用那些TCP端口?
2.4.2 僵尸网络是什么?僵尸网络通常用于什么?
2.4.3 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
2.4.5 哪些IP地址被用于攻击蜜罐主机?
2.4.6 & 2.4.7 攻击者尝试攻击了那些安全漏洞?那些攻击成功了?是如何成功的?
3.学习中遇到的问题及解决
4.实践总结
1.实践内容
(1)恶意代码样本的文件类型识别,脱壳与字符串提取
(2)IDA Pro静态或动态分析,寻找特定输入
(3)分析一个自制恶意代码样本并回答问题
(4)攻破Windows 2000系统并使其加入僵尸网络
2.1 恶意代码样本的文件类型识别,脱壳与字符串提取
2.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
file命令查看文件格式
file命令用来识别文件类型,也可用来辨别一些文件的编码格式。它通过查看文件的头部信息来获取文件类型,不像Windows通过扩展名来确定文件类型。
可以看出rada.exe文件是32位的pe文件,能在基于interl 80386的cpu的windows系统上运行
PE Explorer查看文件格式、运行平台
PEID查看加壳工具
当加壳的程序运行时,会首先运行一小段脱壳代码,来解压缩加壳的文件。
识别结果为“UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo”,可知该程序加的是UPX的壳,版本是0.89.6。
2.1.2 使用脱壳软件,对rada恶意代码样本进行脱壳处理
直接使用PEiD自带的插件用于脱壳:
2.1.3 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析
1.strings命令
可以看到作者Raul Siles和David Perez,以及创建时间2004.9。
2. IDA Pro
也可以使用IDA Pro,IDA Pro打开恶意代码样本,点击“视图”→“打开子视图”→“字串”查看字符串:
2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
2.2.1 分析crackme1.exe
file查看文件信息
可知crackme1.exe为windows系统下运行的32位可执行程序,没有图形界面,仅使用控制台操作。
IDA Pro进一步分析
读代码可知,程序首先会判断参数个数,若参数个数不为2(包含函数名),输出“I think you are missing something.”,否则进入下一层选择结构。下一层判断第二个参数是不是“I know the secret”,若是则输出“You konw how to speak to programs,Mr.Reverse-Engineer”,否则输出“Pardon? What did you say?”。
2.2.2 分析crackme2.exe
file查看文件信息
IDA Pro进一步分析
读代码可知,程序首先会判断参数个数,若参数个数不为2(包含函数名),输出“I think you are missing something.”,否则进入下一层选择结构。下一层判断第一个参数是不是“crackmeplease.exe”,不是则输出“I have an identity problem.”,否则进入下一层选择结构。下一层判断第二个参数是不是“I know the secret”,若是则输出成功信息,否则输出“Pardon? What did you say?”。
2.3 分析自制恶意代码样本rada,并回答问题
2.3.1 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
我们使用Certutil来计算RaDa.exe的摘要,在RaDa.exe所在文件路径下打开cmd并输入如下命令。
certutil -hashfile RaDa.exe
certutil -hashfile RaDa.exe MD5
certutil -hashfile RaDa.exe SHA256
2.3.2 找出并解释这个二进制文件的目的
在processexplorer打开unpacked.exe,据此进行静态分析:
可知该二进制文件有以下行为:
通过反弹式连接目标为10.10.10.10的主机下的一个名为RaDa_commands的网页上;
将从10.10.10.10上下载的.cgi文件放入c:\RaDa\tmp中,将Rada.exe文件放入c:\RaDa\tmp中;
添加了2个注册表项。其中HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run是控制计算机启动项的注册表信息,在这里rada修改注册表实现了开机自启动,修改内容为REG_SZ字符串类型
疑似发起DDOS Smurf攻击。
截图、休眠。screenshot、sleep。
给出了数据库查询语句,查询的内容和猜测与MAC地址有关。
这里的2/3连在一起,就是将自身复制至感染主机系统盘,并激活自启动;1/4/5连在一起,可以联想到接收指令发动DDOS Smurf攻击。
2.3.3 识别并说明这个二进制文件所具有的不同特性
当文件被执行时,其将自身保存到本地,并修改注册表使得系统启动时执行该文件。
文件被执行后,将通过浏览器上网,请求页面并获得来自攻击者的指令。
支持put上传、get下载、screenshot截屏、sleep挂起等指令。
2.3.4 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
使用了0.89.6版本的UPX壳进行加壳处理。
2.3.5 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
后门。
理由:
不像蠕虫或者病毒进行传播。
不像木马伪装成正常程序。
可以获得控制权限。
2.3.6 给出过去已有的具有相似功能的其他工具
msfvenom开启监听模块后,用其生成的后门可以获得控制权,进行截图、摄像头获取等操作。
ncat、socat反弹连接后可以给主机添加任务,如开机自启动。
2.3.7 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
在Windows下命令行运行,加上“--authors”作为参数即可显示作者名字。
2.4 取证分析实践:Windows 2000系统被攻破并加入僵尸网络
数据源botnet_pcap_file.dat是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题。
2.4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用那些TCP端口?
IRC即Internet Relay Chat,互联网中继聊天,是一种分布式的客户端/服务器系统。允许用户在不同的主机之间通过互联网进行实时交流。客户端用户可以加入特定的频道(channel)与该频道中的所有用户聊天,也可以采用私聊的方式。特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。
当IRC客户端申请加入一个IRC网络时,发送的消息包含以下信息:
用户名(Nickname):客户端请求在IRC网络上使用的昵称。
用户模式(User mode):客户端请求的用户模式,这可能包括隐私设置、允许收到私人消息等。
服务器密码(Server password):如果需要,客户端可能会发送服务器密码以进行连接。
IRC一般使用端口:
6667:IRC客户端与服务器之间的标准端口,用于非加密的通信。
6697:IRC客户端与服务器之间的加密端口,用于加密通信,通常使用SSL/TLS协议。
2.4.2 僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(BotNet)是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。被感染的主机将通过控制信道接收攻击者的指令,组成一个僵尸网络。
通常情况下,僵尸网络用于以下目的:
分布式拒绝服务攻击(DDoS):僵尸网络可以由黑客用来发动大规模的DDoS攻击,在特定的时间向特定的目标服务器或网络发送大量的请求,导致目标系统超载,服务中断或崩溃。
垃圾邮件发送:黑客可以利用僵尸网络发送大量的垃圾邮件,用于传播广告、恶意软件或钓鱼攻击,从而欺骗接收者、诱使他们点击链接或下载附件。
分发恶意软件:僵尸网络可以用于分发和传播恶意软件,如病毒、木马、勒索软件等,进一步感染更多的计算机并扩大网络规模。
2.4.3 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
使用Wireshark打开数据源botnet_pcap_file.dat,设置过滤条件如下:
ip.src == 172.16.134.191 && tcp.dstport == 6667 && tcp.flags == 0x2
蜜罐主机与5台IRC服务器进行了通信:209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172
2.4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
这里我们尝试使用估计方法统计主机数,即观察期间不同昵称出现个数(每个IRC的使用者都有一个昵称Nickname)。
tcpflow分流
首先获取在209.196.44.172与172.016.134.191之间的所有的IRC数据包。在kali终端中输入如下命令:
┌──(root㉿kali)-[/home/kali]
└─# apt-get install tcpflow
┌──(root㉿kali)-[/home/kali]
└─# tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667' # 进行抓包,-r读取该数据包
┌──(root㉿kali)-[/home/kali]
└─# export LC_COLLATE='C'
┌──(root㉿kali)-[/home/kali]
└─# export LC_CTYPE='C' # 避免出现字符编码问题,导致计数不准确
可以得到三个文件:209.196.044.172.06667-172.016.134.191.01152、172.016.134.191.01152-209.196.044.172.06667、report.xml。
观察不同昵称出现个数
主机进入IRC频道后,频道会将当前频道中所有的主机的信息都发送过来,可以从其中的数据包中计算当前频道共有多少主机。
所以要对209.196.044.172.06667-172.016.134.191.01152文件进行筛选,输入如下命令:
可以得到共有3461个主机访问过服务器。
2.4.5 哪些IP地址被用于攻击蜜罐主机?
tcpdump是一个网络数据采集分析工具,可捕获网络流量并将其显示在终端上。它通常用于网络故障排除、分析和安全目的。
tcpdump [ -c count ] [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
[ -Q|-P in|out|inout ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
[ expression ]
类型关键字:host,net,port;
传输方向关键字:src,dst,dst or src,dst and src;
协议关键字:ip,arp,udp,tcp,fddi;
-n 不把ip转化成域名,直接显示 ip,避免执行 DNS lookups 的过程,速度会快很多;
-nn 不把协议和端口号转化成名字,速度也会快很多。
由于蜜罐具有特殊性,将所有进入蜜罐的流量都视为可疑流量、都是攻击。用下列命令将所有连接蜜罐主机的IP地址输出到20222425ip.txt。
所有可能连接到主机的IP地址有165个。
2.4.6 & 2.4.7 攻击者尝试攻击了那些安全漏洞?那些攻击成功了?是如何成功的?
使用wireshark了解网络流分布情况
使用Wireshark打开数据源botnet_pcap_file.dat,选择“统计”→“协议分级”,了解网络流大致情况。
可发现其中只包含IP包,186个为UDP协议,54350个为TCP协议。
UDP中包含NetBIOS Name Service等,TCP中包含NetBIOS Session、HTTP、Data、IRC等。
筛选TCP端口
输入下列命令筛选TCP响应端口:
筛选UDP端口
TCP响应端口为135、139、25、445、4899、80,UDP响应端口为137。
TCP25端口
两个端口只是进行了连接而没有数据的交互,所以推测攻击者对这两个端口进行了connect扫描。
TCP139端口
大部分连接没有传递具体会话内容,空会话连接。
TCP445端口
在No.33280 61.111.101.78发起的请求的报文中发现了“PSEXESVC.EXE”
TCP4899端口
4899端口是远程控制软件Radmin服务端监听的端口,经常被黑客用来控制被控机。
TCP80端口
UDP137端口
137端口主要用于“NetBIOS Name Service”(NetBIOS名称服务)
3.学习中遇到的问题及解决
问题1:安装IDAPRO后运行IDA时显示崩溃状态,IDA用不了。
原因及解决方法:IDA安装途径里不能有中文
4.实践总结
通过本次实验,我学会了如何对恶意代码进行脱壳,字符串等操作,也学会了如何使用脱壳软件和分析恶意代码。同时还通过实践从被攻击者的视角理解了攻破目标主机的基本方法:探测目标主机、获取网络拓扑、扫描开放端口、攻击可能存在漏洞的端口、尝试攻击相邻主机。通过分析数据包,我了解到了僵尸网络的各种状态,也试着通过wireshark从包的角度分析僵尸网络。