一、实验内容
1.学习总结
1)恶意代码基本概念
- 定义
使计算机按照攻击者的意图运行以达到恶意目的的指令集合。指令集合: 二进制执行文件, 脚本语言代码, 宏代码, 寄生在文件、启动扇区等的指令流
恶意代码目的: 技术炫耀/恶作剧, 远程控制, 窃取私密信息,盗用资源, 拒绝服务/破坏,等等
- 类型
计算机病毒、 蠕虫、特洛伊木马、逻辑炸弹、系统后门、Rootkit、僵尸程序等
- 命名规则
[恶意代码类型.]恶意代码家族名称[.变种号]
<恶意代码前缀>.<恶意代码名称>.<恶意代码后缀>
2)恶意代码简介
- 计算机病毒
计算机病毒是一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。
特性:感染性(最本质)、潜伏性、可触发性、破坏性、衍生性。
感染机制
- 感染可执行文件
前缀感染、后缀感染、插入感染- 感染引导扇区(系统启动过程)
- 感染数据文件-宏指令(文件打开自动执行)
传播机制
移动存储: 软盘、U盘
电子邮件及其下载: 邮件病毒
文件共享: SMB共享服务、NFS、P2P
计算机病毒借助人类传播,蠕虫主动传播
- 网络蠕虫
主动传播性
传播机制
主动攻击网络服务漏洞
通过网络共享目录
通过邮件传播组成
- 网络蠕虫的“弹头”
渗透攻击模块- 传播引擎
FTP/TFTP/HTTP/SMB/直接传送/单包- 目标选择算法+扫描引擎
扫描策略- 有效负荷(攻击负荷)
Payload: 传播自身, 开放后门, DDoS攻击...
- 后门
后门是允许攻击者绕过系统常规安全控制机制的程序,按照攻击者自己的意图提供通道。
- 木马
看起来具有某个有用或善意目的,但实际掩盖着一些隐藏恶意功能的程序。
常见伪装机制
命名伪装、软件包装、厂商加后门、供应链攻击……
- 僵尸程序与僵尸网络
僵尸程序:来自于robot,攻击者用于一对多控制目标主机的恶意代码
僵尸网络:攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。
一对多的命令与控制通道的使用。
3)恶意代码分析技术
- 静态分析
通过反病毒引擎扫描识别已知的恶意代码家族和变种名
逆向分析恶意代码模块构成,内部数据结构,关键控制流程等,理解恶意代码的机理,并提取特征码用于检测。
- 动态分析
通过在受控环境中执行目标代码,以获取目标代码的行为及运行结果。
二、实验过程
1.恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者。
1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具
输入
file RaDa.exe
学习通下载peid.rar并解压,查看加壳类型
2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中找出rada恶意代码的编写作者
输入
strings RaDa_unpacked.exe
编写作者为Raul Siles和David Perez
2.使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
1)分析crackme1.exe
直接运行crackme1.exe尝试
没有输入时,显示的是“I think you are missing somethhing.”
只有1个输入时,显示的是“Pardon? What did you say?”
多于一个输入时,显示的是“I think you are missing somethhing.”可以推断出,特定输入只有一个值。
打开IDA Pro,选择选项PE Executable,选择crackme1.exe,打开IDA View-A页面。
点击View->Graphs->Function calls,打开函数调用图,发现sub_401280调用了strcmp、printf等这些有关字符串处理的函数,可以合理推测它在参数判断中有重要作用。
在Functions页面点击sub_401280。
点击View->Graphs->Flow chart,打开函数流程图。
对函数流程图进行如下分析,可以合理推测正确的输入参数是“I know the secret.”
按分析输入相应的参数,显示“You know how to speak to programs, Mr. Reverse-Engineer”
2)分析crackme2.exe
直接运行crackme2.exe进行尝试
可以看出依旧是1个输入
按照上次的方式打开函数调用图,发现sub_401280调用了strcmp、fprintf、putchar、puts这些字符串处理函数,推测它具有重要作用。
在Functions页面点击sub_401280,再打开函数流程图。
这一流程和crackme1.exe中看到的流程类似,但多了一个第一个参数的判断流程,由此可以推断出函数需要将第一个参数改成特定名称。
按分析结果改变文件的名称为crackmeplease.exe,再次运行,程序输出了成功信息。
3.分析一个自制恶意代码样本rada
1)信息获取
使用file命令和md5sum命令,得到RaDa.exe的摘要和基本信息。
打开process explorer,然后运行脱壳后的Rada,双击进程,查看Strings窗口。
在Strings窗口中,可以看到一些重要信息。
2)问题回答
- 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
MD5摘要:caaa6985a43225a0b3add54f44a0d4c7
- 找出并解释这个二进制文件的目的
这个恶意程序的目的可能是在系统上安装恶意软件,使其在启动时自动运行,并发起DDoS攻击。
自启动
通常用于在系统启动时自动运行程序
将自身添加到启动项中,以便每次系统启动时都自动运行。文件传输
猜测是用于下载或上传文件的脚本
推测是临时文件存储路径分布式拒绝服务(DDoS)攻击
该恶意代码可能正在进行分布式拒绝服务(DDoS)攻击
可能正在尝试连接到特定的IP地址或域名浏览器劫持
可能在修改浏览器设置或显示特定内容
- 识别并说明这个二进制文件所具有的不同特性;
- 修改注册表
- 文件系统中进行创建目录、下载文件等操作。
- 发动DDoS攻击。
- 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
加壳
UPX会在可执行文件的头部插入一段壳代码,这段壳代码负责在程序运行时解压原始程序的代码,并跳转到原始程序的入口点执行。花指令
程序中有着大量无意义的代码,增加查杀难度。内存运行
在内存中运行而不需在硬盘上留下任何文件,这使得它难以被检测到,增加了隐蔽性。
- 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
它是一个后门程序。
- 没有呈现出自我复制和传播的特点,不是病毒或蠕虫。
- 没有伪装成正常程序,不是木马。
- 给出过去已有的具有相似功能的其他工具;
Meterpreter、veil。
- 可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可能。
例如通过IDAPro分析。
- 给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
基于特征码的检测
基于特征码的检测是最传统的恶意软件检测方法。特征码是从已知恶意软件样本中提取的一段唯一标识符,通常是恶意代码中的特定字节序列。防病毒软件使用这些特征码来匹配和识别系统中的恶意软件。基于行为的检测
基于行为的检测方法通过监控软件的行为来识别恶意活动。这种方法不依赖于已知的特征码,而是关注软件在运行时的行为模式,如文件操作、网络通信、注册表修改等。基于机器学习的检测
基于机器学习的检测方法使用机器学习算法来识别恶意软件。这些算法通过训练大量已知的恶意软件和良性软件样本,学习区分恶意和良性软件的特征。基于沙箱的检测
基于沙箱的检测方法通过在隔离环境中运行可疑文件,观察其行为来判断是否为恶意软件。沙箱环境可以防止恶意软件对真实系统造成损害。基于信誉的检测
基于信誉的检测方法通过评估文件和URL的信誉来识别恶意软件。这种方法依赖于一个信誉数据库,该数据库包含已知的恶意文件和URL的列表。
3.Windows 2000系统被攻破并加入僵尸网络
数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。
1) IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用哪些TCP端口?
IRC (Internet Relay Chat) 是一种实时的互联网文本消息协议,它允许用户加入频道并与其他用户进行群聊,或者通过私信功能一对一交流。
当一个IRC客户端想要加入一个IRC网络时,它会发送一个连接请求到服务器,并且在成功建立连接后,通常会发送一个NICK命令来指定用户的昵称,以及一个USER命令来提供一些额外的用户信息。
IRC最常用的TCP端口是6667,但是也可以使用其他端口如6660-6669范围内的端口号,以及更安全的SSL/TLS加密连接使用的6697端口。
2)僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet)是由一系列被恶意软件感染的计算机组成的网络,这些计算机可以被远程控制者(通常称为“僵尸牧者”或“Botmaster”)用来执行各种非法活动。
僵尸网络通常用于以下几种目的:
- 分布式拒绝服务攻击(DDoS):通过大量的请求淹没目标网站或服务,导致其无法正常响应合法用户的请求。
垃圾邮件发送:利用僵尸网络中的计算机大量发送未经请求的电子邮件,以推广产品或传播恶意软件。- 点击欺诈:自动产生虚假的网页点击,以增加广告费用或影响搜索引擎排名。
- 信息窃取:从受感染的计算机中收集敏感数据,如银行账户信息和个人身份信息。
- 密码破解:使用僵尸网络中的计算资源尝试暴力破解密码。
3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
首先,我们使用Wireshark打开数据文件botnet_pcap_file.dat,过滤源IP地址为172.16.134.191,目的端口为6667或6697
设置过滤条件为:ip.src == 172.16.134.191 && tcp.dstport == 6667 || tcp.dstport == 6697
过滤统计结果有如下五个IP地址:
63.241.174.144
66.33.65.58
217.199.175.10
209.196.44.172
209.126.161.29
4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
首先输入
apt install tcpflow
对捕获到的数据包进行分流,输入
tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
我们得到了这样的三个文件
分别是:172.016.134.191.01152-209.196.044.172.06667,209.196.044.172.06667-172.016.134.1 91.01152,report.xml
我们关心的是访问IP地址为209.196.44.172的主机,所以看第一个文件,使用命令
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 "\15" | grep -v "^$" | sort -u | wc -l
从输出中可以看到有3461个不同的主机访问了这一僵尸网络。
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 > 20222316.txt;wc -l 20222316.txt
,将攻击蜜罐主机的ip筛选出来并输出至文件中。
总计有165个IP地址用于攻击蜜罐主机,下图中截取了文件的开头和结尾
6)攻击者尝试攻击了哪些安全漏洞?
点击wireshark的统计->协议分级,可以看到有tcp包和udp包,tcp包占了大部分。
在kali终端中输入命令
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
从中可以看出响应的端口有135(RPC远程过程调用)、139(NetBIOS/SMB)、25(SMTP简单邮件传输协议)、445(SMB,用于文件、打印机等的共享)、4899(Radmin,用于远程控制)、80(HTTP)。
再使用命令
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端口。
从中可以看出响应的端口有137(NetBIOS)。
7)哪些攻击成功了?是如何成功的?
- 80端口
输入筛选条件tcp.port == 80 && ip.dst == 172.16.134.191
观察报文发现,向目标成功请求默认网页。
- 445端口
输入筛选条件tcp.port == 445 && ip.dst == 172.16.134.191
可以发现数据包中有PSEXESVC.exe,是一种蠕虫病毒。
- 4899端口
输入筛选条件tcp.port == 4899 && ip.dst == 172.16.134.191
观察报文发现,此时有大量TCP包,攻击成功。
三、问题及解决方案
-
问题1:打开process explorer,然后运行脱壳后的Rada,双击进程,查看Strings窗口显示错误。
-
问题1解决方案:在出现这个提示时,不要点确定。
四、学习感悟、思考等
通过实验,我对恶意软件的种类、工作方式以及对系统的影响有了更加深刻的理解。例如,通过分析rada恶意代码样本,我了解到恶意软件可以通过修改注册表、执行网络攻击等多种手段实现其目的。
在实验过程中,我学会了使用多种工具和技术来分析恶意软件,如使用file命令识别文件类型、使用IDA Pro进行静态和动态分析、使用tcpdump和Wireshark分析网络流量等。这些技能不仅对恶意软件分析有用,也适用于其他网络安全领域的研究。
参考资料
- 第4章 恶意代码分析技术PPT