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

news/2025/11/8 22:49:50/文章来源:https://www.cnblogs.com/lsl2514962208/p/19194089

一.实验内容

  • 恶意代码的文件类型识别,脱壳与字符串提取。
  • 使用IDA Pro静态或动态分析所给exe文件,找到输出成功信息的方法。
  • 分析自制恶意代码样本并撰写报告。
  • 取证分析实践。

二.实验目的

  • 掌握恶意代码的分析技术,像逆向分析,文件类型识别,取证分析和网络安全威胁识别等等。

三.实验环境

  • Kali Liunx虚拟机
    image
  • Windows 11主机

四.实验过程与分析

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

  • file命令:file RaDa.exe 对目标文件进行分析
    866fc44d3700d8a25d4039d3b4f5148c
    结果显示这是一个针对x86设计的基于32位Windows系统的可执行程序,采用经典的PE格式,内部包含三个节区。
    *通过strings查看内部数据
    51263a6c0de3795f7004514352824113
    结果都为乱码,因为该文件被加壳
  • 将文件传入主机,使用peid工具对其分析。
    ba978717debd41663c5809e362eab297
    可以看到该文件的入口点、文件偏移、EP段,作者等信息。

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

  • 对目标文件进行脱壳处理,得到RaDa_unpacked.exe
    f0e26cae2a52ee1097f0f2abd6b5fcdb
  • 打开IDE pro,选择PE Executable
    39e165384f07cfd54b96dfb0bcaaa7b9
  • 导入脱壳后的文件,选择IDA ViewA,得到下图
    f88ef6c6c1796da88b9dd58fa4c35fa6
    c90819ee8ce2be41f9c69d659f1a96ed
    可以看到 00403F7A 地址处为RaDa的作者信息,是Raul Siles && David Perez;00403FD4地址处为RaDa的创建时间,是2004年9月。

3.分析crackme1.exe

  • 在主机PowerShell里运行该文件
    dfe4c0bd69d7751aa111ed55b51f2e08
    发现当不输入参数时,程序输出“I think you are missing something.”
    当输入1时,程序输出“Pardon? What did you say?”
    当输入1 2时,程序输出“I think you are missing something.”
  • 在IDA Pro中打开文件crackme1.exe,选择View→Graphs→Function calls,打开该文件的函数调用图
    4628b9177856661d34add58eeddf19ca
    函数调用图中,函数sub_401280调用了很多用于字符串输入输出的函数,因此sub_401280函数中可能有我们要的信息
  • 选择Windows→Functions,打开函数管理工具
    fd5a2eecfa8e54cd5e395dd5052a26f4
  • 在函数管理窗口中,找到函数sub_401280
    bc411e942862ae0bb43b0b216f1a051c
    观察函数流程图可知,输入的参数不为2时,该程序将给出输出“I think you are missing something.”。当输入两个参数时,如果第二个输入为“I know the secret”,则程序给出输出“You know how to speak to programs, Mr. Reverse-Engineer”
  • 按照分析运行文件
    e0386a147ad51a645512a254b9352e3c

4.分析crackme2.exe

  • 在主机PowerShell里运行该文件
    5f0ec924132003abb8c2de6e4f4a5dcc
    结果说明我们还需要去寻找crackme2.exe的正确参数
  • 打开函数调用图,分析函数sub_401280可能是我们要找的函数
    c88026029efae4107ad07fa92c21aade
  • 打开函数流程图
    3ec47bf58dc0a42f23692d30e7d6ec2f
    分析说明我们需要将该文件的文件名修改为crackmeplease.exe再运行
  • 按照分析运行文件
    ac6d9594690d4ee6baf28abd608a922f

5.分析恶意代码样本RaDa

  • 输入以下命令对RaDa进行分析

file RaDa.exe #识别文件类型
md5sum RaDa.exe #计算文件的md5摘要值
exiftool RaDa.exe | grep "Time Stamp" #提取文件元数据并过滤时间戳信息

c071c1284cdafa3517f4b4b813a5b1fa
由结果可知:
文件类型:32位Windows GUI程序,针对X86,有三个字段
md5摘要值:caaa6985a43225a0b3add54f44a0d4c7
时间戳信息:2004:10:30 07:59:58+08:00

  • 将脱壳后的文件放入IDA pro中,分析后打开函数sub_404FB0的流程图

image
命令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应该是攻击者的命令终端服务器。

aeb029045d440b125528114f7f55bd65
mov edx, offset aRada_commands_ ; "RaDa_commands.html"
mov edx, offset aCgiBin ; "cgi-bin"
mov edx, offset aDownload_cgi ; "download.cgi"
mov edx, offset aUpload_cgi ; "upload.cgi"

这这四条指令连续调用了字符串拼接函数,分别将四个字符串复制到内存中。其中RaDa_commands.html可能是攻击者用来下发指令的网页文件。cgi-bin可能是Web服务器上存放脚本的通用目录。download.cgi可能是用于下载新指令或恶意模块的脚本。upload.cgi可能是用于上传窃取数据的脚本。

5dddcdf305c2a7a93ec576ae665834de
mov edx, offset aCRadaTmp ; "C:\\RaDa\\tmp"
在C盘根目录下创建一个名为RaDa的文件夹,并在其中创建一个名为tmp的子文件夹,存放临时文件或窃取的数据。

11f59b39900a6efa673f03881ed9a5ca
offset aSoftwareMicros ; "Software\\Microsoft\\Windows\\CurrentVersion"
通过HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run修改注册表路径,将自身添加为开机自启动项,确保每次开机自动运行

cac0734dbdd749855df56fe01f2d0e52
mov edx, offset aCRadaBin ; "C:\\RaDa\\bin"
将"C:\RaDa\bin"复制到内存。随后连续调用两次字符串拼接函数,得到完整的可执行文件路径“C:\RaDa\bin\RaDa.exe”

  • 运行该程序
    892676b9866cc7de2af36e20b122bba3
    显示超时

6.问题回答

  • 问题一:提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
    回答:摘要为caaa6985a43225a0b3add54f44a0d4c7。其他信息有:它是32位Windows GUI程序,针对X86,包含三个字段

  • 问题二:找出并解释这个二进制文件的目的
    回答:它创建相应文件夹存放窃取的数据,将自身设置为开机自启动,之后连接远程服务器执行恶意指令,所以我认为这是一个后门文件

  • 问题三:识别并说明这个二进制文件所具有的不同特性
    回答:它可以和远程服务器连接执行恶意操作、可以开机自启动、可以进行DDos攻击

  • 问题四:识别并解释这个二进制文件中所采用防止被分析或逆向工程的技术
    回答:它运用了UPX加壳技术

  • 问题五:对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
    回答:这是一个后门程序,因为它通过建立一个隐蔽的通道连接攻击者的服务器来进行攻击

  • 问题六:给出过去已有的具有相似功能的其他工具
    回答:msfvenom和veil

  • 问题七:可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
    回答:可以,作者为Raul Siles && David Perez。脱壳后在IDA中或者使用strings命令都可以查看到作者信息

  • 问题八:给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法
    回答:
    1.基于特征码的检测方法:当杀毒软件对文件、内存、网络数据包进行扫描时,它会逐字节地读取数据。扫描引擎将读取到的数据与本地存储的“特征库”中的每一个特征码进行比对。一旦发现某段数据与特征库中的某个特征码完全匹配,杀毒软件就会立即报警,提示发现特定病毒,并采取隔离、删除等行动。
    2.基于行为的检测方法:当一个程序开始运行时,检测系统会启动全方位的监控,记录其在系统中的一举一动。将采集到的行为数据与内置的恶意行为规则库或机器学习模型进行比对。一旦程序的行为触发了足够的恶意“指示器”或严重偏离了正常基线,系统就会判定其为恶意软件,并立即采取行动。
    3.基于启发式的检测方法:扫描引擎会像语法分析器一样,反汇编或解析可疑文件的二进制代码。它不会寻找完整的匹配,而是寻找一系列“可疑的”代码模式和行为指令引擎内部有一个“可疑行为清单”和一套评分规则,每匹配一条可疑特征,就给文件一个相应的“恶意分数”。如果文件的总分超过了阈值,扫描引擎就会判定它为“可能恶意”或“可疑”,并触发警报。
    4.云查杀:将本地无法判定的可疑文件上传到云安全中心进行分析。云端拥有海量的样本数据和更强的计算能力,可以进行更复杂的静态和动态分析。
    5.人工智能技术:通过在海量的恶意软件和正常软件样本上训练AI模型,让机器自己学会区分良性与恶意文件的“特征”。AI模型会分析文件的成千上万个特征(如PE头信息、API导入表、字节等),并给出一个恶意概率评分。

7.取证分析实践

(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是Internet Relay Chat的缩写,它基于文本的实时聊天系统,不是一个软件,而是一套协议。任何人都可以按照这个协议开发IRC客户端软件或搭建IRC服务器。客户端加入IRC网络时会发送“NICK”消息指定昵称和“USER”消息提供用户信息。IRC通常使用TCP端口6667,有时也会使用其他端口。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是由一台主控端通过命令与控制服务器远程控制的、大量被恶意软件感染的互联网设备组成的网络。通常用于发动分布式拒绝服务攻击、发送垃圾邮件、窃取敏感信息、挖掘加密货币等恶意活动。
(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.src==172.16.134.191 and tcp.dstport==6667,筛选源IP为172.16.134.191,目的端口为6667的数据包。
    0d5757e5434fc19abf1437d765d9fae5
    看到IRC服务器的IP分别是209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10
  • 查看在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
  • 安装tcpflower
    c1669d531ad6ed1cb45844fb48ed1e9c
  • 输入tcpflow -r botnet_pcap_file.dat “host 209.196.44.172 and port 6667”筛选出与IP=209.196.44.172且端口为6667的主机相关的所有TCP流量数据。
    f4c1277c23d4f3dff5edbb1f965a0b61
  • 输入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查找源IP为209.196.44.172的文件
    8e27d09df065cb1e6a85b5c4c281249a
    共有3461台主机
  • 查看哪些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 > 20232322.txt;wc -l 20232322.txt找出所有向主机172.16.134.191发送数据包的源IP地址
    820b328589690809dec375d5499b9371
    6b68188d216257d90e18378a51ce9e8a
  • 查看攻击者使用的安全漏洞
  • 在wireshark中打开botnet_pcap_file.dat文件,找到统计->协议分析
    72c5b4a273c6e037fa2f1406a0bd2c9e
    可以看到使用的大多数是TCP包,极少数是UDP包
  • 输入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的源端口号
    b8e8e69d09f7c520f610ae86dbac88b7
  • 输入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的源端口号
    9fd051728a1a7eb24588290731a59d68

8.成功的攻击与原因

TCP:

  • 135端口:
    image
    成功连接但无后续的恶意数据包
  • 139端口:
    image
    成功连接并发出访问\PC0191\c的请求,但被服务器拒绝,后续也没有恶意数据包
  • 25端口:
    image
    成功连接但无后续的恶意数据包
  • 445端口:
    image
    成功连接后不断向主机发送SMB请求,看起来像是在进行扫描
    image
    通过445端口的SMB协议,成功删除了目标主机上路径为C:\System32\PSEXESVC.EXE的文件
  • 4899端口:
    image
    通过HTTP请求,发送目录遍历攻击HEAD /cgi/../../../../../winnt/system32/cmd.exe?/c+dir
  • 80端口:
    image
    发送大量的c字符来进行攻击缓冲区,造成目标主机缓冲区溢出被控制

UDP:

137端口:
image
成功连接但无后续的恶意数据包

五.心得体会

此次实验不同于前几个实验,没有那么多的命令和代码,主要是在于分析端口和是否有攻击行为。所以对结果的分析识别能力有较大的要求。像使用IDA pro和ProcessExplorer对RaDa_unpacked.exe的分析时,就需要理解汇编中的调用关系,strings中信息内容是什么含义,同时对于捕捉的数据包的分析能力也有所提升。本次实验让我意识到了网络安全面临的问题的复杂度有多高,也让我更加坚定网络攻防的学习信心。

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

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

相关文章

高级语言程序设计第四节个人作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/gjyycx/homework/14577 学号:102500426 姓名:康凯帆 Fan.: 11-08 22:34:19Fan.: 11-0…

Vue3 项目首屏加载性能优化全攻略 - 详解

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

2025.11.8 测试

2025.11.8 测试T1 刚开场想到贪心方向,然后一直在证明 然后证了1个多小时,证明没证出来,但思路理清了 就是有一种情况,就是最小值和某个非最大值搭配,不会写,但举了几个例子都不会出现这种情况成为最优解 然后就…

C# 变量详解:从基础概念到高级应用 - 实践

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

CF285G AGC003D

给定 \(n, k\),问有多少个长度为 \(n\) 的排列 \(p\),满足恰好有 \(k\) 个 \(i\) 使得 \(|p_i - i| = 1\)(称这个 \(i\) 为好的)。 \(k \le n \le 1000\)令 \(g(k)\) 表示恰好有 \(k\) 个好的 \(i\) 的排列数。 这…

用 Kubernetes 原生机制取代 Nacos 注册中心:可行性、代价与边界

我在使用k8s部署 Java 分布式应用时发现,k8s自带服务发现功能,而且K8s提供的Service、DNS、ConfigMap 等级制似乎能完全替代Nacos的注册中心和配置中心。 Kubernetes 的 Service + Endpoints + CoreDNS 机制,本质上…

获取设置开发授权激活统信uos

获取设置开发授权激活统信uos申请开发授权

AtCoder Beginner Contest 431 ABCDEF 题目解析

A - Robot Balance 题意 一个机器人由一个头部零件与一个身体零件组成。如果头部零件的重量大于身体零件的重量,机器人就会摔倒。 目前,高桥有一个头部零件和一个身体零件,头部零件的重量为 \(H\) 克,身体零件的重…

基于单片机的智能洗碗机设计 - 指南

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

实用指南:AI学习日记——深度学习

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

赫尔曼黑塞《德米安》—生活之难,难在直面内心的自己

《德米安》开篇的第一句话: 我所渴望的, 无非是试着依我内心自发的本性去生活。为何如此之难?生活的难,似乎是刻在人生里的底色。生老病死的必然,悲欢起落的无常,得到时的辗转,失去时的拉扯。我们总轻易遗忘快乐…

安装openjdk21

安装openjdk211、打开应用商店,搜索openjdk,搜索结果列出多个版本的openjdk,如openjdk8、openjdk19、openjdk21等。 2、可以点击对应图标,进入详细信息查看版本,并进行安装。 3、安装后打开,如打开openjdk(长期维护…

中科麒麟passwd弱密码授权

中科麒麟桌面版默认拒绝“123456”这类弱密码,报错 “无效的密码:没有足够的字符种类”。 下面把亲测可行的修改步骤贴出来,复制-粘贴即可。1. 打开密码策略文件 sudo nano /etc/pam.d/common-password2. 定位到 pa…

暴字迹

都是平常笔记一类的字迹所以写的很潦草( 宣:CSP 2025 游记:https://www.luogu.com.cn/article/fz1ol19h CSP 2025 GD 迷惑行为大赏:https://www.luogu.com.cn/article/dihhq10t

体验CodeBuddy免费领取轻量云服务器

近期 AI 编程热潮席卷行业,各大科技厂商纷纷布局 AI IDE 赛道,推出专属开发平台。 腾讯也顺势入局,正式发布自研 AI IDE 工具 CodeBuddy。依托腾讯完善的产品生态,CodeBuddy 带来了一大核心亮点功能 ——“一句话落…

Git 命令完全手册

Git 命令完全手册 目录Git 基础配置 仓库操作 核心常用命令 分支操作 远程协作 查看信息 撤销与回退 标签管理 高级操作 故障排查1. Git 基础配置 # 查看配置 git config --list git config --global --list# 设置用户…

MySQL索引(三):字符串索引优化之前缀索引

MySQL系列文章 在数据库优化中,字符串字段的索引设计往往是个棘手的问题。过长字符串的完整索引会占用大量空间,而不合适的索引又会导致查询性能低下。今天我们来探讨一个平衡的艺术——前缀索引。字符串索引的现实挑…

ubuntu22 arm64 安装docker乱七八糟的报错解决方案

docker启动iptables v1.8.7 (legacy): Couldnt load match `conntrack:No such file or directory sudo modprobe xt_conntrackiptables v1.8.9 (legacy): cant initialize iptables table `filter: Table does not ex…

TOYOTA SYSTEMS Programming Contest 2025(AtCoder Beginner Contest 431)

A - Robot Balance点击查看代码 #include <bits/stdc++.h>using i64 = long long;void solve() {int a, b;std::cin >> a >> b;std::cout << std::max(0, a - b) << "\n"; }i…

AT_dwacon6th_prelims_e Span Covering

容斥个蛋,不如直接 DP。 考虑从大到小排序线段消掉一维限制,用连续段 DP 做,设 \(f_{i, j, k}\) 为前 \(i\) 条线段,分成了 \(j\) 个连续段,占了 \(k\) 个位置的方案数,考虑转移:单独成一段。 扩展一段。 连接两…