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

目录

一、实验基本信息

  1. 实验环境:Kali Linux虚拟机 + VMware Workstation;windows主机

  2. 实验工具:超级巡警、IDA Pro、PEiD、wireshark等

  3. 实验时间:2025.11.2

二、实验内容

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

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

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

  4. 取证分析实践:
    Windows 2000系统被攻破并加入僵尸网络
    问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答问题

三、实验要求

  • 根据实验内容运用相应工具,完成指定要求,回答问题

四、实验过程

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

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

    • 使用file命令查看文件类型

      image

      显示结果说明这是一个32位的Windows PE可执行文件

    • 运行PEiD,在windows主机中选择文件路径

      image

      PEiD的检测结果说明RaDa.exe是一个UPX加壳的Windows可执行文件,文件作者是Markus & Laszlo

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

    • 使用超级巡警脱壳机载入样本,自动识别并脱壳

      image

      rada文件脱壳后生成RaDa_unpacked.exe,用于后续分析

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

    • 使用strings命令提取字符串写入string.txt

      strings -n 10 RaDa_unpacked.exe > strings.txt
      

      image

    • 在提取的字符串中查找作者

      image

      从找到的信息可以看到rada恶意代码的作者信息:

      • 主要作者:Raul Siles(劳尔·西莱斯)
      • 合作作者:David Perez(大卫·佩雷斯)
      • 创建时间:2004年9月

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

  • 先命令行测试运行crackme1.exe,分别输入0~5个参数

    image

    结果表明程序可能需要特定数量的参数和特定内容的参数

  • 将crackme1.exe载入 IDA Pro,进行静态分析

    • 查找字符串引用,搜索“I think you are missing something”、"Pardon? What did you say?",并定位字符串位置

      image

      image

      可以看到:

      • 'I think you are missing something.' - 参数数量错误
      • 'I know the secret' - 成功消息
      • 'Pardon? What did you say?' - 参数内容错误
      • 'You know how to speak to programs, Mr. Reverse-Engineer' - 另一个成功消息

      所有字符串都被 sub_401280 函数引用

    • 在Functions中找到 sub_401280 函数并查看汇编代码,找到输入参数的验证逻辑

    image

    image

    参数数量检查

    .text:004012AA cmp     [ebp+arg_0], 2 ; 检查argc == 2
    .text:004012AE jz      short loc_4012D2  ; 如果正确跳转下一步,否则显示 "I think you are missing something."
    

    第一个参数检查

    .text:004012D2 loc_4012D2:
    .text:004012DB push    offset aIKnowTheSecret ;压入硬编码字符串:"I know the secret"
    .text:004012E0 push    dword ptr [eax]   ; argv[1] - 第一个参数
    .text:004012E2 call    strcmp  ; 与硬编码字符串比较
    .text:004012EA test    eax, eax
    .text:004012EC jz      short loc_401310  ; 如果相等跳转到成功,否则显示 "Pardon? What did you say?"
    

    成功分支

    .text:00401310 loc_401310:
    .text:00401313 push    offset aYouKnowHowToSp ; "You know how to speak to programs, Mr. Reverse-Engineer"
    .text:00401318 call    printf
    

    分析可知,输入参数数量为2,如果输入参数数量错误会显示"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"

    • 验证输入

    image

  • 命令行测试运行crackme2.exe

image

根据crackme1.exe的分析结果可以看出crackme2.exe同样需要特定输入参数数量与内容,猜测正确参数数量为1

  • 将crackme2.exe载入 IDA Pro,进行静态分析

    • 查找字符串“'I have an identity problem.”,定位字符串位置

    image

    image

    从字符串可以看出关键信息:

    • 'crackmeplease.exe' - 程序名验证
    • 'I have an identity problem.' - 程序名错误
    • 'I know the secret' - 成功消息
    • 'Pardon? What did you say?' - 参数错误
    • 'I think you are missing something.' - 参数数量错误

    crackme2.exe可能需要检查程序是否被重命名为 crackmeplease.exe,所有字符串都被 sub_401280 函数引用

    • 在Functions中找到 sub_401280 函数并查看汇编代码,找到输入参数的验证逻辑

      image

      .text:004012AA                 cmp [ebp+arg_0], 2      ; 检查参数数量(argc)是否等于2
      .text:004012AE                 jz short loc_4012D5    ; 如果argc==2,继续检查
      .text:004012B0                 sub esp, 8              ; 参数数量错误分支
      .text:004012B3                 push offset aIThinkYouAreMi ; I think 
      you are missing something.
      ...
      ; 参数数量正确(argc==2)
      .text:004012D5 loc_4012D5:                             
      .text:004012D5                 mov eax, [ebp+arg_4]    ; 获取argv数组
      .text:004012D8                 sub esp, 8              
      .text:004012DB                 push offset aCrackmeplease_ ;"crackmeplease.exe" ← 硬编码的程序名
      .text:004012E0                 push dword ptr [eax]     ; argv[0] - 实际程序名
      .text:004012E2                 call strcmp              ; 比较程序名
      .text:004012E7                 add esp, 10h            
      .text:004012EA                 test eax, eax            ; 测试比较结果
      .text:004012EC                 jz short loc_401313    ; 如果程序名正确,继续检查参数
      .text:004012EE                 sub esp, 8              ; 程序名错误分支
      .text:004012F1                 push offset aIHaveAnIdentit ; "I have an identity problem."
      ...
      ; 程序名正确
      .text:00401313 loc_401313:                             
      .text:00401313                 mov eax, [ebp+arg_4]    ; 获取argv数组
      .text:00401316                 add eax, 4              ; argv[1]地址
      .text:00401319                 sub esp, 8              
      .text:0040131C                 push offset aIKnowTheSecret ; I know the secret ← 硬编码参数
      .text:00401321                 push dword ptr [eax]     ; argv[1] - 用户输入参数
      .text:00401323                 call strcmp              ; 比较参数内容
      .text:00401328                 add esp, 10h            
      .text:004012B                  test eax, eax            ; 测试比较结果
      .text:004012D                  jz short loc_401351    ; 如果参数正确,跳转到成功
      .text:004012F                  sub esp, 8              ; 参数错误分支
      .text:00401332                 pushoffset aPardon?WhatDid ; Pardon?What did you say?  ; 输出参数错误
      

      可以看到,验证逻辑是首先验证增参数数量是否为2(参数数量包含程序名,所以输入参数数量应该为1),错误则输出"I think you are missing something.",正确则继续验证程序名;验证程序名是否为"crackmeplease.exe",不是则输出"I have an identity problem.",是则继续验证输入参数;验证输入参数是否为"I know the secret",不是则输出"Pardon? What did you say?",是则跳转成功。

    • 将crackme2.exe程序名改为crackmeplease.exe,在验证输入参数"I know the secret"

      image

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

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

    • 在kali虚拟机中输入以下命令,查看RaDa文件的信息
    file RaDa.exe #基础文件类型识别
    md5sum RaDa.exe #提取文件哈希值
    ls -la RaDa.exe #查看文件大小
    exiftool RaDa.exe | grep "Time Stamp" #检查编译时间戳
    

    image

    RaDa.exe文件是专为MS Windows 4.00平台设计的PE32可执行文件,属于GUI图形界面程序(非控制台程序),处理器架构为Intel i386(32位架构),文件大小月20.5KB;系统记录的最后修改时间为2008年12月22日,实际编译时间为2004年10月29日 19:59:58(UTC-4时区,美国东部时间);文件MD5哈希校验值为caaa6985a43225a0b3add54f44a0d4c7,这是该样本的唯一MD5标识,可用于特征码检测。

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

    • 使用IDA Pro静态分析脱壳后的RaDa.exe文件,加载完毕后Ctrl + E找到程序入口点start,查看相关起始代码,分析程序的工作模式和数据结构

      image

      • C&C服务器地址发现

        JDR0:004023A4 aHttp10_10_10_1: 
        JDR0:004023A4                 unicode 0, <http://10.10.10.10/RaDa>,0
        

        C&C服务器:攻击者控制的中央服务器,用于向受感染的计算机发送命令、接收从受害计算机窃取的数据、协调大规模网络攻击等。可以看出RaDa程序会在运行后让被害主机通过http服务连接上地址为http://10.10.10.10/RaDa的C&C服务器。

      • 命令控制文件

        JDR0:004023D8 aRada_commands_: 
        JDR0:004023D8                 unicode 0, <RaDa_commands.html>,0  ; 命令获取文件
        
      • 文件传输、工作目录、注册表、DDoS攻击相关

        JDR0:00402418 aDownload_cgi: 
        JDR0:00402418                 unicode 0, <download.cgi>,0  ; 文件下载CGI脚本
        JDR0:00402438 aUpload_cgi: 
        JDR0:00402438                 unicode 0, <upload.cgi>,0    ; 文件上传CGI脚本
        JDR0:00402454 aCRadaTmp: 
        JDR0:00402454                 unicode 0, <C:\RaDa\tmp>,0   ; 临时文件目录
        JDR0:00402518 aCRadaBin: 
        JDR0:00402518                 unicode 0, <C:\RaDa\bin>,0   ; 二进制文件目录
        JDR0:00402488 aHklmSoftwareMi: 
        JDR0:00402488                 unicode 0, <HKLM\Software\Microsoft\Windows\CurrentVersion\Run\>,0  ; 自启动注册表路径
        JDR0:004024F4 aRada: 
        JDR0:004024F4                 unicode 0, <RaDa>,0        ; 注册表值名称
        JDR0:004025B8 aStartingDdosSm: 
        JDR0:004025B8                 unicode 0, <Starting DDoS Smurf remote attack...>,0  ; DDoS攻击启动消息
        

        可以看出RaDa恶意软件在用户执行后会在系统中创建工作目录C:\RaDa\bin\用于存放恶意程序本体;C:\RaDa\tmp\ 用于临时文件和窃取数据,利用HKLM\Software\Microsoft\Windows\CurrentVersion\Run实现注册表自启动,每次系统启动时自动运行,推测这一阶段在后台静默执行,无用户界面或伪装界面,避免引起用户怀疑。然后会发送HTTP请求,访问 http://10.10.10.10/RaDa/RaDa_commands.html 获取攻击指令列表,然后可以实现文件窃取、恶意文件下载、DDoS攻击以及远程控制shell并返回执行结果给C&C服务器等攻击。

        总结:RaDa是一个可以实现远程控制的后门程序,可以获取目标主机的shell,进行文件窃取等攻击。

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

    原二进制文件RaDa.exe是一个进行了UPX加壳的Visual Basic 6.0编译程序,它的特性包括:

    • 网络通信特性
      • 使用标准HTTP协议与C&C服务器通信,用HTTP协议混入正常网络流量,避免协议异常检测
      • 通过HTML文件隐藏命令,避免直接的命令传输
      • 有数据上传和文件下载接口,具有完整的双向文件传输能力,支持数据窃取和恶意软件更新
    • 持久化与功能特性
      • 通过注册表实现系统启动时自动运行,确保长期驻留
      • 创建专用目录结构组织恶意活动,避免使用系统临时目录引起怀疑
      • 具备网络层攻击能力,可参与僵尸网络协同攻击(DDoS攻击能力)
      • 通过C&C服务器接收并执行任意系统命令,提供完整的远程控制
  • (4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术

    • UPX加壳保护

      超级巡警识别结果显示原始文件被UPX加壳保护:

      • 使用UPX 0.89.6 - 1.02 / 1.05 - 2.90版本加壳
      • 文件从约200KB压缩到20KB,增加静态分析难度
      • 入口点代码被压缩,直接反汇编只能看到解压代码
    • 编程语言选择Visual Basic 6.0编译,VB编译的代码逻辑不如C++直观,使用VB运行时库,增加逆向难度。

    • 程序使用系统正常的自启动位置,合法化注册表位置,使用操作系统标准的自启动机制,不创建可疑的注册表项,与合法软件行为相似,不易被察觉。

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

    我认为RaDa.exe程序属于后门木马程序,该程序不具有复制能力,需要用户主动执行 RaDa.exe,一般会伪装成正常程序(VB GUI程序),不显示明显的恶意行为界面,符合特洛伊木马"伪装善意,实则恶意"的核心特征;该程序提供完整的远程系统访问和控制能力,并有持久性隐蔽的特定,符合后门定义。

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

    • Sub7(1999年),RaDa同时代最著名的RAT,功能架构高度相似

      • 都具有C&C通信、远程控制、文件管理、注册表自启动功能
    • BlackShades(2010年),同样支持C&C通信、远程控制,持久化隐蔽等功能

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

    可以,使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是Raul Siles(劳尔·西莱斯)和David Perez(大卫·佩雷斯),创建时间是2004年9月。这需要将原加壳文件脱壳后使用字符串提取工具提取恶意代码中的字符串,根据某些特定字符一般可以定位到代码作者信息。

  • (8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法

    • 基于特征码的检测方法:基于恶意软件二进制文件中独特的、不变的代码模式进行识别。

      • 可以分析RaDa二进制文件中出现的独特字符串组合,比如"RaDa"、"Command_conf"、"Command_go"、"http://10.10.10.10/RaDa"等,这些字符串在正常软件中极不可能同时出现
      • 提取二进制文件中特定的字节序列模式,包括VB6运行时库调用模式、特定的API调用序列文件结构特征等
      • 计算文件的MD5、SHA1、SHA256哈希值,与已知的RaDa样本哈希值进行精确匹配
    • 行为检测方法:不关注文件本身内容,而是监控其运行时的行为模式,类似于通过行为特征识别

      • 文件系统行为监控,监控特定目录创建,比如C:\RaDa\bin、C:\RaDa\tmp;检测文件操作模式(程序会创建RaDa.exe在特定路径),观察文件访问序列(先创建目录,再复制文件,最后设置自启动)
      • 分析进程行为:监控进程创建和终止模式,分析进程间的通信行为,检测进程是否有隐藏或注入行为
      • 识别RaDa特有的行为链条:创建工作目录 → 复制可执行文件 → 注册表自启动 → 网络连接
    • 网络流量检测方法: 通过分析网络通信模式来识别恶意软件活动,监控HTTP协议中的特定URL模式,检测是否有/RaDa/RaDa_commands.html的请求,识别upload.cgidownload.cgi的文件传输;分析通信行为模式是否存在每分钟检查新命令、小数据量交换、始终连接相同C&C服务器等行为;也可以对流量内容进行检测,识别是否有特定的命令格式和参数。

    • 沙箱动态分析检测方法: 在隔离环境中实际运行可疑文件,观察其真实行为。创建虚拟的完整操作系统环境,网络隔离但允许模拟互联网访问,采用文件系统快照和还原机制对程序运行时的行为进行全面的行为监控,记录所有系统活动的精确时间戳,建立因果关系链,识别攻击活动的各个阶段,最后形成详细的行为报告。

    • 注册表行为检测方法:过监控系统配置变更来检测持久化机制,从而检测恶意文件。监控注册表自启动键是否有修改,识别特定的值名称模式(如"RaDa"),检测可疑的文件路径模式,分析注册表值的创建时间序列;监控低权限进程修改高权限注册表项,检测异常的注册表访问模式,分析注册表隐藏或锁定行为。通过这些可以检测出对系统注册表进行了操作的恶意文件。

4.4 取证分析实践

Windows 2000系统被攻破并加入僵尸网络

问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:

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

    1. IRC是什么?
    • IRC 是 Internet Relay Chat 的缩写,即互联网中继聊天。它是一种应用于互联网的实时文本通信协议,它的工作模式主要是基于客户端-服务器-网络的架构

      • 服务器:多个服务器相互连接,形成一个庞大的 IRC 网络
      • 频道:聊天发生在不同的“频道”中,频道名称以 # 符号开头
      • 客户端:用户使用 IRC 客户端软件连接到网络中的一个服务器,然后可以加入一个或多个频道进行群聊,或者与其他用户进行私密对话
    1. 当IRC客户端申请加入一个IRC网络时将发送那个消息?
    • 当一个IRC客户端成功连接到IRC服务器后,为了开始通信,它需要先完成注册和加入频道的过程,发送的消息取决于具体要完成的操作:

      • 用户注册:当客户端与服务器建立TCP连接后,它需要告诉服务器自己的身份信息。这是通过一系列消息完成的:
        • PASS <password>: 如果需要密码认证
        • NICK <昵称>: 设置用户在IRC网络中的昵称
        • USER <用户名> <模式> <未使用> <真实姓名>: 设置用户信息
      • 加入频道:在注册成功后,客户端要加入一个特定的聊天频道,会发送:
        • JOIN <频道名称>
        • 这是客户端申请加入一个特定频道时发送的核心消息
    1. IRC一般使用那些TCP端口?
    • IRC 服务器通常监听以下几个常见的 TCP 端口:

      • 6667:这是 IRC 协议的传统默认端口,也是最常见的一个
      • 6660-6669:这是一系列常用的 IRC 端口,许多服务器也会配置监听这些端口中的一个或多个,以容纳更多连接或规避简单的端口封锁
      • 6697:这是用于 IRC over SSL/TLS 的标准端口。与传统的纯文本通信不同,使用此端口的连接是加密的,提供了更好的通信安全性和隐私性。现代IRC网络和僵尸网络为了隐蔽性,也常使用此端口
      • 7000:有时也用于 SSL/TLS 连接
  • (2)僵尸网络是什么?僵尸网络通常用于什么?

    1. 僵尸网络是什么?
    • 僵尸网络是由“僵尸”这个词演变而来的,这是一个非常形象的概念。僵尸网络是一个由互联网上的大量计算机(包括个人电脑、服务器、物联网设备等)组成的网络,这些计算机在用户不知情或未授权的情况下,被一种称为“僵尸程序”的恶意软件所感染和控制
    1. 僵尸网络通常用于什么?
    • 僵尸网络本质上是一个强大的、可租赁的网络犯罪基础设施。其拥有者可以利用它进行多种非法活动,甚至将其作为一项服务出售给其他犯罪分子(即“僵尸网络即服务”)。僵尸网络的主要用途按照攻击目标可以分为:

      • 以“破坏和扰乱”为主要目的

        1. 分布式拒绝服务攻击

        2. 发送垃圾邮件和钓鱼邮件

      • 以“牟取经济利益”为主要目的

        1. 点击欺诈:为发布广告的网站伪造流量,从而骗取广告费用

        2. 加密货币挖矿:为控制者产生直接的金钱收益,而成本则由受害者承担

        3. 勒索和勒索软件分发

      • 以“窃取和信息收集”为主要目的

        1. 窃取敏感信息:僵尸程序本身可能就是一个信息窃取器,它可以记录用户的键盘输入(键盘记录器)、盗取浏览器中保存的密码、信用卡信息、加密货币钱包文件以及任何有价值的文档
        2. 凭证填充和撞库攻击:利用从其他渠道窃取来的用户名和密码组合,指挥僵尸机器在各个网站(如银行、社交网络)上进行自动登录尝试,以验证这些凭证是否有效
      • 以“维持和扩张”为主要目的**

        1. 分发其他恶意软件:僵尸网络作为一个成熟的传播渠道,可以用来下载和安装其他类型的恶意软件,比如间谍软件、广告软件、后门程序等

        2. 自我更新和防御:僵尸牧人可以通过C&C服务器随时更新僵尸程序的版本,以修复漏洞、增加新功能或逃避安全软件的检测

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

    • 在Wireshark中打开提供的botnet_pcap_file.dat文件,在过滤器中输入ip.src == 172.16.134.191 && tcp.port == 6667查看源IP地址是蜜罐主机(172.16.134.191),端口为6667(IRC服务器通常监听6667端口)的数据包,找出所有由蜜罐主机发起的、与IRC服务(端口6667)相关的通信

      image

      由结果可知,蜜罐主机与如下IRC服务器进行了通信:

      • 209.126.161.29

      • 66.33.65.58

      • 63.241.174.144

      • 217.199.175.10

      • 209.186.44.172

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

    • 在kali中下载tcpflow,tcpflow 能够重组TCP流,并基于流量内容进行分析,特别适合处理协议明文通信(如IRC)

      sudo apt update
      sudo apt install tcpflow
      

      image

    • 使用 tcpflow 处理botnet_pcap_file.dat文件

      tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
      
      • -r botnet_pcap_file.dat :从指定的文件中读取数据

      • "host 209.196.44.172 and port 6667":BPF过滤器,只处理与主机 209.196.44.172 在端口 6667 上的通信

      • tcpflow 会自动执行重组,将每个TCP连接的数据保存到单独的文件中

      image

      运行命令后,tcpflow 会在当前目录生成一系列文件

      image

    • 文件名格式为AAA.BBB.CCC.DDD.NNNN-XXX.YYY.ZZZ.WWW.MMMM

      • 前半部分 AAA.BBB.CCC.DDD.NNNN 表示 客户端(源IP.源端口)

      • 后半部分 XXX.YYY.ZZZ.WWW.MMMM 表示 服务器(目的IP.目的端口)

      • 我们要找的是所有连接到服务器的客户端,因此我们关注文件名以服务器IP 209.196.44.172 结尾的文件

    • 在kali中输入命令:

      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
      
      • cat 209.196.044.172.06667-172.016.134.191.01152:读取tcpflow生成的通信文件

      • grep -a "^:irc5.aol.com 353":筛选出IRC的"NAMES"响应行

      • sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g":清理NAMES响应行,只提取出用户列表部分

      • tr ' ' '\n':将空格替换为换行符,让每个用户名单独成行

      • tr -d "\15":删除回车字符(\r,ASCII码为15)

      • grep -v "^$":过滤掉空行

      • sort -u:对用户名排序并去重

      • wc -l:统计行数,即唯一的僵尸客户端数量

    image

    得到结果:共有3461台不同的主机访问了以209.196.44.172为服务器的僵尸网络

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

    这个问题的目标是找出所有向蜜罐主机 172.16.134.191 发起恶意连接的源IP地址。分析的核心思路是:在流量中寻找针对蜜罐的、非正常的、具有攻击特征的连接尝试

    • 在kali中执行以下命令,从botnet_pcap_file.dat文件中提取攻击蜜罐的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 > 20232315.txt;wc -l 20232315.txt
      
      • tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191'

        • -n:不将IP地址解析为主机名

        • -nn:不解析端口号为服务名称

        • -r botnet_pcap_file.dat:从指定文件读取数据包

        • 'dst host 172.16.134.191':BPF过滤器,只显示目的地是蜜罐IP的数据包

      • awk -F " " '{print $3}'

        • -F " ":使用空格作为字段分隔符

        • {print $3}:打印第三个字段

      • cut -d '.' -f 1-4

        • -d '.':使用点号作为分隔符

        • -f 1-4:提取第1到第4个字段(即IP地址部分)

      • sort | uniq

        • sort:对IP地址进行排序

        • uniq:去除重复的IP地址

      • more > 20232315.txt

        • more:分页显示(

        • > 20232315.txt:将结果保存到文件

      • wc -l 20232315.txt:统计文件行数

    image

    共有165个IP地址被用于攻击蜜罐主机

    image

    image

    image

    image

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

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

五、问题及解决方案

问题:最开始使用IDA Pro分析文件时,无法打开文件的函数调用图,无法使用函数调用图进行分析

解决:放弃使用函数调用图,采用其他方法找到程序的关键函数,查看并分析函数的汇编代码

六、实验感想

完成这次恶意代码分析实验,我对恶意代码、恶意程序的攻击原理。攻击方式的了解更进一步,也对如何检测恶意代码,进行防御有了更深入的理解与体悟。
面对rada恶意代码和crackme程序,我初次尝试使用一些恶意代码分析处理工具,使用这些工具进行文件识别、脱壳、字符串提取。用IDA Pro进行静态分析,这个过程锻炼了我“庖丁解牛”般的耐心与细致。当最终在字符串中找到作者信息,那种通过逻辑推理战胜代码保护的成就感,是任何理论课程都无法给予的。
在最后的一部分里,我按照要求通过系统性地应用过滤器和统计工具,让混乱的数据流逐渐显现出清晰的攻击图谱,从攻击者扫描探测、利用Windows 2000经典漏洞,到蜜罐被攻破后主动连接IRC僵尸网络。这让我真切体会到,一个系统的失陷并非偶然,而是攻击链的必然结果。
本次实验不仅极大地提升了我的实战技能,更让我明白了防御的真正内涵,安全的底线取决于整个链条中最薄弱的一环。未来,我将带着这种系统性的视角,在每一个技术细节上精益求精,为构筑更安全的网络空间贡献力量。

posted on 2025-11-10 21:45  易娴  阅读(1)  评论(0)    收藏  举报