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

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

1.实验内容

  • 识别恶意代码的文件类型标识,进行脱壳与字符串提取,发现敏感信息
  • 使用IDA Pro静态分析文件,找到特别的输入点,输出隐藏信息
  • 分析自制恶意代码样本
  • 对网络流量数据包进行取证分析

2.实验过程

2.1 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取

  • 首先通过file命令查看文件基本类型,可以得到文件的格式是可执行文件,运行平台是win32,具有图形界面
    5523f5e238e08aab7ff44691862983f6
  • 打开PEID分析,发现文件进行了UPX加壳处理
    6534c1ac41d11d4aee681323197c89c3
  • 通过PEID自带的脱壳工具对RaDa.exe进行脱壳,自动检测入口点,如图
    36ea7877498596d0539ed10e99e42037
    8e7b4bd91c9420a6cb989b386a9bd6f4
  • 得到脱壳后文件RaDa.exe.unpacked.exe
    6f5fdc02f62b4ac0fcb20064b05cb45b
  • 利用strings命令提取脱壳后的程序包含的字符串
    dfdd6fcc128b30eb289c28509881c0cf
    c0dfe4e106250bff425f07e22949ae26
  • 可以看到作者“Raul Siles & David Perez”

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

2.2.1 crackme1.exe

  • 首先运行该程序
    1aa47d652d43f4002917628f4ca0ec09
  • 猜测关键点是在参数,打开IDA Pro,按F5进行反汇编得到主函数的伪代码
    dab4664f06317af57df3c5ac7559a60f
  • 可以看到关键语句是!strcmp(argv[1],"I know the secret"),因此我们在运行程序时输入参数"I know the secret"
    cf4ae6e84de4eec57e9b7ef286180da9
  • 验证成功

2.2.2 crackme2.exe

  • 首先运行该程序,与第一个程序基本无异,我们直接打开IDA Pro进行分析
    b367c024a13b3d81ee9eb54ed56ebc9f
  • 可以分析得到该程序只能以crackmeplease.exe "I know the secret"运行才能得到想要的结果,于是将程序重命名进行运行
    6131e3fd639cba4908384c5892d3fb20
  • 验证成功,我们来换一种思路,能不能再IDA Pro中直接获得输出结果,答案是能的,首先找到关键输出putchar((char)(byte_403080[i] ^ 0x42))我们只需要找到这个数组与0x42进行异或即可得到结果,双击byte_403080
    dda480ab38a4ad5aae9583bb5aa99153
  • 提取字符串,与0x42异或以后,进行编码转换
    242d6d569b5366107839d1b3fe833b92

2.3 分析自制恶意代码样本rada

2.3.1 摘要与基本信息

  • 如图,通过以下命令可以获得样本的md5摘要、文件类型和时间戳
    862979f9a15fe194eba195f49cbcab5d

2.3.2 该文件目的

  • 打开process explorer后运行脱壳后的Rada,可以找到以下字符串信息
    785eebd0dea8716788c69ed10e101faa
  • 分析可知,这个程序可能在试图访问http://10.10.10.10/RaDa,然后执行该服务器下的cgi脚本
  • HKLM\Software\...是Windows注册表中的路径,推测程序可能企图改变主机注册表
  • 通过其中提示信息推断程序可能要发起DDoS攻击

2.3.3 该文件所具有的不同属性

  • 该文件可以远程访问网站、访问并下载文件
  • 可以修改注册表
  • 可以发起DDoS攻击
  • 可以创建目录

2.3.4 该文件所采用的防止被分析或逆向工程的技术

  • 该文件通过UPX进行了加壳,通过压缩原始代码和劫持入口点隐藏程序逻辑

2.3.5 分类

  • 该文件应该是后门文件,因为该文件可以进行远程访问,但不具备自我复制和传播能力,可以修改注册表,即可以隐藏自己的痕迹,可能通过反弹链接建立与攻击者的连接

2.3.6 功能相似的其他工具

  • msfvenom和veil均可以生成类似的后门文件

2.3.7 调查开发作者

  • 已在上方过程中找到了该文件的作者,即“Raul Siles & David Perez”

2.3.8 检测该恶意软件的方法

  • 基于特征码的检测
    • 存储各类恶意代码特征,比如特定的字符串,检测到这类特征即判定其为恶意软件
  • 基于行为的检测
    • 记录各类恶意软件的通用行为,比如修改注册表等,一但某程序做出了相关行为,即判定其为恶意软件
  • 沙箱检测法
    • 在安全、隔离、可控的环境下执行此类代码,观察可能出现的变化再判断是否为恶意代码
  • 完整性校验法
    • 在官方网站上下载哈希值或数字签名,比较由软件的出的值,若不一致,则怀疑其为恶意软件
  • 基于大数据的检测
    • 通过联网实时获取恶意软件综合特征,对主机各类软件进行实时监测

2.4 取证分析实践

2.4.1 IRC

  • 问:IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?。
  • 答:IRC(Internet Relay Chat)是互联网中继聊天协议,提供了一种与来自世界各地的人们进行实时通信的方式。它由IRC服务器(允许用户连接到IRC的计算机)的各种独立网络组成。最大的网络是EFnet。当IRC客户端申请加入一个IRC网络时会通过TCP协议发送JOIN消息,该消息包含频道名称和用户昵称等必要信息,一般使用6667端口

2.4.2 僵尸网络

  • 问:僵尸网络是什么?僵尸网络通常用于什么?
  • 答:僵尸网络(Botnet)是指黑客采用一种或多种传播手段,将大量主机感染僵尸程序病毒,被感染的主机通过控制协议接收黑客的指令,从而在黑客和被感染主机之间所形成的可一对多控制的网络。僵尸网络一般被黑客用于拒绝服务等网络攻击

2.4.3 蜜罐主机

  • 问:蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
  • 答: 63.241.174.144;217.199.175.10;209.196.44.172
  • 分析过程如下:
    • 首先锁定通讯IP的一方是蜜罐主机IP,然后根据端口6667和6697寻找可能与蜜罐主机进行了IRC的主机IP,过滤语句:ip.addr==172.16.134.191 and (tcp.port==6667 or tcp.port==6697)
      07cddf0db5f505aaee40b2cf6403b31a
    • 从结果中可以找到四个IP:63.241.174.144;66.33.65.58;217.199.175.10;209.196.44.172,但根据此协议我们不能确定蜜罐主机与这四个主机都进行了通讯,因此我们查看是否确实使用了IRC协议进行了通信,更换过滤条件为ip.addr==172.16.134.191 and _ws.col.protocol=="IRC"
      ec871f0b5c9a9e11b46b7380fb283843
    • 我们发现少了主机66.33.65.58,查看该主机的通讯记录,更换协议为ip.addr==66.33.65.58
      6939b9b8ae01d15d751e7404b791afbc
    • 我们发现,蜜罐主机确实尝试和66.33.65.58主机建立通讯,但该主机一直未响应,因此蜜罐主机只和答案中三个IRC服务器进行了通信

2.4.4 访问了以209.196.44.172为服务器的僵尸网络的主机

  • 问:在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
  • 答:3461个
  • 分析过程如下:
    • 首先使用命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"
      工具tcpflow是一个专门把 TCP 流(而不是单个数据包)从 pcap 文件中提取并保存为可读文件的工具。它会把同一条 TCP 连接的双向数据合并成两段文本,便于后续分析。下面对这行命令进行解析:
      • -r:选择数据源文件
      • "...":采用tcpdump/BPF语法
      • 这条命令从离线的 pcap 捕获文件中抽取所有与指定 IRC 服务器(IP 209.196.44.172、端口 6667)相关的 TCP 会话,并把每个会话的双向数据分别保存为独立文件,同时生成一份 XML 报告
    • 然后使用命令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
      • grep -a "^:irc5.aol.com 353":只保留 353 回复行(昵称列表)
      • sed:去掉行首的协议前缀,留下昵称
      • tr ' ' '\n':把空格拆成单行昵称
      • tr -d "\15":删除残余回车字符
      • grep -v "^$":去掉空行
      • sort -u:排序并去重
      • wc -l:统计唯一昵称数目
      • 这条命令的作用是从IRC捕获文件中提取并计数唯一用户昵称
        f06d11123782b0c848c3d3280fbd6682
    • 结果如图,共有3461个

2.4.5 被用于攻击蜜罐主机的IP地址

  • 问:哪些IP地址被用于攻击蜜罐主机?
  • 答:如下
12.252.61.161
12.253.142.87
128.242.214.10
12.83.147.97
129.116.182.239
141.149.155.249
141.85.37.78
144.134.109.25
148.235.82.146
162.33.189.252
164.125.76.48
168.226.98.61
168.243.103.205
169.254.205.177
172.168.0.154
192.130.71.66
192.215.160.106
194.192.187.194
194.199.201.9
194.68.68.12
194.68.68.39
195.36.247.77
195.67.251.197
198.49.161.200
200.135.228.10
200.50.124.2
200.60.202.74
200.66.98.107
200.74.26.73
200.78.103.67
202.63.162.34
203.106.55.12
203.115.96.146
203.170.177.8
204.50.186.37
205.180.159.35
205.188.137.80
206.149.148.192
206.151.167.254
207.172.16.150
207.172.16.156
207.46.196.108
207.46.196.120
207.6.77.235
207.68.171.238
207.68.171.245
207.68.176.250
207.68.183.190
207.68.184.62
208.186.61.2
209.196.44.172
209.45.125.110
209.45.125.69
210.111.56.66
210.12.211.121
210.203.189.77
210.214.49.227
210.22.204.101
210.58.0.25
211.149.57.197
212.110.30.110
212.122.20.74
212.162.165.18
212.243.23.179
213.107.105.72
213.116.166.126
213.122.77.74
213.170.56.83
213.217.55.243
213.23.49.158
213.44.104.92
213.66.244.241
213.7.60.57
213.84.75.42
216.154.242.126
216.170.214.226
216.192.145.21
216.228.8.158
216.229.73.11
216.239.33.101
216.239.51.100
216.239.57.100
217.1.35.169
217.140.0.47
217.151.192.226
217.151.192.231
217.199.175.10
217.222.201.82
217.227.245.101
217.227.98.82
217.35.65.9
218.163.9.89
218.237.70.119
218.244.66.32
218.25.147.83
218.4.48.74
218.4.65.115
218.4.87.137
218.4.99.237
218.87.178.167
218.92.13.142
219.118.31.42
219.145.211.132
219.145.211.3
219.65.37.37
219.94.46.57
24.107.117.237
24.161.196.103
24.167.221.106
24.197.194.106
24.74.199.104
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
64.17.250.240
64.254.203.68
65.57.83.13
66.139.10.15
66.190.67.122
66.233.4.225
66.73.160.240
66.81.131.17
66.8.163.125
66.92.135.108
67.201.75.38
67.81.161.166
68.115.33.110
68.152.53.138
68.154.11.82
68.169.174.108
68.37.54.69
68.45.123.130
68.84.210.227
80.181.116.202
81.114.77.37
81.202.125.5
81.50.177.167
81.57.217.208
  • 分析过程如下:
    • 使用指令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 > ipaddr.txt;wc -l ipaddr.txt这条命令把离线捕获的botnet_pcap_file.dat文件中,所有目的IP为172.16.134.191的数据包的源IP提取出来,去重后写入ipaddr.txt,然后统计该文件中有多少条IP地址
      c093c34b5051d4e281f3d9d2048e0d03
    • 通过cat查看该文件可以得到以上答案。

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

  • 问:攻击者尝试攻击了那些安全漏洞?
  • 答:
    • RPC,Windows远程过程调用漏洞(135端口)
    • SMB,Windows文件共享(139/445端口)
    • SMTP,简单邮件传输协议(25端口)
    • Remote Administrator,远程控制软件(4899端口)
    • HTTP,网页服务(80端口)
    • NetBIOS,Windows网络邻居功能(137端口)
  • 分析过程如下:
    • 在wireshark中,可以在统计中分析端口号,如图,可对照常见的漏洞端口,若攻击者在该端口的流量分组较多,则可能尝试了攻击
      c93fb34feeb0bee9c8f6836f44910fa6
      952639f7b25db0edcbbf1a54e3d50f62
      7c87af6b50931c13fe8d797c685f6e6e
      image
    • 根据TCP和UDP的端口流量情况,分析攻击者尝试攻击了
      • RPC,Windows远程过程调用漏洞(135端口)
      • SMB,Windows文件共享(139/445端口)
      • SMTP,简单邮件传输协议(25端口)
      • Remote Administrator,远程控制软件(4899端口)
      • HTTP,Web服务(80端口)
      • NetBIOS,Windows网络邻居功能(137端口)

2.4.7 攻击分析

  • 问:那些攻击成功了?是如何成功的?
  • 答:针对端口445、80的攻击可能成功,过程如下分析
  • 分析过程如下:
    • RPC(135端口)
      • 过滤条件:ip.addr==172.16.134.191 and tcp.port==135
        image
      • 如上图,攻击机只是简单地与主机建立了TCP连接,不存在攻击行为
    • SMB(139)
      • 过滤条件:ip.addr==172.16.134.191 and tcp.port==139
        image
      • 如上图,攻击机试图访问路径\\PC0191\IPC$和路径\\PC0191\C,但每次访问均被拒绝,攻击失败
    • SMB(445)
      • 过滤条件:ip.addr==172.16.134.191 and tcp.port==445
        3c947da308026f964cebbeaf4ecec099
      • 从图中可以看到,主机回应了攻击机的读取和删除响应,攻击者可能已经攻击成功
    • SMTP(25端口)
      • 过滤条件:ip.addr==172.16.134.191 and tcp.port==25
        image
      • 如上图,攻击机只和主机建立了TCP连接,不存在攻击行为
    • Remote Administrator(4899端口)
      • 过滤条件:ip.addr==172.16.134.191 and tcp.port==4899
        image
        936edb9a882699b0ad5eca502d056ebb
      • 如上图,检查发现目录穿越,但追踪流后发现攻击者发动了多次目录穿越攻击,但主机均未回应出相关信息,因此判定为攻击失败
    • HTTP(80端口)
      • 过滤条件:ip.addr==172.16.134.191 and tcp.port==80
        image
        image
      • 从图中可以看出,攻击者使用大量字符填充请求路径,疑似利用从攻击者发出的请求报诱导主机访问非法网站,下载蠕虫,主机接受,攻击者可能已经攻击成功
    • NetBIOS(137端口)
      • 过滤条件:ip.addr==172.16.134.191 and udp.port==137
        image
      • 发现大量重复请求服务,但未出现明显攻击行为

3.问题及解决方案

  • 问题1:在逆向分析crackme2.exe的时候,按照要求需要以命令crackmeplease.exe "I know the secret"运行程序才能得到正确结果,但在文件夹打开终端只能添加\.运行
  • 问题1解决方案:在文件夹打开终端默认打开powershell,对于非系统命令和程序powershell默认只能通过添加\.运行,使用cmd打开即可

4.学习感悟、思考等

通过对实验前相关知识的学习,我了解了各类恶意代码的代码特征和行为特征,学习分类不同的恶意代码并通过具体的案例了解到了具体的危害。通过本次实验,我进一步了解了分析恶意软件、判断恶意软件的具体流程,并切实地感受到恶意软件所带来的具体危害,比如悄悄地远程建立连接、修改注册表等等。在今后的学习中,我们要进一步了解各类恶意代码的防御措施以及识别方法,更好地保护主机安全。

参考资料

posted @ 2025-11-10 21:58  20232401许鹏坤  阅读(7)  评论(0)    收藏  举报