20222313 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. 实践过程

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

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

file命令查看文件格式

file命令用来识别文件类型,也可用来辨别一些文件的编码格式。它通过查看文件的头部信息来获取文件类型,不像Windows通过扩展名来确定文件类型。

输入file RaDa.exe,可以看出rada.exe文件是32位的pe文件,能在基于interl 80386的cpu的windows系统上运行,有3个部分,有GUI界面。

PE Explorer查看文件格式、运行平台

除了在linux中使用file命令,在windows中可以借助程序解析器等工具查看文件信息,如PE Explorer。PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对
32位可执行程序进行反编译,并修改其中资源。

如下图所示,“Machine(处理器)”字段是运行平台,内容为0x014c,表明可运行在Intel386处理器或后续兼容处理器;“Magic(魔术)”字段是文件类型,内容为0x010B,表明这是一个32位的PE文件。

PEID查看加壳工具

当加壳的程序运行时,会首先运行一小段脱壳代码,来解压缩加壳的文件。可以使用PEid这款工具。虽然PEid工具在2011年4月就停止更新了,但是还是可以识别大多数的壳。

可以看到,识别结果为“UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo”,可知该程序加的是UPX的壳,版本是0.89.6。

2.1.2 使用脱壳软件,对rada恶意代码样本进行脱壳处理

直接使用PEiD自带的插件用于脱壳,脱壳后,得到RaDa.exe.unpacked.exe文件。

2.1.3利用字符串提取工具对脱壳后的样本进行分析

打开IDA Pro,选择PE Executable,并选择脱壳之后的样本,一直点击确定。

打开Strings界面,在该界面发现疑似作者名称的字符串[c] Raul Siles && David Perez,同时发现软件制作时间为2004年9月。

2.2利用IDA Pro静态或动态分析所给的exe文件

在终端中直接运行crackme1.exe,并在文件名后多输入一个或多个参数,通过运行结果可以看到,输出时有“I think you are missing something.”和“Pardon?What did you say”两种模式,因此关键在于找出正确的参数。

点击View->Graphs->Function calls,打开函数调用图,发现sub_401280调用了strcmp、printf等这些有关字符串处理的函数,可以合理推测它在参数判断中有重要作用。

在Functions页面点击sub_401280。

分析可知,当输入"I know the secret"时,可以得到正确的输出。

2.2.2分析crackme2.exe

尝试运行crackme2.exe,发现它和crackme1一样,需要输入正确的参数才能得到正确的输出。

同样打开函数调用图,发现sub_401280调用了strcmp、fprintf、putchar、puts这些字符串处理函数。

在Functions页面点击sub_401280,打开函数流程图。

这一流程和crackme1.exe中看到的流程类似,但多了一个第一个参数的判断流程,由此可以推断出函数需要将第一个参数改成特定名称。

将文件名改为crackmeplease后,再次输入参数"I know the secret",可以看到程序输出了正确的结果。

2.3分析恶意代码样本rada,并撰写报告

2.3.1信息获取过程

在kali中输入file RaDa.exemd5sum RaDa.exe,可以得到RaDa.exe的基本信息和md5摘要。

打开process explorer,运行Rada.exe,双击进程查看Strings窗口。

在Strings窗口中,可以看到下面的重要信息。

对这些信息进行合理分析,其操作可能是:

(1)注册表操作:

通过修改注册表项 HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ 来实现持久化,确保每次系统启动时自动运行。

可能会读取或删除其他注册表项,以达到隐藏自身或其他恶意目的。

(2)文件系统操作:

在特定路径如 C:\RaDa\ 下创建或操作文件,包括可执行文件 RaDa.exe 和临时文件夹 C:\RaDa\tmp。

使用脚本语言(如 VBScript)进行文件上传和下载操作。

(3)网络活动:

与外部服务器通信,使用 HTTP 协议访问特定的 URL 地址,例如 http://10.10.10.10/RaDa/。

可能会利用 CGI 脚本(如 cgi-bin/download.cgi 和 cgi-bin/upload.cgi)来下载额外的组件或上传数据。

可能会尝试进行 DDoS 攻击,如提到的“Starting DDoS Smurf remote attack...”。

(4)系统信息收集:

获取系统的 MAC 地址和其他网络配置信息。

可能会查询系统中的其他信息,如安装路径等。

(5)用户界面:

提供了一个简单的图形用户界面(GUI),允许用户执行一些命令,如安装、卸载、显示使用说明和配置等。

(6)脚本和命令行工具:

使用 VBA 和其他脚本语言进行自动化操作,如文件系统对象操作、注册表操作等。

可能会调用系统命令行工具,如 cmd.exe 或 wscript。

(7)安全挑战:

提到“Security through obscurity is the key”,暗示该恶意软件可能试图通过混淆代码或隐藏其真实意图来逃避检测。

2.3.2问题回答

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

摘要:caaa6985a43225a0b3add54f44a0d4c7。

基本信息:格式是可执行文件exe,运行平台是win32,文件运行时有图形界面,包含三个字节。

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

这个恶意程序的目的可能是在系统上安装恶意软件,使其在启动时自动运行,并发起DDoS攻击。

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

1)在注册表中进行修改操作。

2)在文件系统中进行创建目录、下载文件等操作。

3)发动DDoS攻击。

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

这个文件采用了UPX壳。UPX会在可执行文件的头部插入一段壳代码,这段壳代码负责在程序运行时解压原始程序的代码,并跳转到原始程序的入口点执行。UPX的本意是进行压缩,然而
也可以用于混淆,防止被分析或逆向工程。

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

它是一个后门程序。理由:

1)没有呈现出自我复制和传播的特点,不是病毒或蠕虫。

2)没有伪装成正常程序,不是木马。

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

msfvenom,veil

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

可以使用IDA Pro发现开发作者名称,在process explorer的Strings窗口,也可以找到这一信息。

alt text

1)需要有特定的技术环境支持,比如各种字符串提取工具。

2)文件需要未经过混淆处理(加密/压缩等)。

3)作者需要留下自己的相关信息。

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

1)基于特征码的检测

基于特征码的检测是最传统的恶意软件检测方式之一。这种方法通过收集已知恶意软件的特征码(即恶意软件中独特的二进制模式或字符串),将其存储在数据库中。当扫描文件时,将文件与数据库中的特征码进行比较,如果发现匹配项,则认为该文件可能包含恶意软件。

2)行为分析

行为分析侧重于观察程序运行时的行为,而不是仅仅依赖静态特征。它会监控系统调用、网络活动等,寻找异常或不符合正常应用程序行为的迹象。

3)虚拟机沙箱检测

虚拟机沙箱是一种隔离环境,在这个环境中可以安全地运行可疑程序而不会影响宿主系统。通过在沙箱内执行程序并监控其行为,可以评估程序是否具有恶意性质。

  1. 主动防御技术

主动防御技术不仅仅是在发现威胁后做出反应,而是通过预测和阻止可能的攻击途径来防止恶意软件的安装和传播。这包括但不限于实时监控、应用程序控制、自动更新安全策略等措施。

  1. 机器学习与人工智能

利用机器学习算法分析大量数据集,从中学习正常和异常行为之间的差异。一旦训练完成,模型就可以用于预测新的样本是否可能是恶意的。

2.4 取证分析实践

问题回答:

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

IRC是Internet Relay Chat的英文缩写,中文一般称为互联网中继聊天,是一种应用层的协议。其主要用于群体聊天,但同样也可以用于个人对个人的聊天。IRC采用TCP通讯方式,默
认登录端口为TCP 6667。当TCP 6667端口不通时,客户端会尝试连接其他不同的TCP端口,直到连接成功或尝试失败。TCP 6667端口是IRC通信的主要端口,用于客户端与服务器之间
的数据传输和交互。

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

僵尸网络(英文名称叫Botnet),是互联网上在网络蠕虫、特洛伊木马、后门工具等传统恶意代码形态的基础上发展、融合而产生的一种新型攻击方法。往往被黑客用来发起大规模的网
络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。

僵尸网络通常被黑客用来发起大规模的网络攻击,例如分布式拒绝服务攻击(DDoS)等。

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

首先,我们使用Wireshark打开数据文件botnet_pcap_file.dat,过滤源IP地址为172.16.134.191,目的端口为6667或6697

设置过滤条件为:ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6697

过滤统计结果有如下五个IP地址:

63.241.174.144
66.33.65.58
217.199.175.10
209.196.44.172
209.126.161.29

因此得到蜜罐主机与以上IP地址的IRC服务器进行过通信。

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

输入命令apt-get install tcpflow,安装软件tcpflower。

下载完后,输入命令tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667",筛选指定的IP地址和端口。

可以看到,该目录下新增了下列文件。

我们关心的是访问IP地址为209.196.44.172的主机,所以使用命令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

可以看到,有3461个不同的主机访问了这一僵尸网络。

2.4.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 > 20222313rhn.txt;wc -l 20222313rhn.txt,将攻击蜜罐主机的ip筛选出来并输出至文件中。

打开文件可以看到,共有165个IP地址用于攻击蜜罐主机。

2.4.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

可以看到,响应的端口有135(RPC远程过程调用)、139(NetBIOS/SMB)、25(SMTP简单邮件传输协议)、445(SMB,用于文件、打印机等的共享)、4899(Radmin,用于远程控
制)、80(HTTP)。

再输入命令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(NetBIOS)。

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

(1)端口为25。

输入tcp.port == 25 &&ip.dst == 172.16.134.191进行端口为25的数据包过滤。

可以看到,只是普通的建立连接,攻击者可能对端口25进行了connect扫描。

(2)端口为135

输入tcp.port == 135 &&ip.dst == 172.16.134.191进行端口为135的数据包过滤。

可以看到,只是普通的建立连接,没有发生攻击。

(3)端口为139

输入tcp.port == 139 &&ip.dst == 172.16.134.191进行端口为139的数据包过滤。

可以看到,多为正常的连接,没有发生攻击。

(4)端口为445

输入tcp.port == 445 &&ip.dst == 172.16.134.191进行端口为445的数据包过滤。

可以发现数据包中有PSEXESVC.exe,是一种蠕虫病毒,因此端口445被攻击。

(5)端口为80

输入tcp.port == 80 &&ip.dst == 172.16.134.191进行端口为80的数据包过滤。

可以看到数据包中存在大量A,因此判断为缓冲区溢出攻击。

(6)端口为4899

输入tcp.port == 4899 &&ip.dst == 172.16.134.191进行端口为4899的数据包过滤。

可以看到,多为正常的连接,没有发生攻击。

(7)端口为137

输入udp.port == 137 &&ip.dst == 172.16.134.191进行端口为137的数据包过滤。

可以看到,可能在对137端口在进行NetBIOS查点。

综上所述,tcp的445和80端口实现了攻击。

3. 问题及解决方案

问题1:过滤出数据包以后不能分辨各种攻击的类型。

解决方案:请教老师同学,在网上查阅资料。

4. 学习思考、感悟等

通过这次实验,我对恶意代码、僵尸网络、病毒、蠕虫等概念有了更加扎实的掌握,并熟悉了多种分析方法和技术,例如使用PEID、IDA Pro、Process Explorer等软件。特别是在运用IDA Pro进行静态或动态分析的过程中,需要借助函数调用图、流程图等手段推测程序的行为模式。

在处理rada时,我利用Process Explorer等工具提取和解析关键信息。而在数字取证分析环节,借助Wireshark和tcpflow等工具对蜜罐主机的网络活动进行分析的经历,则使我意识到,有效的网络流量监控是预防和应对网络威胁的关键。

尽管此次实验的操作并不复杂,但涉及的步骤众多,理解起来也有一定难度。完成整个实验后,实践技能得到了显著提升,对网络安全领域的认识也更加全面和深入。未来,我将继续加强专业知识的学习,致力于为网络安全领域的发展做出贡献。

posted @ 2024-11-09 10:34  冉皓宁  阅读(12)  评论(0编辑  收藏  举报