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

1.实验内容

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

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:

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

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

(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

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

三、分析一个自制恶意代码样本rada并回答以下问题:

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

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

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

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

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

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

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

(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。

四、取证分析实践

Windows 2000系统被攻破并加入僵尸网络

问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:

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

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

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

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

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

(6)攻击者尝试攻击了那些安全漏洞?

(7)那些攻击成功了?是如何成功的?

2.实验过程

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

(1)由于windows不支持file命令,为了方便起见,通过XFTP将可执行文件RaDa.exe传到kali上,进入到rada文件的路径,使用file命令查看文件类型

【文件名:RaDa.exe 文件类型:PE32 可执行文件(GUI) 目标架构:Intel 80386 操作系统:MS Windows 节区数量:3】
【这意味着:RaDa.exe 是一个为Windows操作系统设计的图形用户界面(GUI)应用程序,使用Intel x86架构,并且包含三个节区。】

(2)在Kali命令行中使用用strings命令查看字符串

【可以发现字符串都是乱码————>文件可能被加密过】

(3)通过使用PEID工具,查看RaDa.exe可执行文件的基本信息。

【图中可以看出UPX 0.89.6-1.02 /1.05-2.90->Markus & LaszloRaDa.exe文件使用了UPX加壳技术】

(4)通过使用超级巡警对DaRa.exe可执行文件进行脱壳

(5)脱壳成功之后会有一个RaDa_unpacked.exe文件,而后通过XFTP将该文件传入Kali中,再次使用strings命令查看RaDa_unpacked.exe文件。

【可以看到一些函数调用和变量声明】

(6)通过IDA Pro打开RaDa_unpacked.exe,通过以下顺序按键ViewOpen subviewsstrings查看字符串,便可以找到编写作者。

(7)右键单击setup,更改allowed string types为Unicode-cstyle,再次查看,结果如图:

  • Copyright:表示这是版权声明。
  • 2004:版权年份,表明该作品或软件是在2004年创作的。
  • Raul Siles & David Perez:版权持有者的名字,表示该作品或软件是由Raul Siles和David Perez共同创作的。

【2004年由Raul Siles和David Perez创作的作品或软件受到版权保护。】

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

1.分析crackme1.exe

(1)将文件crackme1.exe文件通过XFTP,传输到kali中,通过file查看该文件信息。

【从结果中可以看出,这是Windows系统中的标准可执行文件格式,通常用于命令行程序。】

(2)在windows命令行中运行crackme1.exe文件,尝试····试探输入格式。结果如下:

【通输入后的反馈来看,正确的输入格式应该是带1个参数

(3)使用IDA Pro打开crackme1.exe,打开Strings界面查看字符串。

查看前四条,其中有两条在上述测试中已经才见过,猜测I know the secret

(4)在IDA界面的view-->graphs-->Function Call查看函数调用图

(5)从函数调用中可以看的出来,sub_401280是很关键的,通过点击Function选择sub_401280来具体查看

(6)验证,看到参数输入格式,确实是带一个参数输入。

(7)在下图中可以看到cmp [ebp+arg_0],2可以继续往下看,这是一个比较两个字符串的内容。

(8)从这个strcmp中看的出来,正确的参数(密码)是I know the secret,猜测正确!!!

【左右两个各一个push 字符串内容,左边的我们已经见过,是格式正确后输出的,说明格式正确但是内容不正确,那右边的You Know ...应该就是格式内容都正确后输出的内容】

(9)验证:在命令行中输入crackme1"I know the secret"【注意,字符串参数要带引号输入,否则会报错】

【结果不出所料!yes!】

2.分析crackme2.exe

(1)先用IDA Pro打开crackme2.exe,打开Strings界面查看字符串。

【有前5条是有效信息,可以看出大致分为是否有‘\n’,有‘\n’的大概可能为一个回答,一个输出内容,没有'\n'的crackmeplease.exeI know the secret,依旧猜测I know the secret为密码,另一个作用还不清楚,接着分析.....】

(2)运行crackme2.exe文件,试探输入格式,依旧是带1个参数

(3)在IDA界面的view-->graphs-->Function Call查看函数调用图


【可以看出 sub_401280段依旧很重要】

(4)在Function中点击进入sub_401280进行查看

【难道密码是crackmeplease.exe???之前猜错了?】

(5)验证一下看是否正确。


【进入失败!】

(6)继续查看,发现

【两个过程很相似,只是第二个有了一个小的偏移,所以这个就是说要检查第一个参数是否是crackmeplease.exe,不是则输出I have an identity problem.再检查第二个参数是否是I know the secret,则输出Pardon? What did you say?

(7)验证猜想,将crackme2.exe文件复制一份,副本文件名为crackmeplease.exe,再测试。

We have a little secret:Chocolate就是进入之后的正确输出!】

三、分析自制恶意代码样本rada

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

(1)输入certutil -hashfile D:\AStudyFILES\A2024网络攻防\第四章\EXP4\rada\RaDa.exe MD5得到 MD5的哈希值:caaa6985a43225a0b3add54f44a0d4c7

(2)识别同一样本的基本信息:输入file RaDa.exe可知程序是一个windows系统下运行的32位可执行程序。

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

(1)打开Process Explorer并双击运行RaDa_unpacked.exe(RaDa.exe文件脱壳后的文件)

(2)在strings页面查看文件中的字符串

【从上述图片中可以看出RaDa_unpacked.exe文件http连接到10.10.10.10并进行数据传输;在C盘创建文件夹C:/RaDa/tmp;将文件rada.exe复制到C:\RaDa\bin;对主机的注册表进行了读写和删除操作;还有截屏、休眠等操作】

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

  • 文件被执行后,其将自身安装到系统中,并修改注册表达到开机自启动;
  • 程序启动之后,会将自己复制到c盘中,并且与10.10.10.10连接,将传输的文件保存到c盘中;
  • 程序启动之后,可执行put上传、get下载、screenshot截屏、sleep挂起等命令。

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

  • UPX加壳技术

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

  • 该程序不具备自我复制和自我传播的特性,不是病毒或蠕虫;
  • 该程序没有伪装成正常程序,是直接存在的,不是木马;
  • 该程序可以通过在目的主机上执行来获取目的主机的Shell,能够接收指令、操控主机,所以该程序可能是后门程序。

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

以往实验中通过msfvenom生成的后门程序

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

方法一:通过查看脱壳后的程序字符串得知此病毒的作者是是Raul Siles 和 David Perez,创建时间是2004年。

方法二:在文件所在目录文件夹中输入RaDa.exe --authors命令,弹窗会出现其开发作者。

8. 给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。

(1)基于特征码的检测
基于特征码的检测是最传统也是最直接的一种方法。这种方法依赖于已知恶意软件的数字签名或特征码。每个恶意软件都有其独特的代码片段,这些片段可以被提取作为特征码。当安全软件扫描一个文件时,会将文件的内容与数据库中的特征码进行对比,如果发现匹配,则认为该文件是恶意的。
(2)行为分析
行为分析侧重于观察程序的行为模式,而不是其静态特征。这种技术通过监控程序的活动来识别潜在的恶意行为,如修改系统设置、创建隐藏文件、尝试连接到可疑的网络地址等。
(3)启发式分析
启发式分析是一种更高级的静态分析方法,它不仅检查已知的恶意特征,还会根据某些规则或算法来评估程序的可疑程度。这种方法可以识别那些虽然没有明确的恶意特征码,但是行为模式异常的程序。
(4)沙箱环境测试
沙箱环境测试是指在一个隔离的环境中运行疑似恶意软件,以观察其实际行为。沙箱能够模拟真实的操作系统环境,同时防止任何恶意活动对主机造成损害。这种方法可以揭示恶意软件的真实意图,而不仅仅是基于静态代码分析。
(5)文件完整性监测 (File Integrity Monitoring, FIM)
文件完整性监测是一种监控关键系统文件和配置文件是否发生变化的技术。FIM工具会记录这些文件的初始哈希值,然后定期重新计算哈希值并与原始值进行比较。如果检测到变化,这可能是恶意软件活动的迹象。
(6)基于系统日志分析
系统日志分析涉及收集和分析操作系统、应用程序和服务生成的日志文件,以识别异常活动或潜在的恶意行为。日志文件可以包含登录尝试、文件访问、网络连接等信息。通过分析这些日志,可以发现恶意软件的活动痕迹。

四、取证分析实践

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

(1)IRC (Internet Relay Chat) 是一种实时的互联网聊天协议,允许多个用户通过网络连接到一个中央服务器,然后加入不同的频道(类似于聊天室)进行交流。IRC支持文本消息、私聊、文件传输等多种功能,广泛应用于在线社区、技术支持和即时通讯等领域。

(2)当IRC客户端申请加入一个IRC网络时,会发送一系列命令来完成连接和身份验证。以下是主要的步骤和命令:
连接到服务器:客户端首先需要通过TCP连接到IRC服务器;

  • 发送NICK命令:客户端发送 NICK 命令来设置用户的昵称(nickname);
  • 发送USER命令:客户端发送 USER 命令来提供用户的详细信息,包括用户名、主机名、服务器名和真实姓名。
  • 加入频道:客户端发送 JOIN 命令来加入特定的频道。

(3)IRC常用的TCP端口

  • 6667:这是IRC的标准端口,大多数IRC服务器默认使用这个端口。
  • 6697:这是一个常用的SSL/TLS加密端口,用于安全连接。

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

  • 僵尸网络(Botnet) 是一组被恶意软件感染并受远程控制的计算机系统。这些被感染的计算机被称为“僵尸”(Bots),通常在不知情的情况下被黑客控制。僵尸网络可以由几台到数百万台计算机组成,这些计算机通过互联网连接在一起,形成一个分布式网络。
  • 僵尸网络的常见用途
    • 分布式拒绝服务(DDoS)攻击
    • 发送垃圾邮件
    • 窃取敏感信息
    • 挖掘加密货币
    • 传播恶意软件

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

(1)使用wireshark打开数据包botnet_pcap_file.dat,并且通过ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6667进行过滤查看。

【从数据包可以得出,蜜罐主机与5台IRC服务器进行了连接,各自的ip分别为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为服务器的僵尸网络?

(1)在Kali命令行中输入sudo apt install tcpflow下载tcpflow。

(2)在kali命令行中输入tcpflow -r botnet_pcap_file "host 209.196.44.172 and port 6667筛选ip和端口

(3)kali命令行中输入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 "\r" | grep -v "^$" | sort -u | wc -l查看有多少个个主机访问了僵尸网络。


【由图中可知,有3461个主机访问了僵尸网络】

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

(1)在Kali中输入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 > 20222326Rong.txt;wc -l 20222326Rong.txt将攻击蜜罐主机的ip筛选出输出至20222326Rong.txt文件中。

(2)查看20222326Rong.txt文件。

6.攻击者尝试攻击了那些安全漏洞?

(1)在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端口号。

【由图中可以看出,筛选出的端口号有 135 139 25 445 4899 80

(2)在Kali中输入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端口号。

【由图中可以看出,筛选出的端口号有 137

(3)使用wireshark打开文件botnet_pcap_file.dat,通过ip.dst == 172.16.134.191 && tcp.port == 135过滤规则查看数据包。

【135端口:正常连接,没有数据交换。】

(4)通过ip.dst == 172.16.134.191 && tcp.port == 139过滤规则查看数据包。

【139端口:正常连接,没有数据交换。】

(4)通过ip.dst == 172.16.134.191 && tcp.port == 25过滤规则查看数据包。

【25端口:正常连接,没有数据交换。】

(5)通过ip.dst == 172.16.134.191 && tcp.port == 445过滤规则查看数据包。

【发现了有61.111.101.78向蜜罐主机发送PSEXESVC.EXE文件,攻击者可以使用 PSEXESVC.EXE 在远程计算机上执行任意命令,包括但不限于文件操作、系统配置修改、数据窃取等】

(6)过滤条件设置为ip.dst==61.111.101.78查看从蜜罐发往攻击主机的数据包,看到了Acceptance,且数据包中找到了\PIPE\lsass,攻击者可以进行远程调用访问和管理权限


【主机发生响应,攻击成功】

(7)445端口消息交互中,发现了大量与 SVCCTL 相关的通信,Windows 系统中的 SVCCTL 接口用于与服务控制管理器(SCM)交互。

(8)过滤条件设置为tcp.dstport==4899 && ip.dst == 172.16.134.191查看数据包。


【带有[PSH, ACK]标记的数据包,通常是Radmin远程控制攻击所特有的。(Radmin是一款流行的远程桌面管理工具,允许用户远程控制另一台电脑)】但应该是失败了。【接下来,没有到ip=210.22.204.101的数据包】

(9)过滤条件设置为tcp.dstport==80 && ip.dst == 172.16.134.191查看数据包。

【有主机210.22.204.101向蜜罐发送了CCCCCCCCCCCCCCCCCCCCCCCCCCC,是缓冲区溢出攻击】

【有脚本攻击】

【这段网络流量主要是HTTP GET请求和响应。请求的URL中包含了一些随机生成的字符串,类似于常见的Web shell攻击手法。Web shell是一种轻量级的网页应用程序,可以让攻击者通过浏览器远程控制受害者的服务器。图中的数据包可能是在尝试获取Web shell的控制权。】

【发现蠕虫c:\notworm】


【查看80端口往外发的包,大概都是图里这种,所以推测攻击失败】

7.那些攻击成功了?是如何成功的?

445端口攻击:61.111.101.78向蜜罐主机发送PSEXESVC.EXE文件,在远程计算机上执行任意命令攻击成功。蠕虫利用SVCCTL接口的漏洞,连接服务控制管理器(SCM),获取目标主机的服务信息,实现对系统的控制。蠕虫通过利用SVCCTL接口的漏洞,能够连接到服务控制管理器(SCM),从而获取目标机器上的服务详情,并据此实现对系统的控制。
4899端口攻击:Radmin远程控制失败。
80端口攻击:缓冲区溢出、脚本、蠕虫和Web shell都失败了。

3.问题及解决方案

  • 问题1:在分析Crackme1.exe文件,最后进行验证环节的时候,对正确参数I know ~ 字符串没有加引号,一直没验证成功。
  • 问题1解决方案:通过加引号之后成功了。
  • 问题2:在process explorer并运行RaDa_unpacked.exe文件,然后查看Strings,但是我发现我文件运行不了,在process explorer也找不这个文件。
  • 问题2解决方案:运行该文件的时候,会弹出一个弹窗,不用管这个弹窗就可以在process explorer正常查看了。
    【一定是RaDa_unpacked.exe,而不是RaDa.exe文件,否则可能出现以下状况!】


【没有脱壳的文件是看不懂的!】

4.学习感悟、思考等

通过实际操作分析文件,数据包等等,我认识到了恶意代码的多样性和隐蔽性。这些恶意程序往往采用复杂的加密技术来逃避检测,同时它们能巧妙地利用系统漏洞进行传播和执行,给用户和网络环境带来严重的安全威胁。这提醒我在未来的安全防护工作中,必须保持高度警惕,不断学习最新的安全技术和防护手段,以应对不断变化的网络威胁。其次就是,实验中对恶意代码的逆向工程分析过程,提高了我的技术能力和问题解决能力。面对复杂的代码结构和逻辑,需要耐心细致地分析每一个细节,理解其工作原理。这一过程虽然充满挑战,但也极大地锻炼了我的逻辑思维能力和编程技巧,为将来处理类似问题奠定了坚实的基础。总的来说,这次实验相比较前几次需要安装一些插件什么的,要轻松很多,还有Crackme.exe文件分析视频作为参考,实在是太棒啦~~~

参考资料

  • 老师提供的演示视频

posted on 2024-11-07 10:53  20222326王蓉  阅读(6)  评论(0编辑  收藏  举报

导航