20232308 2025-2026-1 《网络与系统攻防技术》实验四实验报告

1.实验内容

1.1实验要求

  • 对rada恶意代码进行文件类型识别、脱壳处理及字符串提取,尝试定位编写作者;
  • 用IDA Pro静态/动态分析crackme1.exe与crackme2.exe,寻找能触发成功输出的特定输入;
  • 深度分析rada恶意代码,撰写报告解答其基本信息、目的、特性、反分析技术等问题;
  • 基于收集的蜜罐网络数据,开展取证分析,回答IRC协议、僵尸网络、蜜罐通信与攻击情况等类问题。

1.2本周学习内容

  • 恶意代码分析的基本方法
  • 静态分析和动态分析的核心概念。静态分析主要通过代码结构和API调用等特征来识别恶意行为,动态分析则使用沙箱等环境运行代码,观察其行为。
  • IDA Pro和Process Monitor等工具的基本操作。

2.实验过程

2.1分析恶意代码文件RaDa.exe

(1)分析rada恶意代码样本的文件格式、运行平台和加壳工具
首先将主机上下载的RaDa.rar解压缩,传输到虚拟机中。
通过命令file RaDa.exe,对RaDa进行格式分析。
88d94f86f1ef59f0d34e0586b5258a81
根据输出结果分析:文件的格式是可执行文件exe,运行平台是win32,文件运行时有图形界面,文件包含三个节。
在主机上使用PEiD对RaDa.exe进行分析RaDa采用的加壳工具
bd2a688b8beae82762dffb566c3ebd7a
根据图中结果分析,不难发现使用的加壳工具是0.89.6版本的UPX。
(2)使用脱壳软件,对rada恶意代码样本进行脱壳
首先对RaDa进行字符串提取
7cf4d599c7c2863502e98f6ce1c76248
在主机上使用脱壳器对RaDa.exe进行脱壳,生成RaDa_unpacked.exe。将脱壳后的exe文件传入虚拟机中。
b2a534177391309dd19f288aa04b6979
c6cbe5f516af34cea45ab8fd3bf4c34e
(3)对脱壳后的rada恶意代码样本进行字符串提取分析
6fb7502b922fed6089e6acd961d1e78f
22406f5e1f4ee68a488b9d21161d3bf6
继续往下翻,我们可以观察到rada恶意代码的编写作者是Raul Siles和David Perez,日期为2004年9月

2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。

(1)对crackme1.exe进行分析
先在主机命令行界面中直接运行crackme1.exe。在输入少于或多于一个参数时会输出“I think you are missing something.”。而在输入一个参数时会输出“Pardon?What did you say?”,推测应该输入一个参数
edce96056388ff16c0f7c34064251d66
在主机打开IDA,利用IDA对crackme1.exe进行分析。
3351e0427e7a398022e14bab5eb1fdd5
点击View->Graphs->Function calls,打开函数调用图,发现sub_401280调用了strcmp、printf等这些有关字符串处理的函数,可以合理推测它在参数判断中有重要作用。
80cc599c0ff0b467a9cc749057c40a2c
在Functions页面点击sub_401280,点击View->Graphs->Flow chart,打开函数流程图
c0ad4e2f7ef67f5ad968de80acf5fe18
可以很明显地看到两个判断条件,第一个条件如果不满足就会输出“I think you are missing something.”,满足之后会继续判断,可以看到将“I know the secrect”压入了栈中,并调用了strcmp函数进行第二次判断。如果第二个条件不满足会输出“Pardon?What did you say?”,满足了就会输出"You konw how to speak to programs,......"。由此基本可以推断需要输入的正确参数是“I know the secret”。
fa355f34bec1109ab4966d2418bfa1be
验证成功
(2)对crackme2.exe进行分析
与(1)分析crackme1.exe同理
先直接运行crackme2.exe
3292f0b90422cdf90c645a9e059ec510
点击View->Graphs->Function calls,打开函数调用图
5dc9474233bc91e198efa33d3eb5d084
发现sub_401280调用了strcmp、fprintf、putchar、puts这些字符串处理函数,推测它具有重要作用。
在Functions页面点击sub_401280,再打开函数流程图。
27f2103f64e04d1e6bd2bf357b1884c2
d9a8365d8aaa651632fecc8cd9729a5f
可以看到三个判断条件,第一个条件如果不满足就会输出“I think you are missing something.”,满足之后会继续判断,可以看到将“crackmeplease.exe”压入了栈中,并调用了strcmp函数进行第二次判断。如果第二个条件不满足会输出“I have an identity problem”,满足了又会将“I know the secret”压入栈中调用strcmp进行第三次比较,如果条件不满足会输出“Pardon? What did you say?”,条件满足后会进行下面的流。由此可以推测需要将文件名改成“crackmeplease.exe”,并且参数依然唯一,是“I know the secret”。
image
验证成功

2.3分析一个自制恶意代码样本rada,并撰写报告,回答问题

双击运行Rada_unpacked.exe
6926c47d08e4f5234431481ba548ce0c
打开process explorer,找到正在运行的RaDa进程,双击后查看Strings窗口。
213636e1f66d2a54f72d1a86483aa2bf
697686adffcd4ed6563c792e0a8cc573
0592fd22bc6c2d5f7f6f524fb3450007
在Strings窗口中,可以看到如下图的一些重要信息,例如编写作者是Raul Siles和David Perez,日期为2004年9月
对这些信息进行进一步分析

  • 网络访问和CGI脚本
    http://10.10.10.10/RaDa 可能是恶意软件尝试访问的某个Web服务器
  • 文件系统操作
    C:\RaDa\tmp、C:\RaDa\bin可能是恶意软件在创建目录,用于存放一些内容,比如字符串中包含的RaDa.exe。
  • 注册表操作
    HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ 这是Windows注册表中的一个路径,用于存储启动时自动运行的程序。
  • DDos攻击
    Starting DDoS Smurf remote attack...这明确指出了恶意软件尝试进行Smurf攻击。这种攻击中,攻击者通过向一个或多个计算机网络发送带有欺骗性源地址的ICMP请求,这些网络在响应这些请求时,实际上是在帮助攻击者放大初始攻击流量,从而可能压倒目标服务器,使其无法正常访问。
    回答实验问题
    (1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
    a7de305a400e8080bdf062c5fd82028c
    f30c7d18f50ec3dde5e21d23a1a04077
    由上图可以得到文件基本信息:文件的格式是可执行文件exe,运行平台是win32,文件运行时有图形界面,文件包含三个节)
    (2)找出并解释这个二进制文件的目的;
    Starting DDoS Smurf remote attack...这明确指出了恶意软件尝试进行Smurf攻击。这种攻击中,攻击者通过向一个或多个计算机网络发送带有欺骗性源地址的ICMP请求,这些网络在响应这些请求时,实际上是在帮助攻击者放大初始攻击流量,从而可能压倒目标服务器,使其无法正常访问。
    (3)识别并说明这个二进制文件所具有的不同特性;
  • 会在注册表中进行修改操作
  • 会在文件系统中进行创建目录、下载文件等操作
  • 会发动DDoS攻击。
    (4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
    这个文件采用了UPX加壳。UPX会在可执行文件的头部插入一段壳代码,这段壳代码负责在程序运行时解压原始程序的代码,并跳转到原始程序的入口点执行。UPX的本意是进行压缩,然而也可以用于混淆,防止被分析或逆向工程。
    (5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
    我认为这是个僵尸网络恶意代码。
    因为僵尸网络经常用于进行DDoS攻击。这个程序并没有表现出自我复制的特点,可以考虑是后门,但是这个软件进行的远程控制是特定的进行DDoS,这个控制行为可以更加细化成僵尸网络。
    (6)给出过去已有的具有相似功能的其他工具;
  • Eggdrop,第一个在IRC聊天网络中出现的Bot工具,它能够帮助用户方便地使用IRC聊天网络。虽然Eggdrop本身并非专门用于恶意目的,但它的出现为后来的僵尸网络工具提供了基础。
  • PrettyPark,第一个具有僵尸网络特性的恶意代码,它的出现标志着僵尸网络作为一种新型攻击方式的诞生。
    (7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
    可以,如图所示
    4dc8457f80924df90038bb98bab4790b
    (8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
  1. 基于特征码的方法
    基于特征码的检测方法是恶意软件检测中最直接、最基础的方法。每个恶意软件都有其独特的特征码,这些特征码可以被杀毒软件等安全工具提取并存储在病毒库中。当扫描到文件或程序时,安全工具会将其与病毒库中的特征码进行比对,如果匹配成功,则判定为恶意软件。高速高效,能够准确识别已知的恶意软件。但无法检测未知的恶意软件或恶意软件的变种。
  2. 行为监测法
    恶意软件在感染计算机后会表现出一些特殊的行为,如修改系统文件、创建新文件、发送垃圾邮件等。行为监测通过分析计算机的行为和操作记录,检测出是否存在异常行为,从而判断是否有恶意软件的存在。能够发现未知病毒,具有一定的预报能力,但误报率较高,实现困难,且对系统资源有一定的消耗。
  3. 静态分析法
    静态分析法通过对恶意软件本身二进制文件、可执行文件或者通过反编译文件提取到的静态特征进行分析,对比恶意软件与正常软件的静态特征的异同来发现恶意软件。能够在不运行恶意软件的情况下进行检测,具有一定的准确性。由于特征类型单一,混淆或加壳等技术可以让恶意软件逃过检测,使得检测效果下降。
  4. 动态分析法
    动态分析法通过在虚拟环境中执行恶意软件样本,记录恶意软件的行为特征,如行为日志、系统调用名称、上下文参数、环境变量等,来判定其是否为恶意软件。能够更全面地分析恶意软件的行为,提高检测的准确性。需要恶意软件完整运行后再进行判断,检测时效性较差。此外,攻击者可能通过技术手段让恶意软件避开检测。
  5. 基于机器学习的检测方法
    基于机器学习的恶意软件检测方法利用数据挖掘技术选择数据、特征,再结合机器学习算法完成检测。该方法首先收集恶意软件和正常软件的数据集,进行特征提取;然后选择一种机器学习算法,使用提取的特征集合训练模型;最终使用模型进行恶意软件的检测与判定。

2.4取证分析实践

背景: Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是由芬兰人Jarkko Oikarinen于1988年开发的一种实时文本通信协议,采用客户端-服务器架构,支持多用户在频道内群聊或一对一私聊。
当IRC客户端申请加入一个IRC网络时,它会发送一个JOIN消息给IRC服务器,以请求加入指定的频道。这个JOIN消息中包含了客户端想要加入的频道的名称。服务器会检查该频道是否存在以及客户端是否有权限加入,然后返回相应的响应消息给客户端。
采用TCP通讯方式,默认登录端口为TCP 6667。当TCP 6667端口不通时,IRC客户端会尝试其他不同的TCP端口,直到登录失败。TCP 6667端口是IRC的主要通讯端口,用于客户端与服务器之间的数据传输。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是由恶意软件感染大量设备后,形成的可被攻击者远程操控的分布式设备集群,受感染设备被称为僵尸机。
主要用途:
分布式拒绝服务攻击:操控海量僵尸机向目标服务器发送冗余请求,耗尽其带宽或算力,导致服务瘫痪。
垃圾邮件与钓鱼攻击:批量发送广告垃圾邮件,或伪装成正规机构发送钓鱼邮件,诱导用户泄露账号、密码等敏感信息。
非法挖矿:占用僵尸机的CPU、GPU算力挖掘加密货币,攻击者无需投入硬件成本即可获利。
窃取敏感数据:盗取设备中的银行账户、支付密码、个人隐私等信息,后续用于诈骗或黑市交易。
传播恶意软件:作为扩散载体,向更多设备推送病毒、木马,或植入勒索软件,加密用户数据后索要赎金。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
将过滤条件设置为ip.src == 172.16.134.191 && tcp.dstport == 6667,根据过滤得到的数据包,结合端点统计信息,得到蜜罐主机与IP地址为63.241.174.144、66.33.65.58、209.126.161.29、209.126.44.172、217.199.175.10的这些IRC服务器进行过通信。
dfbbc057c472d37a7e79c8b10b654f14
image
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
在虚拟机安装tcpflower,输入命令apt-get install tcpflow
1ab6a6eaf0154232cc68fe1d580802fe
输入命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667",筛选指定的IP地址和端口。
image
可以看到在botnet_pcap_file.dat所在目录下新增了三个文件
8c0e9ee17a569363b9c51032c54a6a04
重点是想知道访问IP地址为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
image
可以看到有3461个主机访问了僵尸网络
(5)哪些IP地址被用于攻击蜜罐主机?
将攻击蜜罐主机的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 > 20232308test4.txt;wc -l 20232308test4.txt
image
可以看到有165个IP地址用于攻击蜜罐主机
90214874e880d1d828bc6283a639171f
(6)攻击者尝试攻击了那些安全漏洞?
在wireshark中,点击 统计->协议分级,可以看到有tcp包和udp包,tcp包占了绝大部分,tcp占99.7%,udp占0.3%
bb848715f6cb5fd08361a2755e0523df
输入命令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,通过tcpdump工具从指定的网络流量捕获文件中筛选出满足特定条件的TCP数据包,并通过一系列文本处理命令整理出唯一的TCP端口号列表。
862531c5075ab8c95064f9a8ee372561
从中可以看出响应的端口有135(RPC远程过程调用)、139(NetBIOS/SMB)、25(SMTP简单邮件传输协议)、445(SMB,用于文件、打印机等的共享)、4899(Radmin,用于远程控制)、80(HTTP)。
使用命令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,用于从一个名为botnet_pcap_file.dat的网络流量捕获文件中筛选出源IP地址为172.16.134.191且使用UDP协议的数据包,并提取这些数据包的目的端口号
e1c5f96a4ce0385b257cbd3b348b43dd
可以看出响应的端口为137
根据端口号,攻击者可能尝试攻击了如下安全漏洞:
端口135(RPC远程过程调用):RPC服务可能存在未授权访问或缓冲区溢出等漏洞,攻击者可能试图利用这些漏洞进行远程代码执行或数据泄露。
端口139和445(NetBIOS/SMB):这两个端口通常用于Windows系统的文件和打印机共享服务(SMB)。它们可能受到如“永恒之蓝”等漏洞的影响,允许攻击者远程执行任意代码或获取系统权限。
端口25(SMTP简单邮件传输协议):SMTP服务可能受到邮件注入、中继攻击等威胁,攻击者可能试图通过发送恶意邮件来传播恶意软件或进行钓鱼攻击。
端口4899(Radmin):Radmin是一款远程控制软件,其端口可能受到暴力破解、未授权访问等威胁。如果攻击者成功获取了Radmin的访问权限,他们将能够远程控制受感染的系统。
端口80(HTTP):HTTP服务可能受到如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等Web应用漏洞的攻击。
(7)那些攻击成功了?是如何成功的?
根据端口来进行分析

  • 135端口
    5f2230aa2d0de752f46647adb76b868f
    从图中可以看出,只有正常的三次握手,并没有直接的攻击
  • 139端口
    3a5936207354649217f92d719171f507
    抓包中可见多个不同的源IP向目标IP 172.16.134.191的139端口发起连接,注意到此处每个攻击源的交互流程高度一致,先通过TCP三次握手建立连接,随后发送NBTSS请求,接着发送SMB协议的Tree Connect AndX Request来尝试连接共享路径,推测这一系列操作是攻击者在枚举目标主机的NetBIOS名称、共享资源等信息,为后续攻击做准备。
  • 25端口
    43342224d79122c9703ad674eedc4795
    也是只有正常的TCP连接,未发现异常
  • 445端口
    fe8e948e37b1897f6e9593bf0a6c499c
    观察抓到的包不难在数据流中注意到了有几个数据包试图查询和删除\System32\PSEXESVC.EXE文件。PSEXESVC.EXE通常是与PsExec工具相关的服务可执行文件,而PsExec是一个允许用户远程执行命令的工具。如果未经授权地查询或删除此文件,可能表明存在恶意行为。此外,类似于端口139每个攻击源的交互流程高度一致,先通过TCP三次握手建立连接,随后发送NBTSS请求,接着发送SMB协议的Tree Connect AndX Request来尝试连接共享路径,推测这一系列操作是攻击者在枚举目标主机的NetBIOS名称、共享资源等信息,为后续攻击做准备。
  • 4899端口
    c54f99b25b4e2c04d16be2662d46699c
    可以看到数据流中出现了大量异常的PSH包,,在TCP PSH+ACK攻击中,攻击者会发送大量PSH和ACK标志位都设置为1的TCP报文,强制要求接收系统清除所有TCP缓冲区的数据,无论缓冲区是否已满。这种行为会耗尽受害系统的资源,导致系统无法处理大量的流入报文,从而达到攻击的目的
  • 80端口
    22a13e1305d8beb3144f0a1dbd56c2b2
    攻击者向目标 80 端口发送大量GET /NULL.IDA?CCCCCCCC...的HTTP请求。符合红色代码蠕虫的典型攻击特征,通过构造畸形的.ida路径请求,利用微软IIS服务器的缓冲区溢出漏洞进行传播,此后也有大量数据交互包,表现出攻击成功。
  • 137端口
    5df47b3fda98f7744223919b8d8aa3e6
    抓包中大量不同源IP向目标IP的137端口即NetBIOS名称服务端口发送NBNS协议的Name query NBSTAT请求。属于信息收集类的NetBIOS枚举攻击,攻击者通过批量发送NBSTAT查询,系统性地收集目标网络中主机的NetBIOS标识信息,以挖掘潜在的攻击入口。

3.问题及解决方案

  • 问题1:在对crackme2进行分析的时候,就算后面输入正确的参数,结果仍然有问题
    45bf49755ccec07a77d57a76bfd362fa
  • 问题1解决方案:最终通过查阅相关资料以及询问同学,我知道因为powershell执行程序需要在程序名前加.\,这样在第一个参数比较时就会出错,所以这里只能使用cmd运行,修改了之后解决了问题,可以输出正确结果
    image
  • 问题2:在IDA pro的strings窗口,无法显示关键字符串,为1乱码
  • 问题2解决方案:通过询问同学,在其帮助下我知道字符串的编码格式与IDA 字符串窗口的识别规则不匹配。右键点击setup,勾选unicode C-style就可以了。

4.学习感悟、思考等

通过本次实验,我收获颇丰,我不仅巩固了恶意代码、僵尸网络、病毒、蠕虫等核心概念,我还掌握了多款专业工具的使用技巧:用PEID检测文件壳类型,靠IDA Pro进行静态与动态分析,通过函数调用图、函数流程图拆解程序逻辑,Process Explorer提取恶意代码样本的关键信息,用脱壳工具处理加密文件等等
实验中也遇到过不少难题。一方面是由于对于一些概念的理解还不够全面,所以在做实验所花的时间比较长,另一方面就是对电脑本身掌握的不够清晰,例如powershell和cmd的区别,在此之前我一直认为二者是相同的
总而言之,这次实验不仅提升了我的实践能力与逆向分析能力,更让我明白网络攻防是个动态战场,技术不断迭代,新的攻击手段层出不穷,唯有持续学习、更新知识储备,才能跟上节奏。未来,我会继续努力不断提升专业能力。

参考资料

posted @ 2025-11-10 22:17  Otlier  阅读(2)  评论(0)    收藏  举报