1基本概念
1.1恶意代码
恶意代码(Malicious Code)是指以技术炫耀/恶作剧, 远程控制, 窃取私密信息,盗用资源, 拒绝服务/破坏等为目的,使计算机按照攻击者的意图运行以达到恶意目的的指令集合。
类型包括计算机病毒、 蠕虫、特洛伊木马、逻辑炸弹、系统后门、Rootkit、僵尸程序等。
1.2恶意代码分析技术
静态分析:通过反病毒引擎扫描识别已知的恶意代码家族和变种名,逆向分析恶意代码模块构成,内部数据结构,关键控制流程等,理解恶意代码的机理,并提取特征码用于检测。
动态分析:通过在受控环境中执行目标代码,以获取目标代码的行为及运行结果。
2实验过程
2.1恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。
(1)将rada文件解压并传入虚拟机。输入命令:file RaDa.exe
这个结果可以看出RaDa.exe 是一个PE格式的32位可执行文件,有GUI界面,基于Intel 80386处理器。
然后,为了进一步获取该文件的相关信息,我们使用下载好的PEiD打开RaDa.exe。
可以发现,RaDa.exe使用了0.89.6版本的UPX压缩壳。
对此,首先我们直接用strings命令对目标文件进行分析。
结果是乱码。所以要先脱壳。使用脱壳工具。
生成了脱壳后的文件,再次strings。
这回出现了部分可以读懂的文字,可以从中发现作者的名字是Raul Siles和David Perez,时间是2004年9月。
2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
首先在终端试运行这两个文件。无法运行但有提示词,可以推测是缺少密码一类的口令。将文件放入ida反汇编。
可以看到灰色字体部分有四种提示语。对相关部分代码进行分析,发现他们都返回了同一个函数进行判断。其中两句提示词是试错时没有遇上过的,应该就是正确的提示词。尝试将"I know the secret"作为需要的参数进行输入。成功出现提示词,表示通过。下图为命令和结果总集。
再次对crakeme2.exe进行运行。同样出现提示词,这次依照上述办法后缀密码,却显示了没有出现过的提示词。发现他可能判断的东西,现在不只有密码,甚至还有文件的名称,于是我们将crackme2.exe改名后在输入正确的密码。
成功出现正确提示词。
2.3分析一个自制恶意代码样本rada,并撰写报告,回答问题。
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
首先对RaDa.exe使用"md5sum"命令计算RaDa.exe的md5值。
使用process explorer来查看该二进制文件在内存中的字符串。
(2)找出并解释这个二进制文件的目的;
根据上述结果分析:
该程序首先通过HTTP协议,与指定的网页(即10.10.10.10/RaDa/RaDa_commands.html)建立连接。这一步可能是为了从该网页下载恶意软件组件,或者接收来自远程的攻击指令。借助cgi-bin目录下的download.cgi和upload.cgi脚本,该程序能够轻松实现文件的下载与上传,显示出其强大的网络通信能力和文件操作能力。
接下来,程序会在目标主机的C盘创建一个名为C:/RaDa/tmp的文件夹,用于临时存放文件或进一步部署恶意软件组件。同时,它还会将名为RaDa.exe的主要恶意软件可执行文件复制到C:\RaDa\bin目录下。
同时,该程序会在HKLM\Software\Microsoft\Windows\CurrentVersion\Run\路径下,添加RaDa.exe的路径。这样一来,每当Windows系统启动时,RaDa.exe都会自动被执行。
此外,该程序还会对与VMware Tools相关的注册表项进行修改。它会在HKLM\Software\VMware, Inc.\VMware Tools\InstallPath路径下添加或修改某些信息。
该程序还具备发动DDoS攻击的能力。
(3)识别并说明这个二进制文件所具有的不同特性;
修改注册表,复制文件到C盘,实现远程控制以及DDoS攻击
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
加壳。虽然已经脱壳,仍有部分无法解读的信息。
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
后门。因为可与指定网页建立联系,疑似可远程操作连接。并且可以随开机而自动运行。
(6)给出过去已有的具有相似功能的其他工具;
msfvenom,实验二三都用过来做监听。
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以。在之前的操作中已经可以看到开发者名字。前提是需要脱壳。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
-
基于特征码的方法
基于特征码的检测方法是最传统且基础的恶意软件检测技术。它依赖于恶意软件样本的已知特征,这些特征通常是从恶意软件的二进制代码、字符串、字节序列等中提取的。
原理:该方法通过扫描目标文件的二进制内容,寻找与已知恶意软件特征码库中的条目相匹配的特征。若找到匹配项,则判定该文件为恶意软件。
实施步骤:
收集恶意软件样本,提取特征码。
建立特征码数据库,并不断更新以包含新的恶意软件特征。
使用反病毒软件或专门的恶意软件检测工具,对目标文件进行扫描。
若扫描到与特征码数据库中的条目相匹配的特征,则发出警报并标记为恶意软件。 -
静态分析方法
介绍:
静态分析方法是在不执行恶意软件代码的情况下,通过分析其二进制文件、可执行文件或反编译后的代码来检测恶意行为。
原理:
该方法通过分析恶意软件的静态特征,如文件结构信息、程序字符串常量、调用函数等,以及更深层次的反汇编二进制文件以得到文件指令等信息,来判断其是否为恶意软件。
实施步骤:
使用静态分析工具(如IDA Pro、Ghidra等)加载恶意软件样本。
分析恶意软件的静态特征,如入口点、节结构、字符串资源等。
对比恶意软件的静态特征与已知恶意软件的特征库。
若发现匹配项或可疑行为,则标记为恶意软件。 -
动态分析方法
介绍:
动态分析方法是在受控环境下执行恶意软件样本,通过监控其行为特征来检测恶意行为。
原理:
该方法通过模拟恶意软件的运行环境,记录其行为日志、系统调用名称、上下文参数、环境变量等动态特征,并与已知恶意行为的特征库进行对比,以判断其是否为恶意软件。
实施步骤:
在受控环境(如沙箱)中执行恶意软件样本。
监控恶意软件的行为特征,如文件访问、注册表修改、网络活动等。
对比恶意软件的行为特征与已知恶意行为的特征库。
若发现匹配项或可疑行为,则标记为恶意软件。 -
混合分析法
介绍:
混合分析法结合了静态分析和动态分析的优势,通过综合运用这两种方法来提高恶意软件的检测准确性。
原理:
该方法首先使用静态分析技术提取恶意软件的静态特征,然后使用动态分析技术捕捉其运行时的动态行为。最后,将静态特征和动态特征相结合,进行综合分析和判断。
实施步骤:
使用静态分析工具提取恶意软件的静态特征。
在受控环境中执行恶意软件样本,并使用动态分析工具捕捉其行为特征。
将静态特征和动态特征相结合,进行综合分析和判断。
若发现匹配项或可疑行为,则标记为恶意软件。 -
基于人工智能的方法
介绍:
基于人工智能的恶意软件检测方法利用机器学习、深度学习等技术对恶意软件进行分析和分类。
原理:
该方法通过训练机器学习模型来识别恶意软件的特征和行为模式。在训练过程中,模型会学习已知恶意软件和正常软件之间的差异,并生成分类器来区分它们。在检测过程中,模型会对目标文件进行特征提取和分类判断。
实施步骤:
收集大量的恶意软件和正常软件样本作为训练数据集。
对训练数据集进行预处理和特征提取。
选择合适的机器学习算法(如支持向量机、随机森林、神经网络等)并训练模型。
使用训练好的模型对目标文件进行特征提取和分类判断。
根据模型的输出结果判断目标文件是否为恶意软件。
2.4取证分析实践
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC是Internet Relay Chat的英文缩写,中文一般称为互联网中继聊天。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。关于IRC客户端申请加入IRC网络时发送的消息,以及IRC一般使用的TCP端口,
当IRC客户端申请加入一个IRC网络时,它会发送一系列的消息来与IRC服务器进行通信。这些消息通常包括
用户注册与登录消息:客户端会发送用户名、密码(如果服务器要求的话)以及其他相关信息来注册或登录到IRC服务器。
频道加入消息:一旦登录成功,客户端可能会发送消息来请求加入特定的频道(Channel),以便与其他用户进行交谈或密谈。
具体的消息格式和内容取决于IRC协议的实现和服务器的要求。通常,这些消息是通过TCP/IP协议在客户端和服务器之间传输的。
IRC默认使用TCP端口6667来进行通信。这是IRC协议的主要通讯端口,用于客户端与服务器之间的数据传输。然而,如果端口6667被阻塞或无法使用,IRC客户端和服务器可能会尝试使用其他TCP端口来建立连接。这些备用端口的选择取决于服务器和客户端的配置以及网络环境的限制。
(2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。通常用于:分布式拒绝服务(DDoS)攻击,发送垃圾邮件,窃取敏感信息,网络钓鱼攻击等。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
使用wireshark打开botnet_pcap_file.dat文件。
设置过滤命令为ip.src == 172.16.134.191 && tcp.dstport == 6667
统计端点。
可发现6个地址。除去蜜罐主机有五个地址。
66.33.65.58
63.241.174.144
217.199.175.10
209.196.44.172
209.126.161.29
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
在kali上安装tcpflow。
把数据包传入虚拟机。然后输入命令: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