20253921 2025-2026-2 《网络攻防实践》第八周作业

20253921 2025-2026-2 《网络攻防实践》第八周作业

1.实践内容

(1)rada恶意代码样本基础分析:主要涉及恶意代码的文件类型识别、运行平台判断、加壳检测、脱壳处理和字符串提取。通过stringsUPX、超级巡警脱壳器和IDA Pro等工具,分析RaDa.exe的文件格式、加壳方式、脱壳结果以及作者信息。

(2)Crackme程序逆向分析:主要涉及Windows PE程序的静态逆向分析原理。通过IDA Pro查看字符串、函数调用关系和程序流程图,分析crackme1.execrackme2.exe的参数判断逻辑,找出能够触发成功输出的特定输入。

(3)rada恶意代码行为分析:主要涉及恶意进程运行观察和功能特征识别。通过Process Explorer查看RaDa_unpacked.exe进程及其字符串信息,分析样本的远程控制、持久化、文件上传下载、浏览器控制、截图和DDoS攻击等恶意行为特征。

(4)僵尸网络流量分析:主要涉及网络数据包分析和攻击行为识别。通过Wireshark、tcpdump和tcpflow分析蜜罐主机172.16.134.191的网络流量,识别IRC通信、僵尸网络规模、攻击源IP、被攻击端口以及成功的攻击行为。

2.实验过程

2.1 动手实践任务一:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具

首先在学习通里面下载需要的文件复制粘贴在Kali系统中,打开样本所在目录,可以看到实验目录中包含RaDa.exerada_dump_.exe等文件,其中RaDa.exe为本次需要分析的rada恶意代码样本。

在Kali终端中使用字符串提取工具对样本进行初步查看,执行命令如下:strings RaDa.exe从输出结果中可以看到This program is the binary of SotM 32.rsrcJDR0JDR1等字符串信息,说明该样本中包含Windows可执行文件常见的资源节信息,可初步判断该文件为Windows平台下的可执行程序。

为了将样本传输到Windows XP实验环境中继续分析,在Kali终端中开启HTTP服务,执行命令如下:python3 -m http.server 8080

服务启动后,终端显示正在监听0.0.0.0:8080端口。随后在Windows XP虚拟机中打开浏览器,访问Kali主机地址:http://192.168.200.65:8080/。浏览器页面显示Kali当前目录的文件列表,其中可以看到RaDa.exe文件,说明样本已经成功通过HTTP服务共享到Windows XP环境中。

在该目录下尝试执行rada --authorsRaDa.exe --authors。执行后,程序弹出Internet Explorer浏览器窗口,页面标题为RaDa Usage - Windows Internet Explorer,页面内容显示RaDaScan Of The Month 32 (SotM) - September 2004http://www.honeynet.org/scans/index.html以及Copyright (C) 2004 Raul Siles & David Perez等信息。由此可以看出,该样本能够在Windows XP系统中运行,因此其运行平台为Windows。

最后,在Windows XP命令行中使用UPX工具对样本进行加壳检测,执行命令如下:upx -l RaDa.exe。检测结果显示Ultimate Packer for eXecutablesUPX 3.06w,同时提示CantUnpackException: file is modified/hacked/protected; take care!!!。这表明该样本使用了UPX加壳,但文件可能经过修改或保护,导致UPX无法直接正常脱壳。

所以分析结果为:RaDa.exe样本属于Windows平台下的可执行文件,文件格式为EXE/PE格式,能够在Windows XP实验环境中运行;通过UPX工具检测可知,该样本使用了UPX加壳。

(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

在完成rada恶意代码样本的文件格式和加壳工具识别后,继续使用脱壳工具对RaDa.exe样本进行脱壳处理,先在Windows XP实验环境中打开“开始”菜单,依次进入“所有程序”中的“脱壳和加壳工具”,选择并启动“超级巡警虚拟机自动脱壳器”。程序启动后,界面显示“超级巡警 VM Unpacker”,并提示脱壳环境加载成功,说明脱壳工具可以正常运行。

随后在超级巡警虚拟机自动脱壳器中选择需要处理的样本文件,将目标文件设置为RaDa.exe。选择完成后,点击“给我脱”按钮,开始对rada恶意代码样本进行自动脱壳处理。

脱壳完成后,超级巡警虚拟机自动脱壳器提示“脱壳成功”,并在当前目录下生成新的脱壳文件RaDa_unpacked.exe。在“我的文档”目录中可以看到原始样本RaDa.exe、中间文件rada_dump_.exe以及脱壳后的文件RaDa_unpacked.exe,说明脱壳处理已经完成。

(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

在完成RaDa.exe样本脱壳后,继续对脱壳生成的RaDa_unpacked.exe文件进行字符串提取和静态分析,以查找样本中包含的作者信息,先在Windows XP命令行中进入样本所在目录,对脱壳后的文件RaDa_unpacked.exe执行字符串提取命令如下:strings RaDa_unpacked.exe

执行后,命令行窗口输出了大量字符串信息,其中可以看到许多与Visual Basic程序相关的函数和符号,例如__vbaSetSystemError__vbaStrCat__vbaFreeVar__vbaVarMove等内容。

随后,为了进一步查看脱壳后样本中的字符串内容,打开反汇编工具IDA Pro Free。通过“开始”菜单进入“反汇编”工具目录,选择并启动IDA Pro Free。程序启动后,在文件选择窗口中选择脱壳后的样本文件RaDa_unpacked.exe,并将其加载到IDA中进行分析。

样本加载完成后,IDA自动进行初始分析,并在界面中显示程序入口、函数信息以及字符串窗口。在Strings窗口中可以看到程序中提取出的多条关键字符串,例如RaDaCommand_uninstallUninstallCommand_installInstallCommand_exitCommand_usageCommand_confCommand_go等,说明脱壳后的程序字符串已经可以被正常识别。

继续在IDA的Strings窗口中查找与作者相关的字符串,可以发现一条明显的版权信息:Copyright (C) 2004 Raul Siles & David Perez

同时,在程序运行时弹出的RaDa Usage - Windows Internet Explorer窗口中,也可以看到相同的内容,页面显示Scan Of The Month 32 (SotM) - September 2004以及Copyright (C) 2004 Raul Siles & David Perez。这说明该字符串确实属于rada恶意代码样本中的作者或版权信息。

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

在WinXP Attacker虚拟机中使用IDA Pro对crackme1.execrackme2.exe进行静态分析,通过查看文件信息、字符串窗口、函数调用图和程序流程图,寻找能够使程序输出成功信息的输入,先打开Windows XP中的“我的文档”目录,可以看到当前目录下存在crackme1.execrackme2.exe两个待分析程序,文件在学习通中下载后复制粘贴。

随后打开命令提示符,进入My Documents目录,对两个Crackme程序进行基本信息识别。分别执行如下命令计算文件MD5值,接着执行如下命令查看文件格式,命令如下:

md5sum crackme1.exe
md5sum crackme2.exe
file crackme1.exe
file crackme2.exe

结果显示crackme1.exe的MD5值为4357bf8c20fabb642fafc0b73fb0abfbcrackme2.exe的MD5值为46aa577172d8f37ae2ae281515c99afb,说明两个程序内容并不相同。同样结果显示两个文件均为PE32 executable for MS Windows (console) Intel 80386 32-bit,说明crackme1.execrackme2.exe都是Windows平台下的32位控制台程序。

接着启动IDA Pro,在文件选择窗口中选择crackme1.exe进行分析。IDA弹出加载文件窗口后,将其识别为Portable executable for 80386 (PE)格式,处理器类型为Intel 80x86,保持默认分析选项后点击确认,IDA开始加载并自动分析该程序。

IDA加载完成后,切换到Strings窗口查看程序中包含的字符串。可以看到crackme1.exe中存在I think you are missing something.\nI know the secretPardon? What did you say?\nYou know how to speak to programs, Mr. Reverse-Engineer\n等字符串。根据这些字符串可以初步判断,程序会根据命令行参数的数量和内容输出不同提示,其中You know how to speak to programs, Mr. Reverse-Engineer应为成功输出信息。

为了进一步确认程序判断逻辑,在IDA中查看函数调用关系图。通过View菜单进入Graphs,选择查看函数调用图,可以看到程序入口start之后调用了多个函数,其中包含strcmpprintfputs等与字符串比较和输出相关的函数,说明程序会对用户输入的参数进行比较,并根据比较结果输出不同内容。

之后继续查看关键函数sub_401280的流程图。在流程图中可以看到,程序首先判断输入参数数量,如果参数不足,则进入输出I think you are missing something.\n的分支;当参数数量满足要求时,程序会继续将输入内容与I know the secret进行比较。如果比较失败,则输出Pardon? What did you say?\n;如果比较成功,则进入成功分支,输出You know how to speak to programs, Mr. Reverse-Engineer\n

根据IDA分析结果,在命令提示符中运行crackme1.exe进行验证。直接执行crackme1.exe时,程序输出I think you are missing something.,说明缺少输入参数;执行crackme1.exe 1时,程序输出Pardon? What did you say?,说明参数数量满足但内容不正确;执行crackme1.exe 1 2crackme1.exe 1 2 3时,仍然无法得到成功信息。最后根据IDA中发现的关键字符串,执行如下命令:crackme1.exe "I know the secret"。程序成功输出:You know how to speak to programs, Mr. Reverse-Engineer。由此可知,crackme1.exe的正确输入为I know the secret

接下来继续使用IDA Pro分析crackme2.exe。在IDA中重新选择crackme2.exe并加载,IDA同样将其识别为Windows平台下的32位PE文件。加载完成后,查看Strings窗口,可以看到其中包含I think you are missing something.crackmeplease.exeI have an identity problem.\nI know the secretPardon? What did you say?\n等字符串。与crackme1.exe相比,crackme2.exe中多出了crackmeplease.exeI have an identity problem.,说明该程序除了检查输入参数外,还会检查自身程序名称。

随后查看crackme2.exe的函数调用图,可以看到程序中同样存在strcmpprintfputs等函数调用,同时调用关系中出现了与程序名判断相关的逻辑。继续查看关键函数sub_401280的流程图,可以看到程序先判断命令行参数数量,如果参数不足,则输出I think you are missing something.;随后程序会将当前程序名称与crackmeplease.exe进行比较,如果程序名称不匹配,则输出I have an identity problem.;只有程序名称满足要求后,才继续判断输入参数是否为I know the secret

根据分析结果,在命令提示符中先直接执行如下命令进行验证:crackme2.exe "I know the secret",此时程序输出:I have an identity problem.

说明虽然输入参数I know the secret正确,但由于当前程序文件名仍为crackme2.exe,不满足程序内部对文件名的判断条件,因此没有输出成功信息。

为了满足程序对自身文件名的检查要求,将crackme2.exe复制并重命名为crackmeplease.exe,执行命令如下:copy crackme2.exe crackmeplease.exe

命令执行后提示已复制1个文件,说明重命名后的程序文件已经生成。随后使用新的文件名再次运行程序,并输入前面分析出的关键字符串:crackmeplease.exe "I know the secret"。程序成功输出:We have a little secret: Chocolate

综上,通过IDA Pro对crackme1.execrackme2.exe进行字符串分析、函数调用图分析和流程图分析,并结合命令行运行结果进行验证,最终得到:crackme1.exe的正确输入为“I know the secret”,执行crackme1.exe I know the secret"”后能够输出成功信息“You know how to speak to programs, Mr. Reverse-Engineer”;crackme2.exe需要先复制并重命名为crackmeplease.exe,再执行crackmeplease.exe "I know the secret",最终能够输出成功信息“We have a little secret: Chocolate”。

2.3 分析实践任务一:分析一个自制恶意代码样本rada

本任务对自制恶意代码样本rada进行分析,主要通过Process Explorer查看进程行为,并结合字符串信息分析该恶意代码样本的功能、目的和基本特征。

首先在WinXP Attacker虚拟机中打开“开始”菜单,进入“监视工具”,启动Process Explorer。Process Explorer启动后,可以看到系统当前运行的进程列表,包括系统进程、服务进程以及用户启动的应用程序进程,为后续观察恶意代码运行后的进程变化做准备。

随后打开“我的文档”目录,可以看到当前目录中包含RaDa.exerada_dump_.exeRaDa_unpacked.execrackme1.execrackme2.exe以及前面IDA分析生成的相关数据库文件。其中RaDa_unpacked.exe为前面脱壳后生成的rada样本文件,接着运行RaDa_unpacked.exe,然后回到Process Explorer中查看进程列表。可以看到进程列表中出现了RaDa_unpacked.exe进程,进程描述显示为Malware,说明该样本已经成功运行,并且可以通过Process Explorer定位到对应的恶意代码进程。

选中RaDa_unpacked.exe进程后,打开其属性窗口,切换到Strings选项卡,对该进程镜像中的可打印字符串进行查看。在字符串结果中可以看到大量与程序功能相关的内容,继续向下查看字符串内容,可以发现与程序参数和命令相关的字符串,同时还可以看到程序运行时显示的页面信息,包括Scan Of The Month 32 (SotM) - September 2004http://www.honeynet.org/scans/index.htmlCopyright (C) 2004 Raul Siles & David Perez

根据Process Explorer中的进程观察和Strings窗口中的字符串信息,可以判断该样本不仅会在本机运行,还包含安装目录、注册表启动项、远程命令获取、文件上传下载、浏览器控制、截图以及DDoS攻击等功能特征。结合前面实验中运行样本时弹出的RaDa Usage页面和作者信息,可以进一步确定该样本属于具有远程控制和后门功能的恶意代码。

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

该二进制文件为RaDa.exe,是一个运行在Windows平台下的PE格式可执行文件。在WinXP Attacker虚拟机中,进入My Documents目录后,使用md5sum命令计算样本的MD5值,执行命令如下:md5sum RaDa.exe。命令执行后得到RaDa.exe的MD5值为caaa6985a43225a0b3add54f44a0d4c7,该哈希值可以作为识别同一样本的重要依据。

结合前面实验结果,该样本文件名为RaDa.exe,运行平台为Windows XP,文件格式为EXE/PE格式,并且使用了UPX加壳。因此,RaDa.exe文件名、MD5值、PE文件格式、Windows运行平台、UPX加壳特征、运行进程信息以及内嵌版权字符串,都可以作为识别同一样本的基本信息。

(2)找出并解释这个二进制文件的目的。

该二进制文件的主要目的是在目标主机上安装并运行一个具有远程控制能力的恶意程序,使攻击者能够通过远程命令控制受害主机执行指定操作。

从字符串中可以看到http://10.10.10.10/RaDaRaDa_commands.htmldownload.cgiupload.cgi等内容,说明该程序可能会连接指定服务器,获取命令或进行文件上传、下载。同时,字符串中还出现Starting DDoS smurf remote attack...,说明它具备发起DDoS Smurf攻击的能力。因此,该程序的目的不仅是控制主机,还可能将受害主机作为攻击节点,参与远程攻击活动。

(3)识别并说明这个二进制文件所具有的不同特性。

该样本具有多种恶意功能特性。首先,它具有安装和持久化能力,字符串中出现C:\RaDa\binC:\RaDa\tmp以及HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,说明程序可能会在本地创建目录,并通过注册表Run项实现开机自启动。

其次,它具有远程通信能力。字符串中包含http://10.10.10.10/RaDaRaDa_commands.htmldownload.cgiupload.cgi,说明程序可能通过HTTP方式与远程服务器通信,获取控制命令或传输文件。

再次,它具有命令控制功能。字符串中出现--commands--server--cgipath--cgiget--period--cycles等参数,说明程序可以通过命令参数配置服务器地址、命令路径、获取周期和执行次数等内容。

另外,它还具有文件操作和数据传输能力。字符串中出现download.cgiupload.cgifilenameADODB.StreamReadLoadFromFile等内容,说明程序可能支持文件下载、文件上传或通过脚本组件处理文件数据。

最后,它还具有浏览器控制、截图和攻击能力。字符串中出现InternetExplorer.Applicationscreenshotnavigatevisiblequit等内容,说明程序可能会调用IE浏览器组件进行页面访问或截图操作;同时Starting DDoS smurf remote attack...说明它具备远程发起DDoS攻击的能力。

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

该样本采用了加壳和壳结构修改来增加分析难度。前面使用UPX工具检测RaDa.exe时,工具显示该程序与UPX有关,但同时提示CantUnpackException: file is modified/hacked/protected; take care!!!,说明该样本虽然使用了UPX壳,但可能对壳结构进行了修改或保护,导致普通UPX无法直接脱壳。

这种方式可以隐藏程序真实代码和字符串,使分析人员在直接查看原始样本时难以获得完整信息。只有使用超级巡警虚拟机自动脱壳器等工具脱壳后,才能在RaDa_unpacked.exe中看到更多有效字符串和程序功能信息。因此,该样本主要采用UPX加壳修改壳结构的方式来防止直接分析和逆向工程。

(5)对这个恶意代码样本进行分类,并给出理由。

该恶意代码样本可以归类为后门程序远程控制类木马,同时具有DDoS攻击工具的特征。

理由是该样本并没有表现出病毒那种主动感染其他可执行文件的特征,也没有明显体现蠕虫那种自动扫描并自我传播的行为。从字符串分析来看,它更关注远程命令获取、文件上传下载、注册表自启动、浏览器控制、截图以及远程攻击等功能,这些特征更符合后门程序和远程控制木马的行为。

同时,字符串中明确出现Starting DDoS smurf remote attack...,说明它还可以被攻击者控制,用于发起DDoS Smurf攻击。因此,综合判断该样本属于带有DDoS攻击能力的后门型恶意代码

(6)给出过去已有的具有相似功能的其他工具。

与该样本功能相似的工具主要包括早期远程控制木马和DDoS攻击工具。Back OrificeNetBus都属于早期典型的远程控制木马,能够在受害主机上建立后门,使攻击者远程执行命令、查看信息或控制系统。SubSeven也具有远程控制、文件操作和系统控制等功能,与rada样本中体现出的后门控制特征相似。因此,rada可以看作是结合了后门控制、远程命令执行、文件传输和DDoS攻击能力的恶意代码样本。

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

可以在一定条件下调查出该二进制文件中声明的开发作者,但需要注意这并不一定等同于真实攻击者身份。在本实验环境中,通过运行程序和查看字符串信息,可以发现样本中包含Copyright (C) 2004 Raul Siles & David Perez这一版权信息。同时,在程序运行弹出的RaDa Usage页面中,也显示了Scan Of The Month 32 (SotM) - September 2004和相同的作者信息。因此,在静态分析和受控运行环境下,可以认为该样本中声明的作者为Raul SilesDavid Perez

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

(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?

IRC的全称是Internet Relay Chat,即互联网中继聊天。它是一种早期的实时文本通信协议,主要用于多个用户之间通过服务器和频道进行聊天通信。IRC经常被用作命令与控制通道。攻击者可以搭建或利用IRC服务器,让被感染主机作为IRC客户端连接到指定频道,然后通过频道向大量僵尸主机下发控制命令。

当IRC客户端申请加入一个IRC网络时,通常会先向IRC服务器发送注册连接相关消息,主要包括NICKUSER消息。其中,NICK用于设置客户端昵称,USER用于向服务器提交用户名、主机名和真实姓名等用户信息。完成基本注册后,如果客户端需要进入某个频道,则会发送JOIN消息加入指定IRC频道。

IRC一般使用的TCP端口为6667,这是最常见的IRC默认端口。此外,IRC还常见使用6660-6669这一组端口,有些IRC服务器也可能使用7000端口或其他自定义端口。若使用加密IRC连接,则可能使用6697端口。

(2)僵尸网络是什么?僵尸网络通常用于什么?

僵尸网络,也称为Botnet,是指大量被恶意代码感染并受攻击者远程控制的主机组成的网络。这些被控制的主机通常被称为僵尸主机肉鸡,攻击者则通过命令与控制服务器对它们进行统一管理和下发指令。

僵尸网络通常用于多种恶意活动。最常见的用途是发起分布式拒绝服务攻击,即DDoS攻击。攻击者可以控制大量僵尸主机同时向目标服务器发送请求,消耗目标带宽或系统资源,导致目标服务无法正常访问。僵尸网络还常用于发送垃圾邮件传播恶意代码窃取敏感信息下载并安装其他恶意程序点击欺诈以及代理跳板等活动。攻击者可以利用僵尸主机隐藏自己的真实身份,同时扩大攻击规模,提高攻击效果。

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

为了分析蜜罐主机172.16.134.191与哪些IRC服务器进行了通信,首先在Wireshark中打开网络日志文件botnet_pcap_file.pcap,然后针对IRC常用端口进行过滤分析。在Wireshark过滤栏中输入如下过滤条件:ip.src == 172.16.134.191 and tcp.dstport == 6667。该过滤条件表示筛选出源IP地址为蜜罐主机172.16.134.191,并且目的端口为IRC常用端口6667的TCP通信数据包。过滤后可以看到,蜜罐主机多次向外部主机的6667端口发起连接请求,数据包中出现了多个SYN连接请求以及部分TCP重传数据包,说明蜜罐主机正在尝试连接多个IRC服务器。

随后,为了统计通信目标地址,在Wireshark中依次进入“Statistics”菜单,选择“IPv4 Statistics”中的“All Addresses”,查看过滤结果中出现的所有IPv4地址。统计窗口显示,在当前过滤条件下,蜜罐主机172.16.134.191与多个外部IP地址存在IRC端口通信。

根据统计结果,蜜罐主机172.16.134.191尝试通信的IRC服务器包括:66.33.65.5863.241.174.144217.199.175.10209.196.44.172209.126.161.29。其中,66.33.65.58209.126.161.29出现次数较多,说明蜜罐主机与这两个地址之间的IRC连接尝试更加频繁。

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

先在Kali中安装tcpflow工具,用于从pcap文件中提取TCP会话数据,执行命令如下:sudo apt-get install tcpflow

安装完成后,进入存放网络日志文件的桌面目录,使用tcpflowbotnet_pcap_file.pcap中目的主机为209.196.44.172、端口为6667的IRC通信流量进行提取,执行命令如下:tcpflow -r botnet_pcap_file.pcap "host 209.196.44.172 and port 6667"

随后使用ls命令查看生成的会话文件,可以看到当前目录下已经生成了与209.196.44.172:6667相关的TCP流文件。接着对服务端返回方向的会话文件进行字符串过滤,提取IRC通信中出现的用户或主机信息。执行的命令为:sudo cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac 0 #x[^x]*x ://g" | tr ' ' '\n' | tr -d '\15' | grep -v "^$" | sort -u | wc -l。其中,grep -a "^:irc5.aol.com 353"用于提取IRC服务器返回的频道用户列表信息,sed用于去除前面的IRC响应字段,tr用于将同一行中的用户拆分为多行,sort -u用于去重,最后使用wc -l统计不同用户或主机的数量。

命令执行后输出结果为:3461。因此,在这段观察期间,访问以209.196.44.172为IRC服务器的僵尸网络的不同主机数量为3461台

(5)哪些IP地址被用于攻击蜜罐主机?

先在Kali中进入存放数据文件的Desktop目录,然后使用tcpdump读取网络日志文件botnet_pcap_file.dat,筛选目的主机为蜜罐主机172.16.134.191的数据包,并从输出结果中提取源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 > IP.txt; wc -l IP.txt

该命令中,tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191'用于读取数据文件并筛选所有目的地址为蜜罐主机的数据包;awk用于提取源地址字段;cut用于去除端口号,仅保留IP地址;sort | uniq用于排序并去重;最后将结果保存到IP.txt中,并使用wc -l IP.txt统计不同IP地址数量。命令执行后,终端显示:165 IP.txt

说明在该网络日志中,共统计到165个不同的外部IP地址访问过蜜罐主机172.16.134.191,这些地址可以视为攻击或探测蜜罐主机的来源地址。随后打开生成的IP.txt文件,可以看到其中列出了部分攻击源IP地址。

(6)攻击者尝试攻击了哪些安全漏洞?

先在Kali中进入Desktop目录,使用tcpdump读取网络日志文件botnet_pcap_file.dat,筛选出源主机为蜜罐主机172.16.134.191并带有TCP复位标志的数据包,然后提取其中的端口信息。执行命令如下: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端口。

这些端口说明攻击者曾经尝试访问蜜罐主机上的多个典型服务端口。随后继续统计UDP通信中蜜罐主机作为源地址返回的数据包端口,执行命令如下: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。命令执行后,结果显示:137137端口对应NetBIOS Name Service,说明攻击者还可能对蜜罐主机进行了NetBIOS名称服务探测,用于获取主机名、工作组等信息,或者为后续SMB攻击做准备。

(7)哪些攻击成功了?是如何成功的?

为了判断哪些攻击成功,先对135端口进行过滤,使用过滤条件:ip.addr == 172.16.134.191 && tcp.port == 135。从数据包可以看到,外部主机195.36.247.77向蜜罐主机172.16.134.191135端口发起连接,双方完成了SYNSYN, ACKACK三次握手,但随后很快出现FIN, ACK结束连接。该过程只能说明攻击者成功连接到了135端口,并没有看到明显的漏洞利用载荷或后续控制行为,因此不能确定该攻击真正成功。

接着对139端口进行过滤,使用过滤条件:ip.addr == 172.16.134.191 && tcp.port == 139。过滤结果中可以看到,外部主机与蜜罐主机之间出现了NBSS Session RequestPositive Session Response,说明NetBIOS会话建立成功。随后出现了SMB通信,例如Tree Connect AndX Request, Path: \\PC0191\C,说明攻击者尝试通过Windows文件共享访问蜜罐主机的共享资源。由此可以判断,针对139端口的NetBIOS/SMB连接是成功建立的,攻击者至少成功与蜜罐主机建立了SMB会话,并尝试访问共享目录。

然后对25端口进行过滤,使用过滤条件:ip.addr == 172.16.134.191 && tcp.port == 25。结果显示外部主机24.197.194.106与蜜罐主机172.16.134.19125端口建立了TCP连接,随后连接很快关闭。从截图中没有看到明显的SMTP命令交互或攻击载荷,因此只能说明攻击者成功探测或连接了SMTP服务,不能证明SMTP攻击已经成功。

继续对445端口进行过滤,使用过滤条件:ip.addr == 172.16.134.191 && tcp.port == 445。在445端口的流量中,可以看到比较明显的成功攻击迹象。外部主机与蜜罐主机进行了SMB通信,出现了Negotiate Protocol RequestSession Setup AndX Request, NTLMSSP_NEGOTIATESession Setup AndX Response, NTLMSSP_CHALLENGESession Setup AndX Request, NTLMSSP_AUTH等数据包,说明SMB会话认证流程已经继续进行。随后又出现Tree Connect AndX Request, Path: \\172.16.134.191\IPC$,说明攻击者成功连接到了蜜罐主机的IPC$共享。

之后对4899端口进行过滤,使用过滤条件:ip.addr == 172.16.134.191 && tcp.port == 48994899端口通常与Radmin远程管理服务有关。截图中可以看到外部主机多次向蜜罐主机4899端口发起连接,同时还出现了HTTP请求内容:HEAD /cgi/..\..\..\winnt/system32/cmd.exe?/c+dir HTTP/1.0该请求说明攻击者尝试利用Web目录遍历或IIS相关漏洞访问winnt/system32/cmd.exe并执行dir命令。这类攻击的目标是通过Web服务调用系统命令解释器,从而实现远程命令执行。

最后对137端口进行过滤,使用过滤条件:ip.addr == 172.16.134.191 && udp.port == 137。结果中可以看到大量NBNS数据包,包括Name query NBSTATName query response NBSTAT。在响应内容中可以看到蜜罐主机返回了主机名和工作组等NetBIOS信息,例如PC0191ADMINISTRATORWORKGROUP等信息。说明攻击者对137端口的NetBIOS名称服务探测是成功的,成功获取到了蜜罐主机的NetBIOS相关信息。

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

  • 问题1:使用普通UPX工具检测RaDa.exe时,虽然识别出与UPX相关,但提示CantUnpackException: file is modified/hacked/protected; take care!!!,无法直接正常脱壳。

  • 问题1解决方案:改用超级巡警虚拟机自动脱壳器对样本进行脱壳处理,工具成功识别UPX壳并生成脱壳后的RaDa_unpacked.exe,为后续字符串分析提供了可用样本。

  • 问题2:判断攻击者尝试攻击了哪些漏洞时,不能只看单个数据包,需要结合端口和协议含义进行判断。

  • 问题2解决方案:先用tcpdump统计蜜罐主机相关的TCP和UDP端口,再在Wireshark中分别过滤13513925445489980137等端口流量,根据RPC、SMB、NetBIOS、SMTP、HTTP和Radmin等服务特征判断攻击尝试类型。

4.学习感悟、思考

通过本次实验,我对恶意代码分析和逆向分析的基本流程有了更清楚的认识。以前只是知道恶意代码可能会加壳、隐藏字符串或进行远程控制,但通过实际使用strings、UPX、超级巡警脱壳器、IDA Pro和Process Explorer等工具后,我理解了从文件识别、脱壳、字符串提取到行为分析的完整思路,也认识到单一工具得到的结果不一定完整,需要结合多个工具进行交叉验证。

在僵尸网络流量分析部分,我体会到网络攻击分析不能只看单个数据包,而要结合端口、协议、通信方向和上下文进行判断。通过Wireshark、tcpdump和tcpflow分析蜜罐主机的流量,我学会了如何从大量数据中筛选关键信息,例如IRC服务器、攻击源IP、被攻击端口和成功的攻击行为。这次实验让我意识到网络攻防实践更注重动手分析能力,后续还需要加强对协议细节和逆向分析方法的学习。

posted @ 2026-05-20 10:15  BoBooooo  阅读(37)  评论(0)    收藏  举报