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恶意代码文件类型标识、脱壳与字符串提取。
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
2.1.1使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
将下载的RaDa.exe移到虚拟机,在命令行输入file RaDa.exe
,查看文件格式,运行平台。“PE32”说明是一个32位的PE文件,“(GUI) Intel 80386”说明运行在Intel 80386 GUI上,“for MS Windows”说明针对的操作系统是Windows。
使用PE Explorer,查看文件格式,运行平台。Magic字段PE32显示文件格式为32位的PE文件,Machine字段i386显示可运行在Intel386处理器或后续兼容处理器。
通过软件PEiD查看加壳工具。识别结果为“UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo”,可知该程序加的是UPX的壳,版本是0.89.6。
2.1.2使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
脱壳成功,生成了RaDa_unpacked.exe
2.1.3使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁
输入strings RaDa_unpacked.exe
,用strings命令对脱壳生成的程序进行分析,找到疑似作者的一行。
用IDA Pro打开RaDa_unpacked.exe,选择“View”→“Open subviews”→“strings”查看字符串,找到编写作者。
右键单击选择“setup”,更改allowed string types为Unicode-cstyle,再次查看,
出现“Copyright (C) 2004 Raul Siles & David Perez”。可知该恶意代码为Raul Siles和David Perez在2004年编写。
2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
2.2.1分析crackme1.exe
虚拟机中输入file crackme1.exe
查看文件crackme1.exe,发现可在windows运行。
在windows命令行输入crackme1.exe
运行程序,并猜测参数。猜测当有两个参数时(包括参数名)输出“Pardon? What did you say?”,参数数量不为二时输出“I think you are missing something.”
在虚拟机中输入strings crackme1.exe
查看crackme1.exe文件。发现了刚刚显示过的输出信息。
用IDA Pro打开crackme1.exe,首先查看
选择“View”→“Open subviews”→“strings”查看字符串,前四行与在虚拟机中'strings'查看所得一致。
选择“IDA View-A” “view->Grahps->Function calls”,查看函数调用过程。可以看到,_main函数可以调用_fprintf和_printf。
通过“Jump”→“Jump to function”→“_main”查看_main函数。按下F5(或“View”→“Open subviews”→“Generate pseudocode”)进行反编译。
由代码可知,程序首先会判断参数个数,若参数个数为两个时,判断第二个参数是不是“I know the secret”,若是则输出“You konw how to speak to programs,Mr.Reverse-Engineer”,否则输出“Pardon? What did you say?”。若参数个数不为两个时,输出“I think you are missing something.”。
想要输出成功信息就要输入两个参数,并且设置第二个参数为“I know the secret”。
输入wine crackme1.exe "I know the secret"
,输出了成功信息。
2.2.2分析crackme2.exe
虚拟机中输入file crackme2.exe
查看文件crackme2.exe,发现可在windows运行。
在windows命令行输入crackme2.exe
运行程序,并猜测参数。猜测当有一个参数时输出“I have an identity problem.”,参数数量不为一是输出“I think you are missing something.”
在虚拟机中输入strings crackme2.exe
查看crackme2.exe文件。发现了刚刚显示过的输出信息。
用IDA Pro打开crackme2.exe,首先查看
选择“View”→“Open subviews”→“strings”查看字符串,前五行与虚拟机中'strings'查看所得一致。
选择“IDA View-A” “view->Grahps->Function calls”,查看函数调用过程。可以看到,_main函数可以调用_fprintf、puts、putchar
通过“Jump”→“Jump to function”→“_main”查看_main函数。按下F5(或“View”→“Open subviews”→“Generate pseudocode”)进行反编译。
由代码可知,程序首先会判断参数个数,若参数个数为2,则判断第一个参数是不是“crackmeplease.exe”,不是则输出“I have an identity problem.”,是则判断第二个参数是不是“I know the secret”,若是则输出成功信息,否则输出“Pardon? What did you say?”。若参数个数不为2,输出“I think you are missing something.”
要输出成功信息就要将“crackmeplease.exe”作为第一个参数,将“I know the secret”作为第二个参数。因为参数名是第一个参数,所以要先输入copy crackme2.exe crackmeplease.exe
对crackme2.exe复制生成“crackmeplease”后再输入crackmeplease.exe "I know the secret"
运行后者输出了成功信息。
2.3分析一个自制恶意代码样本rada,并撰写报告,回答问题。
2.3.1 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
输入certutil -hashfile D:\网络攻防\实验四\RaDa.exe
得SHA1摘要4164423ece62c5c4c287f8c2003b84e4e3a6cfda
输入certutil -hashfile D:\网络攻防\实验四\RaDa.exe MD5
得MD5摘要caaa6985a43225a0b3add54f44a0d4c7
输入certutil -hashfile D:\网络攻防\实验四\RaDa.exe SHA256
得SHA256摘要13c2379e9d9f679396e21a3391804cc834892f25691381b6d078d07b56d38f90
可以帮助识别同一样本的基本信息:输入file RaDa.exe
可知程序是一个windows系统下运行的32位可执行程序。
2.3.2找出并解释这个二进制文件的目的
打开process explorer后运行rada_dump_.exe软件,查看strings.
可知该二进制文件有以下行为:
1.通过HTTP协议请求10.10.10.10\RaDa\RaDa_commands.html。可能会发生网页跳转。
2.有download.cgi和upload.cgi文件,以及新创建的C:\RaDa\tmp和C:\RaDa\bin路径,进行上传下载操作,并存到C盘中。在运行RaDa.exe后,在C盘中出现了C:\RaDa\tmp和C:\RaDa\bin
3.在C盘中创建一个RaDa文件夹,包含tmp和bin两个子文件夹,其中将RaDa.exe复制在bin子文件夹中。
4.对注册表进行读、写和删除。添加2个注册表项,路径为分别为HKLM(即HKEY_LOCAL_MACHINE)\Software\Microsoft\Windows\CurrentVersion\Run\和HKLM\Software\VMware, Inc.\VMware Tools\InstallPath。
5.有“Starting DDos Smurf remote attack...”,可能会进行DDoS Smurf攻击。
6.Regwrite Regread Regdelete功能分别为在注册表中设置指定的键或值,从注册表中返回指定的键或值,从注册表中删除指定的键或值。
7.put、get、screenshot、sleep等信息,可能有使主机截屏、睡眠等功能。
2.3.3识别并说明这个二进制文件所具有的不同特性
1.当文件被执行后,其将自身安装到系统中,并修改注册表使得自身自启动。
2.当文件被执行后,将通过浏览器上网,请求页面并接收来自攻击者的指令。
3.当文件被运行后,可执行put上传、get下载、screenshot截屏、sleep挂起等命令。
4.当文件被运行后,会发起DDoS Smurf攻击。
2.3.4识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
文件使用了upx加壳。
2.3.5对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
该程序不能进行自我复制和自我传播,所以不是病毒或蠕虫;而且没有伪装成正常程序,是直接存在的,所以不是木马;该程序可以通过在目的主机上执行来获取目的主机的Shell,能够接收指令、操控主机,所以该程序可能是后门程序。
2.3.6给出过去已有的具有相似功能的其他工具
Bobax、Setiri、GTBot
2.3.7可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
1.可以通过查看脱壳后的程序字符串得知此病毒的作者是是Raul Siles 和 David Perez,创建时间是2004年。
2.可以在windows虚拟机中以RaDa.exe --authors
运行程序,点击确定后弹出窗口显示作者是是Raul Siles 和 David Perez,创建时间是2004年。
2.3.8给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法
- 基于端口扫描的方法
因为后门程序通常会监听特定的端口,以便与黑客进行通信。所以可以使用网络扫描工具对服务器的开放端口进行扫描,检查是否存在异常的端口。通过运行扫描工具,指定目标IP地址和端口范围,分析扫描结果,识别出不寻常或未知的开放端口,可以直接、快速地发现正在监听的后门端口。但有可能无法检测到隐藏或伪装的后门程序。 - 基于系统日志分析的方法
因为入侵者通常会在服务器上执行一些特殊操作,如修改文件、创建新用户、修改系统配置等,这些操作会被记录在系统日志中。所以可以通过查阅系统日志,特别是登录日志和命令历史,寻找不寻常的活动或不正常的命令操作。使用日志查看工具或专门的日志分析工具,分析系统日志文件,识别出异常活动。能够发现入侵者的操作痕迹,有助于追踪和定位后门程序。但这种方法需要管理员对系统日志有深入的了解和分析能力。 - 基于漏洞扫描的方法
因为黑客常常利用已知的系统漏洞来入侵服务器并留下后门。所以可以使用漏洞扫描工具对服务器进行扫描,及时发现并修补安全漏洞。通过运行漏洞扫描工具,指定目标IP地址和扫描选项,分析扫描结果,识别出存在的安全漏洞,并采取相应的修补措施,能够发现系统存在的安全漏洞,减少被黑客利用的机会。但其也有明显的缺陷,这种方法无法直接检测到已经存在的后门程序,只能预防潜在的入侵。 - 基于反病毒软件扫描的方法
因为反病毒软件通常会检查系统中的恶意软件、间谍软件和后门程序。所以可以使用可信赖的反病毒软件对服务器进行全面扫描。通过安装并更新反病毒软件,运行全面扫描任务,分析扫描结果,识别并删除或隔离可疑文件或后门程序,能够自动检测并清除恶意软件,包括后门程序。但由于受到病毒库更新速度的限制,无法检测到最新的后门程序变种。 - 基于网络流量监控的方法
因为后门程序在与黑客通信时会产生网络流量。所以可以使用网络流量监控工具对服务器的网络流量进行监控和分析。通过配置网络流量监控工具,指定捕获的网络接口和过滤条件,分析捕获的流量数据包,识别出与后门程序通信的异常流量,能够实时监控网络流量,发现潜在的后门通信行为。这种方法需要管理员对网络协议和流量分析有深入的了解,且可能受到网络性能的影响。 - 基于特征码的检测技术通过对恶意代码的静态分析,找到该恶意代码中具有代表性的特征信息(如十六进制的字节序列、字符串序列等),这些特征信息被称为特征码。在检测过程中,利用这些特征码对可疑样本进行快速匹配,一旦匹配成功,则认定为恶意代码。通常由三个步骤:
特征分析:反病毒专家通过对搜集的恶意样本进行分析,抽取特征码。这个过程需要对恶意代码进行深入的研究和理解,以确保特征码的准确性和唯一性。
特征码入库:将抽取到的特征码加入特征数据库。特征数据库是反病毒软件的核心部分,它存储了所有已知恶意代码的特征码,用于后续的匹配检测。
安全检测:对可疑样本进行扫描,利用已有的特征数据库进行匹配。扫描工具会逐个检查样本中的字节序列或字符串,并与特征数据库中的特征码进行比对。如果找到匹配的特征码,则判定该样本为恶意代码。
这种方法精确度高,可以及时更新,但也有一定滞后性,可能检测不到新型代码。同时,也非常依赖特征码库的质量。
2.4取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
2.4.1IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是Internet Relay Chat的英文缩写,即互联网中继聊天。IRC是一种网络聊天协议,基于TCP/IP的应用层,使用特定的端口进行通信,并允许用户通过互联网进行实时文本交流。IRC服务器提供了一种分布式的聊天环境,用户可以加入不同的频道进行交流。
IRC客户端加入网络时发送的消息:当IRC客户端申请加入一个IRC网络时,它会发送一个特定的消息或命令给IRC服务器,通常包括用户的登录信息、想要加入的频道等。这个具体的消息内容依赖于IRC服务器的实现和客户端的配置,但通常包括用户昵称、用户标识、真实姓名以及想要加入的频道名称等。然而,由于IRC协议的具体实现和版本可能有所不同,因此这个消息的确切格式可能会有所差异。
IRC使用的TCP端口:IRC一般使用TCP端口6667进行通信。有些IRC服务器可能因为服务器的配置和网络环境的原因会使用其他端口。
2.4.2僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。攻击者通过各种途径传播僵尸程序感染互联网上的大量主机,这些被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。
僵尸网络的常见用途有:
1.分布式拒绝服务攻击(DDoS):僵尸网络可以通过同时向目标服务器发送大量请求,导致服务器过载并最终崩溃。这种攻击不仅会导致目标网站无法访问,还可能对企业造成巨大的经济损失。
2.发送垃圾邮件:僵尸网络可以用来发送大量垃圾邮件,这些邮件可能包含广告、诈骗信息或钓鱼链接。由于垃圾邮件的发送源头被分散在不同的受感染计算机上,因此很难追踪和阻止。
3.数据窃取:僵尸网络可以从受感染的计算机上窃取敏感数据,例如登录凭证、银行信息和个人身份信息。这些数据可以被用于非法牟利或进行其他恶意活动。
4.加密货币挖矿:僵尸网络可以利用受感染计算机的计算资源来进行加密货币挖矿。虽然每台计算机贡献的算力有限,但通过成千上万台计算机的累积,这种方式可以产生显著的收益。
2.4.3蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
将botnet_pcap_file.dat拖入wireshark中。
IRC服务器使用6667端口,使用ip.src == 172.16.134.191 and tcp.dstport == 6667
过滤规则进行查找
发现蜜罐主机与5台IRC服务器进行了连接,其ip分别为209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172
2.4.4在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
虚拟机中输入sudo apt install tcpflow
下载tcpflow。
输入tcpflow -r botnet_pcap_file "host 209.196.44.172 and port 6667
筛选ip和端口
生成了209.196.044.172.06667-172.016.134.191.01152、172.016.134.191.01152-209.196.044.172.06667、report.xml文件。
输入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
cat命令:连接209.输出文件
grep:搜索获取昵称输出行
sed:去除前缀
tr:将空格转换为换行
tr -d:删除\r
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 > 20222325hh.txt;wc -l 20222325hh.txt
将攻击蜜罐主机的ip筛选出输出至20222325hh.txt文件中。
显示有165个ip被用于攻击。
输入vim 20222325hh.txt
查看具体的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
筛选响应的tcp端口.
响应的tcp端口有:135、139、25、445、4899、80
输入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端口.
响应的udp端口有:137
2.4.7那些攻击成功了?是如何成功的?
tcp135端口:正常连接。
tcp139端口:正常连接。
tcp25端口:正常连接。
tcp445端口:
有61.111.101.78向蜜罐主机发送PSEXESVC.EXE,这个文件主要是一种通过IRC进行通信的Dv1dr蠕虫。这里发生了口令蠕虫攻击
用ip.dst==61.111.101.78
查看从蜜罐发往攻击主机的数据包.有results:Acceptance的信息,主机发生响应,攻击成功。
tcp4899端口:
这里发生了Radmin远程控制,攻击成功。
tcp80端口:
存在缓存区溢出攻击,通过缓冲区溢出获得命令行。
在No.32889的报文中发现了“c:\notworm”,这是一个蠕虫攻击。
udp137端口:正常连接。
综上,对445、4899、80端口的攻击成功了。
3.问题及解决方案
- 问题1:下载好超级巡警脱壳机后对RaDa进行脱壳显示“脱壳错误!入口模拟跟踪脱壳失败!”。
- 问题1解决方案:查找资料后未发现解决方法,经同学提醒发现课程提供了脱壳.rar文件,之前使用的是网上找到的超级巡警脱壳器版本,于是解压该脱壳.rar文件后发现其中存在超级巡警脱壳器,使用该脱壳器成功脱壳。
- 问题2: 下载crackme1和crackme2时显示通常无法下载。
- 问题2解决方案:右键程序,保留->显示详细信息->仍然保留。成功下载。
- 问题3:在虚拟机中复制crackme2.exe时,找不到copy命令。
- 问题3解决方案:转为在主机命令行进行复制。
- 问题4:打开process explorer后运行rada时,rada进程在极短的时间被清理。
- 问题4解决方案:将process explorer与rada_dump_.exe移到一台windows虚拟机中,进行操作。
4.学习感悟、思考等
这次实验对虚拟机的使用较少,重心放在了对恶意程序的分析上,因此操作难度较前几次实验小了很多。虽然操作的步骤不难,但实验却让我收获了很多。我知道了如何查看恶意代码的文件类型,知道了如何对加壳恶意程序进行脱壳与字符串提取。通过查询资料理解了如何检测后门程序,以及各种方法的优缺点。最后的分析复现现实发生的恶意代码案例让我对如何进行网络攻防有了更直观的了解。实验中使用了多个对恶意代码分析的软件,如PEiD、IDA Pro、PE Explorer、超级巡警等让我掌握了不同软件的使用目的和方法,使我基本掌握了脱壳、文件识别、恶意代码分析等操作。