20222406 2024-2025-1 《网络与系统攻防技术》实验四实验报告
20222406 2024-2025-1 《网络与系统攻防技术》实验四实验报告
1.实验内容
恶意代码分析、IDA Pro 静态或动态分析可执行文件、自制恶意代码样本 rada 分析、Windows 2000 系统被攻破后的取证分析。
2.实验过程
2.1 恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。
2.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
先去学习通下载.rar压缩包并复制到虚拟机中,输入密码rada将文件提取出来:
通过命令行查看文件类型,输入file RaDa.exe
查看文件信息:
进入学习通下载peid.rar并解压,使用.exe查看加壳类型:
文件格式:PE32说明该文件是32位的可执行文件。
运行平台:(GUI) Intel 80386, for MS Windows说明能在基于Intel 80386的Windows操作系统系统上运行。
加壳工具:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
2.1.2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
在学习通下载脱壳.rar,即超级巡警脱壳软件,按路径寻找文件,选择刚下载的RaDa.exe,进行脱壳处理:
接下来会出现脱壳后的代码文件:
2.1.3 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁
将Windows端的unpacked文件拖到Kali虚拟机中,这里我们使用命令strings RaDa_unpacked.exe
:
从上图可知作者是Raul Siles && David Perez
2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
2.2.1 查看crackme1.exe信息
在学习通下载crackme1.exe和crackme2.exe并拖进kali:
输入命令file crackme1.exe
查看信息:
32位的可执行文件,能在基于Intel 80386的Windows操作系统系统上运行。
2.2.2 在命令提示符中测试
在windows中的命令提示符中输入crackme1.exe 2406
和crackme1.exe 2406 wangrui
和crackme1.exe 2406 wr
:
由上图可以发现,命令行只输入一个参数时输出Pardon? What did you say?,输入超过两个参数时输出I think you are missing something.
2.2.3 利用IDA Pro分析文件
在学习通下载IDA pro.rar,解压后打开.exe文件进行安装:
随后在IDA中打开crackme1.exe即可发现:
可以发现,如果输入"I know the secret"
的话,就会输出You know how to speak to programs, Mr. Reverse-Engineer。如果不是I know the secret,就会输出pardon? what did you say?。参数数量更多就会输出I think you are missing something.
2.2.4 得到正确结果
输入"I know the secret"
:
2.2.5 查看crackme2.exe信息
输入file crackme2.exe
:
2.2.6 在命令提示符中测试
在windows中的命令提示符中输入crackme2.exe 2406
和crackme2.exe 2406 wangrui
和crackme2.exe 2406 wr
:
由上图可以发现,命令行只输入一个参数时输出I have an identity problem.,输入超过两个参数时输出I think you are missing something.
2.2.7 利用IDA Pro分析文件
经过与2.2.3同样的步骤后,可以看出,要想得到正确的结果,需要输入crackmeplease.exe "I know the secret"
,
我们将文件名修改为crackmeplease.exe,即可得到正确的结果:
2.3 分析一个自制恶意代码样本rada,并撰写报告,回答以下问题
2.3.1 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
在虚拟机中输入md5sum RaDa.exe
查看MD5摘要值:
2.3.2 找出并解释这个二进制文件的目的
在学习通下载ProcessExplorer.rar并解压打开:
双击运行unpacked的RaDa.exe文件,注意出现弹窗后不要点确定:
在Process Explorer中双击进程,可以看到:
点击String:
可以发现:
该程序使用HTTP协议连接到目标为10.10.10.10\RaDa\RaDa_commands.html的网页上,下载和上传某些文件,
并且在主机C盘中创建一个文件夹C:/RaDa/tmp,并且将文件RaDa.exe复制到了C:\RaDa\bin中,
添加了一个注册表项:HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,激活了自启动,
还添加了一个注册表项:HKLM\Software\VMware, Inc.\VMware Tools\InstallPath,实现了对入侵主机的远程控制,
该程序还可以执行DDos攻击,对注册表内容进行更改,还可以执行其他入侵操作,作者是Raul siles和David Perze。
2.3.3 识别并说明这个二进制文件所具有的不同特性
1.该二进制文件能修改注册表,添加了一个注册表项:实现了开机自启动RaDa。
2.自我复制到C盘,将RaDa.exe复制在Rada\bin文件夹中。
3.实现远程控制。
4.实现入侵系统并操纵主机,如get screenshot sleep操作。
2.3.4 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
upx加壳,在上面的截图中我们可以看到存在乱码,这是加壳后的结果。
2.3.5 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
这属于后门程序。首先它不具备自我复制的机制,没有实现在计算机中的传播;其次它没有伪装操作,也不存在欺骗下载的操作。而其可以实现操控目标主机、提权的行为,是后门程序的主要特点,所以判定为后门。
2.3.6 给出过去已有的具有相似功能的其他工具
msfvenom
2.3.7 可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,在Windows的命令提示符中,输入RaDa.exe --authors
即可查看作者:
2.3.8 给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法
- 基于特征码的检测方法
原理:特征码是后门恶意软件特有的一段代码或字节序列。安全厂商通过对已知的后门程序进行分析,提取出这些独特的特征码。检测工具在扫描文件或系统内存时,会将目标内容与特征码数据库进行比对,如果发现匹配的特征码,则判定存在后门恶意软件。
举例:对于著名的 “灰鸽子” 远程控制后门程序,它有特定的通信协议特征码和程序内部某些关键函数的特征码。安全软件可以将这些特征码记录下来,当扫描到新的程序或网络流量中有这些特征码时,就会发出警报。 - 行为分析检测方法
原理:通过监测程序在系统中的行为来判断是否为后门恶意软件。例如,观察程序是否有异常的网络连接行为,是否对系统关键文件或注册表进行未经授权的修改,是否有隐藏自身进程或文件的行为等。
举例:有些后门程序会在系统启动时自动运行,并尝试连接到攻击者指定的服务器,接收指令来窃取用户数据。如果监测到某个程序在启动时建立了可疑的网络连接,并且没有合理的业务逻辑解释,就可能是后门。 - 启发式检测方法
原理:基于对程序代码结构、逻辑以及运行时特征的启发式规则来判断是否存在恶意行为。这些规则是根据对大量恶意软件和正常软件的分析总结出来的。例如,程序代码中存在大量加密函数且加密逻辑不明、使用异常的系统调用序列、有不合理的动态内存分配和释放模式等。
举例:如果一个程序在运行过程中频繁调用一些用于隐藏自身或绕过系统安全机制的系统函数,如通过非常规的方式修改内存中的进程信息以达到隐藏目的,启发式检测系统就会认为它有较高的恶意可能性。 - 基于沙箱的检测方法
原理:将可疑程序放置在一个隔离的沙箱环境中运行,这个环境模拟真实的操作系统,但对系统资源和网络访问有严格的监控和限制。通过观察程序在沙箱中的行为,包括文件操作、注册表访问、网络连接等,来判断其是否为后门恶意软件。
举例:当检测到一个来源不明的可执行文件时,将其放入沙箱中运行。如果它在沙箱中试图连接到一些可疑的 IP 地址、尝试突破沙箱限制访问主机系统资源,就可以判断为恶意软件。 - 基于文件完整性检查的方法
原理:对系统中的关键文件和重要的可执行文件计算其哈希值(如 MD5、SHA - 1、SHA - 256 等),并将这些哈希值存储在安全的数据库中。定期或实时重新计算这些文件的哈希值,并与数据库中的值进行对比。如果哈希值发生变化,说明文件可能被后门恶意软件修改或替换。
举例:对于系统的关键动态链接库文件,计算其初始的 SHA - 256 哈希值。如果有后门程序试图修改这个文件来注入恶意代码,重新计算哈希值时就会发现与原始值不同,从而发现异常。
2.4 取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
2.4.1 IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用哪些TCP端口?
- IRC即互联网中继聊天,是一种通过网络进行实时文本通信的协议。它允许用户连接到 IRC 服务器,并在频道(可以是公开或私人的)中与其他用户交流。IRC网络由多个IRC服务器组成,这些服务器相互连接以传递消息,使得用户可以在全球范围内参与聊天。IRC在早期的互联网社交中扮演了重要角色,至今仍在一些特定领域和社区中使用。
- 当 IRC 客户端申请加入一个 IRC 网络时,它会发送 NICK和 USER命令。
- NICK 命令:用于指定客户端在 IRC 网络中的昵称。例如:NICK username,这里的 “username” 就是用户选择的昵称,它在整个 IRC 网络或特定服务器的频道中代表该用户的标识。如果昵称已被其他用户使用,服务器可能会要求客户端重新选择。
- USER 命令:提供关于用户的更多信息,格式通常为USER
: 。不过在实际应用中,一些字段可能并不完全按照字面意义填写。例如:USER guest 0 * :Guest User,其中 “guest” 是用户名,“0” 和 “*” 可以是占位符或特定的标识信息,“Guest User” 是用户的真实名称(可以是随意指定的)。
- IRC 一般使用的 TCP 端口是 6667。不过,也存在一些其他的端口可用于 IRC。
- 6660 - 6669:这一系列端口都可能被 IRC 使用。不同的 IRC 网络或服务器可能会选择其中的某个端口,6667 是最常见的默认端口。
- 7000:部分 IRC 服务也可能使用这个端口来建立连接。
- 这些端口的使用可能因不同的 IRC 服务器配置而有所不同。需要注意的是,在网络安全环境中,对这些端口的监控和管理是很重要的,因为 IRC 也曾被恶意利用,如作为僵尸网络控制通信的途径等。
2.4.2 僵尸网络是什么?僵尸网络通常用于什么?
- 僵尸网络是指采用一种或多种传播手段,将大量主机感染僵尸程序病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。这些被感染的主机就像 “僵尸” 一样,虽然本身具有一定的计算和网络连接能力,但被恶意攻击者掌控,执行攻击者下达的各种指令。
- 僵尸网络通常的用途:
- 发动分布式拒绝服务攻击(DDoS)
攻击者利用僵尸网络中的大量 “僵尸主机” 同时向目标服务器发送海量的请求,这些请求数量远远超过服务器的处理能力,导致服务器资源耗尽,无法正常响应合法用户的请求。例如,通过发送大量的 TCP SYN 包(SYN Flood 攻击),使服务器的连接队列被填满,无法建立新的连接。 - 发送垃圾邮件
僵尸网络控制者可以在僵尸主机上安装邮件群发软件,利用这些主机的网络连接和邮件发送功能,大量发送垃圾邮件。由于邮件来源分散在众多被感染的主机上,很难被简单地识别和拦截。 - 窃取信息
僵尸程序可以在被感染的主机上搜索并收集用户的敏感信息,如登录凭证(用户名和密码)、银行卡信息、个人隐私文件等。这些信息可以通过僵尸网络的控制通道回传到攻击者手中。 - 进行点击欺诈
在按点击付费的网络广告模式中,攻击者利用僵尸网络中的主机自动点击广告链接,使广告主误以为获得了大量真实的点击量,从而消耗广告主的预算,并可能从中获取非法利益(如果攻击者与广告发布平台存在不正当交易)。
2.4.3 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
在学习通下载文件botnet_pcap_file.dat,使用wireshark打开,设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667
,观察结果:
查看Destination一列,会发现一共出现过5台IRC服务器:66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172、209.126.161.29。
2.4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
首先在虚拟机中输入sudo apt install tcpflow
安装tcpflow:
再把2.4.3的文件拖到虚拟机中,然后命令行中输入tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667
:
可以发现除了原文件外我们还有三个新文件:
使用命令来获取访问该服务器的主机数量cat 209.196.044.172.06667-172.016.134.191.01152 | grep --text "^: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个结果。
2.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 > ipaddr.txt;wc -l ipaddr.txt
:
再输入cat ipaddr.txt
查看详细结果:
这里我们可以看到一堆IP地址。
2.4.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:135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)
UDP:137(netbios-ns)
输入(tcp.dstport == 135 || tcp.dstport == 25)&& ip.dst == 172.16.134.191
在Windows端使用Wireshark过滤TCP端口:
可以发现,25端口和135端口仅仅进行了TCP三次握手,没有明显的攻击行为。
再输入tcp.dstport==80 && ip.dst == 172.16.134.191
:
缓冲区溢出攻击。发送了好多重复字母的请求包,说明也许正在攻击服务器的漏洞从而获取系统权限。
但是以上攻击被蜜罐主机识别并发送RST数据包,所以80端口的攻击失败。
再输入tcp.dstport==139 && ip.dst == 172.16.134.191
:
可以发现虽然多个IP尝试和蜜罐主机在此端口建立连接,但都被蜜罐主机识别并发送RST数据包,所以攻击也是失败的。
再输入tcp.dstport==445 && ip.dst == 172.16.134.191
:
可以发现,数据包有一个PSEXESVC.EXE。PsExec 是由 Mark Russinovich 创建的 Sysinternals Suite中包含的工具。最初,它旨在作为系统管理员的便利工具,以便他们可以通过在远程主机上运行命令来执行维护任务。后来因为太过方便,被利用到内网渗透之中。它是一种Dv1dr32蠕虫,并且每个IP地址连入的返回信息中含有\PIPE\ntsvcs,命名管道\Pipe\Ntsvcs是作为 SCM 和与特定服务交互的 SCP(服务控制进程)之间的远程过程调用接口,所以攻击成功。
输入tcp.dstport==4899 && ip.dst == 172.16.134.191
:
可以发现只有210.22.204.101访问过这个端口,经查询可知该端口是Radmin远程控制工具,可能是被利用来控制蜜罐主机。
再输入udp.port==137
:
NBNS是NetBIOS的命名服务,并不是攻击行为。
2.4.7 那些攻击成功了?是如何成功的?
综上,445的蠕虫攻击、4899的远程攻击是成功的,实现过程见2.4.6。
3.问题及解决方案
- 问题1:无
- 问题1解决方案:无
4.学习感悟、思考等
本次《网络与系统攻防技术》实验让我收获颇丰,深切体会到实践与理论结合的重要意义,在恶意代码分析、可执行文件分析和取证分析中,网络安全理论、操作系统原理、编程知识等都得以实践应用,像 rada 恶意代码样本分析的每一步,从文件类型识别、脱壳到字符串提取找作者,都需运用多种知识和工具,这种交互加深了我对知识的理解,也让我明白只有理论用于实践才能真正掌握和灵活运用网络安全知识。同时,自制 rada 恶意代码样本的分析让我深入认识恶意软件,以前我仅了解其概念,而此次剖析让我看清其运作方式,包括利用系统漏洞、修改注册表自启动和远程控制以及执行入侵操作等,我意识到其危害不仅是窃取信息,还会破坏系统稳定性和安全性,且不同类型恶意软件目的和行为模式各异,需多种检测和防范方法。
此外,Windows 2000 系统被攻破的取证分析让我深刻感受到网络安全防护的重要性,从僵尸网络借 IRC 通信到攻击者对蜜罐主机的攻击尝试,可知网络环境充满潜在威胁,看似安全的系统也可能因安全漏洞被攻破,这促使我今后在系统配置、网络使用和软件安装等方面注重培养防护意识,采取安全措施保护系统和数据。随着信息技术发展,软件和网络技术不断更新,网络安全威胁也更复杂多样,实验中恶意软件开发者利用先进技术隐藏代码、突破防御的现象,让我思考如何平衡技术创新与网络安全,既要鼓励技术发展创新满足数字化需求,也要投入更多资源研发安全技术应对挑战。而且,实验中多种恶意软件检测方法各有优缺点,没有一种能完全有效检测和防范所有恶意软件类型,这使我思考构建更完善的网络安全防护体系,将多种检测方法有机结合形成多层次、全方位防护机制,并不断更新改进方法以适应新的恶意软件和攻击手段。
最后,网络安全涉及多学科知识,需要专业人才保障系统和网络安全,此次实验让我深知相关知识和技能的重要性,所以我认为要加强网络安全教育和培训,不仅在高校培养更多专业人才,还要在全社会普及安全知识、提高普通用户安全意识和防范能力,如此才能形成全社会共同参与的防护环境。