20232821 2023-2024-2 《网络攻防实践》实践8报告
一、实践内容
1、恶意代码
恶意代码指的是一种被设计用来对计算机系统、网络或用户造成伤害、破坏或盗取信息的恶意软件。它通常是由黑客、网络犯罪分子或其他恶意攻击者编写和散布的。
恶意代码可以采取多种形式,包括病毒、蠕虫、特洛伊木马、间谍软件(spyware)、广告软件(adware)等。这些恶意代码可能会在用户不知情的情况下潜伏在系统中,进行各种恶意活动,如窃取个人信息、密码、银行账号;破坏系统功能或数据;利用计算机资源进行分布式拒绝服务攻击(DDoS)等。
2、恶意代码分类
-
病毒(Viruses):病毒是一种能够在感染后自我复制并传播到其他文件、系统或网络的恶意代码。它们通常会附加到合法的程序或文件中,并在用户执行这些程序或文件时激活。
-
蠕虫(Worms):蠕虫是一种能够自我复制并传播到其他计算机或网络的恶意代码,无需人为干预。它们利用网络漏洞或弱点来传播,并可能对受感染系统造成严重的破坏。
-
特洛伊木马(Trojans):特洛伊木马是一种伪装成合法程序或文件的恶意代码,它们会在用户执行时执行隐藏的恶意活动,例如窃取个人信息、远程控制受感染系统等。
-
间谍软件(Spyware):间谍软件是一种用来监视用户活动、收集敏感信息并发送给攻击者的恶意软件。它们通常会悄悄安装在用户设备上,并在背景中运行。
-
广告软件(Adware):广告软件是一种显示广告或弹出广告的恶意软件,通常会在用户浏览器中注入广告或重定向用户到恶意广告网站。
-
勒索软件(Ransomware):勒索软件是一种加密用户文件或系统,并要求用户支付赎金以解密文件或恢复系统功能的恶意软件。它们通常会以恐吓或胁迫的方式迫使用户支付赎金。
-
键盘记录器(Keyloggers):键盘记录器是一种记录用户键盘输入的恶意软件,它们可以捕获用户输入的所有内容,包括用户名、密码和其他敏感信息。
-
僵尸网络(Botnets):僵尸网络是由大量受感染计算机组成的网络,攻击者可以远程控制这些计算机,并将它们用于发起网络攻击、传播恶意代码或进行其他非法活动。
3、恶意代码分析 -
静态分析
静态分析基础技术:包括检查可执行文件但不查看具体指令的一些技术。静态分析基础技术可以确认一个文件是否是恶意的,提供有关其功能的信息,有时还会提供一些信息让你能够生成简单的网络特征码。
静态分析高级技术:主要对恶意代码内部机制的逆向工程,通过将可执行文件装载到反汇编器中,查看程序指令,来发现恶意代码到底做什么。这些指令时被CPU执行的,所以静态分析高级技术能够告诉你程序具体做了哪些事情。需要掌握汇编语言、代码结构、windows操作系统概念等专业知识。 -
动态分析
动态分析基础技术:涉及运行恶意代码并观察系统的行为,以移除感染,产生有效的检测特征码,或者两者。然而,在可以安全运行恶意代码之前,必须建立一个安全的环境,能够让你在避免对你的系统与网络带来的风险的前提下,研究运行的恶意代码。
动态分析高级技术:用调试器来检查一个恶意可执行程序运行时刻的内部状态。动态分析高级技术提供了从可执行文件中抽取详细信息的另一个路径。
二、实践过程
(一)动手实践任务一
动手实践任务一
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
1、文件格式和类型识别
先把学习通的资源rada.rar解压缩,复制到winXP虚拟机的Windows中的C:\Documents and Settings\Administrator目录下:
对于文件格式和类型识别,我们可以使用file命令获取。file命令可以用来查看文件信息或类型,WinXPattacker上可以使用该命令。在命令提示符下输入file rada.exe,可以看到Rada.exe为一个32位Windows的可执行文件,且有GUI图形界面:
入strings RaDa.exe,查看RaDa.exe中可打印的字符串,发现全是乱码,推测是加壳导致的:
使用PEiD工具查看RaDa.exe的基本信息,打开PEiD工具:
打开RaDa.exe:
查看扩展信息:
2、脱壳处理
使用超级巡警进行脱壳,选择相应的路径,发现支持脱壳。按下“给我脱”,脱壳成功:
发现生成了一个新文件RaDa_unpacked.exe(脱壳文件):
3、寻找编写作者
在cmd中输入strings RaDa_unpacked.exe,发现了脱壳后的恶意程序的可打印字符串:
在WinXPattacker使用IDA工具:
打开脱壳处理后的rada_unpacked.exe文件,进入Strings页面,在String列右击打开Setup,勾选Unicode编码:
在这一列找到作者Authors:Raul Siles & David Perez,2004:
(二)动手实践任务二
动手实践任务二:分析Crackme程序
任务:在WinXP Attacker虚拟机中使用IDA
Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
将crackme1.exe和crackme2.exe从学习通下载到winXP,检查一下两个文件的完整性,计算其 md5 值:
file命令查看其文件类型,可以看到这两个文件都是32位windows下PE文件
1、crackme1.exe分析
对crackme1.exe进行分析,试探输入格式。我们可以发现,在接受1个参数时,程序的反馈与众不同,所以我们猜测该程序接受个参数。目前为止,我们已经发现了程序的两种反馈信息。一种是“Ithinkyou are missingsomething.”,这个猜测是参数数目不对的提示;另一种是“Pardon? What did yousay?”,对于这种反馈信息,我们猜测是参数错误的提示:
接着我们使用IDA pro工具来打开文件,尝试阅读其汇编语言,验证我们的猜想。
打开IDA Pro Free,打开crackme1.exe进行分析。打开strings窗口查看字符串,可以看到前面输出的信息。“I think you are missing something.” “Pardon? What did you say?”,还发现了“I know the secret”和“You know how to speak to programs, Mr. Reverse-Engineer”这两个字符串。由此,前者就是需要的口令,后者就是输入口令正确时程序的输出信息:
回到首页,查看函数调用图:
可以发现,程序是用C语言写的,程序估计是使用strcmp函数来比较口令的,关键的部分在sub_401280这里。程序是使用strcmp函数来输入的,然后利用print和fprint函数输出:
查看sub_401280的汇编代码以及流程图:
可以看到,左侧参数个数不匹配的输出,右侧正确的输出:
倒数第二行cmp[ebo+arg_0],2为判断程序是否有两个参数在c语言中,main 函数通常为int main(int argc,const char **argv),即第一个参数 argc 对应argv 的大小,第二个参数对应命令行的格式。如在命令行输入crackme1.exe 1,那么参数对应的值为 argc=2,argv={“crackme1.exe”,"1”}。如果 argc=2,那么进行下一步判断(执行true):
call strcmp 中,程序用“Iknowthesecret”对应的字符串和[eax]对应的字符串(用户输入的口令)相比较,通过比较的结果反馈口令是否正确。那么尝试输入口令Iknowthe secret,我们可以通过程序的测试。
将口令进行验证,验证成功:
2、crackme2.exe分析
对crackme2.exe进行分析:
查看明文字符串:
查看函数调用图,发现核心函数是sub_401280:
查看对应的汇编代码:
输入copy crackme2.exe crackmeplease.exe将程序复制并命名为crackmeplease.exe,输入crackmeplease.exe “I know the secret”,得到的反馈信息为We have a little secret: Chocolate.成功:
(三)分析实践任务一
分析实践任务一:
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
2、找出并解释这个二进制文件的目的;
3、识别并说明这个二进制文件所具有的不同特性;
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
6、给出过去已有的具有相似功能的其他工具;
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
查看摘要和文件类型:md5sum RaDa.exe指令得到其md5摘要。利用file RaDa.exe识别出这是32位GUI文件:
接下来打开监听工具process explorer对RaDa_unpacked.exe进行检测,在string窗口显示二进制文件中能够搜索到的字符串,步骤同动手实践任务一一样,在这些找到的字符串中,能够看到以下这些眼熟的字符串,包括一个IP地址、C盘文件夹路径等。
该程序用http连接到目标为10.10.10.10的主机下名为RaDa——commands的网页上,创建文件夹C:\RaDa\tmp保存下载文件,进行DDOS拒绝服务攻击,将RaDa_unpacked.exe复制到C:\RaDa\bin:
该程序还依次读、写和删除注册表,打开注册表查看发现没有信息,则表示已删除:
可以看到该程序判断了三个私有网段:192.168.、172.16.、10.,也就是说确保服务器在私有网段中,然后到服务器去取命令文件。
接下来执行exe、put、get(将服务器中的指定文件下载到宿主主机中)、screenshot(截取宿主主机的屏幕并保存到tmp文件夹)、sleep(停止活动一段时间):
回答:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
该文件的md5摘要为caaa6985a43225a0b3add54f44a0d4c7
(2)找出并解释这个二进制文件的目的;
通过上边的分析,我们可以知道这个程序可以通过网络获取指令,并执行,不具备自主传播模块,由此可知,这个应该是后门程序或僵尸网络程序。
(3)识别并说明这个二进制文件所具有的不同特性;
初次安装的时候会进行初始化的相关操作,添加注册列表、移动文件位置至C盘,建立网络连接接收指令。
持续运行阶段:维持与服务器的网络连接,解析网络指令,执行网络指令,等待一段时间继续执行。
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
采用了UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo的加壳方式,直接被一键脱壳。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
首先此二进制程序不具有自主传播模块,所以它不属于病毒和蠕虫;此程序未进行伪装,所以也不是木马;
若攻击者仅仅用此程序进行远程控制,那么就是后门程序;若再次基础上加入僵尸网络,则就是僵尸程序。
(6)给出过去已有的具有相似功能的其他工具;
木马Bobax,特洛伊木马Setiri、GatSla。
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
如上文所述,可以通过–authors参数获取相关作者信息Authors: Raul Siles & David Perez,
2004。使用IDA中的string视图查看,或者在非vmware环境下执行–authors参数。
(二)分析实践任务二
任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:
1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
RC是Internet Relay Chat(互联网中继聊天)的缩写,是一种即时通讯协议,允许用户通过互联网进行实时文本通信。IRC允许用户创建自己的聊天室(称为频道),并与其他用户进行公开或私密的聊天。
当IRC客户端申请加入一个IRC网络时,通常会发送一条消息,格式为:
PASS <password>\r\n
NICK <nickname>\r\n
USER <username> <hostname> <servername> <realname>\r\n
其中,PASS(可选)用于指定连接密码,NICK用于设置用户昵称。
USER用于设置用户的用户名、主机名、服务器名和真实姓名。
IRC一般使用以下TCP端口:
- 6667:标准IRC端口,用于非加密连接。
- 6697:用于加密连接(SSL/TLS),通常用于加密的IRC连接(IRC over
SSL)。
2、僵尸网络是什么?僵尸网络通常用于什么?
- 僵尸网络是指攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
- 僵尸网络主要用于,发动DDOS攻击、发送垃圾邮件、监听用户敏感信息、记录键盘输入信息、扩散新的恶意软件和伪造点击量等。
3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
在kali中打开botnet_pcap_file.dat,利用命令ip.src == 172.16.134.191 && tcp.dstport == 6667,因为IRC通过6667端口进行监听,找到5个IRC服务器,如图:
4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
kali中使用命令sudo apt-get install tcpflow安装tcpflow;
然后输入tcpflow -r botnet_pcap_file.dat“host 209.196.44.172 and port 6667”获取209.196.44.172与172.016.134.191之间的所有的 IRC 数据包,得到三个文件:
5、那些IP地址被用于攻击蜜罐主机?
输入以下命令,可以看到有148个被攻击的端口:
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 > wxw_result.txt;wc -l wxw_result.txt
6、攻击者尝试攻击了那些安全漏洞?
利用tcpdump筛选TCP和UDP端口,命令分别为:
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
可以看到TCP端口有135、139、25、445、4899、80,UDP端口有137:
用wireshark打开文件botnet.pcap,依次过滤筛选以上重点端口进行分析。
(1)TCP端口80,过滤条件ip.dst172.16.134.191 && tcp.dstport80 && http,表示目标地址为172.16.134.191、目标端口为80的数据包。
能看出所有关于80端口的相关攻击的信息,包括null.ida为标识的WEB-IIS ISAPI、dafault.ida为标识的code red,发现这是一个红色代码蠕虫攻击:
(2)TCP端口445,过滤条件ip.dst172.16.134.191 && tcp.dstport445。从抓包结果中分析可执行文件:PSEXESVC.EXE。当客户端执行该可执行文件后,攻击方就可以远程控制执行文件的主机,然后获取权限:
(3)TCP端口139,过滤条件ip.dst172.16.134.191 && tcp.dstport139,有NBSS包和SMB包以及TCP包,若干个个不同的IP访问了这个端口,即使攻击机的IP地址不同,可以确定的是,他们都没有攻击成功:
三、学习中遇到的问题及解决
无
四、实践总结
这次实践不是很难,但是很花费时间。让我了解扫描工具、监视工具、反汇编工具等的使用。了解恶意代码分析的工具和使用方法。