1.实验内容
1.1 基本概念
1.1.1什么是恶意代码?
恶意代码(Malicious Code)是指在计算机系统或网络中,被设计用来对系统造成损害、窃取信息、干扰正常操作或执行其他恶意目的的软件或程序片段。
1.1.2恶意代码分析技术
分为静态分析和动态分析两种方式:
静态分析主要是分析诸如特征码,关键词等,或者是分析内部结构,运行逻辑等来判定代码段是否为恶意代码。
动态分析是在可控的环境下运行未知代码,然后观察行为是否满足恶意代码的要求。
1.2实验内容
1.2.1恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
1.2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
1.2.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
找出并解释这个二进制文件的目的;
识别并说明这个二进制文件所具有的不同特性;
识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
给出过去已有的具有相似功能的其他工具;
可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
1.2.4取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
僵尸网络是什么?僵尸网络通常用于什么?
蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
哪些IP地址被用于攻击蜜罐主机?
攻击者尝试攻击了那些安全漏洞?
那些攻击成功了?是如何成功的?
2.实验过程
2.1恶意代码文件类型标识、脱壳与字符串提取
2.1.1文件格式和类型识别
基础的解压操作和文件导入省略。
首先,我们输入下列命令:
file RaDa.exe
进入学习通下载peid.rar并解压,使用.exe查看加壳类型:
2.1.2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
在学习通下载脱壳.rar,即超级巡警脱壳软件,按路径寻找文件,选择刚下载的RaDa.exe,进行脱壳处理:
2.1.3 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁
将Windows端的unpacked文件拖到Kali虚拟机中,这里我们使用命令strings RaDa_unpacked.exe:
从上图可知作者是Raul Siles && David Perez
从这里可以看出,前一部分内容还是跟RaDa.exe一样,没有被更改,但是后面的乱码部分已经变成了可以读取的内容。
2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息
2.2.1 查看crackme1.exe信息
在学习通下载crackme1.exe和crackme2.exe并拖进kali
2.2.2 在命令提示符中测试
通过命令行先对输出结果进行猜测:
由上图可以发现,命令行只输入一个参数时输出Pardon? What did you say?,输入超过两个参数时输出I think you are missing something.
2.2.3 利用IDA Pro分析文件
可以发现,如果输入"I know the secret"的话,就会输出You know how to speak to programs, Mr. Reverse-Engineer。如果不是I know the secret,就会输出pardon? what did you say?。参数数量更多就会输出I think you are missing something.
输入"I know the secret"
验证成功,同理,我们也可以得出第二个程序的口令是:crackmeplease.exe "I know the secret"
在IDA中切换到页面IDA-viewA,然后在view中找到graphs选项并打开Function Call查看函数调用图(或者使用快捷键Ctrl+F12):
在view中找到graphs选项并打开Flow Chart查看函数流程图(或者使用快捷键F12),找到sub_401280的函数流程图如下:
对各个部分进行具体分析:
2.3分析一个自制恶意代码样本rada
2.3.1基础分析
首先运行ProcessExplorer中看到已经存在的软件。
然后就可以在ProcessExplorer中看到已经存在的rada.exe进程了。
使用MD5进行加密
打开Process Explorer工具并运行RaDa_unpacked.exe,这时候就可以在工具中的strings页面内看到这个文件中的字符串:
用IDA打开RaDa_unpacked.exe并切换到strings页面,右键打开setup strings window并选择允许的字符串类型为Unicode:
我们可以在RaDa中找到新的bin和tmp
打开Wireshark进行抓包,我们发现,在目标程序运行的时候向10.10.10.10的地址发送了TCP包并返回了ICMP包:
我们可以看到,这些TCP包和ICMP包都是空的,我们想到了DDoS拒绝服务攻击和ICMP洪泛攻击,又鉴于该目标程序不会自己进行传播,排除了蠕虫和病毒类的可能,所以初步猜测这个程序很有可能是后门程序或者是木马程序,当然也不排除僵尸程序的可能。
2.3.2补充说明
1.识别并说明这个二进制文件所具有的不同特性
这个文件能够修改注册表,复制文件到C盘,实现远程控制以及DDoS攻击。
2.识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
upx加壳,在上面的截图中我们可以看到存在乱码,这是加壳后的结果。
3.对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
这属于后门程序。首先它不具备自我复制的机制,没有实现在计算机中的传播;其次它没有伪装操作,也不存在欺骗下载的操作。而其可以实现操控目标主机、提权的行为,是后门程序的主要特点,所以判定为后门。
4.给出过去已有的具有相似功能的其他工具
msfvenom,之前用来做监听的。
5.可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
没有问题,我们在前面的实践中就已经得到作者的名字了。但是前提是要对文件进行脱壳,这样才能看到作者的名字。
6.给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法
基于特征码的检测方法
原理:安全研究人员从已知的恶意软件中提取出具有代表性的、独特的代码片段、字节序列、文件结构特征等作为特征码。检测工具会将待检测文件与预定义的特征码数据库进行比对,若发现匹配的特征码,则判定该文件为恶意软件。
基于行为的检测方法
原理:通过监控系统或网络中的各种行为活动来判断是否存在恶意软件。例如,监测文件的读写操作、进程的创建与终止、网络连接的建立与数据传输、注册表的修改等行为。如果发现某些异常行为模式,如频繁尝试连接到可疑的远程服务器、大量加密本地文件等,就可能预示着存在恶意软件。
基于启发式的检测方法
原理:依据已知的恶意软件常见行为模式、代码结构特点等启发式规则来评估待检测文件的可疑程度。它综合考虑文件的多种属性和行为,如文件大小是否异常、是否包含加密或混淆的代码、是否有异常的函数调用等。如果一个文件符合较多的恶意软件启发式规则,就会被判定为具有较高的风险。
基于沙箱的检测方法
原理:将待检测的文件放置在一个隔离的、安全的沙箱环境中运行,沙箱可以是虚拟的操作系统环境或者专门的物理设备。在沙箱中,系统会详细记录文件运行过程中的所有操作和行为,包括系统资源的使用情况、文件系统的变化、网络活动等。通过对这些记录的分析,判断文件是否存在恶意行为。
基于机器学习的检测方法
原理:使用机器学习算法,如决策树、支持向量机、神经网络等,对大量的已知恶意软件和正常软件样本进行学习和训练。从这些样本中提取各种特征,如文件的字节频率分布、操作码序列、系统调用序列等,然后构建出一个能够区分恶意软件和正常软件的模型。当对待检测文件进行检测时,提取其相应的特征输入到训练好的模型中,模型会输出该文件是否为恶意软件的判断结果。
2.4Windows 2000系统被攻破并加入僵尸网络的取证分析
2.4.1IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC 即 Internet Relay Chat,中文名为互联网中继聊天,是一种基于文本的网络聊天协议,其主要功能是允许用户通过网络进行实时的文本交流。
当IRC客户端申请加入一个IRC网络时,它会发送一个特定的消息来请求连接到IRC服务器。这个消息通常包括客户端的标识信息、要连接的服务器地址和端口号等。具体的消息格式和内容可能因不同的IRC客户端和服务器实现而有所不同。在成功连接到服务器后,客户端还需要发送一系列的消息来注册用户、加入聊天室等。
IRC默认使用TCP端口6667进行通信。这是IRC协议的主要通讯端口,用于客户端与服务器之间的数据传输。如果端口6667被阻塞或无法使用,IRC客户端和服务器可能会尝试使用其他TCP端口进行连接。这些备用端口可能因不同的IRC网络和服务器配置而有所不同。
2.4.2僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指由大量被恶意软件感染的计算机(Bots)组成的网络,这些计算机通常由一个或多个远程攻击者(Botmaster)控制。
僵尸网络的常见用途有DDoS攻击,发送垃圾邮件,加密货币挖矿,作为恶意软件的分发平台等。
2.4.3 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
在学习通下载文件botnet_pcap_file.dat,使用wireshark打开,设置过滤条件ip.src == 172.16.134.191 && tcp.dstport == 6667,观察结果:
查看Destination一列,会发现一共出现过5台IRC服务器:66.33.65.58、63.241.174.144、217.199.175.10、209.196.44.172、209.126.161.29。
2.4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
首先在虚拟机中输入sudo apt install tcpflow安装tcpflow:
再把2.4.3的文件拖到虚拟机中,然后命令行中输入
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