网络攻防实验报告
姓名:田青
学号:20222305
实验日期:2024/11/01 — 2024/11/10
实验名称:恶意代码分析实践
指导教师:王志强
1.学习内容
1.指令集合:二进制执行代码,脚本,宏,指令流。
2.恶意代码命名规则:前缀+名称+后缀
3.BIOS->MDR->分区引导记录->操作系统(电脑启动)
4.逆向工程:程序结构CG(高层视图),CFG(程序控制流程图),加密多态变形(恶意代码混淆机制)
5.IPtable:Linux的防火墙
2.实验内容
一、恶意代码文件类型标识、脱壳与字符串提取
对提供的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)那些攻击成功了?是如何成功的?
3.实验过程
3.1恶意代码文件类型标识、脱壳与字符串提取。
3.1.1使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具把从学习通资料中下载的RaDa.exe文件传到虚拟机中,输入指令
file RaDa.exe
会看到这样一段话
其中,“PE32”说明是一个32位的PE文件,“(GUI) Intel 80386”说明运行在Intel 80386 GUI上,“for MS Windows”说明针对的操作系统是Windows。
什么是PE文件:
PE文件是一种Windows操作系统下可执行文件的格式,全称为Portable Executable。PE文件是一种用于存储程序代码、数据和资源的文件格式,它是Windows操作系统中常见的可执行文件格式之一。
PE文件包含了程序的代码段、数据段、资源和其他元数据,如导入表、导出表、重定位表等。它还包含了程序运行所需的头部信息,用于告诉操作系统如何加载和执行这个程序。
PE文件格式具有一定的结构,通常包括DOS头部、PE头部、节表等部分。DOS头部用于兼容DOS系统,在Windows系统中并不直接使用。PE头部包含了PE文件的基本信息,如文件类型、节表偏移等。节表则描述了文件中各个节的信息,如代码段、数据段等。
3.1.2使用PEID解析文件
其中可以看到RaDa.exe文件的入口点、文件偏移、EP段
从下面扩展信息中可以看出该程序加的是UPX的壳,版本是0.89.6。
3.1.3使用超级巡警脱壳机,对rada恶意代码样本进行脱壳处理
3.1.4使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁
一直往下,差不多到中下就可以看到二位大佬了
同时可以通过IDApro查看字符串,在view中打开Opne subviews,打开Strings子图,从字符串中寻找到作者的信息。
3.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
3.2.1cmd测试crackme1.exe文件简单判断该文件的功能,试探输入格式
3.2.2我们利用IDA,选择“View”→“Open subviews”→“strings”,查看字符串。
发现有当时cmd执行该文件的内容:“I think you are missing something.”和I know the secret”、“Pardon? What did you say? ”、“You know how to speak to programs”
3.2.3使用IDApro查看crackme
3.2.4我们选择“View”→“Graphs”→“Function calls”,查看函数调用图。
3.2.5“View”→“Open subviews”→“Generate pseudocode”得到main函数的伪代码:
3.2.6分析可以得出结论:
如果第二个参数是“I know the secret”,则输出“You konw how to speak to programs,Mr.Reverse-Engineer”。
如果第二个参数不是“I know the secret”,输出“Pardon? What did you say?”。
如果参数个数不为2,输出“I think you are missing something.”。
3.2.7分析crackme2.exe,大致内容同上
试探输入格式
3.2.8我们利用IDA,选择“View”→“Open subviews”→“strings”,查看字符串。发现有当时cmd执行该文件的内容:
I think you are missing something.n
I have an identity problem.n
I know the secret
Pardon? what did you say?in
3.2.9使用IDApro查看crackme2
3.2.10我们选择“View”→“Graphs”→“Function calls”,查看函数调用图。
3.2.11“View”→“Open subviews”→“Generate pseudocode”得到main函数的伪代码:
3.2.12将文件名从crackme2修改为crackmeplease
3.2.13经过分析可以得出结论:
程序首先判断参数个数,若参数个数为2(包含函数名),其中中途需要修改crackme2.exe为crackmeplease.exe:
①第一个参数是“crackmeplease.exe”,第二个参数是“I know the secret”,若是则输出成功信息,否则输出“Pardon? What did you say?”。
②第一个参宿不是“crackmeplease.exe”,输出“I have an identity problem.”。
若参数个数不为2(包含函数名),输出“I think you are missing something.”
3.3分析一个自制恶意代码样本rada
3.3.1提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
利用md5sum命令获取基本信息
获得SHA1摘要,输入指令
certutil -hashfile D:\wlgf\rada\RaDa.exe
SHA1 的 D:\wlgf\rada\RaDa.exe 哈希:
4164423ece62c5c4c287f8c2003b84e4e3a6cfda
获得MD5摘要,输入指令
certutil -hashfile D:\wlgf\rada\RaDa.exe MD5
MD5 的 D:\wlgf\rada\RaDa.exe 哈希:
caaa6985a43225a0b3add54f44a0d4c7
获得SHA256摘要,输入指令
certutil -hashfile D:\wlgf\rada\RaDa.exe SHA256
SHA256 的 D:\wlgf\rada\RaDa.exe 哈希:
13c2379e9d9f679396e21a3391804cc834892f25691381b6d078d07b56d38f90
3.3.2找出并解释这个二进制文件的目的
打开process explorer后运行rada_dump_.exe软件,查看strings.
1.通过HTTP协议请求10.10.10.10\RaDa\RaDa_commands.html,反向连接这个ip地址,进行数据传输,这样可以逃避防火墙。
2.对download.cgi和upload.cgi进行某些操作
3.在C盘中创建一个RaDa文件夹,里面创建了tmp文件夹。
4.添加了一个注册表项:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,这个注册表项是控制计算机启动的信息,这样实现了开机自启动rada。
5.在RaDa文件夹中,创建了bin文件夹,将RaDa.exe复制在bin文件夹中。
6.添加了一个注册表项:
HKLM\Software\VMware, Inc.\VMware Tools\InstallPath
该位置的注册表项可控制远程桌面上的客户端驱动器重定向行为。猜想这个操作是为了实现远程控制桌面。
7.该位置的字符串显示发起DDOS Smurf远程攻击。
8.注册表进行读、写、删
9.put、get、screenshot、sleep等信息,可能有使主机截屏、睡眠等功能。
3.3.3识别并说明这个二进制文件所具有的不同特性
修改注册表 开机自启动 自己复制到C盘下面 可以截图,可以远程控制,运行远程连接被攻击者连接可以控制桌面,并且可以进行读写删操作。
3.3.4识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
UPX加壳 查看字符串时如果不脱壳会发现为乱码。
3.3.5对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
属于后门程序
该恶意代码不会进行传播,不是蠕虫或者病毒。而且没有伪装成正常程序,不是木马,是直接存在的。该恶意代码可以实现远程控制,并且设置了开机自启动。
3.3.6给出过去已有的具有相似功能的其他工具
实验二的msfvenom就可以生成后门文件,然后传递到被攻击者的主机上实现反弹连接;实验三的veil。
3.3.7可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下
1.可以通过查看脱壳后的程序字符串得知此病毒的作者是是Raul Siles 和 David Perez,创建时间是2004年。
2.可以在windows虚拟机中以RaDa.exe --authors运行程序,点击确定后弹出窗口显示作者是是Raul Siles 和 David Perez,创建时间是2004年。
3.3.8给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法
1.基于特征码的检测
介绍:这是最传统的恶意软件检测方式之一,它依赖于已知恶意软件的数字指纹或特征码。安全厂商会收集各种恶意软件样本,并提取出唯一的标识符(如特定的字符串、二进制模式等),这些标识符被称为“签名”。当扫描系统时,反病毒软件会将文件与已知的恶意软件签名进行对比。
2.行为分析
介绍:行为分析侧重于观察程序的行为模式,而不是其代码结构。这种方法可以识别那些试图执行可疑操作(如修改注册表、启动其他进程、下载额外组件等)的软件。
3.启发式扫描
介绍:启发式扫描是一种智能扫描技术,它通过分析文件的结构、代码逻辑等信息来判断一个程序是否具有潜在的危害性。这种方法试图超越简单的特征码匹配,寻找可能指示恶意活动的模式。
4.沙箱检测
介绍:沙箱检测是指在一个隔离的环境中运行可疑程序,以观察其实际行为。这样可以在不影响真实系统的情况下评估程序的安全性。
5.云查杀(Cloud-Based Detection)
介绍:云查杀利用云计算的强大处理能力和大数据资源,将待检测文件的信息上传至云端服务器进行分析。这种方法能够快速访问最新的威胁情报,同时减轻本地系统的负担。
3.4取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
3.4.1IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
IRC (Internet Relay Chat) 是一种实时的互联网通信协议,允许用户加入频道(channel)与其他用户进行群聊,也可以私信给其他用户。IRC的基本架构是由多个服务器组成的网络,这些服务器互相连接,共享用户之间的消息。每个用户通过一个IRC客户端连接到这个网络上的某个服务器,从而参与到聊天中。
当一个IRC客户端想要加入一个IRC网络时,它首先需要向网络中的一个服务器发起连接请求。一旦建立了连接,客户端通常会发送以下两个基本命令来完成登录过程:
NICK - 客户端使用此命令指定它希望在网络中使用的昵称(nickname)。例如,NICK MyNickname。
USER - 这个命令提供了关于用户的更多信息,如用户名、主机名、服务器名和服务端描述等。格式通常是 USER username hostname servername :realname。例如,USER myuser myhost myserver :My Real Name。
这两个命令是客户端成功连接到IRC网络并开始交流的基础。
IRC常用的TCP端口:
6667 - 这是最常用于IRC通信的端口号。
除此之外,还有一些其他常见的端口,比如 6660-6669 范围内的端口,以及 7000。
在某些情况下,为了绕过防火墙限制,IRC服务可能会使用80(HTTP)、443(HTTPS)等标准Web服务端口。
3.4.2僵尸网络是什么?僵尸网络通常用于什么?
僵尸网络(Botnet) 是指一组被黑客控制的计算机(也称为“僵尸”或“肉鸡”),这些计算机通常是在用户不知情的情况下被感染了恶意软件。一旦被感染,这些计算机就可以接受来自远程攻击者的指令,执行各种非法或有害的操作。僵尸网络的形成通常涉及以下几个步骤:
传播恶意软件:攻击者通过电子邮件附件、恶意网站、USB驱动器等方式传播含有恶意软件的文件。一旦用户不慎安装了这些恶意软件,他们的计算机就会被感染。
建立控制通道:感染后的计算机将尝试与攻击者指定的服务器(通常称为C&C,即Command and Control,指挥与控制服务器)建立连接。通过这个连接,攻击者可以发送指令给所有受感染的计算机。
执行命令:根据攻击者的指令,僵尸网络中的计算机可以执行多种任务,包括但不限于发送垃圾邮件、发动分布式拒绝服务攻击(DDoS)、窃取敏感信息等。
僵尸网络的用途:
分布式拒绝服务攻击(DDoS):攻击者可以利用僵尸网络中的大量计算机同时向目标网站或服务器发送请求,导致目标服务器过载,从而使其无法正常提供服务。
发送垃圾邮件:僵尸网络可以用来大量发送垃圾邮件,包括广告、欺诈信息等,这不仅会消耗大量的网络资源,还可能导致用户受到诈骗。
窃取敏感信息:攻击者可以通过僵尸网络中的计算机窃取个人信息、银行账户信息等敏感数据,进而实施金融诈骗等犯罪活动。
挖掘加密货币:近年来,一些攻击者利用僵尸网络中的计算机资源进行加密货币的挖掘,这种做法不仅消耗了大量的电力资源,还会降低受感染计算机的性能。
传播恶意软件:僵尸网络还可以被用来进一步传播恶意软件,扩大感染范围,增加僵尸网络的规模。
3.4.3蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
用wireshark,打开botnet_pcap_file.dat
IRC服务器使用6667端口,使用ip.src == 172.16.134.191 and tcp.dstport == 6667
过滤规则进行查找
3.4.4在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
下载tcpflow,虚拟机kali中输入sudo apt install 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
有3461台主机访问了。
3.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 > 20222305fgwb.txt;wc -l 20222305fgwb.txt
将攻击蜜罐主机的ip筛选出输出至20222305fgwb.txt文件中。
输入vim 20222305fgwb.txt查看具体的ip地址。
3.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端口有: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端口:137
3.4.7那些攻击成功了?是如何成功的?
输入ip.dst == 172.16.134.191 && tcp.dstport == 135
筛查发现tcp135端口:正常连接。
输入ip.dst == 172.16.134.191 && tcp.dstport == 139
筛查发现tcp139端口:正常连接。
输入ip.dst == 172.16.134.191 && tcp.dstport == 25
筛查发现tcp25端口:正常连接。
输入ip.dst == 172.16.134.191 && tcp.dstport == 445
筛查发现tcp445端口:有61.111.101.78向蜜罐主机发送PSEXESVC.EXE,这个文件主要是一种通过IRC进行通信的Dv1dr蠕虫。这里发生了口令蠕虫攻击
用ip.dst==61.111.101.78
查看从蜜罐发往攻击主机的数据包.有results:Acceptance的信息,主机发生响应,攻击成功。
输入ip.dst == 172.16.134.191 && tcp.dstport == 4899
筛查发现tcp4899端口:这里发生了Radmin远程控制,攻击成功。
输入ip.dst == 172.16.134.191 && tcp.dstport == 80
筛查发现tcp80端口:存在缓存区溢出攻击,通过缓冲区溢出获得命令行。
在No.32889的报文中发现了“c:\notworm”,这是一个蠕虫攻击。
输入ip.dst == 172.16.134.191 && udp.dstport == 137
筛查发现udp137端口:正常连接。
3.问题及解决方案
- 问题1:rada_dump_.exe无法启动
- 问题1解决方案:在WIN虚机解决
- 问题2:直接右键打开botnet_pcap_file.dat,找不到wireshark
- 问题2解决方案:直接在wireshark左上角打开
4.学习感悟、思考等
在这个实验中,让映象最深的是对提供的rada恶意代码样本进行了深入的分析。我使用了文件格式和类型识别工具来确定rada恶意代码样本的文件格式、运行平台和加壳工具。通过这一过程,我了解到rada是一个PE格式的可执行文件,设计用于Windows操作系统,并且使用了UPX作为加壳工具。这一步骤对于后续的分析至关重要,因为它帮助我选择了合适的脱壳工具——超级巡警脱壳机。在成功脱壳后,我使用了字符串提取工具对rada恶意代码样本进行了分析。通过仔细检查提取出的字符串,我发现了几个关键信息,其中包括rada恶意代码的编写作者的名字。这个过程不仅提高了我们的技术技能,也让我深刻理解了恶意代码分析的重要性。通过这次实验,我深刻体会到了网络安全的重要性和复杂性。恶意软件和攻击手段的多样化要求我必须不断学习新的技术和方法来保护信息系统。同时,取证分析的过程也让我认识到,即使面对复杂的攻击,只要方法得当,仍然有可能找到攻击的痕迹并采取相应的防御措施。