zty1234

导航

20241903 2024-2025-2 《网络攻防实践》第8次作业

1. 实践内容

本次实验内容分为四个部分。首先,我要对rada恶意代码样本进行文件类型识别、脱壳和字符串提取,以确定其编写作者。其次,我也要在WinXP虚拟机中使用IDA Pro对crackme1.exe和crackme2.exe进行静态或动态分析,寻找使程序输出成功信息的特定输入。再次,我要对自制恶意代码样本rada进行分析包括提供二进制文件摘要、解释文件目的、识别不同特性、分析防止分析或逆向工程的技术、对恶意代码进行分类并说明理由等。最后,分析Snort工具收集的蜜罐主机网络数据,并且确定蜜罐主机与哪些IRC服务器通信、统计访问特定僵尸网络的不同主机数量、列出攻击蜜罐主机的IP地址、分析攻击者尝试的安全漏洞、确定哪些攻击成功。


2. 前置知识

加壳:

恶意软件加壳是指使用特定的软件工具(称为“壳”或“打包器”)对恶意软件代码进行压缩、加密或封装的过程。加壳的 主要目的是隐藏恶意软件的真实内容和行为,使其更难被检测、分析和逆向工程
该技术隐藏恶意代码的 形式 主要是压缩和加密,即加壳工具会将恶意软件的原始代码进行压缩和加密处理,使其在文件中不再以原始形式存在。这使得静态分析工具(如杀毒软件、文件扫描器等)难以直接识别恶意代码的特征。同时加壳过程中还会对代码进行混淆处理,改变代码的结构和逻辑,使其更难被理解。
该技术的 核心目标 是绕过检测,躲避杀毒软件,延缓动态分析。加壳后的恶意软件由于代码被加密和混淆,其特征与原始文件不同,因此可以绕过基于特征码的检测。即使动态分析工具(如沙箱)能够运行加壳后的恶意软件,加壳工具也可以设置条件触发机制,例如只有在特定的环境或条件下才会解压和执行真正的恶意代码,从而延缓或干扰动态分析。
它的 主要原理 就是加壳工具会在恶意软件的原始代码外添加一层“壳”,这层壳负责在运行时解压和解密原始代码,然后将控制权交给真正的恶意代码。而分析人员需要使用脱壳工具(如超级巡警脱壳机等)来去除这层壳,恢复恶意软件的原始代码,才能进行进一步分析。

恶意软件分类:

恶意软件(Malware)是一类具有恶意意图的软件,旨在对计算机系统、网络或用户数据造成损害、干扰或未经授权的访问。恶意软件的主要分类如下:

  1. 病毒(Virus)
  • 定义:病毒是一种能够自我复制并感染其他程序或文件的恶意软件。它通常通过修改其他文件或程序来传播自身代码。
  • 传播方式:病毒可以通过电子邮件附件、可移动存储设备(如U盘)、软件安装包等传播。
  • 危害:病毒可能会破坏文件系统、删除数据、消耗系统资源、降低系统性能,甚至导致系统崩溃。例如,“CIH”病毒(又称“切尔诺贝利”病毒)会破坏计算机的BIOS,使计算机无法启动。
  1. 蠕虫(Worm)
  • 定义:蠕虫是一种能够自我复制并通过网络传播的恶意软件。它不需要依赖宿主程序,可以直接在系统之间传播。
  • 传播方式:蠕虫通常利用网络协议的漏洞或安全漏洞进行传播,例如通过电子邮件、即时通讯工具、共享文件夹等。
  • 危害:蠕虫会消耗大量网络带宽,导致网络拥堵,甚至使网络瘫痪。同时,它还可能携带其他恶意软件(如病毒或木马),进一步破坏系统。例如,“爱虫”蠕虫(ILOVEYOU)曾导致全球范围内的网络瘫痪。
  1. 木马(Trojan)
  • 定义:木马是一种伪装成合法软件的恶意程序,通常通过欺骗用户安装来获取对系统的控制权。
  • 传播方式:木马可能伪装成软件安装包、游戏、工具程序等,通过电子邮件、下载网站、社交媒体等渠道传播。
  • 危害:木马可以窃取用户的敏感信息(如密码、银行账户信息)、远程控制用户的计算机、下载其他恶意软件等。例如,一些木马会伪装成免费的软件更新,诱骗用户安装。
  1. 僵尸网络(Botnet)
  • 定义:僵尸网络是由大量被恶意软件感染的计算机组成的网络,这些计算机(称为“僵尸”)被攻击者远程控制,用于执行恶意任务。
  • 传播方式:僵尸网络通常通过木马、蠕虫等恶意软件感染计算机,并将受感染的计算机加入僵尸网络。
  • 危害:僵尸网络可以用于发动分布式拒绝服务攻击(DDoS)、发送垃圾邮件、窃取用户数据等。例如,Mirai僵尸网络曾攻击了全球多个重要的网络基础设施。
  1. 勒索软件(Ransomware)
  • 定义:勒索软件是一种加密用户文件并要求支付赎金以解锁文件的恶意软件。
  • 传播方式:勒索软件通常通过电子邮件附件、恶意广告、软件漏洞等渠道传播。
  • 危害:勒索软件会加密用户的重要文件(如文档、照片、视频等),并要求用户支付赎金(通常以比特币等加密货币支付)。如果不支付赎金,文件可能会被永久加密。例如,“WannaCry”勒索软件曾导致全球范围内的企业和机构遭受重大损失。
  1. 广告软件(Adware)
  • 定义:广告软件是一种在用户不知情的情况下推送广告的软件。它通常通过弹出广告窗口、更改浏览器主页等方式展示广告内容。
  • 传播方式:广告软件可能通过免费软件捆绑安装、恶意广告链接等方式传播。
  • 危害:广告软件虽然通常不会直接破坏系统,但会干扰用户的正常使用,降低系统性能,并可能收集用户的浏览习惯等隐私信息。
  1. 间谍软件(Spyware)
  • 定义:间谍软件是一种在用户不知情的情况下监视用户行为并收集用户数据的恶意软件。
  • 传播方式:间谍软件可能通过软件安装包、电子邮件附件、恶意网站等方式传播。
  • 危害:间谍软件可以收集用户的键盘输入、浏览历史、登录凭据等敏感信息,并将其发送给攻击者。例如,一些间谍软件可以记录用户的银行账户信息和密码。
  1. 根套件(Rootkit)
  • 定义:根套件是一种能够隐藏自身和恶意软件存在并获取系统最高权限的恶意软件。
  • 传播方式:根套件通常通过系统漏洞、恶意软件捆绑等方式传播。
  • 危害:根套件可以隐藏恶意软件的进程、文件和网络连接,使用户和安全软件难以发现其存在。它还可以篡改系统文件和设置,进一步控制用户计算机。

3. 实践过程

本次实践分为两个动手实践和两个分析实验。

动手实践任务一:

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。
首先打开cmd,键入cd 桌面来将路径切换到桌面,键入ls确定该路径下确实有RaDa.exe程序。

键入file RaDa.exe来查看文件类型,说明是以PE32格式下的可执行文件。

键入strings RaDa.exe查看可打印字符串,发现输出一堆乱码,这是加壳所致。


打开PEid,放入我们的恶意程序查看壳和它的扩展信息。

然后打开超级巡警之虚拟机自动脱壳器,将恶心程序放入,然后单击给我脱,将脱壳之后的恶意程序输出为RaDa_unpacked.exe。

再次打开cmd,键入strings RaDa_unpacked.exe查看脱壳之后的可打印字符串。不再输出乱码,脱壳成功。


打开IDA pro free,选择PE可执行的文件(如之前file命令下查看的一样),打开脱壳后的文件。向上翻找,可以找到作者名。

动手实践任务一完成!

动手实践任务二:

分析Crackme程序。需要在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

先试探性输入,先后键入crackme1.execrackme1.exe 1crackme1.exe 1 2crackme1.exe 1 2 3。发现都没有输出结果。

打开IDA分析程序。依旧选择PE可执行程序,选择crackme1.exe打开。

打开右侧Strings窗口。发现前四个中已经见过两个。第一个是参数不正确的返回情况;第三个是参数个数对但是内容不对的情况。

在上方菜单点击View->Graphs->Function calls打开函数调用图。重点查看401280函数段,因为该段和字符串输出有密切关系。

到达function里查看其汇编代码。


单击f12查看其流程图。从图中我们可以看到程序流程是先判断个数再判断内容,正确的时候输出应该是字符串”You know how to speak to programs, Mr.Reserve-Engineer”,正确的密码应该是一个字符串”I know the secret”。

回到cmd进行验证,键入”I know the secret”,发现输出”You know how to speak to programs, Mr.Reserve-Engineer”,表示成功运行程序。

接下来分析crackme2.exe。用上述同样的方法试探性输入,发现输入参数应该是只有一个。

打开IDA分析程序。依旧选择PE可执行程序,选择crackme2.exe打开。
然后按照刚刚的流程查看函数调用,依旧重点查看字符串输出的函数段。锁定401280段。

打开401280的流程图。可以看到,依然是先判断参数个数,然后判断文件名字,需要将文件名字改成”crackmeplease.exe”才能执行,最后是判断执行密码,密码与上相同。

去cmd中验证,键入copy crackme2.exe crackmeplease.exe复制并改名一份文件,然后键入crackmeplease.exe ”I know the secret”。最后成功执行,返回一个字符串”We have a little secret : Chocolate”

验证文件名正确密码不正确的情况。

动手实践任务二完成!

分析实践任务一:

分析一个自制恶意代码样本rada,在分析过程中回答问题。

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
键入md5sum RaDa.exe,查看其摘要。
键入file RaDa.exe来查看文件类型。

2、找出并解释这个二进制文件的目的;
使用process explore检测脱壳之后的RaDa_unpacked.exe,点击Strings查看字符串。如图所示,该程序意图用http访问目标ip为10.10.10.10的网页RaDa_commands.html,然后创建临时文件夹C:\RaDa\tmp保存下载文件,然后将RaDa.exe复制到C:\RaDa\bin目录下。这个文件要 准备进行DDOS攻击

3、识别并说明这个二进制文件所具有的不同特性;
往下翻,看到下图三个红框处。该程序依次读、写和删除注册表。然后判断了三个网段,该三个网段是RFC 1918规定的三个私有网段(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16),确保服务器在私有网段中,然后执行了exe、put、get来下载指定软件,然后用screenshot截图,最后用sleep休息了一段时间。

4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
打卡PEid,选择RaDa.exe检测,发现其防止被分析的技术为UX 0.89.6-1.02 /1.05-2.90 ->Markus & Laszlo。

5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
鉴于该程序 没有没有自我复制,没有通过网络传播,没有伪装欺骗,敲诈勒索等行为,只是从网络上下载软件并且准备进行DDOS攻击,因此判断他为僵尸网络。

6、给出过去已有的具有相似功能的其他工具;
Eggdrop、Cereals、Mirai、Mylobot等。

7、可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
如图所示,绿框中部分即为作者:Raul Siles & David Perez。

分析实践任务一完成!

分析实践任务二:

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

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

  • IRC(Internet Relay Chat)是一种用于实时聊天的协议。它允许用户通过客户端软件连接到一个聊天网络,在不同的频道(Channel)中与其他用户进行交流。用户可以发送消息、文件,还可以进行语音聊天(取决于客户端和服务器的支持情况)。例如,许多开源社区和游戏社区会使用IRC来组织成员之间的交流。它的工作原理是基于客户端——服务器架构。客户端是用户使用的软件,如mIRC、HexChat等。服务器是运行IRC软件的计算机,它负责管理客户端的连接、转发消息等操作。当一个用户发送消息时,消息首先被发送到服务器,服务器再将消息转发给该频道中的其他用户。

  • 当IRC客户端申请加入一个IRC网络时,它会发送一个“NICK”消息和一个“USER”消息。

    • NICK消息:用于 指定客户端的昵称。例如,客户端发送消息“NICK zty”,表示客户端希望在该IRC网络中使用昵称“zty”。昵称在整个网络中应该是唯一的,服务器会检查昵称是否已经被占用,如果昵称已经被其他用户使用,服务器会拒绝该客户端的连接请求,并提示客户端更换昵称。
    • USER消息: 用于向服务器提供用户的一些基本信息 ,如用户名、主机名、服务器名和用户的真实姓名等。格式一般为“USER username hostname servername :realname”。
  • IRC通常使用TCP端口6667。这个端口是IRC服务的默认端口,大多数IRC服务器和客户端都默认使用这个端口进行通信。除了6667端口,一些IRC服务器还会使用其他端口,如6660 - 6669范围内的端口。这些端口是备用端口,用于在6667端口被网络防火墙等限制时提供备用连接选项。

2、僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet)是一种由 大量被恶意软件 (通常称为“僵尸程序”或“Bot”)感染的计算机组成的网络。这些被感染的计算机被称为“僵尸主机”(Zombie Hosts),它们在用户不知情的情况下被黑客控制,用于执行各种恶意活动。僵尸网络的控制者(通常称为“僵尸网络主控者”或“Botmaster”)可以 通过一个中央服务器或分布式控制机制远程指挥这些僵尸主机

僵尸网络通常被用于以下恶意活动:

  1. 分布式拒绝服务攻击(DDoS)
    僵尸网络可以发动大规模的DDoS攻击,通过让大量僵尸主机同时向目标服务器发送海量请求,使目标服务器的网络带宽或处理能力被耗尽,从而导致正常用户无法访问服务。例如,攻击者可能会利用僵尸网络攻击竞争对手的网站、在线游戏服务器或金融服务平台,使其瘫痪。僵尸主机被命令向目标服务器发送大量虚假请求(如HTTP请求、UDP洪水等),目标服务器在尝试处理这些请求时会被淹没,无法响应合法请求。

  2. 垃圾邮件传播
    僵尸网络被广泛用于发送垃圾邮件(Spam)。控制者利用僵尸主机的电子邮件客户端或脚本程序发送大量垃圾邮件,这些邮件可能包含恶意链接、广告或诈骗内容。使用僵尸主机发送垃圾邮件可以隐藏攻击者的身份,并且由于僵尸主机数量众多,即使部分主机被封禁,攻击者仍然可以继续发送邮件。

  3. 恶意软件传播
    僵尸网络可以用于传播恶意软件,例如通过僵尸主机向其他计算机发送带有恶意附件的电子邮件,或者通过网络钓鱼链接诱导用户下载恶意软件。僵尸主机可以利用自身的网络连接和社交关系,将恶意软件传播到更多目标设备上,从而扩大僵尸网络的规模。

  4. 数据窃取和隐私侵犯
    僵尸程序可以窃取用户设备上的敏感信息,如登录凭证、信用卡信息、个人隐私数据等,并将这些数据发送回控制者。僵尸程序通常会监控用户的键盘输入(键盘记录器)、浏览器活动(网页截图或窃取Cookie)或系统文件,然后将这些信息上传到控制者的服务器。

  5. 点击欺诈
    僵尸网络可以用于点击欺诈,通过模拟用户点击广告链接,为攻击者或其合作伙伴获取非法的广告收入。僵尸主机被编程自动点击特定的广告链接,这些点击被广告商记录为有效点击,从而导致广告商支付费用,而实际点击行为是虚假的。

  6. 挖矿(加密货币)
    僵尸网络可以被用于加密货币挖矿。控制者利用僵尸主机的计算能力来挖掘加密货币,如比特币、门罗币等,而用户却可能毫不知情。僵尸程序会在后台运行挖矿软件,利用主机的CPU或GPU资源进行计算,将挖矿收益发送给控制者。

3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
使用wireshark打开文件botnet_pcap_file.dat,在过滤器中键入ip.src == 172.16.134.191 && tcp.dstport == 6667来查看通信的服务器,因为IRC的端口为6667,如图我们找到5个IRC服务器。分别为
209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172。

4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
在命令行中键入apt-get install tcpflow来安装tcpflow。
键入tcpflow -r botnet_pcap_file.dat”host 209.196.44.172 and port 6667”来获取209.196.44.172与172.016.134.191之间的所有的 IRC 数据包。

获得三个文件。

键入export LC_COLLATE='C',export LC_CTYPE='C'避免字符编码问题。
再使用管道命令进行筛选,键入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。得到3457个主机。

5、那些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 > zty1234.txt;wc -l zty1234.txt,找出所有连接主机的IP地址放入zty1234.txt文件中,显示有165个。

去桌面打开zty1234.txt发现确实有165条。

6、攻击者尝试攻击了那些安全漏洞?
先键入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一共有5个端口响应,分别是135(RPC:RemoteProcedureCall,远程过程调用)、139(NetBIOS会话服务)、445(SMB:Server Message Block,服务器消息块)、4899(远程控制软件(remote administrator)服务端监听的端口)、80号端口(HTTP协议)。UDP端口一共有1个端口响应,即137号端口(NetBIOS名字服务)。
这些端口都是流行网络病毒喜爱的后门端口,是黑客们最喜欢扫描的一些端口。

7、那些攻击成功了?是如何成功的?
用wireshark打开该文件,在过滤器中键入tcp.dstport==80,查看所有有关80端口的攻击。



可以看到攻击机向蜜罐发送了大量的无意义填充符号,靶机经常性发送错误报告报文,例如TCP Dup ACK(重复确认)和TCP ZeroWindow(接受缓冲区满)。这表明靶机遭受了缓冲区溢出攻击。
再往下翻,追踪流可以发现有红色蠕虫攻击的迹象。

对于端口4899,在过滤器中键入tcp.dstport==4899,该端口是一个远程控制软件radmin的默认端口,攻击者通过radmin控制靶机。推测应该是为方便后面的蠕虫控制做准备。


对于端口135,在过滤器中键入tcp.port==135,发现只是对端口的一个简单扫描,并没有攻击。

对于端口139,在过滤器中键入tcp.port==139,发现企图与许多主机建立连接,但是都失败了,该攻击没有成功。

对于端口445,在过滤器中键入tcp.port==139,向下翻,追踪流,我们发现有PSEXESVC.EXE字符串,这说明遭到了Dv1dr32蠕虫的入侵。而我们找出口流量,发现每个IP地址连入的连接都有回应一个远程调用,说明攻击成功。

而键入udp.port==137,没有攻击迹象。UDP端口137是名字服务。


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

  • 问题1:Window XP attacker所使用的浏览器过于落后,导致无法从学习通处下载所需要的可执行程序RaDa.exe。
  • 问题1解决方案:在vmware中给Window XP attacker安装所需要的vmware tool。之后将软件在本机下载后复制进虚拟机即可。

5. 实践总结

通过本次实验,我对恶意软件的分析和检测有了更深入的理解。动手实践任务让我掌握了文件类型识别、脱壳和字符串提取等基本技能,尤其是通过实际操作发现恶意代码编写作者的过程,让我感受到技术的力量。分析实践任务则让我学会了如何从多个角度剖析恶意软件,包括其目的、特性、防止逆向工程的技术以及分类依据等,还通过对网络数据的分析,了解了僵尸网络和攻击行为的特征。这些实验不仅提升了我的技术能力,也让我认识到网络安全的复杂性和重要性,激励我在未来的学习中更加注重实践与理论的结合,为应对网络安全威胁做好充分准备。


参考资料

TCP和UDP的135、137、138、139、445端口的作用
恶意软件分类大全

posted on 2025-04-20 16:55  zty1423  阅读(73)  评论(0)    收藏  举报