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

news/2025/11/9 21:46:28/文章来源:https://www.cnblogs.com/20232408lyc/p/19205359

一、实验内容

1.1 实验要求

(1)对恶意代码样本进行识别文件类型、脱壳、字符串提取操作。
(2)使用IDA Pro静态或动态分析所给的exe文件,找到输出成功信息的方法。
(3)分析恶意代码样本并撰写报告,回答问题。
(4)对于Snort收集的蜜罐主机5天的网络数据源进行分析,回答问题。

1.2学习内容

恶意代码、僵尸网络、病毒、蠕虫等的概念,恶意代码及普通软件的静态或动态分析方法,PEID、IDA Pro、Process Explorer等软件的使用,对网络流量的分析方法。

二、实验目的

  掌握恶意代码分析技术,包括文件识别、脱壳、字符串提取及静态动态分析,完成样本分析与取证报告撰写。

三. 基础环境

kali虚拟机,具体配置如下:

图片1

四. 实验过程与分析

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

4.1.1 分析原始rada样本

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

    分析结果表明RaDa.exe是一个32位Windows GUI可执行文件,针对Intel x86处理器设计。它内部包含3个段。如图所示:

图片2

在Windows主机中使用软件PEiD对目标文件进行分析。利用软件PEiD可以发现文件使用了UPX加壳工具。

分析结果表明PEiD检测到该文件使用了UPX加壳,并给出了UPX加壳的版本区间,同时还显示Markus & Laszlo是该UPX的开发者。如图所示:

图片3

4.1.2 RaDa样本脱壳分析

使用PEID自带的脱壳插件对RaDa样本进行脱壳处理,它会自动检测入口点。在后面切换成了“超级巡警之虚拟机自动脱壳器”来获得不一样的显示。如图所示:

图片4

图片5

打开IDA Pro,选择PE Executable,即对Windows下的可执行文件进行分析。所需分析的文件是经过脱壳后的RaDa_exe_unpacked.exe/RaDa_unpacked.exe文件。如图所示:

图片6

图片7

选择IDA ViewA,点击 IDA Pro 菜单栏的 View → Open Subviews → Strings,在地址为00403F7A处可以看到RaDa文件的作者信息,为Raul Siles && David Perez;在地址为00403FD4处可以看到RaDa文件的创作时间,为2004年9月。如图所示:

图片8

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

    4.2.1分析文件crackme1.exe

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

图片9

打开IDA Pro,选择选项PE Executable,选择crackme1.exe,打开IDA View-A页面。点击View->Graphs->Function calls,打开函数调用图,发现main调用了strcmp、printf等这些有关字符串处理的函数,可以合理推测它在参数判断中有重要作用。如图所示:

图片10

在Functions页面点击sub_401280。如图所示:

图片11

点击View->Graphs->Flow chart,打开函数流程图。

图片12

图片13

对函数流程图进行分析,可以合理推测正确的输入参数是“I know the secret.”:输入的参数不为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”。注意,这里的执行命令也会被视作一个参数。如图所示:

图片14

4.2.2分析文件crackme2.exe

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

图片15

图片16

图片17

可以分析得到,这里还需要把文件名改为crackmeplease,同时需要cmd中执行,因为./crackmeplease和crackmeplease检测是两个不同参数。

图片18

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

    4.3.1分析文件的基本信息

通过输入命令对RaDa文件的进行文件类型识别、完整性验证以及时间戳分析。从返回值中可以看出RaDa.exe是一个32位Windows GUI程序,其md5摘要值为caaa6985a43225a0b3add54f44a0d4c7,且在2004年10月30日编译的。如图所示:

图片19

4.3.2分析文件的目的

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

图片20

图片21

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

图片22

图片23

http://10.10.10.10/RaDa:存在网络通信指向,该程序可能与这个 IP 地址的服务端进行交互。

RaDa_commands.html、cgi-bin、download.cgi、upload.cgi:这些字符串与 Web 服务的命令页面、CGI 程序强相关,说明程序可能通过 Web 协议执行命令、上传和下载文件。

C:\RaDa\tmp:本地临时目录路径,推测是程序在本地存储临时文件的位置。

HKLM\Software\Microsoft\Windows\Cur...:Windows 注册表HKEY_LOCAL_MACHINE下的路径,通常用于存储系统级配置或进行持久化

aRegSz ; "REG_SZ":注册表字符串类型标识,说明程序在操作注册表时使用字符串类型的值。

C:\RaDa\bin:本地二进制文件目录路径,是恶意程序存储自身组件或 payload 的位置。

RaDa.exe:程序自身的可执行文件名称

尝试运行脱壳后的文件,发现无法执行,报错如下:

图片24

4.3.3问题回答

  1. 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
    摘要:caaa6985a43225a0b3add54f44a0d4c7
    基本信息:格式是可执行文件exe,运行平台是win32,文件运行时有GUI界面,包含三个节。
    (2)找出并解释这个二进制文件的目的;
    根据上述的分析,这个恶意程序的目的可能是与它的服务器进行通信和远程控制,在系统上安装恶意软件,使其在启动时自动运行,并发起DDoS攻击。
    (3)识别并说明这个二进制文件所具有的不同特性;
    ①它会在注册表中进行修改操作。

    ②它会在文件系统中进行创建目录、下载文件等操作。

    ③它会发动DDoS攻击。
    (4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
    这个文件采用了UPX壳。UPX会在可执行文件的头部插入一段壳代码,这段壳代码负责在程序运行时解压原始程序的代码,并跳转到原始程序的入口点执行。UPX的本意是进行压缩,然而也可以用于混淆,防止被分析或逆向工程。
    (5)对这个恶意代码样本进行分类,并给出你的理由;
    它是后门程序。

    ①它不具备自我复制或主动传播的行为

    ②它没有依赖于特定的宿主程序,所以不是病毒。

    ③它没有伪装成正常程序,所以不是木马。
    (6)给出过去已有的具有相似功能的其他工具;
    ①msfvenom②veil。它们都可以生成后门程序。
    (7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
    可以,上述实验过程中已使用IDA Pro发现了开发作者名称,在process explorer的Strings窗口,也可以找到这一信息。
    ①需要有特定的技术环境支持,比如各种字符串提取工具。

    ②文件需要未经过混淆处理(加密/压缩等),本次实验中对未脱壳的文件进行分析只能得到乱码。

    ③作者需要留下自己的相关信息。
    (8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
    ①基于特征码的检测
    在特征码库中记录实现发动DDoS、连接某些特定网站等不良行为的一段或多段数据,当这一恶意软件中有相关信息与之匹配,就可以实现检测。
    ②基于行为的恶意软件检测
    对软件运行过程进行检测,则当软件进行特定的恶意行为时,就可以判定其为恶意软件。
    ③沙箱检测法
    先让软件运行在一个隔离的、受限的执行环境,用于模拟真实系统的运行。若在运行过程中发现异常,则判定其为恶意软件。
    ④完整性校验法
    在官方网站上下载哈希值或数字签名,对软件进行验证,若不同则说明软件被篡改,该软件大概率就是恶意软件。
    ⑤基于网络流量的检测方法
    恶意软件在感染系统后,通常会进行网络通信,以接收指令、上传数据或下载其他恶意组件。这些网络通信行为会产生特定的网络流量特征,如特定的端口号、协议类型、数据包大小、数据内容等,可以基于此进行检测。

     4.4 取证分析实践

    4.4.1 IRC

    问题:

        (1)IRC是什么?

        (2)当IRC客户端申请加入一个IRC网络时将发送哪个消息?

        (3)IRC一般使用那些TCP端口?

        回答:

  2. IRC的全称为Internet Relay Chat,是互联网中继聊天协议,允许用户通过特定客户端软件,在不同频道中进行实时文本交流。

  3. 当IRC客户端申请加入网络时,会发送JOIN消息来加入频道,该消息包含频道名称和用户昵称等信息。

  4. IRC最常使用的端口是6667端口与6697端口,偶尔也会使用其他相关的端口。其中6667端口是IRC的默认非SSL端口,其上通信是明文传输的;6697端口是现代IRC最常用的SSL/TLS加密端口,可防止通信被窃听。

 4.4.2 僵尸网络

    问题:

    (1)僵尸网络是什么?

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

    回答:

  1. 僵尸网络是由攻击者借助命令与控制服务器,对海量已被恶意软件感染的互联网设备实施集中管控所形成的网络集群。其中,每一台被远程操控、丧失自主控制权的设备,被称为僵尸主机也常被称作 “肉鸡”。

  2. 僵尸网络的核心价值体现在其掌握的大规模可远程调度资源上。攻击者会利用这些分布式资源开展各类违法犯罪活动,例如:发起DDoS攻击瘫痪目标系统、将僵尸主机作为网络跳板隐藏攻击源头以规避追踪、窃取目标设备中的敏感信息并进行数据挖掘,以及在设备后台静默运行挖矿程序牟取非法收益等。

    4.4.3 蜜罐主机

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

        回答:蜜罐主机与IP地址为209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10的IRC服务器进行了通信。

    在Wireshark中打开botnet_pcap_file.dat文件,通过命令ip.src172.16.134.191 and tcp.dstport6667,筛选源IP为172.16.134.191,目的端口为6667的数据包。经过分析可知,蜜罐主机与4台IRC服务器进行通信,IRC服务器的IP分别是209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10。如图所示:

图片26

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

    回答:有9798个不同的主机访问了这一僵尸网络。

图片26

 4.4.5 查看botnet_pcap_file.dat有关信息

在Kali虚拟机中需安装软件tcpflower。通过命令sudo apt update更新软件包列表索引,再通过命令sudo apt-get install tcpflow,下载tcpflower。可通过命令tcpflow --version查看安装版本。如图所示:

图片27

  通过命令tcpflow -r botnet_pcap_file.dat “host 209.196.44.172 and port 6667”,使用tcpflow,从botnet_pcap_file.dat文件中,筛选出与IP为209.196.44.172且端口为6667的主机相关的所有TCP流量数据。对于待分析文件botnet_pcap_file.dat直接用虚拟机登录学习通下载。如图所示:

图片28

该目录下新增了三个文件。

图片29

我们关心的是访问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

图片30

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

图片31

总计有165个IP地址用于攻击蜜罐主机,下图中截取了文件的开头和结尾。

图片32

图片33

点击wireshark的统计->协议分级,可以看到有tcp包和udp包,tcp包占了大部分。

图片34

在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,筛选响应的tcp端口。

图片35

从中可以看出响应的端口有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筛选响应的udp端口。

图片36

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

4.4.6 查看哪些端口被攻击

输入筛选条件tcp.port == 135 &&ip.dst == 172.16.134.191,后面把port换成139、25、445、4899、80、137即可。

图片37

图片38

图片39

图片40

图片41

图片42

我们可以分析发现,445端口在成功通信发送可疑文件之后又删除了这个文件来掩盖行为,4899端口发送了大量的push,80端口有大量包含一长串“c”的包,表现出缓冲区溢出攻击的行为。此后也有大量数据交互包,表现出攻击成功。说明这三个端口攻击成功。

五. 问题以及解决

问题一: 一开始使用的自带脱壳效果并不理想,消息冗杂,没有辨识度,后来换了学习通中给的程序,效果变好了。

 问题二:在运行crackme2.exe时,将文件名改成了crackmeplease还是有错误。问题在于./name和name是不同的,要换成cmd执行。

六、实验体会

此次实验让我掌握了系统监控与恶意代码分析,学习内容包括:识别恶意代码样本的文件类型、脱壳、提取字符串等操作,利用IDA Pro对提供的exe文件进行静态或动态分析,寻找输出成功信息的方式,剖析恶意代码样本以获取其基本信息与意图,针对Snort采集的蜜罐主机网络数据源展开取证分析。经过实践及相关问题的解答,我对系统监控与恶意代码分析的实现方法和基本原理有了初步认识。

实验整体进展较为顺利,但也有部分问题出现。在统计访问僵尸网络服务器的独立客户端数量时,最初由于混淆了网络流量中源IP和目的IP的逻辑关系,导致统计结果一直为零。经过多次尝试和逻辑梳理,我终于明确了数据包中IP地址的正确对应关系,成功完成了统计。

总的来说,通过本次实验,我掌握了系统监控与恶意代码分析技术,并进行了相关实践,深入体验了恶意代码分析及取证的方法。我认为这次实验对我今后在网络与系统攻防技术领域的深入学习具有显著的帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025.11.10~2025.11.16

周计划 除了当天学习任务之外只搞dp相关练习 提前把练习的内容准备好 模拟赛尽快全部拿到会的分数,只有这一个目标 每天晚上8:30开始总结今天一天的题目收获(做法) 然后补充周计划,NOIP前计划,个人原则 作息规律…

性能学习

1.性能测试理论 01.性能测试理论 02.性能测试指标 03.性能测试流程 2.Jmeter学习 01.jmeter介绍与安装 02.线程组 03.setup线程组 04.tearDown线程组 05.http请求 06.分布式jmeter

实用指南:苹果手机误删照片?别慌,这些找回方法助你找回珍贵回忆

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

前端三剑客——javascript-BOM-DOM-http协议-异步

大纲:1.BOM(浏览器对象模型) window对象 location对象 本地存储2.DOM(文档对象模型)元素操作(直接获取/间接获取)事件操作3.js异步PromiseAsync/await4.HTTP协议URL地址解释HTTP协议概述常见HTTP请求方法请求…

npm: 无法加载文件

在VSCODE终端窗口里运行 编译 TYPESCIPT脚本时(node hello.ts),提示 :npm: 无法加载文件 D:\Program Files\Nodejs\node_global\nmp.ps1, 因为在此系统禁止运行脚本。简单例子: 在VSCODE终端窗口里运行 编译 TYP…

C语言中的算术类型转换

1.寻常算数转换 在C语言中,当不同类型的操作数参与到算术运算时,编译器会将操作数转换成同一类型,再运算。这一过程被称为寻常算术转换,由于这个过程我们程序员看不见,所以它也是一种隐式类型转换(见整型提升) …

OIFHA251108(成都嘉祥)

吐槽 虽然难,但全部都是比较好玩的题目(除了 \(T_1\))。 T1 幸好没做这题(doge)。 其核心思想在于看到有向图以及每条边可以走很多次且只算一次需要很快想到 tarjan,为什么要很快?因为你还要调代码。 然后这是一…

NOIP 模拟赛 4 总结

分数:\(40 + 0 + 0 + 0 = \color{red}{40}\)我恨子任务! 我恨全是坑的贪心! 我很码量超大的数据结构! 我恨 ad-hoc !当然,还是要承认自己很菜,不然分数不可能如此惨淡。 T1 众所周知,贪心本身并不难,难的是这…

2025.11.9——1橙1绿

普及- P14477 图寻中国 Div2月赛T1 普及+/提高 P5687 [CSP-S 2019 江西] 网格图 Kruskal的变形,看了题解才做出来

Python中a = b = 10的底层机制:从名字绑定到引用计数的完整拆解

Python中a = b = 10的底层机制:从名字绑定到引用计数的完整拆解 在Python中,a = b = 10这种“链式赋值”看似是简单的语法糖,但其底层执行逻辑与C语言的同名语法存在本质差异——它不是“先把10赋给b,再把b的值赋给…

Python中“赋值”说法是否规范?与C语言赋值的界限必须划清

Python中“赋值”说法是否规范?与C语言赋值的界限必须划清 在Python语境中,“赋值”是行业内约定俗成的常用说法(如官方文档、教材、社区讨论中频繁出现),但其语义边界必须与C语言的“赋值”严格区分——若直接将…

详细介绍:java-springboot电子商务商品物流跟踪系统 SpringBoot+Java电商订单全程物流可视化平台 基于Java框架的网购商品在途追踪与签收管理系统计算机毕业设计

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Python中“赋值”说法是否规范?详解`=`的语句属性与无返回值特性

Python中“赋值”说法是否规范?详解=的语句属性与无返回值特性 在Python学习中,“赋值”是描述a = 10这类语句的常用说法,但结合之前讨论的“名字-对象绑定模型”“对象三属性(标识、类型、值)”,很多开发者会疑…

CIO修炼之道读书笔记

目录一个目标三层价值提高运营效率(操作层)​加强运营管控(管理层)防范运营风险(决策层)参考资料 CIO修炼之“一三四六” 一个目标 从只关注技术转变为同时关注企业业务和战略,并努力围绕如何让企业更赚钱这个目…

小题狂练 (K)

solset-K\[\]目录 目录[AGC036F] Square Constraints[AGC036F] Square Constraints 容斥钦定一些下界不满足转为只有上界的问题,困难只在求每个界的排名 . 比 \(n\) 小的部分的上界肯定比所有数都大,所以如果知道钦定…

洛谷 P14461 【MX-S10-T2】『FeOI-4』青年晚报

P14461 【MX-S10-T2】『FeOI-4』青年晚报 空降 很好得诠释了数学和眼神的重要性 感谢奆佬设求导算子为 $ d $ ( 熟悉线代科技的奆佬可以从求导矩阵和单位矩阵结合成分块矩阵形式的角度进行理解),显然对于 $ F $ 的一阶…

Microsoft Agent Framework 接入DeepSeek的优雅姿势

Microsoft Agent Framework 接入DeepSeek的优雅姿势合集 - AI(1)1.Microsoft Agent Framework 接入DeepSeek的优雅姿势11-05收起一、前言 ​ Microsoft Agent Framework 框架发布也有一阵子了,在观望(摸鱼)过后,也…

人工智能团队的示例角色

人工智能团队的示例角色1 软件工程师(设计专业的软件) 2 机器学习工程师(运用人工智能算法到产品软件中) 3 机器学习研究员(负责开发机器学习的前沿技术) 4 应用机器学习科学家(对学术文献或者研究文献,向团队…

React18学习笔记(五) 【总结】常用的React Hooks函数,常用React-Redux Hooks函数和React中的组件通信 - 指南

React18学习笔记(五) 【总结】常用的React Hooks函数,常用React-Redux Hooks函数和React中的组件通信 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displa…

详细介绍:C语言——深入解析C语言指针:从基础到实践从入门到精通(二)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …