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

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

一.基础知识

  1. PE 文件与加壳脱壳技术

PE 是 Windows 平台可执行文件格式。恶意代码常使用 UPX 等壳对程序进行压缩、加密,修改程序入口点,以此规避杀毒软件特征查杀、增加逆向分析难度;脱壳是恶意代码逆向分析的前置步骤。

  1. 逆向工程基础

使用 IDA Pro 开展静态逆向分析,将二进制机器码还原为汇编指令、函数流程图;通过字符串窗口检索、关键 API 函数定位(strcmp、URLDownloadToFile等),挖掘程序功能逻辑,是识别恶意代码行为的重要手段。

  1. 恶意代码分类与 C2 通信原理

区分后门、僵尸网络 Bot 程序;僵尸主机会和 C2 服务器建立通信,接收攻击者下发控制指令,通信协议常见为 IRC、HTTP。

  1. 网络取证与流量分析基础

IRC 协议多用于早期僵尸网络 C2 通信,默认 TCP 6667 端口;掌握 Wireshark 流量过滤语法,同时了解 tcpdump、tcpflow 等流量提取工具,通过捕获、解析网络流量,还原恶意程序的通信、攻击行为,判断攻击是否成功。

二.实验内容

1.识别恶意代码的文件类型标识,进行脱壳与字符串提取。

2.使用IDA Pro静态或动态分析所给exe文件,找到输出成功信息的方法。

3.分析自制恶意代码样本并撰写报告。

4.取证分析实践。

三.实验过程

3.1恶意代码文件类型标识、脱壳与字符串提取

3.1.1分析原始rada样本

在kali虚拟机中使用file命令分析目标文件的类型和结构

分析结果表明RaDa.exe是一个32位Windows GUI可执行文件,是一个带有图形用户界面的应用程序。是针对Intel x86处理器设计的,内部包含3个段。

在windows主机中使用PEiD对目标文件进行分析。

分析结果表明PEiD检测到该文件使用了UPX加壳,并给出了UPX加壳的版本区间。

3.1.2分析脱壳后的RaDa样本

使用自动脱壳器对RaDa样本进行脱壳处理

打开IDA Pro,选择PE Executable,对windows下的可执行文件进行分析。分析的文件是经过脱壳后的RaDa_unpacked.exe文件。

选择IDA ViewA,在地址为00403F7A处可以看到RaDa文件的作者信息,为Raul Siles && David Perez。

3.2利用IDA Pro静态或动态分析所给的exe文件

3.2.1分析文件crackme1.exe

在主机上运行此文件,发现当输入一个参数时,文件提示“Pardon? What did you say?”。当输入的参数数不为1时,文件给出提示“I think you are missing something.”,说明该文件需要额外输入一个正确的参数。

打开该文件的函数调用图,发现函数sub_401280会调用strcmp用于字符串比较的库函数以及fprintf、printf等涉及IO的库函数,说明sub_401280函数可能会对接收的参数进行比较判断,并输出相应语句。

打开函数管理工具,双击需分析的函数sub_401280,打开该函数的流程图

从函数流程图中分析可知,输入的参数不为2时,该程序将给出输出“I think you are missing something.”。当程序得到两个输入时,如果第二个输入为“I know the secret”,则程序给出输出“You know how to speak to programs, Mr. Reverse-Engineer”;否则输出“Pardon? What did you say?”。因此,我们需要输入的第二个参数为字符串“I know the secret”。

主机再次运行文件,输入参数“I know the secret”,得到了正确的回答。

3.2.2分析文件crackme2.exe

主机运行文件,发现返回情况大体与crackme1.exe相似.但输入额外参数为“I know the secret”时,仍然无法验证通过,说明还需寻找适合文件二的正确参数。

打开crackme2.exe的函数调用图,发现函数sub_401280会调用strcmp、fprintf、puts、putchar等可疑的库函数,说明sub_401280函数可能仍是对接收的参数进行比较判断的函数。

在函数管理工具中打开函数sub_401280的流程图,分析可知,除crackme1所具有的比较内容外,crackme2还对输入的第一个参数进行了比较,要求其为“crackmeplease.exe”。说明我们需要将该文件的文件名修改为crackmeplease.exe再运行。

修改文件名,再次输入参数。发现可以获得正确的结果。

3.3分析恶意代码样本RaDa,并撰写报告

3.3.1分析文件的基本信息

通过输入以下命令对RaDa文件的进行文件类型识别、完整性验证以及时间戳分析:

从返回值中可以看出RaDa.exe是一个32位Windows GUI程序,其md5摘要值为caaa6985a43225a0b3add54f44a0d4c7,且在2004年10月29日编译的。

3.3.2分析文件的目的

在IDA Pro中分析脱壳后的RaDa文件。打开函数调用图,发现函数sub_404FB0下有很多的子函数,可以分析该函数的流程图以获取更多信息。打开函数调用图。

查看sub_404FB0流程图发现,该文件主要通过修改注册表和定义恶意路径,以实现恶意软件的持久化驻留与远程控制。

命令mov edx, offset aHttp10_10_10_1;"http://10.10.10.10/RaDa",是将地址http://10.10.10.10/RaDa加载到edx寄存器。而IP地址10.10.10.10很可能是攻击者的命令控制服务器。后续所有的下载指令、上传数据都会与这个服务器通信。

对于多条mov edx, offset指令,程序连续调用__vbaStrCopy字符串拷贝函数,依次将相关字符串存入内存全局变量中。其中RaDa_commands.html是攻击者远程下发控制指令的网页交互文件,cgi-bin是 Web 服务存放 CGI 脚本的目录,download.cgi用于实现文件下载功能,upload.cgi用于实现文件上传功能,这一组字符串说明该恶意程序搭载简易 Web 服务,支持双向文件传输;C:\\RaDa\\tmp是恶意软件在 C 盘根目录创建的临时目录,用来存放下载的恶意文件、窃取到的数据等临时资源;HKLM\\Software\\Microsoft\\Windows\\CurrentVersion是 Windows 开机自启注册表路径,恶意程序后续会利用该路径写入注册表项,实现开机持久化驻留。该段代码完成关键路径与功能字符串的预加载,为后续 Web 远控交互、临时文件存储、注册表自启等恶意行为准备数据,具备接收指令、上传下载文件、持久化运行的恶意能力。

对于这一段汇编指令,程序继续调用__vbaStrCopy、__vbaStrCat、__vbaStrMove、__vbaFreeStr等 VB 字符串操作函数,依次加载、拼接恶意程序相关字符串。其中RaDa是注册表启动项的键名,REG_SZ代表注册表字符串值类型;C:\\RaDa\\bin为恶意程序存放自身本体的目录路径,通过两次字符串拼接函数__vbaStrCat,将目录与RaDa.exe拼接,组合得到完整路径C:\\RaDa\\bin\\RaDa.exe,之后使用__vbaStrMove保存该路径,调用__vbaFreeStr释放临时字符串资源。该段代码完成自启动注册表项名称、值类型、恶意程序本体完整路径的构造,为后续拷贝自身程序到该目录、写入注册表 Run 项实现持久化驻留做准备,保证恶意程序在系统重启后能够自动加载运行。

3.3.3问题回答

问题一:提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。

回答一:它的md5摘要为caaa6985a43225a0b3add54f44a0d4c7。其他的基本信息包括:RaDa.exe是一个32位Windows GUI可执行文件,是一个带有图形用户界面的应用程序。它是针对Intel x86处理器设计的,内部包含3个段。截图见3.3.2

问题二:找出并解释这个二进制文件的目的。

回答二:我认为这是一款 Web 架构的远程控制木马。它先创建专属工作目录,配置注册表自启实现持久驻留,之后在本地开启 Web 服务,等待攻击者通过网页下发控制指令,实现文件上传、下载与数据窃取等恶意操作。

问题三:识别并说明这个二进制文件所具有的不同特性。

回答三:该二进制文件是 VB6 编写、具备持久化能力的 Web 型远控木马程序。它的特性包括:注册表开机自启、自动创建专用工作目录、内置 Web 服务、依靠 CGI 接口实现双向文件传输。

问题四:识别并解释这个二进制文件中所采用防止被分析或逆向工程的技术。

回答四:该文件采用了UPX加壳技术,它通过压缩原始代码和劫持入口点隐藏程序逻辑。其应对方法是使用UPX脱壳工具还原原始代码,并通过动态调试绕过反调试机制。

问题五:对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。

回答五:我认为这个 RaDa 恶意代码样本属于远程控制木马。它不具备感染其他文件、自主扩散的能力,运行后在主机搭建隐蔽的远程访问通道,允许攻击者远程操控主机、传输文件。

问题六:给出过去已有的具有相似功能的其他工具。

回答六:同类远控木马有 Gh0st、Bifrost;具备 Web 后门、文件上传下载能力的工具还有各类 WebShell、DarkComet。

问题七:可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

回答七:可以调查出开发作者。该二进制文件开发者为Raul Siles && David Perez,可在IDA Pro中找到相关信息。

问题八:给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。

回答八:我认为可以采用基于哈希特征的检测、基于行为监控的检测、静态字符串扫描检测、沙箱动态检测、网络流量检测的方式检测该恶意软件。

(1)基于哈希特征检测:采集样本哈希值建立特征库,扫描主机文件进行匹配,匹配成功则判定为恶意样本;

(2)基于行为监控检测:监控程序运行行为,匹配创建C:\RaDa目录、写入 Run 注册表项、开启 Web 服务这类恶意行为;

(3)静态字符串扫描检测:不运行程序,直接检索文件内部是否存在upload.cgi、RaDa_commands.html等标志性字符串;

(4)沙箱动态检测:将样本放到隔离沙箱内运行,自动化记录文件、注册表、网络行为,综合判定是否为恶意程序;

(5)网络流量检测:监测网络中访问该木马 Web 控制页面、CGI 接口的 HTTP 流量,以此发现已经运行的木马。

3.4取证分析实践

3.4.1 IRC

问题:IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

回答:IRC 是互联网中继聊天协议(Internet Relay Chat),是一种文本型实时通信协议,多用于群组通信。客户端接入 IRC 网络时,首先发送NICK、USER完成注册,之后发送JOIN消息加入指定频道。IRC 默认明文 TCP 端口为 6667,加密版本使用 6697,也会使用 6660~6670 区间内其他端口。

3.4.2僵尸网络

问题:僵尸网络是什么?僵尸网络通常用于什么?

回答:僵尸网络(Botnet)是大量被植入僵尸程序的主机,由攻击者通过 C&C 信道一对多集中管控的受控主机集群。僵尸网络常用来发起 DDoS 攻击、批量发送垃圾邮件、信息窃取、网络扫描、作为跳板机攻击其他目标。

3.4.3蜜罐主机

问题:蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

回答:打开wireshark,设置过滤条件为:ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6697

过滤统计结果有如下五个IP地址:
63.241.174.144
66.33.65.58
217.199.175.10
209.196.44.172
209.126.161.29

3.4.4访问过服务器的僵尸网络

问题:在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

回答:

方法一:使用tcpflow分析TCP数据流

Kali虚拟机首先输入:apt install tcpflow,下载tcpflower。执行tcpflow提取TCP流,生成流量统计报告和两个流文件。

提取 JOIN(加入频道)的主机,保存 join_hosts

提取 QUIT(退出)的主机,保存 quit_hosts

合并、去重、统计总数

根据IRC广播加入和离开服务器的不同主机数进行估计,有5581台主机访问过服务器的僵尸网络。

方法二:观察期间不同昵称出现的个数

在僵尸网络场景中,受感染的主机会主动去连接服务器。因此,此处需要查找源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,精确统计访问僵尸网络服务器的不同客户端数量。

从返回数据可知,根据昵称出现的个数,共有3461台不同的主机访问了以209.196.44.172为服务器的僵尸网络。

3.4.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 > 20242406.txt;wc -l 20242406.txt,将攻击蜜罐主机的ip筛选出来并输出至文件中。

共165个IP地址用于攻击蜜罐:

3.4.6攻击者使用的安全漏洞

问题:攻击者尝试攻击了哪些安全漏洞

回答:在wireshark中点击统计,协议分级,发现TCP包占了99.7%,UDP包占了0.3%,

在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,筛选主机172.16.134.191发起的所有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,筛选主机172.16.134.191发送的所有UDP数据包的源端口号。

从中可以看出响应的端口有135(RPC远程过程调用)、139(NetBIOS/SMB)、25(SMTP简单邮件传输协议)、445(SMB,用于文件、打印机等的共享)、4899(Radmin,用于远程控制)、80(HTTP)。

从中可以看出响应的端口有137(NetBIOS)

3.4.7成功攻击与原因

(1)135端口:输入筛选条件tcp.port == 135 && ip.dst == 172.16.134.191,发现只是普通的建立了一个连接

(2)139端口:输入筛选条件tcp.port == 139 && ip.dst == 172.16.134.191

攻击成功的 IP:219.118.31.42、218.163.9.89、61.155.126.150、66.190.67.122、141.149.155.249、207.6.77.235、162.33.189.252、64.17.250.240。 判断依据:各源 IP 均完成 TCP 三次握手,并且成功发送 NBSS 会话请求、SMB Tree Connect AndX 共享连接请求,与目标 172.16.134.191 的 139 端口 SMB 服务建立应用层会话。

成功原因:目标主机为 Windows2000,默认开启 NetBIOS/SMB 服务、开放 139 端口,开启 C 盘共享,无访问限制,接收攻击者的 NetBIOS 会话与共享连接请求。

(3)25端口:输入筛选条件tcp.port == 25 && ip.dst == 172.16.134.191

观察报文发现,除了“三次握手”建立连接和“四次挥手”释放连接外没有其他数据传输。

(4)445端口:输入筛选条件tcp.port == 445 && ip.dst == 172.16.134.191

该报文为 SMB NT Create AndX 请求,攻击者请求访问目标主机\System32\PSEXESVC.EXE。PSEXESVC.EXE 是 PsExec 工具的服务程序,攻击者通过 SMB 通道将该程序上传至目标系统目录并调用,实现远程代码执行,证明该攻击成功获取目标主机控制权限。

目标主机开放 445 端口 SMB 服务,支持 IPC$ 管道;允许匿名或账号认证后访问 SAMR 进行账号枚举;攻击者获取有效账号凭证后,通过 SMB 向System32上传PSEXESVC.EXE,利用 PsExec 机制创建并启动服务,实现远程代码执行;主机没有访问控制和安全防护拦截该 SMB 横向攻击行为。

(5)4899端口:输入筛选条件tcp.port == 4899 && ip.dst == 172.16.134.191

攻击者和目标建立 TCP 连接,持续交互 PSH+ACK 应用载荷报文,成功通过 Radmin 认证,建立远控会话,实现远程控制。

目标主机开启 Radmin 远控服务,监听 4899 端口,防火墙未限制该端口外部访问,且 Radmin 认证配置存在缺陷,攻击者成功接入远控通道。

(6)80端口:输入筛选条件tcp.port == 80 && ip.dst == 172.16.134.191

攻击者不断向目标 80 端口发送 HTTP HEAD 请求,请求路径中包含../跨目录跳转,试图访问/winnt/system32/cmd.exe并执行dir命令; 抓包里只有攻击者发出去的 HEAD 请求报文,没有看到服务器返回的命令执行结果、没有返回数据载荷,后续直接是 FIN、ACK 断开连接,说明目标 IIS 不存在该漏洞或者已经做了防护,命令没有执行成功。

(7)137端口:输入筛选条件udp.port == 137 && ip.dst == 172.16.134.191

UDP 137 端口 NBNS NBSTAT 查询,属于攻击者的预扫描,用来探测目标主机 NetBIOS 信息,判断目标是否为 Windows 主机、是否开启 NetBIOS 服务,为后续 SMB 系列攻击做信息收集,该流量仅为探测报文,不涉及漏洞利用。

(8)总结:

五类攻击:

① UDP 137 NBNS NBSTAT 扫描:NetBIOS 名称查询,属于前置信息侦察,收集目标主机 NetBIOS 信息,判断是否为 Windows 主机、是否开启 SMB 相关服务,为后续 SMB 攻击做准备。

② TCP139,445 SMB IPC空会话漏洞:利用IPC命名管道,尝试匿名连接,通过 SAMR 接口枚举系统账号。

③TCP 445 PsExec 远程代码执行:依托 SMB 通道,上传 PSEXESVC.EXE,创建服务实现远程控制。

④TCP 4899 Radmin 远程控制弱认证漏洞:Radmin 远控服务认证缺陷,攻击者建立远控会话。

⑤TCP 80 IIS Unicode 目录遍历漏洞:构造带../的 HTTP 请求,尝试调用 cmd.exe 执行系统命令。

四.问题及解决方案

问题一:无法使用“超级巡警之虚拟机自动脱壳器”。

解决方法:尝试将文件夹放入金山毒霸信任区,再次启动成功

问题二:在使用IDA Pro软件时,快捷键g无法使用。

解决方法:逐行寻找过于繁杂,查询学长的实验报告后定位查找位置,快速找到,快捷键无法使用原因未知。

五.学习感悟与思考

本次实验让我亲眼观察到多类经典网络攻击的完整流量特征,理解了攻击从信息侦察到漏洞利用的完整链路。实验中我掌握了流量过滤、特征检索的方法,能够结合报文内容判断 NetBIOS 扫描、SMB 枚举、PsExec、Radmin 远控、IIS 目录遍历等攻击是否成功。

我认识到大部分攻击成功的根源是主机开放高危端口、认证配置不安全,缺少防火墙和安全策略限制。同时我也体会到流量分析需要扎实的协议基础,读懂 TCP、SMB、HTTP 报文是识别恶意行为的前提。

网络安全攻防是一个持续对抗的过程,防护需要从关闭无用端口、加强身份认证、过滤异常访问等多个角度落实。今后我会继续夯实网络协议知识,熟悉更多恶意流量特征,提升安全分析和应急研判能力。

参考资料:

Wireshark 数据包分析实战

20232406实验四实验报告

posted @ 2026-11-05 11:05  好记的名字  阅读(5)  评论(0)    收藏  举报