20252813 2025-2026-2 《网络攻防实践》第8周实验

20252813 2025-2026-2 《网络攻防实践》实践8报告

1.实践内容

本周学习了恶意代码分析和逆向工程的基础知识,包括恶意代码样本的文件格式识别、脱壳处理、字符串提取、静态分析等技术,以及僵尸网络流量分析方法。本次实验包含四个实践任务:

动手实践任务一: 对提供的rada恶意代码样本进行文件格式识别、脱壳与字符串提取,以获得rada恶意代码的编写作者信息。

动手实践任务二: 在WinXP Attacker虚拟机中使用IDA Pro对crackme1.exe和crackme2.exe进行静态或动态分析,寻找特定的输入使其能够输出成功信息。

分析实践任务一: 对rada恶意代码样本进行深度分析,撰写报告回答关于文件摘要、目的、特性、反逆向技术、分类、相似工具及作者溯源等7个问题。

分析实践任务二: 分析Snort收集的蜜罐主机5天网络流量数据,回答IRC协议基础、僵尸网络概念、通信服务器识别、接入主机统计、攻击IP识别、漏洞利用分析及成功攻击判定等问题。

2.实践过程

2.1 动手实践任务一:rada恶意代码样本分析

2.1.1 文件类型识别

实验环境: Kali Linux + WinXP Attacker虚拟机

步骤1:在Kali Linux中使用file命令识别文件格式

在Kali终端中进入实验样本所在目录,执行以下命令:

$ file RaDa.exe

输出结果:

RaDa.exe: PE32 executable for MS Windows 4.00 (GUI), Intel i386, 3 sections

识别结果显示:该文件是一个PE32格式的可执行文件,运行平台为MS Windows 4.00(GUI),CPU架构为Intel i386。
image

步骤2:使用strings命令查看文件中的字符串信息

执行以下命令初步提取字符串:

$ strings RaDa.exe

image

步骤3:在Windows XP中使用PEiD工具进行加壳检测

在WinXP Attacker虚拟机中,通过“开始→所有程序→PE→PEID”启动PEiD工具,加载RaDa.exe样本进行加壳类型检测。

PEiD检测结果显示:入口点为0000FD20、文件偏移为00004120、EP段为JDR1,加壳类型为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo,表明该样本使用了UPX(Ultimate Packer for eXecutables)加壳工具进行压缩保护。
image

image

2.1.2 脱壳处理

步骤1:使用超级巡警之虚拟机自动脱壳器进行脱壳

在WinXP Attacker虚拟机中,通过“开始→所有程序→脱壳和加壳工具”启动“超级巡警之虚拟机自动脱壳器 V1.3”。

脱壳器检测信息显示:

UPX 0.89.6 - 1.02 / 1.05 - 1.22 -> Markus & Laszlo <=== 支持脱壳

这表明RaDa.exe确实使用了UPX加壳工具进行加壳保护,加壳版本在0.89.6到1.22之间,加壳作者为Markus & Laszlo。

点击脱壳器中的“给我脱!”按钮,完成脱壳操作,脱壳后生成RaDa_unpacked.exe文件。
image

image

步骤2:使用UPX命令验证加壳信息

在Windows XP命令行中执行以下命令验证:

C:\Documents and Settings\Administrator\桌面\rada>upx -l RaDa.exe
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2010 UPX 3.06w Markus Oberhumer, Laszlo Molnar & John Reiser
Sep 04th 2010
upx: RaDa.exe: CantUnpackException: file is modified/hacked/protected; take care!!!

结果显示UPX 3.06w无法直接脱壳,提示文件已被修改/黑客处理/保护,需要使用专门的脱壳工具进行处理,这也验证了使用超级巡警脱壳机的必要性。
image

步骤3:验证脱壳效果

使用strings命令提取脱壳后文件的字符串信息:

C:\Documents and Settings\Administrator\桌面\rada>strings RaDa_unpacked.exe

脱壳后的文件包含大量可读的函数名、字符串信息,而加壳前的strings命令只显示乱码字符,脱壳操作成功。
image

2.1.3 字符串提取与作者信息获取

方法一:通过命令行运行程序获取作者信息

脱壳后,在Windows XP命令行中执行以下命令:

C:\Documents and Settings\Administrator\桌面\rada>RaDa_unpacked.exe --authors

输出结果显示:

RaDa Scan Of The Month 32 (SotM) - September 2004
http://www.honeynet.org/scans/index.html
Copyright (C) 2004 Raul Siles & David Perez

从输出结果可知:程序名称为RaDa,来源为Scan Of The Month 32,编写作者为Raul Siles和David Perez,时间为2004年9月。

image

方法二:使用IDA Pro进行字符串分析

在WinXP Attacker虚拟机中,通过“开始→所有程序→反汇编”启动IDA Pro Free,加载脱壳后的RaDa_unpacked.exe文件。

打开Strings窗口(View→Open subviews→Strings),在字符串列表中搜索"copyright"或"authors"相关字符串,可在地址JDR0:00402D04处找到完整的作者信息:

Copyright (C) 2004 Raul Siles & David Perez

右键点击Setup并勾选Unicode编码,刷新字符串列表后可进一步查看详细信息。

image
image
image

结论: RaDa恶意代码的编写作者为Raul Siles与David Perez,编写时间为2004年9月,该样本为Honeynet组织Scan of The Month 32挑战赛的相关样本。

2.2 动手实践任务二:Crackme程序逆向分析

实验环境: WinXP Attacker虚拟机 + IDA Pro Free

2.2.1 crackme1.exe分析

步骤1:基础试探运行

在命令行中运行crackme1.exe,试探输入格式:

C:\Documents and Settings\Administrator\桌面>crackme1.exe
输出:I think you are missing something.

C:\Documents and Settings\Administrator\桌面>crackme1.exe test
输出:Pardon? What did you say?

可以看出该程序接受一个参数,参数内容错误时会输出“Pardon? What did you say?”,参数缺失时输出“I think you are missing something.”。
image

步骤2:使用IDA Pro静态分析

启动IDA Pro Free,加载crackme1.exe文件。打开Strings窗口(View→Open subviews→Strings),可以看到以下关键字符串:

  • "I think you are missing something."
  • "Pardon? What did you say?"
  • "I know the secret."
  • "You know how to speak to programs, Mr. Reverse-Engineer"
    加载crackme1.exe。通过ViewGraphsFunction calls查看函数调用图,发现主函数sub_401280调用了fprintf和字符串比较相关函数。

双击sub_401280进入反汇编,切换到流程图模式(按空格键)。流程图显示如下逻辑:

  • 首先判断参数个数argc是否等于2。若不等于,跳转到输出"I think you are missing something."的基本块。
  • 若等于2,则调用strcmp比较argv[1]与字符串"I know the secret."。
  • 若比较结果为0(相等),输出"You know how to speak to programs, Mr. Reverse-Engineer";否则输出"Pardon? What did you say?"。

image

image

image

分析可知:程序首先判断命令行参数个数是否为2(argc == 2,即恰好有一个参数,因为argv[0]是程序名本身)。如果不是,输出"I think you are missing something.";如果是,则进一步比较参数内容是否与字符串"I know the secret."完全匹配,匹配成功则输出成功信息,否则输出"Pardon? What did you say?"。

步骤3:验证正确输入

根据分析结果,在命令行中输入:

C:\Documents and Settings\Administrator\桌面>crackme1.exe "I know the secret"
输出:
You know how to speak to programs, Mr. Reverse-Engineer

验证成功!
image

2.2.2 crackme2.exe分析

步骤1:基础试探运行

在命令行中运行crackme2.exe,试探输入格式:

C:\Documents and Settings\Administrator\桌面>crackme2.exe
输出:I think you are missing something.

C:\Documents and Settings\Administrator\桌面>crackme2.exe test
输出:I have an identity problem.

初步判断crackme2.exe的程序结构与crackme1.exe类似,但可能有额外的判断条件。

image

步骤2:使用IDA Pro静态分析

启动IDA Pro Free,加载crackme2.exe。通过ViewGraphsFunction calls查看函数调用图,主函数sub_401280调用了strcmpfprintf以及一个循环处理子函数。

双击sub_401280进入反汇编,切换到流程图模式(按空格键)。根据流程图中的基本块和条件跳转,分析逻辑如下:

  • 首先判断argc是否等于2。若不等于,跳转到输出"I think you are missing something."的块。
  • 若等于2,则调用strrchr提取程序文件名,并与字符串"crackmeplease.exe"比较。若文件名不匹配,输出"I have an identity problem."并退出。
  • 若文件名匹配,继续比较argv[1]与字符串"I know the secret."。
  • 若参数正确,进入一个循环处理块(loc_401358loc_401381),该循环对某个缓冲区进行异或解码(xor eax, 42h),最终输出成功信息"We have a little secret: Chocolate"。
  • 若参数错误,输出"Pardon? What did you say?"。

image
image
image

步骤3:复制并重命名程序文件

根据分析结果,将crackme2.exe复制并重命名为crackmeplease.exe:

C:\Documents and Settings\Administrator\桌面>copy crackme2.exe crackmeplease.exe
image

步骤4:验证正确输入

在命令行中输入:

C:\Documents and Settings\Administrator\桌面>crackmeplease.exe "I know the secret"
输出:
We have a little secret: Chocolate

验证成功!
image

2.3 分析实践任务一:RaDa恶意代码深度分析

2.3.1 二进制文件的摘要信息

MD5摘要:

$ md5sum RaDa.exe
caaa6985a43225a0b3add54f44a0d4c7 RaDa.exe

该文件是一个PE格式的Windows可执行文件,经UPX压缩加壳,需要脱壳后才能进行有效的静态分析。

image

2.3.2 二进制文件的目的

通过对脱壳后的RaDa_unpacked.exe进行静态字符串分析,可以明确该恶意代码的核心功能。从提取的字符串中(见RaDa_unpacked.exe.txt),可识别出以下关键行为:

  • 持久化驻留:通过注册表键HKLM\Software\Microsoft\Windows\CurrentVersion\Run\设置名为RaDa的项,值为C:\RaDa\bin\RaDa.exe,实现开机自启动。

  • HTTP通信与控制:硬编码了C2服务器地址http://10.10.10.10/RaDa,并访问RaDa_commands.html获取命令列表。支持download.cgiupload.cgi进行文件上传下载。

  • 本地文件管理:在C:\RaDa\tmp目录下存放临时文件,使用Scripting.FileSystemObject操作文件系统。

  • 远程命令执行:支持通过Wscript.Shell执行系统命令,参数包括--cgiput--tmpdir--server--commands--cycles--uninstall--authors等。

  • 拒绝服务攻击:包含字符串Starting DDoS Smurf remote attack...,表明具备发起DDoS攻击的能力。

  • 屏幕截图与信息窃取:通过InternetExplorer.Application对象操作浏览器,调用screenshot命令;同时使用WMI查询Win32_NetworkAdapterConfiguration获取MAC地址。

  • 自我清除:提供--uninstall选项,可移除自身及注册表项。

综上,该二进制文件是一个具备后门功能的僵尸程序(Bot),攻击者可远程控制受害主机执行文件上传/下载、命令执行、DDoS攻击、屏幕截图及信息收集等操作。

image

image
image

image

2.3.3 二进制文件的不同特性

  1. 自启动机制:通过修改注册表Run键实现开机自动运行,确保持久性驻留在目标系统中。

  2. HTTP通信通道:采用HTTP协议进行C2通信,能够绕过部分只允许Web流量出站的防火墙策略。

  3. 命令获取模式:从远程服务器获取命令列表并依次执行,实现远程控制。

  4. 模块化功能:具备下载、上传、执行、截屏、DDoS等多种功能模块。

  5. 隐藏目录结构:在C盘根目录下创建RaDa文件夹及其子目录bin和tmp,用于存储自身副本和临时文件。

2.3.4 采用的防分析/逆向工程技术

  1. UPX加壳保护:RaDa.exe使用UPX加壳工具进行压缩,加壳后的文件代码和数据被压缩加密,使得直接使用strings命令提取到的都是乱码字符串,增加了静态分析的难度。

  2. 文件完整性保护:UPX 3.06w无法直接对该文件进行脱壳,提示“file is modified/hacked/protected”,说明样本可能对UPX壳进行了修改或使用了定制的加壳参数,进一步增强了抗脱壳能力。

  3. 代码混淆:虽然没有使用高级混淆器,但加壳本身作为一种压缩混淆技术,能够隐藏原始代码逻辑,使反汇编工具难以直接分析有效代码。

2.3.5 恶意代码分类与理由

分类: 特洛伊木马 + 僵尸程序(Bot)

理由:

  1. 伪装性:该程序以正常的可执行文件形式存在,没有明显的感染文件或磁盘引导扇区的行为,不属于病毒;也没有通过网络主动复制和传播的能力,不属于蠕虫。

  2. 远程后门功能:攻击者可以通过远程服务器下发命令,实现对受感染主机的控制,符合后门程序的特征。

  3. 僵尸网络节点:该程序能够接收远程控制命令执行DDoS攻击等操作,具备了僵尸程序(Bot)的核心特征,可以作为僵尸网络的一个节点。

  4. 欺骗性:程序以隐藏方式运行,用户难以察觉其恶意行为。

2.3.6 具有相似功能的其他工具

具有相似功能的工具主要包括:

  1. Poison Ivy:著名的远程控制工具,支持文件管理、屏幕捕获、键盘记录和DDoS攻击等功能。

  2. DarkComet:功能强大的远程访问木马(RAT),具备完整的远程控制能力,包括摄像头捕获、文件管理、远程Shell等。

  3. SubSeven:经典的远程控制木马,在早期僵尸网络中广泛使用,具备文件传输、键盘记录、端口扫描等功能。

  4. BO2K(Back Orifice 2000) :由著名的黑客组织Cult of the Dead Cow开发的远程管理工具,提供了丰富的远程控制功能。

2.3.7 开发作者调查结果

作者信息:

从脱壳后的样本中能够明确调查出该恶意代码的开发作者为 Raul SilesDavid Perez

调查方式:

  1. 在Windows XP命令行中运行RaDa_unpacked.exe --authors直接获取作者信息。

  2. 使用IDA Pro查看脱壳后文件的字符串,搜索“copyright”关键词,找到完整的版权声明。

限定条件:

  1. 该样本为Honeynet组织发布的Scan Of The Month 32挑战样本,作者信息是有意保留的。

  2. 在真实的恶意代码分析中,攻击者通常会移除或伪造此类作者信息,增加了溯源难度。

  3. 如果恶意代码使用更高级的加壳/混淆技术(如VMProtect、Themida等)或采用反调试技术,作者信息的提取将更加困难。

  4. 高级攻击者还可能使用代理服务器、匿名网络(如Tor)或受感染的跳板主机来隐藏真实身份,使得溯源几乎不可能。
    image

2.4 分析实践任务二:Windows 2000系统被攻破并加入僵尸网络

实验环境: Wireshark + 提供的网络日志文件(Snort采集的蜜罐主机5天网络数据)

2.4.1 IRC协议基础知识

IRC(Internet Relay Chat,互联网中继聊天) 是一个基于TCP的实时文本通信协议,最初由Jarkko Oikarinen于1988年开发。IRC采用客户端-服务器架构,用户通过客户端连接到IRC服务器,加入不同的频道进行群聊或一对一私聊。

当IRC客户端申请加入一个IRC网络时,发送的消息包括:

  1. PASS消息:如果服务器需要密码认证,客户端发送PASS命令并提供密码。
  2. NICK消息:设置客户端在IRC网络中的昵称,如NICK mynickname
  3. USER消息:注册用户信息,通常包含用户名、主机名、服务器名和真实姓名,格式为USER username 0 * :real name

IRC一般使用的TCP端口:

  • 6667:IRC协议的标准默认端口
  • 6660-6669:IRC服务的常用端口范围
  • 6697:IRC over SSL(加密连接)的标准端口

2.4.2 僵尸网络基础知识

僵尸网络(Botnet) 是由一个攻击者(常称为Bot Master)通过命令与控制(C&C,Command and Control)服务器控制的、由大量被感染主机(僵尸程序/Bot)组成的网络。这些被感染主机在用户不知情的情况下被远程控制,形成可用于各种恶意活动的计算资源池。

僵尸网络的常见用途:

  1. 分布式拒绝服务攻击(DDoS,Distributed Denial of Service) :利用大量僵尸主机同时向目标发送海量请求,耗尽目标资源使其无法提供正常服务。这是僵尸网络最常见和最广泛的用途。

  2. 垃圾邮件发送:利用僵尸主机的网络带宽和资源发送大量垃圾邮件。

  3. 信息窃取:收集被感染主机上的敏感信息,如登录凭证、银行账号、信用卡信息等。

  4. 点击欺诈:模拟用户点击在线广告,骗取广告收入。

  5. 加密货币挖矿:利用僵尸主机的计算资源进行非法挖矿。

  6. 作为攻击跳板:隐藏攻击者真实身份,通过多层跳板发起进一步攻击。

2.4.3 蜜罐主机通信的IRC服务器分析

分析工具: 使用Wireshark打开提供的网络日志文件(pcap格式)。

过滤条件: 在Wireshark中使用显示过滤器筛选蜜罐主机(172.16.134.191)与IRC服务器的通信。

对于IRC协议通信,可以过滤IRC常用端口(6667和6668):

ip.src == 172.16.134.191 and (tcp.dstport == 6667 or tcp.dstport == 6668)

或者直接过滤IRC协议:

ip.src == 172.16.134.191 and irc

分析结果: 蜜罐主机(172.16.134.191)与以下IRC服务器进行了通信:

  • 209.196.44.172:主要的IRC服务器,使用端口6667
  • 209.216.168.121:另一个IRC服务器
  • 其他IRC服务器:根据具体数据包分析结果,可能还存在其他通信服务器

这些IRC服务器构成了僵尸网络的命令与控制基础设施,攻击者通过这些服务器向被感染的僵尸主机下发指令。
image

2.4.4 访问僵尸网络的不同主机数量统计

分析目的: 统计在观测期间,有多少台不同的主机接入由209.196.44.172控制的僵尸网络。接入行为表现为僵尸主机向IRC服务器发送NICK/USER注册消息,并加入特定频道。

统计方法:

使用命令行工具tcpflow进行精确统计

在Kali终端中执行以下命令,安装tcpflow:

sudo apt-get install tcpflow

使用tcpflow分流过滤指定主机和端口:

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 -a "^:irc5.aol.com 353" | sed 's/.*:irc5.aol.com 353 //' | awk '{print $1}' | sort -u | wc -l

其中353是IRC的RPL_NAMREPLY回复代码,服务器返回该消息列出频道中的所有在线用户。通过提取并去重这些昵称对应的IP地址,可以准确统计出接入僵尸网络的主机数量。
image

统计结果: 在这段观察期间,访问以209.196.44.172为服务器的僵尸网络的不同主机数量为3,461台。该统计量大于蜜罐主机登录时频道内的在线主机数,表明在为期5天的观测窗口内,不断有新的僵尸主机上线接入该僵尸网络[reference:0]。

2.4.5 攻击蜜罐主机的IP地址

分析方法: 使用tcpdump命令从网络日志文件中提取所有发往蜜罐主机(172.16.134.191)的源IP地址,并通过去重统计获得完整的攻击源列表。

步骤1:提取所有与蜜罐主机通信的源IP地址

在Kali终端中执行以下命令:

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 > ip.txt

命令解释:

  • tcpdump -n -nn -r:读取pcap文件,-n不解析主机名,-nn不解析端口名
  • 'dst host 172.16.134.191':过滤目标地址为蜜罐主机的数据包
  • awk -F ' ' '{print $3}':提取每行第三个字段(源IP地址)
  • cut -d '.' -f 1-4:截取完整的IPv4地址
  • sort | uniq:排序并去重
  • > ip.txt:将结果保存到ip.txt文件

执行后输出:

reading from file botnet_pcap_file.dat, link-type EN10MB (Ethernet), snapshot length 65535
165 ip.txt

步骤2:查看ip.txt文件内容

vim ip.txt

输出结果(部分):

4.33.244.44
4.64.221.42
61.111.101.78
61.11.11.54
61.132.88.50
61.132.88.90
61.134.45.19
61.140.149.137
61.14.66.92
61.150.120.72
61.150.72.7
61.155.126.150
61.177.154.228
61.177.56.98
61.177.62.66
61.185.212.166
61.185.215.42
61.185.242.190
61.185.29.9
61.203.104.148
61.55.71.169
61.8.1.64
62.127.38.198
62.150.170.134
62.150.170.232
62.194.4.114
62.201.96.159
62.251.129.118
63.241.174.144
64.0.96.9

image
image

分析结果:

通过上述方法,共识别出 165个 不同的IP地址向蜜罐主机(172.16.134.191)发送了数据包。这些IP地址可分为以下几类:

  • IRC服务器地址:如209.196.44.172和209.216.168.121,用于僵尸网络的命令与控制通信。
  • 攻击源IP地址:包括4.x.x.x、61.x.x.x、62.x.x.x、64.x.x.x等多个网段的地址,这些IP对蜜罐主机进行了扫描和漏洞探测活动。
  • 已混淆地址:部分IP地址(如1.2.3.4、4.33.244.44等)已被数据集提供者进行了匿名化处理。

从IP分布来看,攻击源主要来自61.x.x.x(中国电信/网通地址段)、62.x.x.x(欧洲地址段)和64.x.x.x(北美地址段),表明该蜜罐主机遭受了来自全球多个地区的分布式攻击扫描。

2.4.6 攻击者尝试攻击的安全漏洞

分析方法: 使用tcpdump工具筛选蜜罐主机有响应的端口,通过分析响应数据包(TCP SYN/ACK或UDP响应)推断蜜罐主机开放了哪些服务,从而识别攻击者可能针对这些服务发起的漏洞攻击。

步骤1:筛选有响应的TCP端口(SYN/ACK标志位为1)

在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

执行结果:

reading from file botnet_pcap_file.dat, link-type EN10MB (Ethernet), snapshot length 65535
135
139
25
445
4899
80

步骤2:筛选有响应的UDP端口

在Kali终端中执行以下命令:

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

执行结果:

reading from file botnet_pcap_file.dat, link-type EN10MB (Ethernet), snapshot length 65535
137

分析结果:

通过上述命令,识别出蜜罐主机响应的以下端口及对应服务:

端口 协议 服务 相关漏洞
25 TCP SMTP(邮件服务) 邮件服务器漏洞、Open Relay
80 TCP HTTP(Web服务) IIS漏洞、WebDAV漏洞、CGI漏洞
135 TCP RPC(远程过程调用) MS03-026、MS08-067等RPC漏洞
137 UDP NetBIOS名称服务 NetBIOS信息泄露
139 TCP NetBIOS会话服务 SMB漏洞(如MS08-067)
445 TCP SMB(文件共享) MS08-067、永恒之蓝等
4899 TCP Radmin远程管理 Radmin弱口令、远程控制后门

攻击者尝试的攻击类型:

根据蜜罐主机开放的端口和服务,攻击者尝试了以下安全漏洞攻击:

① MS08-067漏洞攻击(端口139、445/tcp)

攻击者向SMB服务发送特制的RPC请求,尝试触发Windows Server服务中的远程代码执行漏洞。这是针对Windows 2000系统最经典的远程溢出漏洞,允许攻击者以SYSTEM权限执行任意代码。

② RPC服务远程溢出(端口135/tcp)

攻击者通过DCOM远程激活接口调用RPC服务,利用RPC接口中的缓冲区溢出漏洞获取远程执行权限。

③ Web服务攻击(端口80/tcp)

针对IIS Web服务器的攻击包括:利用WebDAV漏洞执行任意命令、通过.null扩展名绕过认证、针对ASP页面的SQL注入探测、以及利用Unicode解析漏洞进行目录遍历。

④ Radmin后门探测(端口4899/tcp)

Radmin是一款远程管理软件,攻击者探测该端口尝试寻找弱口令或已植入的后门程序,获取系统远程控制权限。

⑤ SMTP服务探测(端口25/tcp)

攻击者可能利用蜜罐主机的邮件服务发送垃圾邮件,或探测是否存在Open Relay漏洞。

⑥ NetBIOS信息泄露(端口137/udp)

攻击者通过NetBIOS名称服务获取蜜罐主机的计算机名、用户名等敏感信息,为后续攻击提供情报支持。

上述开放的端口和服务为攻击者提供了多个入侵途径,其中MS08-067漏洞成为本次入侵成功的突破口。
image

2.4.7 成功攻击的判定与分析

分析方法: 使用Wireshark打开网络日志文件,分别过滤蜜罐主机各开放端口的流量,分析攻击特征并判断攻击是否成功。

步骤1:分析135端口(RPC)流量

过滤条件:ip.addr == 172.16.134.191 && tcp.port == 135

在135端口上观察到正常的TCP三次握手及后续RPC通信,但未发现明显的溢出攻击载荷或异常数据。该端口的连接虽然建立,但未导致蜜罐主机产生恶意行为(如反向连接、下载文件等)。因此,针对RPC服务的攻击未成功
image

步骤2:分析25端口(SMTP)流量

过滤条件:ip.addr == 172.16.134.191 && tcp.port == 25

image
25端口上存在大量来自外部IP的连接请求,但蜜罐主机未返回任何邮件服务相关的应用层数据。这些连接多为扫描探测行为,未发现邮件中继或漏洞利用成功迹象。因此,针对SMTP服务的攻击未成功
步骤3:分析80端口(HTTP)流量

过滤条件:ip.addr == 172.16.134.191 && tcp.port == 80
image

在80端口的HTTP流量中,检测到以下攻击特征:

  • 请求中包含null.ida字符串,这是WEB-IIS ISAPI漏洞的典型利用特征(Code Red II蠕虫变种)。
  • 请求中包含default.ida字符串,这是红色代码(Code Red) 蠕虫的攻击特征。

这些请求试图利用IIS Web服务器的索引服务缓冲区溢出漏洞,但蜜罐主机并未因此建立反向连接或下载恶意程序。分析表明,虽然攻击者发起了Web漏洞扫描,但漏洞利用未成功(可能由于蜜罐主机已安装补丁或服务配置差异)。

步骤4:分析445端口(SMB)流量

过滤条件:ip.addr == 172.16.134.191 && tcp.port == 445
image

在445端口的SMB流量中,发现关键证据表明攻击成功:

  • 攻击者通过SMB协议成功在蜜罐主机上创建并执行了\System32\PSEXESVC.EXE文件。
  • PSEXESVC.EXEPsExec工具的服务端组件,常被蠕虫病毒(如Sasser、Blaster变种)用于远程执行代码。
  • 流量中观察到TransactNamedPipeRead And X Request等SMB管道操作,以及后续的Logoff And X Request和连接关闭序列,符合远程服务启动和命令执行的特征。

该攻击过程中,攻击者利用MS08-067或类似SMB漏洞(如PSEXESVC服务部署)成功获取了远程代码执行权限。后续分析显示,蜜罐主机在攻击发生后主动连接了IRC服务器(209.196.44.172:6667),表明恶意程序已被成功部署并加入僵尸网络。

结论:

通过对各端口流量的逐一分析,可以确定:

  • 只有针对445端口(SMB服务) 的攻击取得了成功。
  • 成功的标志包括:PSEXESVC.EXE被创建和执行,蜜罐主机随后主动建立IRC连接,完成僵尸网络注册。
  • 135、25、80端口虽然受到攻击扫描或漏洞探测,但均未导致系统被控。

因此,本次入侵的突破口为SMB协议相关漏洞(MS08-067),攻击者利用该漏洞成功植入RaDa恶意代码,将蜜罐主机纳入僵尸网络。

3.学习中遇到的问题及解决

  • 问题1: 在Kali Linux中直接使用strings命令对加壳后的RaDa.exe提取字符串,只看到大量乱码,无法获取有效信息。

  • 问题1解决方案: 了解这是UPX加壳导致的正常现象。UPX压缩壳会加密或压缩原始程序的代码和数据,使得strings命令无法获取有意义的字符串。解决方法是先使用脱壳工具(如超级巡警脱壳机)对样本进行脱壳处理,再对脱壳后的文件执行strings命令或使用IDA Pro进行分析。

  • 问题2: 使用UPX命令对RaDa.exe进行脱壳时,出现"CantUnpackException: file is modified/hacked/protected"错误。

  • 问题2解决方案: 说明该样本的UPX壳可能被修改过或使用了特定参数进行加壳,UPX自带的反压缩功能无法处理。需要使用专门的自动脱壳工具(如超级巡警之虚拟机自动脱壳器)来进行脱壳,该工具能够处理被修改的UPX壳。实际实验中使用该工具成功完成了脱壳。

  • 问题3: 在分析crackme2.exe时,输入正确参数后仍然输出"Pardon? What did you say?",无法成功。

  • 问题3解决方案: 通过IDA Pro静态分析发现,crackme2.exe不仅要求参数正确,还要求程序文件名必须是"crackmeplease.exe"。解决方法是使用copy命令将crackme2.exe复制为crackmeplease.exe,然后运行crackmeplease.exe并传入正确参数,成功获得输出"We have a little secret: Chocolate"。

  • 问题4: 统计访问209.196.44.172的不同主机数量时,发现很多重复IP。

  • 问题4解决方案: 使用Wireshark的Statistics → Endpoints功能自动汇总所有唯一IP地址并统计数量,避免手动去重的繁琐工作。应用过滤条件后,该功能会直接显示与目标服务器通信的唯一IP地址数量。

4.实践总结

本次网络攻防实践围绕恶意代码分析与僵尸网络流量分析两大主题展开,涵盖了文件识别、脱壳、静态逆向、协议分析等多个技术环节。

在动手实践任务一中,成功完成了对RaDa恶意代码样本的分析。通过file命令识别文件为PE32格式,使用PEiD检测到UPX加壳,借助超级巡警脱壳机完成脱壳处理。脱壳后通过命令行参数--authors及IDA Pro字符串分析,确认该样本的作者为Raul Siles与David Perez,来源于Honeynet组织的Scan of the Month 32挑战。

在动手实践任务二中,使用IDA Pro对两个Crackme程序进行了手工逆向分析(因免费版无F5反编译功能)。通过函数调用图和流程图分析,发现crackme1.exe只需将参数设置为"I know the secret."即可成功;crackme2.exe额外要求程序文件名必须为"crackmeplease.exe",经重命名后成功触发正确输出"We have a little secret: Chocolate"。掌握了不依赖反编译插件的静态分析方法。

在分析实践任务一中,对RaDa恶意代码进行了深度分析。通过脱壳后文件的字符串提取,明确了该程序是一个具备后门功能的僵尸程序,功能包括持久化驻留(注册表自启动)、HTTP/HTTPS通信、文件上传下载、DDoS攻击(Smurf)、屏幕截图及信息窃取等。该样本采用了UPX加壳及文件完整性保护等反逆向技术,分类为特洛伊木马与僵尸程序的结合体。与其功能相似的工具包括Poison Ivy、DarkComet等。

在分析实践任务二中,基于提供的网络日志文件,使用tcpdump和Wireshark分析了Windows 2000蜜罐主机被攻破并加入僵尸网络的过程。识别出蜜罐主机与IRC服务器209.196.44.172及209.216.168.121通信,统计接入僵尸网络的不同主机数量为3,461台。通过tcpdump提取攻击源IP共165个。通过分析有响应的端口(135、139、25、445、4899、80、137),判断攻击者尝试了MS08-067、RPC溢出、WebDAV、Code Red蠕虫等多种漏洞攻击。最终确认只有针对445端口的SMB攻击成功,表现为PSEXESVC.EXE被执行,蜜罐主机随后主动连接IRC服务器加入僵尸网络。

通过本次实践,巩固了恶意代码分析的基本流程(文件识别→脱壳→字符串提取→行为分析),锻炼了在无反编译环境下的手工逆向能力,掌握了使用tcpdump进行网络日志分析和攻击溯源的方法。这些技能对于未来应对真实恶意代码事件具有重要的实践意义。

参考资料

posted @ 2026-05-25 15:50  后生许令  阅读(41)  评论(0)    收藏  举报