1. 实验内容
1.1恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
1.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
1.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
1.4取证分析实践
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. 实验过程
任务一:恶意代码文件类型标识、脱壳与字符串提取
- kali虚拟机通过file 命令查看文件类型,这是微软 Windows平台、英特尔80386处理器的一个32位PE文件,并且是GUI文件;脱壳前有很多乱码
- 用PEID查看,发现用了UPX的压缩壳
- 超级巡警脱壳机脱壳
- 使用ida pro,可找到作者和时间
任务二:使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
- 查看crackme1.exe函数调用关系,发现如果输入"I Know the secret“,则程序可以顺利执行,弹出“you know how to ”
- 同理分析crackme2.exe,发现程序名要使用crackmeplease.exe,故先将crackme2.exe复制为crackmeplease.exe,再输入crackmeplease.exe “I know the secret”,弹出We have a little secret: Chocolate
- 验证:
任务三:分析一个自制恶意代码样本rada - 用MD5生成RaDa.exe的摘要信息
- 执行RaDa.exe,发现它将文件 RaDa.exe 复制到了 C:\RaDa\bin 目录下
- 使用process explorer,查看rada程序的执行信息
(1)二进制文件的摘要及其他信息:caaa6985a43225a0b3add54f44a0d4c7,是Windows平台下32位的可执行文件,使用upx加壳
(2)二进制文件的目的:生成文件,反弹连接到10.10.10.10,方便攻击者进行后续攻击。
(3)不同特性:自行复制到指定文件夹,修改注册表实现自启动
(4)采用的防止被分析或逆向工程的技术:UPX
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由:
该程序并没有自主传播,也没有伪装成正常程序,因此它是病毒和蠕虫也不是木马,而是一个后门程序,绕过了安全性控制而获取对系统的访问权限。
(6)给出过去已有的具有相似功能的其他工具:
2013年Sercomm在一些采用其硬件的DSL网关被发现有后门后采取的做法。 这个后门被发现是厂商自己加进去的,利用32764端口进行远程访问。
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
Raul siles和David Perze,2004。先脱壳,通过ida pro查看。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
- 基于签名的检测技术: 这种方法主要基于模式匹配的思想,为每种已知恶意代码产生一个唯一的签名特征标记来创建恶意代码库。这些签名包括文件名、内容字符串或字节等不同的属性。检测时,将未知代码的签名特征与恶意代码库进行对比,若存在相匹配的恶意代码签名,则判定为恶意代码;反之则判断为正常代码。这种方法的实现步骤包括专家手工找出或通过自动方法生成签名,然后提取出来以标志特定恶意代码的特征性质。
- 基于N-Gram的静态分析: 使用N-Gram方法提取恶意代码的字节序列特征,这是一种重要的静态分析方法。具体步骤是将原始字节序列使用一个长度为n的滑动窗口提取子序列的特征。在选择n值时需要进行权衡和调整,以获得最佳的检测效果。例如,Schultz等人提出了一种在Windows平台下使用N-Gram算法提取静态特征的方法,并选取了3种不同类型的特征进行分析,这些特征可以通过机器学习算法进行训练和分类。
- 基于API调用序列的深度学习模型: Hardy等人从可执行文件中提取API调用序列,并将其加入堆叠式自动编码器(SAE)深度学习架构模型中,该模型采用了无监督预训练和监督反向传播算法进行恶意软件检测和分类。
- 沙箱技术: 沙箱技术通过动态执行可疑文件来检测恶意软件。它能够深度解析文件基础信息数据,检测异常格式、异常信息,并提取文件关键行为数据,如关键API函数、恶意操作、异常通信信息等。沙箱技术还能监控恶意软件运行过程中申请、释放的关键动态内存,挖掘恶意IOC、恶意代码信息,并监视文件运行时动态行为数据,包括进程操作、文件操作、网络操作等。
- 基于行为分析的检测: 这种方法通过分析软件的行为来检测恶意软件。它不依赖于已知的恶意软件签名,而是通过监测软件的运行行为,如系统调用、文件操作、网络活动等,来识别恶意行为。这种方法可以检测未知的或零日攻击,因为它关注的是行为模式而不是特定的签名。
任务四:取证分析实践
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用那些TCP端口?
- IRC(Internet Relay Chat)是一种即时通讯协议,允许用户通过互联网进行实时文本通信。它采用了分布式客户端/服务器模型,允许用户加入不同的聊天室(频道),进行私密对话或群聊。IRC最初由芬兰学生Jarkko Oikarinen于1988年创建,作为一个用于在互联网上实时交流的系统。
- 当IRC客户端连接到一个IRC网络时,通常会发送一条消息以建立连接和进行身份验证。这条消息一般为:USER < username > < hostname > < servername >; < realname >
- IRC一般使用TCP协议进行通信。标准的IRC端口是6667。在某些情况下,IRC网络可能会使用其他端口,但通常情况下,客户端连接到服务器时会使用6667端口。如果服务器使用不同的端口,客户端需要在连接时指定该端口。
(2)僵尸网络是什么?僵尸网络通常用于什么?
- 僵尸网络是指黑客采用一种或多种传播手段,将大量主机感染僵尸程序病毒,被感染的主机通过控制协议接收黑客的指令,从而在黑客和被感染主机之间所形成的可一对多控制的网络
- 僵尸网络通常用于以下活动:*
-
分布式拒绝服务 (DDoS) 攻击:僵尸网络经常被用来发起大规模DDoS攻击,通过协调大量受感染设备的操作,僵尸主机可以用大量流量淹没目标的服务器或网络基础设施,使合法用户无法访问目标
-
垃圾邮件和电子邮件网络钓鱼:僵尸网络用于发送大量垃圾邮件,这些电子邮件可能包含不需要的广告、网络钓鱼尝试(攻击者冒充合法实体来诱骗收件人泄露敏感信息)或受恶意软件感染的附件
-
撞库和暴力攻击:僵尸网络可用于自动进行撞库攻击,尝试使用窃取的用户名和密码组合登录各种在线账户。暴力攻击是僵尸网络用来破解弱密码或常用密码的另一种方法,即机器人系统地尝试所有可能的组合
-
点击欺诈:僵尸网络有时被用来生成对在线广告的欺诈性点击,人为地增加广告展示次数或点击次数,导致广告商的经济损失或广告网络的操纵
-
加密劫持:僵尸网络可用于在设备所有者同意或不知情的情况下挖掘加密货币,利用多个受感染设备的计算能力来执行资源密集型的加密货币挖掘操作
-
信息盗窃:僵尸网络可能会被指示从受感染的设备窃取敏感数据,包括个人信息、信用卡详细信息、登录凭据等
-
代理网络:僵尸网络可用于创建代理网络,使用受感染的设备作为恶意活动的中介,通过这些代理路由自己的流量,从而难以追踪其行为的来源或逃避基于IP的限制和过滤器
-
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
- 蜜罐是一种安全机制,旨在诱使攻击者入侵、攻击或探测计算机系统、网络或应用程序,从而收集有关攻击者行为和策略的信息,以及提高对抗网络攻击的能力。蜜罐通常是一个看似有漏洞或价值的系统、网络或应用程序,但实际上是由安全专家部署和监控的虚拟或实体资源。攻击者可能会对蜜罐进行攻击,试图入侵、获取权限或进行其他恶意活动,而安全团队则可以监视并分析这些攻击行为。
- 用wireshark打开botnet_pcap_file.dat文件,设置过滤条件“ip.src == 172.16.134.191 && tcp.dstport == 6667 and tcp.flags == 0x2”,得到如下结果:
- 经过分析,可以得出,蜜罐主机与如下的服务器进行通信:
• 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为服务器的僵尸网络?
- 下载tcpflow,使用tcpflow工具读取名为botnet_pcap_file.dat的pcap文件。
其中过滤规则指定了要匹配的数据包的主机地址和端口号。具体来说,这个规则表示只匹配目标主机地址为209.196.44.172且目标端口号为6667的数据包。
输入tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
- 查看report.xml文件:
(5)哪些IP地址被用于攻击蜜罐主机?
-
*统计访问以209.196.44.172为服务器的僵尸网络的主机数:发现有3461台
从名为botnet_pcap_file.dat的pcap文件中提取出目标主机地址为172.16.134.191的数据包的源主机地址,并统计不同源主机的数量,并将结果保存到名为20222317hzf.txt的文件中。 -
输入代码:
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
-
输入:
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 > 20222311wsh.txt;wc -l 20222311wsh.txt
-
打开文件发现有165台主机被用于蜜罐攻击
(6)攻击者尝试攻击了那些安全漏洞?
-
使用wireshark的“统计-协议分级”:发现有tcp包和udp包,其中tcp是主要的
-
分别筛选TCP和UDP响应端口,读取dat文件,查看哪些端口是开放的,输入:
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
-
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
(7)那些攻击成功了?是如何成功的?
-
tcp135端口,发现是普通连接并没有进行攻击
-
139端口,也没有什么攻击
-
25端口,也没有攻击
-
445端口此时不再是简单的连接,出现了SMB网络文件系统协议
SAMR结构网格自适应等协议。有61.111.101.78向蜜罐主机发送PSEXESVC.EXE;
PsExec通常会被攻击者用作远程主机执行命令,客户端执行psexec.exe后若服务器认证成功,会将psexesvc.exe上传到服务端的ADMIN$目录并作为服务运行,在执行完命令后删除对应的服务和psexesvc.exe。
psexec建立连接之后目标机器上会被安装一个“PSEXESVC”服务。但是psexec安全退出之后这个服务会自动删除(在命令行下使用exit命令退出)。
-
4899端口是一个远程控制软件服务端监听的端口,具有远程控制功能,通常杀毒软件是无法查出它来的。可能被黑客用此来进行远程控制。
-
80端口,发现了传递大量的NNNNNN的内容,有可能是为了实现缓冲区溢出攻击或者蠕虫攻击
-
udp的137端口,发现了大量NBNS协议包
NBNS(NetBIOS Name Service)协议是用于在局域网中解析 NetBIOS 名称与 IP 地址之间映射关系的服务。它主要用于 Windows 网络中,通过将计算机名(NetBIOS 名称)解析为IP地址,使计算机能够相互通信和识别。NBNS协议通常工作在UDP的端口137上
3.问题与解决方法
- 问题一:任务四的抓包一开始不会分析
- 解决方法:我通过上网学习和询问同学,比较系统了学习了所抓到包的内容,最后顺利完成实验
4.心得体会
-
完成这个网络攻防实验后,我深刻体会到了网络安全的重要性和复杂性。在这个实验中,我不仅学习到了如何识别和分析恶意代码,还了解了如何使用各种工具和技术来对抗网络攻击和入侵。
-
首先,我掌握了如何识别文件类型、脱壳和提取字符串,这对于理解恶意代码的工作原理至关重要。这些技能帮助我揭开了恶意代码的神秘面纱,让我能够追踪到代码的编写者。
-
我使用IDA Pro对两个程序进行了静态和动态分析,这让我对逆向工程有了更深入的了解。通过这个过程,我学会了如何寻找特定的输入,使得程序能够输出成功信息,这对于破解软件和理解软件的工作原理非常有帮助。
-
其次这次实验让我对恶意代码的分析有了更全面的认识。我学会了如何撰写分析报告,包括对二进制文件的摘要、目的、特性、防止分析的技术、分类以及检测方法。这个过程不仅提高了我的技术能力,也锻炼了我的逻辑思维和分析能力。
-
最后,我学习了如何从网络数据中提取有价值的信息,这对于追踪网络攻击和防御僵尸网络至关重要。通过对蜜罐主机的网络数据进行分析,我能够识别出攻击者的行为模式和攻击手段,这对于预防未来的网络攻击非常有帮助。
-
总的来说,这个实验不仅让我掌握了网络攻防的基础知识和技能,也让我意识到了作为一名网络安全专业的学生所肩负的责任。网络安全是一个不断发展的领域,需要我们不断学习和适应新的技术和挑战。通过这次实验,我更加坚定了在这个领域深造的决心,并希望能够为保护网络空间的安全做出自己的贡献。