实验过程
实践一:恶意代码静态分析
任务:对提供的rada恶意代码样本(U盘或FTP/materials/course9下载),在WinXP_Attacker虚拟机中进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。
通过以上技术,我得出以下结论:
我们可以将该恶意程序归类为远程控制型恶意软件,其主要目的是远程控制受感染的系统,并执行各种恶意活动,包括文件操作和网络攻击。针对此类恶意软件,建议立即采取行动,包括隔离受感染系统、清除恶意文件并更新安全措施以防止进一步传播和攻击。同时,建议通报相关安全机构以便进一步调查和应对类似威胁。
-
使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和识别工具
-

-
-
- 文件格式为PE32,运行平台为Win32GUI,我的识别工具为PE Explorer
-
-
使用超级巡警脱壳机等托克软件,对rada恶意代码样本进行脱壳处理
-

-
运行rada程序,并使用软件process explorer进行监控,查看程序属性,发现作者名字Raul siles&David Perze。
-

-
实践二:动手挑战:分析crackme程序
任务:任务要求在WinXP Attacker虚拟机中利用IDA Pro进行静态或动态分析crackme1.exe和crackme2.exe,以发现特定的输入,使其输出成功信息。
-
分析crackme1.exe
-
首先分析crackme1.exe。对crackme1.exe进行执行,猜测是有参数的,经过试验,猜测这个程序的输入是一个参数。
-
在分析该程序时,我们使用IDA Pro打开后,通过Strings窗口检查程序中的字符串。在这些字符串中,我们发现了之前提到的两种反馈信息:“I think you are missing something.”和“Pardon? What did you say?”。这两种信息我们已经熟悉了,很容易推测出它们的含义:第一种情况可能是参数不正确,而第二种情况则可能是参数数量正确但具体内容不符合要求。
-
在IDA中按下F5反汇编获取C语言代码
-

-
-
成功使用参数,获取输出

-
实践三:样本分析,分析一个自制恶意代码样本
任务:作为安全事件处理者,我的任务是深入分析该二进制文件,并尽可能获取更多信息,包括其工作原理、目的和能力。以下是我采用的恶意代码分析技术:
-
静态分析:通过IDA Pro等工具对二进制文件进行反汇编和静态分析,以查看其代码逻辑、函数调用和数据结构。
-
动态分析:在受控环境中运行二进制文件,并使用调试器或监控工具跟踪其行为,包括文件操作、网络通信和系统调用。
-
字符串分析:使用Strings工具或IDA Pro的Strings窗口查找可疑字符串,包括命令、URL、注册表键等,以了解其功能和行为。
-
行为分析:监视程序运行时的行为,包括文件创建、注册表修改、进程注入等,以推断其目的和功能。
-
摘要信息:二进制文件可能是恶意软件,具有隐藏功能和破坏性。命名不影响其数字指纹。
-
目的:该二进制文件的目的可能是在受害者系统中执行恶意活动,如窃取信息、远程控制或传播其他恶意软件。
-
特性:可能具有文件加密、远程命令执行、后门功能等特性,以实现其恶意目的。
-
防御技术:可能采用代码混淆、反调试、加壳等技术来防止被分析或逆向工程。
-
分类:根据其目的和行为,可能属于后门、间谍软件或僵尸网络等类型的恶意软件。
-
相似工具:可能与其他恶意软件家族或变种具有相似的功能和行为。
-
开发者调查:根据代码特征、网络活动和其他间接证据,可能追踪到该二进制文件的开发者,但需要更多的信息和调查。
-
反编译分析:对关键函数进行反编译分析,以理解其功能和实现方式。
-

-
使用PE Explorer分析该恶意程序的运行环境,结果为win32位程序,有图形界面
-

-
网络连接:恶意程序通过HTTP连接到目标主机10.10.10.10上的名为RaDa_commands的网页,这表明它可能是通过命令和控制服务器(C&C)与攻击者进行通信。这种通信模式通常用于远程控制和命令执行。
-
文件操作:程序下载和上传某些文件,以及在受害主机的C盘目录下创建名为C:/RaDa/tmp的文件夹来保存下载的文件。这可能是用于执行后续的恶意活动,如数据窃取、文件传输或植入其他恶意软件。
-
DDoS攻击:进一步分析发现该恶意程序中包含可以执行DDoS拒绝服务攻击的功能。这表明该恶意软件可能被设计用于对特定目标发动网络攻击,导致服务不可用或系统崩溃。
-
-
- 文件格式为PE32,运行平台为Win32GUI,我的识别工具为PE Explorer
-
-

-
继续分析,发现该恶意程序对主机注册表进行了读写和删除操作
-

-
put:这个指令很可能是用于上传文件到远程服务器。当恶意程序执行该指令时,它可能会将指定的文件发送到指定的远程位置,用于数据盗窃或者传播其他恶意软件。
-
get:这个指令很可能是用于从远程服务器下载文件。当恶意程序执行该指令时,它可能会从指定的远程位置下载文件到受感染的系统上,用于植入其他恶意软件或者执行其他恶意活动。
-
sleep:这个指令很可能是用于使恶意程序进入休眠状态,即暂停执行一段时间。这种指令通常用于控制程序的行为,例如延迟攻击执行或者隐藏其存在。
-
screenshot:这个指令很可能是用于在受感染系统上执行屏幕截图操作。当恶意程序执行该指令时,它可能会截取当前屏幕内容,并将截图上传到远程服务器,用于监视受感染系统的活动或者窃取敏感信息
-

-
用wireshark监听,受害主机向目标主机68.169.175.168发送了大量的数据包
-

-
实践四:取证分析实践
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
-
IRC是什么? IRC的全称(Internet Relay Chat),以及用户如何连接到IRC服务器和频道。此外,IRC一般使用的TCP端口是6667(明文传输)和6697(SSL加密传输)。
-
僵尸网络是什么? 僵尸网络(Botnet)的定义和用途做了清晰的解释。强调了其用于DDoS攻击、发送垃圾邮件、窃取敏感信息等方面的典型用途。
-
蜜罐主机与哪些IRC服务器进行了通信? 使用了Wireshark打开了数据文件,并通过过滤条件找到了蜜罐主机与哪些IRC服务器进行了通信,其中包括了五个服务器的IP地址。
-
在观察期间,有多少不同的主机访问了以209.196.44.172为服务器的僵尸网络? 使用了tcpflow进行分流,并通过一系列指令统计了访问指定IRC服务器的不同主机数量,得出了结果。
-
哪些IP地址被用于攻击蜜罐主机? 使用了tcpdump和一系列命令来找出可能连接到蜜罐主机的IP地址,并得出了总共165个可能的连接主机的数量。

攻击了哪些安全漏洞首先要了解攻击了哪些端口,使用snort -r botnet_pcap_file.dat -c /etc/snort/snort.conf -K ascii指令先查一下网络流分布情况。我们发现大部分都是TCP包,有一部分UDP包,应该筛选出响应的TCP端口和UDP端口。

利用下面的指令筛选出蜜罐主机相应的TCP端口 ,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(rpc),139(netbios-ssn),25(smtp),445(smb),4899(radmin),80(http)

对端口进行逐个分析,可以更深入地了解网络流量的特性和潜在威胁。以下是你提到的端口的专业分析:
-
UDP端口137: UDP端口137通常用于NetBIOS Name Service(NBNS),在局域网环境中提供计算机的IP地址查询服务。由于此端口在局域网中通常处于自动开放状态,因此与此端口的通信往往意味着对NetBIOS服务的查询或访问。
-
TCP端口135和25: 通过筛选tcp.port==135 || tcp.port==25,观察到在这两个端口上没有数据交互的记录。这种现象可能表明攻击者正进行了对这两个端口的连接扫描(Connect Scanning),试图探测目标系统上是否有相应的服务正在运行。Connect扫描是一种常见的网络扫描技术,通过尝试建立到目标端口的TCP连接来确定该端口是否开放。在这种情况下,攻击者可能是在寻找开放的RPC(Remote Procedure Call)服务或SMTP(Simple Mail Transfer Protocol)服务,以便进一步的攻击或渗透测试。
通过这样的端口分析,我们可以更加细致地理解攻击者的目标和策略,为进一步的安全分析和响应提供有价值的线索。


-
我们通过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机做的几次回应均为一个iis服务器的默认页面,所以80端口的这些攻击均失败
-
接下来是TCP 139号端口, 虽然有很多连接到这个端口的,但是基本都是一样的,大部分都是连接,然后很多空会话,同样这个也没有成功,这个应该是个SMB查点。
-

-
TCP 4899端口。只有一个IP访问过,即210.22.204.101。可以查得4899端口是一个远程控制软件radmin服务端监听端口,这个软件不是木马,应该是上面攻击成功后上载的这个软件方便控制
-

-
遇到问题
-
为什么要在汇编中找C语言代码?
-
使用F5直接查看C语言代码确实是一种直接而快速的方法,能够让你迅速了解程序的高层逻辑和结构,对于简单的程序来说可能已经足够。但是,在涉及到复杂或者混淆程度较高的程序时,仅仅依靠查看C语言代码可能会有一些局限性,因为:
-
反调试和反分析技术: 一些程序可能会采用反调试和反分析技术来阻止直接通过F5查看C语言代码。这些技术可能会隐藏或篡改程序的逻辑,导致F5调试时看到的C语言代码并不完整或者不准确。
-
优化和混淆: 程序经过编译器优化和混淆之后,C语言代码与汇编代码之间的对应关系可能变得更加复杂,直接查看C语言代码可能不足以完全理解程序的逻辑。此时,查看汇编代码可以帮助你更直接地理解程序的底层实现细节。
-
漏洞分析: 对于一些漏洞类型,例如缓冲区溢出或者格式化字符串漏洞,直接查看C语言代码可能不足以发现问题所在。通过查看汇编代码,你可以更清晰地了解程序的内存布局和指令执行流程,从而更容易发现潜在的漏洞。
文章详细描述了在WinXPAttacker虚拟机中对恶意代码进行静态分析的过程,包括文件类型识别、脱壳、字符串提取,发现rada恶意代码的性质和功能。还涉及了动态分析、crackme程序分析以及恶意二进制文件的深入剖析,展示了作者在安全事件中的应对策略和技术应用。
933

被折叠的 条评论
为什么被折叠?



