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

一、实验内容

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

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

(二)使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
(三)分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

(四)取证分析实践

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)那些攻击成功了?是如何成功的?

二、实验过程

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

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

1:使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
1.1先去学习通下载.rar压缩包并复制到虚拟机中,将文件提取出来后使用 file 命令查看RaDa.exe的文件类型
image

见RaDa.exe是一个Windows PE可执行文件,并且具有GUI(图形化界面)
1.2使用peid工具查看RaDa.exe的基本信息
image
文件格式:PE32说明该文件是32位的可执行文件。
运行平台:(GUI) Intel 80386, for MS Windows说明能在基于Intel 80386的Windows操作系统系统上运行。
加壳工具:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
3.使用超级巡警脱壳机脱壳,脱壳前后对比
通过strings RaDa.exe进行提取,没脱壳是有许多乱码
image

基本都是乱码,这是因为该文件被upx加壳的缘故,正常字符无法显示

2:使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
2.1对RaDa.exe进行脱壳
image

3:使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
3.1再用strings命令查看脱壳后的RaDa.exe(RaDa_unpacked.exe)
image
image
image
image

这时就会有正常的字符信息了。通过查找发现该恶意代码的作者为:Raul Siles和David Perez
image

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

1:使用file命令查看crackme的文件类型
Linux环境下自带file命令,
Windows 版本可以去 http://gnuwin32.sourceforge.net/packages/file.htm 下载
image
如图可知,这两个文件都是Windows PE可执行文件,但没有GUI,是命令行程序。

2:对crackme1.exe进行破解
尝试运行该程序,试探其输入格式
image

文件时,后面带一个参数的情况与其它几种情况不同,可能输入格式就是这种。
使用IDA pro工具打开该文件,尝试阅读分析:

image

在这里发现了之前运行产生的两种情况,同时还有额外的两种情况。
点击其中一个,查看出现提示语的汇编语言:
image

发现这些提示语都需要函数sub_401280。点击functions页面找到sub_401280函数并双击:
image

倒数第二行cmp [ebo+arg_0],2 为判断程序是否有两个参数。
image

根据第二个参数匹配,进行相应的分支。可以看出当用户输入“I know the secret”的时候,程序口令输入正确,若当用户输入不为“I know the secret”则显示“Pardon? What did you say?”,其余情况则显示“I think you are missing something.”。
image

3:对crackme.exe2进行破解
根据破解crackme.exe1的方法,发现主要函数还是sub_401280:
image

该文件的输入仍是两个参数的形式,
判断条件:
第一个参数是否是“crackmeplease.exe”,是则进行下一步比较,不是则显示"I have an identity problem."
第二个参数是否是"I know the secret",是则"We have a little secret:Chocolate"(这个结果是unk_403080 中的字符串分别与0x42h 进行异或运算得来的)否则显示 “Pardon? What did you say?”
其余则显示"I think you are missing something."
image
image
进行试验,发现正确

(三)分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1:提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息

在虚拟机中输入md5sum RaDa.exe查看MD5摘要值:
image

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

在学习通下载ProcessExplorer.rar并解压打开,随后双击运行unpacked的RaDa.exe文件,注意出现弹窗后不要点确定,在Process Explorer中双击进程,可以看到:
image

点击图片左侧的Strings页面查看文件的目的:
image
image
image
image
image

可以看出:运行该文件,会向http://10.10.10.10/RaDa发送请求,连接RaDa_commands.html进行上传或下载,放入文件C:\RaDa\tmp
运行RaDa.exe时,会自动复制该程序到C:\RaDa\bin中
image

Starting DDoSSmurf remote attack…说明还有分布式拒绝服务攻击
同时也会对注册表进行更改(读写和删除操作),相应的注册表(打开注册表编辑器)目录为HKLM\Software\Vlware, Inc.Vware ToolsiInstallPath和HKLM\Software"Hicrosoft\Windows\CurrentVersioniRun
image
image
还能控制电脑进行命令操作:get(下载),put(上传),screenshot(屏幕截屏),sleep(休眠)

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

(1)该二进制文件能对注册表进行读写和删除操作,添加了一个注册表项:实现了开机自启动RaDa。
(2)自我复制到C盘,将RaDa.exe复制在Rada\bin文件夹中。
(3)实现远程控制。
(4)实现入侵系统并操纵主机,能控制主机进行get、put、screenshot、sleep命令

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

使用了upx加壳来防止被分析。如以上所示,在没脱壳前,strings下看到的都是乱码,但脱壳后就能正常识别了。

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

其应该是一种后门。原因为它不会自主传播、复制,并且它没有进行伪装来获取权限,也不存在欺骗下载的操作。同时可以实现操控目标主机、提权的行为,是后门程序的主要特点,所以判定为后门。

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

实验二的后门程序获取主机或虚拟机的shell,能获取目标主机音频、摄像头、击键记录等内容。

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

方法一:运行RaDa_unpacked.exe,打开ProcessExplorer,找到运行中的该文件双击,再点击strings页面:
image
方法二:在Windows的命令提示符中,输入RaDa.exe --authors即可查看作者(需关闭防火墙)
image
除此之外,应当还有别的方法查看作者,此处不赘述。

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

(1)基于特征码检测
特征码检测(Signature-based Detection)是通过比对已知恶意程序的特征码来检测后门程序。特征码通常是程序代码的特定字节序列或哈希值,这些序列是已知的恶意软件的“指纹”。
工作原理:
数据库匹配:首先,建立包含已知恶意程序(包括后门程序)的特征码数据库。然后,对目标系统中的可执行文件进行扫描,提取其字节序列,并与特征码数据库中的已知恶意软件特征码进行比对。
检测方式:如果目标程序的特征码与数据库中的已知后门程序的特征码匹配,则可以标记该程序为可疑或恶意。
优缺点:
优点:实现简单、检测速度快,适用于已知恶意软件的检测。
缺点:只能检测已知的恶意程序,无法发现新的或变种的后门程序。
(2)行为分析法
行为分析法通过监控程序在执行过程中的行为来判断其是否具有恶意特征。后门程序通常会表现出异常的行为,例如:与外部服务器通信、修改系统配置或注册表、获取管理员权限等。
工作原理:
系统监控:实时监控系统中的程序活动,如文件访问、网络连接、注册表修改、系统调用等。
异常行为识别:通过与正常程序的行为进行对比,识别程序是否具有异常行为。如果某个程序尝试监听非标准端口、修改系统安全设置或进行网络通信等,可以标记为可疑后门。
沙箱技术:将程序在一个受控环境中执行,观察其行为是否符合正常应用程序的运行模式。
优缺点:
优点:能够发现未知的后门程序,通过行为特征来识别恶意程序。
缺点:需要较高的计算资源,实时监控可能会导致系统性能下降。此外,有些后门程序可能采用反监控技术,逃避检测。
(3)静态分析法
静态分析法是通过分析程序的源代码、二进制文件或可执行文件的结构来发现后门程序。该方法不需要执行程序,只通过对文件的内容进行深入的检查来检测潜在的后门。
工作原理:
二进制代码分析:分析程序的二进制代码,查找其中是否存在可疑的代码片段,比如与外部服务器通信的函数、特定的加密算法、恶意的系统调用等。
控制流分析:通过反汇编工具检查程序的控制流,寻找与恶意行为相关的指令或反常的代码路径。
字符串分析:扫描程序中的可识别字符串,寻找与后门功能相关的关键词(如网络地址、用户名、密码等)。
优缺点:
优点:不需要执行程序,适用于恶意程序的早期检测。
缺点:需要较强的分析能力,且面对复杂的加密和混淆手段,静态分析可能无法完全有效。
(4)基于网络流量分析
后门程序通常会与远程攻击者进行通信,因此通过分析网络流量可以发现潜在的后门行为。此方法通过监控和分析系统的网络流量,寻找异常的通信模式来检测后门程序。
工作原理:
流量监控:实时监控系统的所有网络通信,特别是外部连接和数据传输。
异常模式检测:通过分析流量的源IP、目的IP、传输协议、数据包大小等特征,识别是否存在与已知恶意行为模式相符的通信活动。比如,发现与外部命令控制服务器的可疑连接、加密的通信流量等。
流量行为关联:将流量模式与已知恶意网络活动的行为特征进行比对,发现潜在的后门通信。
优缺点:
优点:可以检测隐藏在网络中的后门行为,不需要直接分析本地文件。
缺点:可能会产生较大的数据流量,导致资源消耗较高。此外,一些后门程序可能使用加密、代理等手段隐藏其通信内容。
(5)内存分析法
内存分析法通过实时监控系统内存,检测是否存在恶意程序的后门代码。后门程序有时会在内存中加载自己并隐藏其踪迹,因此仅凭硬盘中的文件可能难以发现后门。
工作原理:
内存扫描:对系统内存进行扫描,寻找可疑的代码段、数据段或进程。恶意代码往往在内存中驻留且不被直接存储在磁盘上,因此内存分析可以帮助揭示这些隐秘的后门。
进程间通信监控:检查各进程之间的通信,是否存在异常的内存共享、注入或恶意的进程间操作。
动态分析:通过动态调试手段,可以追踪程序的内存加载过程,发现是否有后门代码通过注入或自加载方式进入内存。
优缺点:
优点:可以检测运行时的恶意代码,即使后门程序未存储在磁盘上也能被发现。
缺点:内存分析复杂,需要较强的技术支持,且可能会产生较大的计算负担。

(四)取证分析实践

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

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

IRC:IRC是英文Internet Relay Chat的缩写,中文意为“互联网中继聊天”。它是一种基于互联网的即时通讯协议,通过客户端软件连接到服务器上,用户可以在不同的聊天室中进行实时交流。与其他即时通讯工具相比,IRC具有开放性、稳定性和安全性等优势。
通常,IRC客户端在申请加入网络时,会发送一系列的消息与服务器进行握手和认证。而IRC使用的TCP端口通常是6667,但也可能因服务器配置的不同而有所变化。

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

僵尸网络(Botnet)是指通过一种或多种传播手段,感染大量计算机或其他设备,使其变成“僵尸”主机,进而组成一个由恶意控制者管理的网络。这些被感染的设备(通常称为“僵尸”或“bot”)会通过特定的控制通道与攻击者之间进行通信,接受指令并执行恶意活动。僵尸网络的名称源于它的特征——大量的计算机像“僵尸”一样被远程操控,执行攻击者的命令,通常没有用户的知情或同意。
僵尸网络的工作原理:
攻击者通过多种方式将恶意的“僵尸程序”(也称为bot)传播到互联网上的各类设备,包括个人电脑、服务器、路由器等。一旦感染了bot程序,这些设备就会加入僵尸网络,变成攻击者的遥控工具。感染后的设备通常会等待来自指挥控制服务器(C&C)的指令,然后执行各种恶意活动。
这些恶意活动可能包括但不限于:
分布式拒绝服务攻击(DDoS攻击):僵尸网络可以利用大量被感染的计算机发起联合攻击,对目标网站或服务器进行海量流量轰炸,导致目标服务器超载,甚至宕机,造成服务不可用。
垃圾邮件传播:僵尸网络还可以被用来发送大量垃圾邮件,邮件中可能包含恶意软件、钓鱼链接或其他诈骗内容,用于诱骗受害者下载病毒、泄露个人信息或进行其他欺诈行为。
数据盗窃:僵尸网络中的感染设备可以用来窃取存储在用户计算机中的敏感信息,如个人身份信息、信用卡信息、银行账号、甚至企业的商业机密。
恶意软件分发:攻击者还可以通过僵尸网络传播恶意软件,例如勒索病毒、间谍软件或其他类型的恶意代码,进一步感染更多设备或实施勒索攻击。
恶意挖矿:攻击者利用被感染的设备进行非法的加密货币挖矿。通过僵尸网络,攻击者可以在不被注意的情况下使用受害者的计算资源来挖掘比特币或其他加密货币,从而牟取不正当的经济利益。

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

将下载好的botnet_pcap_file.dat文件拖入打开的wireshark,输入:
ip.src == 172.16.134.191 && tcp.dstport == 6667ip.src == 172.16.134.191 && tcp.dstport ==
6667
image
发现蜜罐主机与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为服务器的僵尸网络?

首先在虚拟机中输入sudo apt install tcpflow安装tcpflow,再将文件botnet_pcap_file.dat拖到虚拟机中,然后命令行中输入
tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667:
使用命令来获取访问该服务器的主机数量
cat 209.196.044.172.06667-172.016.134.191.01152 | grep --text "^: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:
image

由上图可知有3461个结果。

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 > ipaddr.txt;wc -l ipaddr.txt:
image
再输入cat ipaddr.txt查看详细结果:
image
这些ip地址即被用于攻击蜜罐主机。

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端口:
image
然后我们再输入
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端口:
image
可以发现被攻击的端口结果如下:
TCP:135(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)
UDP:137(netbios-ns)
输入(tcp.dstport == 135 || tcp.dstport == 25)&& ip.dst == 172.16.134.191在Windows端使用Wireshark过滤TCP端口:
image
可以发现,25端口和135端口仅仅进行了TCP三次握手,没有明显的攻击行为。
再输入tcp.dstport80 && ip.dst == 172.16.134.191:
image
缓冲区溢出攻击。发送了好多重复字母的请求包,说明也许正在攻击服务器的漏洞从而获取系统权限。
image
但是以上攻击被蜜罐主机识别并发送RST数据包,所以80端口的攻击失败。
再输入tcp.dstport
139 && ip.dst == 172.16.134.191:
image
可以发现虽然多个IP尝试和蜜罐主机在此端口建立连接,但都被蜜罐主机识别并发送RST数据包,所以攻击也是失败的。
再输入tcp.dstport445 && ip.dst == 172.16.134.191:
image
可以发现,数据包有一个PSEXESVC.EXE。PsExec 是由 Mark Russinovich 创建的 Sysinternals Suite中包含的工具。最初,它旨在作为系统管理员的便利工具,以便他们可以通过在远程主机上运行命令来执行维护任务。后来因为太过方便,被利用到内网渗透之中。它是一种Dv1dr32蠕虫,并且每个IP地址连入的返回信息中含有\PIPE\ntsvcs,命名管道\Pipe\Ntsvcs是作为 SCM 和与特定服务交互的 SCP(服务控制进程)之间的远程过程调用接口,所以攻击成功。
输入tcp.dstport
4899 && ip.dst == 172.16.134.191:
image
可以发现只有210.22.204.101访问过这个端口,经查询可知该端口是Radmin远程控制工具,可能是被利用来控制蜜罐主机。
再输入udp.port==137:
image
NBNS是NetBIOS的命名服务,并不是攻击行为。

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

综上所述,445、4899的攻击是成功的,攻击过程与成功原因详见上文

三、问题及解决方案

问题:kali虚拟机中没有tcpflow
解决方案:
经上网查找资料,发现
sudo apt-get install tcpflow

四、实验感悟

通过本次《网络与系统攻防技术》实验,我获得了许多宝贵的经验,并深刻理解了理论与实践相结合的重要性。在恶意代码分析、可执行文件分析和取证分析的过程中,网络安全理论、操作系统原理以及编程技能等多方面的知识得到了实际应用。例如,在对 RADA 恶意代码样本进行分析时,从文件类型识别、脱壳到提取字符串寻找作者,每个步骤都涉及了多种技术和工具的结合使用。这种跨学科的实践使我加深了对相关知识的理解,也让我认识到,只有将理论知识与实践相结合,才能真正掌握并灵活运用网络安全的核心技能。
此次实验与前几次实验不同,不涉及大量命令和代码,而是侧重于分析端口及检测攻击行为。因此,对结果的分析与识别能力提出了更高要求。例如,在使用IDA Pro和ProcessExplorer分析RaDa_unpacked.exe时,需要理解汇编中的调用关系及strings中的信息含义。同样,在使用Wireshark时,如何运用过滤器及判断是否存在攻击行为,也是必须掌握的技能。这要求我们能够从实验结果中准确辨别并分析出引发这些结果的原因。这次试验,提高了我的能力,使我受益匪浅。

posted @ 2024-11-05 22:02  便便狗  Views(7)  Comments(0Edit  收藏  举报