20232803 2023-2024-2 《网络攻防实践》实践八报告

1. 实践内容

  • 动手实践任务一:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。

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

    • 任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
  • 分析实践任务一:分析一个自制恶意代码样本rada,并撰写报告,回答问题。

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

    • 任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置,并回答问题。

2. 实践过程

2.1 动手实践任务一

具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

  • 在学习通中下载rada.rar压缩包,解压密码为rada,将压缩包中的两个文件粘贴到WinXPattacker中。

注:如无法粘贴可先为WinXPattacker安装VMware Tools
在这里插入图片描述

  • 在命令行窗口中输入以下命令查看RaDa.exe的文件格式
cd 桌面
file RaDa.exe

在这里插入图片描述
根据命令结果可知,RaDa.exe是PE32位的可执行文件,具有微软Windows系统的GUI界面,系统架构为英特尔80386系列,运行在32位Windows系统上

  • 输入命令strings RaDa.exe查看RaDa.exe文件恶意代码字符串
    在这里插入图片描述
    如上图所示,前面的字符串都是一些乱码,而最后出现了两个dll文件和三个没有文件名后缀的文件,根据这三个文件的文件名,猜测是程序或函数

  • 输入命令RaDa --authors查看作者信息
    在这里插入图片描述

  • 输入命令RaDa.exe --authors查看作者信息
    在这里插入图片描述
    可以发现以上两个命令显示的作者信息是一致的

  • 按如下步骤打开PEid工具
    在这里插入图片描述

  • 打开PEid工具后,点击文件右侧的按钮,打开RaDa.exe文件
    在这里插入图片描述

  • 打开后,根据提供的信息可知RaDa.exe文件的加壳为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
    在这里插入图片描述

  • 打开超级巡警虚拟机脱壳器
    在这里插入图片描述

  • 点击文件右侧的按钮选择文件RaDa.exe
    在这里插入图片描述

  • 点击右侧脱壳按钮,脱壳后的文件将保存到RaDa.exe同一目录下
    在这里插入图片描述

  • 在命令行窗口中输入strings RaDa_unpacked.exe查看脱壳后的文件里的字符串
    在这里插入图片描述
    可以看到输出结果中有大量的函数调用名,但仅知道这些还不够,还需要进行反汇编

  • 打开反汇编软件IDA Pro Free
    在这里插入图片描述

  • 点击New按钮
    在这里插入图片描述

  • 选择PE Executable,打开桌面上的RaDa_unpacked.exe文件
    在这里插入图片描述

  • 打开后如下图
    在这里插入图片描述

  • 我们重点关注右下角的strings窗口,将该窗口最大化
    在这里插入图片描述
    可以发现在该软件里看到的字符串与命令行窗口里的字符串相同

  • 修改编码格式:在strings窗口中右键,点击Setup,将Unicode勾选上,点击OK完成
    在这里插入图片描述

  • 可以看到字符串发生变化了
    在这里插入图片描述

  • 下拉,在地址JDR0:00402D04处,找到了作者信息
    在这里插入图片描述

  • 与命令RaDa.exe --authors得到的作者信息进行比对
    在这里插入图片描述
    可以发现,该作者信息与命令得到的作者信息一致,作者为Raul Siles & David Perez

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

  • 在学习通中下载crackme1.execrackme2.exe文件,传入WinXPattacker虚拟机
2.2.1 crackme1.exe
  • 打开命令行窗口,运行crackme1.exe,并依次输入不同的参数,根据输出的结果来猜测程序所需的特定输入
    在这里插入图片描述
    根据返回结果很难看出程序需要什么参数

  • 打开反汇编软件IDA Pro Free,新建一个PE Executable分析界面,对crackme1.exe进行分析
    在这里插入图片描述

  • 打开右下角的strings窗口
    在这里插入图片描述
    可以看到该程序有四种输出语句,而刚才在命令行窗口中只试探出其中的两种,我们还需要找出另外两种输出的特定输入

  • 打开IDA View-A窗口,然后依次点击页面上方的View - Graphs - Function calls查看函数调用图
    在这里插入图片描述
    可以看到输出函数printfsub_401280调用,sub_401280还调用了strcmp函数,应该是用于判断输入与密码是否一致

  • 查看sub_401280代码块
    在这里插入图片描述

  • 依次点击页面上方的View - Graphs - Flow Chart 查看代码流程图
    在这里插入图片描述
    结合之前我们在命令行窗口中做的尝试,根据以上汇编代码我们可以得知:

    • sub_401280先判断输入的参数个数
      • 如果参数个数不为一个,则跳转到false分支,调用fprintf输出I think you are missing something.
      • 如果参数个数为一个,则跳转到true分支
        • 调用strcmp判断输入是否为I know the secret,如果不是则跳转到下一false分支,输出Pardon?What did you say?
        • 如果输入是I know the secret,则跳转到下一true分支,输出You know how to speak to programs,Mr.Reverse—Engineer
  • 验证我们的分析:在命令行窗口中输入crackme1.exe “I know the secret”

注:I know the secret需要加上双引号

在这里插入图片描述
根据输出结果可知验证成功

2.2.2 crackme2.exe

注:分析crackme2.exe的过程与分析crackme1.exe的过程基本一致,下面仅作一些必要的介绍

  • 在命令行窗口观察不同的输入对应输出的区别
    在这里插入图片描述

  • 使用IDA Pro Free打开crackme2.exe,查看Strings窗口
    在这里插入图片描述
    可以看到有五种输出结果

  • 查看函数调用图
    在这里插入图片描述
    可以看到fprintfstrcmp等函数被sub_401280调用

  • 查看代码流程图
    在这里插入图片描述
    结合之前我们在命令行窗口中做的尝试,根据以上汇编代码我们可以得知:

    • sub_401280先判断输入的参数个数
      • 如果参数个数不为一个,则跳转到false分支,调用fprintf输出I think you are missing something.
      • 如果参数个数为一个,则跳转到true分支
        • 调用strcmp判断调用的文件名是否为crackmeplease.exe,如果不是则跳转到下一false分支,输出I hava an identity problem.
        • 如果调用的文件名是crackmeplease.exe,则跳转到下一true分支
          • 调用strcmp判断输入是否为I know the secret,如果不是则跳转到下一false分支,输出Pardon?What did you say?
          • 如果输入是I know the secret,则跳转到下一true分支,输出正确语句
  • 验证我们的分析:将crackme2.exe文件名改为crackmeplease.exe,在命令行窗口中输入crackmeplease.exe “I know the secret”
    在这里插入图片描述
    根据输出结果可知验证成功

2.3 分析实践任务一

  • 输入命令md5sum RaDa.exe获取RaDa.exe文件的MD5值
    在这里插入图片描述
  • 双击运行脱壳后的RaDa_unpacked.exe文件,然后打开监视工具Process Explorer,用于监听RaDa_unpacked.exe
    在这里插入图片描述
  • Process Explorer中打开RaDa_unpacked.exe,点击Strings查看监听到的字符串信息
    • 根据图中信息可知,该程序先访问了http://10.10.10.10/RaDa,请求了RaDa_commands.html页面,进行一些下载和上传的操作
    • 并且还检查了是否在VMware虚拟机环境下,发现不是,开始进行DDoS Smurf攻击
    • 此外,还修改了注册表,通过Wscript.Shell进行操作,将RaDa.exe设为开机自动启动
      在这里插入图片描述
    • 之后还攻击了192.168172.1610三个内网网段
    • 这里还能看到该程序的所有者为Raul Siles & David Perez,于2004年9月编写该程序
      在这里插入图片描述

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

摘要为caaa6985a43225a0b3add54f44a0d4c7

2、找出并解释这个二进制文件的目的;

  • 访问http://10.10.10.10/RaDa,请求该网站上的页面,进行下载和上传的操作
  • 实施DDoS Smurf攻击
  • 修改注册表,将RaDa.exe设为开机自动启动
  • 攻击192.168172.1610三个内网网段

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

  • 会将文件下载到C盘指定目录
  • 实施DDoS Smurf攻击
  • RaDa.exe设为开机自动启动

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

  • 使用了UPX加壳技术,不先进行脱壳而直接分析的话,会得到许多乱码结果

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

  • 该恶意程序通过修改注册表来实现开机自动运行,通过连接到特定的网站来下载文件,并在系统中留下后门,从而允许攻击者远程控制受影响的主机。此外,该程序实施DDoS攻击,其目的是使主机失去响应。该恶意程序并不通过自我复制来传播,也不伪装成合法程序诱使用户执行,因此它是蠕虫或木马。因此,该恶意软件应被归类为后门程序。

6、给出过去已有的具有相似功能的其他工具;

  • 木马Bobax
  • 特洛伊木马Setiri

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

  • 作者为Raul Siles & David Perez
    • 命令行输入RaDa --authorsRaDa.exe --authors
    • 反编译该脱壳文件RaDa_unpacked.exe
    • 使用监视工具Process Explorer进行监听

2.4 分析实践任务二

  • 在学习通下载botnet_pcap_file.dat文件,传入Kali虚拟机中
  • 右键botnet_pcap_file.dat文件选择使用Wireshark打开,进行分析
    在这里插入图片描述
    可以看到,里面有各种协议的数据包,且ip地址也是多种多样

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

  • IRC(Internet Relay Chat)是一种主要用于实时文本通信的在线聊天系统,它允许用户在不同的“频道”上进行交流。
  • 当IRC客户端申请加入一个IRC网络时,它会发送一个用户认证消息,通常包括用户的昵称、用户标识和其他可能的认证信息。这个过程遵循IRC协议,客户端会与服务器进行一系列的通信,以完成注册、登录和加入频道等操作。
  • IRC一般使用的TCP端口是6667和6697。端口6667通常用于未加密的IRC通信,而端口6697通常用于TLS/SSL加密的IRC通信,提供更安全的数据传输。

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

  • 僵尸网络(Botnet)是由大量被恶意软件感染并被黑客远程控制的计算机组成的网络。这些计算机被称为“僵尸”,因为它们在不知情的用户控制之外执行黑客的命令。僵尸网络的控制者,即僵尸主控机(Botmaster),可以通过命令与控制(Command and Control,C&C)服务器向bot发布命令,使僵尸网络执行特定的恶意行为。

  • 僵尸网络通常用于以下目的:

    • 分布式拒绝服务攻击(DDoS):通过向目标网站或服务器发送大量请求,使其无法处理合法用户的访问,导致服务不可用。
    • 垃圾邮件发送:利用被感染的计算机发送大量的垃圾邮件,包括诈骗邮件和恶意软件分发。
    • 加密货币挖矿:利用僵尸网络中的计算机进行加密货币挖矿,而不经过设备所有者的同意。
    • 数据盗窃:窃取被感染计算机上的敏感信息,如银行账户密码、信用卡信息等。
    • 勒索软件传播:通过电子邮件附件或其他方式传播勒索软件,要求受害者支付赎金以恢复其数据或设备。
    • 间谍软件活动:监视用户的活动并收集敏感数据,然后将其发送回攻击者。
    • 投票欺诈:在在线投票系统中,使用僵尸网络模拟大量独立用户进行欺诈性投票。

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

  • 输入ip.src == 172.16.134.191 && tcp.port == 6667筛选数据包
    在这里插入图片描述
    根据筛选后得到的数据包可知,蜜罐主机与IRC服务器209.126.161.2966.33.65.5863.241.174.144217.199.175.10209.196.44.172进行了通信

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

  • 输入命令sudo apt-get install tcpflow 安装tcpflow
    在这里插入图片描述
  • 输入命令sudo tcpflow -r Desktop/botnet_pcap_file.dat "host 209.196.44.172 and port 6667"对样本进行分流
    在这里插入图片描述
  • 分流后得到两个数据文件172.016.134.191.01152-209.196.044.172.06667209.196.044.172.06667-172.016.134.191.01152,以及一份报告report.xml
    在这里插入图片描述
  • 输入以下命令来计算209.196.044.172.06667-172.016.134.191.01152文件中有多少主机访问了209.196.044.172
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 @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l
# grep 取出昵称
# sed 去除前缀
# tr 将空格转换为新行
# tr -d 去除\r
# grep -v "^$" 去除空行
# sort -u 排序并去重
# wc 计算行数

在这里插入图片描述
结果为:有3461个不同的主机访问了以209.196.44.172为服务器的僵尸网络

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

  • 输入以下命令找出所有连接蜜罐主机的IP地址,将结果输出到IP.txt文件中,并输入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

在这里插入图片描述
可以看到输出165,表示有165个IP被用于攻击蜜罐主机

  • 打开IP.txt文件即可查看这165个被用于攻击蜜罐主机的IP地址
    在这里插入图片描述

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

  • 使用Tcpdump工具筛选出蜜罐主机有哪些端口是响应的

    • 输入命令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端口
    • 输入命令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端口
      在这里插入图片描述
      可以看到相应的TCP端口有135、139、25、445、4899、80,而响应的UDP端口只有137
  • 135端口:在Wireshark中输入tcp.port == 135进行筛选
    在这里插入图片描述
    在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互

  • 139端口:输入tcp.port == 139进行筛选
    在这里插入图片描述
    在筛选后的数据包中有许多TCP、SMB和NBSS类型的数据包,但没有关于攻击或漏洞的信息

  • 25端口:输入tcp.port == 25进行筛选
    在这里插入图片描述
    在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互

  • 445端口:输入tcp.port == 445进行筛选
    在这里插入图片描述
    在筛选后的数据包中发现了可执行文件PSEXESVC.EXE,查阅资料可知这是一种蠕虫病毒的特征码

    • 攻击者拿到ADMIN权限
      在这里插入图片描述
    • 攻击者拿到Administrator权限
      在这里插入图片描述
      攻击者攻击成功,拿到了管理员权限,导致被远程控制
  • 4899端口:输入tcp.port == 4899进行筛选
    在这里插入图片描述
    在筛选后的数据包中只有一些TCP三次握手过程的数据包,没有数据的交互

  • 80端口:输入tcp.port == 80进行筛选
    在这里插入图片描述
    在筛选后的数据包中发现有一数据包中含有CCCCCCCC...填充数据,这是攻击者在尝试缓冲区溢出攻击

    • 追踪TCP流
      在这里插入图片描述
    • 追踪HTTP流
      在这里插入图片描述
      发现并没有后续,说明攻击者失败了
  • 137端口:输入udp.port == 137进行筛选
    在这里插入图片描述
    在筛选后的数据包中发现只有NBNS包,NBNS是网络基本输入/输出系统(NetBIOS)的一部分,主要负责在基于NetBIOS名称访问的网络上提供主机名和地址映射服务

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

  • 根据刚才第六个问题中的抓包分析可知,只有445端口攻击成功,攻击者通过PSEXESVC.EXE可执行文件,获取了目标主机的管理员权限,从而控制了目标主机

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

  • 问题描述:在Kali中安装tcpflow时报错
    在这里插入图片描述
  • 解决方案:发现连接实验室网线时,Kali会提示没有网络,因此将网线拔出,改为连接手机热点

4. 学习感悟、思考等

通过这次实践,我深刻体会到了恶意代码分析和逆向工程的复杂性与重要性。在分析Rada恶意代码样本和Crackme程序的过程中,锻炼了我脱壳、字符串提取、反汇编及逻辑思维的能力;在分析网络数据源的过程中,面对大量的数据,我学会了如何筛选和识别关键信息,通过对数据包的深入分析,我能够理解攻击者的策略和行为模式。

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值