20222317 2024-2025-1 《网络与系统攻防技术》实验四实验报告
1. 实验内容
1.1恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
1.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
1.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
1.4取证分析实践
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恶意代码文件类型标识、脱壳与字符串提取
(1)使用file命令查看RaDa.exe的文件类型
说明该文件是32位的pe文件,并且运行在Intel 80386的cpu上,而且支持的操作系统是windows。
(2)在Windows系统使用PE explorer
(3)使用PEID解析文件
可以看到RaDa.exe文件的入口点、文件偏移、EP段
(4)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
(5)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁
在其中查看,就会发现该文件的创始人应该就是这两位外国友人了
同时可以通过IDApro查看字符串,在view中打开Opne subviews,打开Strings子图,从字符串中寻找到作者的信息。
2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
2.2.1分析crackme1.exe
(1)cmd测试crackme1.exe文件
其作用是简单判断该文件的功能,试探输入格式
(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)使用IDApro查看crackme,首先查看
(4)我们选择“View
”→“Graphs
”→“Function calls
”,查看函数调用图。
(5)“View
”→“Open subviews
”→“Generate pseudocode
”得到main函数的伪代码:
经过分析可以得出结论:
如果第二个参数是“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.”。
因此可以与最开始的试探输入格式进行比较:
2.2.2分析crackme2.exe
(1)cmd测试crackme2.exe文件
其作用是简单判断该文件的功能,试探输入格式
(2)我们利用IDA,选择“View
”→“Open subviews
”→“strings
”,查看字符串。
发现有当时cmd执行该文件的内容:
I think you are missing something.n
I have an identity problem.n
I know the secret
(4)我们选择“View
”→“Graphs
”→“Function calls
”,查看函数调用图。
(5)“View
”→“Open subviews
”→“Generate pseudocode
”得到main函数的伪代码:
经过分析可以得出结论:
程序首先判断参数个数,若参数个数为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.”
因此可以与最开始的试探输入格式进行比较(复制一个crackme2.exe改名为crackmeplease.exe):
2.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息:
利用md5sum
和file
命令获取基本信息
(2)找出并解释这个二进制文件的目的;
打开Process Explorer,然后搜索脱壳后的RaDa,双击对应的进程,点击字符串,可以看到
可得到以下信息:
1.通过HTTP协议请求10.10.10.10\RaDa\RaDa_commands.html。
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.注册表进行读、写、删操作
(3)识别并说明这个二进制文件所具有的不同特性;
1.可以修改系统,并且添加了注册表,实现了开机自启动
2.可以远程控制。运行远程连接被攻击者连接
3.可以控制桌面,并且可以进行读写删操作,使得计算机完全陷入攻击者的掌控当中,属于具有强大攻击性的恶意代码
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
主要是运用了加壳技术,如果我们打开的是RaDa.exe文件就无法查看其中的String了,相对于进行了一些简单的保护,但是很容易被脱壳
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由:
属于后门程序;该恶意代码不会进行传播,不是蠕虫或者病毒。而且没有伪装成正常程序,不是木马,是直接存在的。该恶意代码可以实现远程控制,并且设置了开机自启动。
(6)给出过去已有的具有相似功能的其他工具;
实验二的msfvenom就可以生成后门文件,然后传递到被攻击者的主机上实现反弹连接,据我了解,实验三的veil也是可以的
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以的,并且很容易,在上面实验的多个工具中,我们都可以查到该文件的作者是两位外国友人。只要我们有工具并且在安全的环境下保存了这个文件就可以查出文件的作者。
(8)给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法。
一、基于特征码的方法
基于特征码的检测方法是一种传统的恶意软件检测手段。该方法通过收集已知的恶意代码样本,提取其独特的特征码(即签名),并建立一个特征码数据库。在检测过程中,扫描待检测的文件或程序,将其与特征码数据库中的签名进行比对。如果找到匹配的签名,则判定该文件或程序为恶意软件。这种方法准确率高,但依赖于特征码数据库的更新速度和完整性,对于新出现的恶意软件或经过变种的恶意软件可能无法及时检测。
二、行为监测法
行为监测法通过分析计算机系统中程序的行为来检测恶意软件。恶意软件在感染计算机后通常会表现出一些异常行为,如修改系统文件、创建新文件、发送垃圾邮件等。行为监测法通过监控这些行为,并与正常行为模式进行对比,从而判断是否存在恶意软件。这种方法能够检测到未知或经过变种的恶意软件,但可能受到系统环境、用户行为等因素的影响,导致误报或漏报。
三、网络流量监测法
恶意软件通常需要通过网络与外部服务器进行通信,传输有害信息或接收远程指令。网络流量监测法通过监控计算机与外部服务器的网络流量,分析数据包的来源、目的地、内容等特征,从而检测是否存在恶意软件。这种方法在网络安全领域应用广泛,能够及时发现并阻止恶意软件的网络活动。然而,对于使用加密通信的恶意软件,网络流量监测法的检测效果可能受到限制。
四、静态分析法
静态分析法通过对恶意软件本身(如二进制文件、可执行文件)的静态特征进行分析,来发现恶意软件。这种方法通常涉及反编译、提取静态特征(如文本、全局、头部、导入导出表、节特征等)、对比分析等步骤。静态分析法能够准确地捕捉到恶意软件的静态特征,但由于特征类型单一,恶意软件作者可能通过混淆、加壳等技术来逃避检测。因此,静态分析法通常需要与其他检测方法结合使用,以提高检测的准确性和全面性。
五、基于机器学习的检测方法
随着恶意软件数量的剧增和类型的多样化,传统的检测方法逐渐显得效率不足。基于机器学习的检测方法通过挖掘输入特征之间更深层次的联系,更加充分地利用恶意代码的信息,从而实现对恶意软件的高准确率检测。这种方法通常包括数据准备、特征提取及选择、训练机器学习模型、获取检测结果等步骤。在特征提取阶段,可以从恶意软件的静态特征(如字节码、IAT表、可打印字符等)和动态特征(如API调用关系、控制流图、数据流图等)中提取有用的信息。然后,选择一种合适的机器学习算法(如支持向量机、随机森林、朴素贝叶斯、卷积神经网络等)来训练模型。训练完成后,使用模型对待检测的文件或程序进行预测和分类,从而判断其是否为恶意软件。基于机器学习的检测方法能够自适应地应对新出现的恶意软件和变种恶意软件,但模型的准确性和泛化能力受到特征集的选择、数据集的代表性、平衡性和定期更新等因素的影响。
2.4取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:
(1)IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用那些TCP端口?
①IRC(Internet Relay Chat)是一种即时通讯协议,允许用户通过互联网进行实时文本通信。它采用了分布式客户端/服务器模型,允许用户加入不同的聊天室(频道),进行私密对话或群聊。IRC最初由芬兰学生Jarkko Oikarinen于1988年创建,作为一个用于在互联网上实时交流的系统。
在IRC中,用户通过IRC客户端连接到IRC服务器,然后可以加入不同的聊天频道或者与其他用户进行私密对话。每个IRC服务器可以连接到其他IRC服务器,形成一个IRC网络,使得用户可以跨服务器进行通信。
②当IRC客户端连接到一个IRC网络时,通常会发送一条消息以建立连接和进行身份验证。这条消息一般为:
USER <username> <hostname> <servername>; <realname>
其中,各项的含义如下:
username:客户端用户的用户名,用于标识用户。
hostname:客户端的主机名,即客户端所在的计算机的主机名。
servername:客户端所连接的服务器名,即用户要加入的IRC服务器的名称。
realname:客户端用户的真实姓名,用于显示给其他用户。
这条消息的发送旨在建立与服务器的连接,并向服务器提供用户的身份信息,以便服务器对用户进行识别和授权。
③至于TCP端口,IRC一般使用TCP协议进行通信。标准的IRC端口是6667。在某些情况下,IRC网络可能会使用其他端口,但通常情况下,客户端连接到服务器时会使用6667端口。如果服务器使用不同的端口,客户端需要在连接时指定该端口。
总之,IRC是一种通过互联网进行实时文本通信的协议,用户可以通过客户端加入不同的聊天频道或与其他用户进行交流。在连接时,客户端会发送特定的消息以建立连接和进行身份验证,而通信则通常使用TCP端口6667。
(2)僵尸网络是什么?僵尸网络通常用于什么?
①僵尸网络(Botnet)是由一组受控的被感染的计算机(称为僵尸)组成的网络。这些计算机可能已经被恶意软件感染,例如恶意软件通过利用漏洞或社会工程技术,使得计算机受到控制,成为攻击者的工具。
②僵尸网络通常用于执行各种恶意活动,包括但不限于:
分布式拒绝服务攻击(DDoS):攻击者可以利用僵尸网络的大量计算机向目标系统发送大量的请求,使目标系统超负荷运行,导致服务不可用。
垃圾邮件传播:攻击者可以利用僵尸网络发送大量的垃圾邮件,进行广告推广、传播恶意软件或进行钓鱼攻击。
钓鱼和网络钓鱼:攻击者可以利用僵尸网络发送虚假的电子邮件或网站,试图欺骗用户泄露个人信息、登录凭证或进行其他欺诈行为。
数据盗窃:攻击者可以利用僵尸网络从受感染的计算机中窃取敏感信息,如个人身份信息、银行账户信息等。
(3)蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
①蜜罐(Honeypot)是一种安全机制,旨在诱使攻击者入侵、攻击或探测计算机系统、网络或应用程序,从而收集有关攻击者行为和策略的信息,以及提高对抗网络攻击的能力。蜜罐通常是一个看似有漏洞或价值的系统、网络或应用程序,但实际上是由安全专家部署和监控的虚拟或实体资源。攻击者可能会对蜜罐进行攻击,试图入侵、获取权限或进行其他恶意活动,而安全团队则可以监视并分析这些攻击行为。
②用wireshark打开botnet_pcap_file.dat文件,设置过滤条件“ip.src == 172.16.134.191 && tcp.dstport == 6667 and tcp.flags == 0x2
”,得到如下结果:
经过分析,可以得出,蜜罐主机与如下的服务器进行通信:
- 209.126.161.29
- 66.33.65.58
- 63.241.174.144
- 217.199.175.10
- 209.196.44.172
(4)在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
①下载tcpflow,输入apt-get install tcpflow
② 使用tcpflow工具读取名为botnet_pcap_file.dat的pcap文件。
其中过滤规则指定了要匹配的数据包的主机地址和端口号。具体来说,这个规则表示只匹配目标主机地址为209.196.44.172且目标端口号为6667的数据包。
输入 tcpflow -r botnet_pcap_file.dat 'host 209.196.44.172 and port 6667'
查看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
1.
cat 209.196.044.172.06667-172.016.134.191.01152
: 这个部分使用cat命令打开名为209.196.044.172.06667-172.016.134.191.01152的文件,该文件似乎是 IRC 通信的一部分。
2.grep -a "^:irc5.aol.com 353"
: 这个命令使用grep工具,带有-a选项,以文本模式搜索匹配指定模式的行。"^:irc5.aol.com 353"是一个正则表达式,表示以:irc5.aol.com 353开头的行。在 IRC 中,这可能表示一个频道中的用户列表。
3.sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g"
: 这个命令使用sed工具进行替换操作。它将行开头的:irc5.aol.com 353 rgdiuggac @ #x[^x]*x :部分替换为空字符串。这可能是为了清理行中的特定格式或标识符。
4.tr ' ' '\n'
: 这个命令使用tr工具将空格字符替换为换行符。这样做可能是为了将原始数据按照空格分隔的单词分割成单独的行。
5.tr -d "\r"
: 这个命令使用tr工具删除回车符(\r),可能是为了确保在 Unix 风格的文本文件中去除 Windows 风格的换行符。
6.grep -v "^$"
: …有-v选项,用于过滤掉空行。"^̲"是一个正则表达式,表示匹配空行。
7.sort -u
: 这个命令使用sort工具对行进行排序,并通过-u选项去除重复行,这可能是为了得到唯一的单词列表。
8.wc -l
: 最后,这个命令使用wc工具统计行数(单词的数量),输出结果表示单词的总数
统计访问以209.196.44.172为服务器的僵尸网络的主机数:发现有3461台
从名为botnet_pcap_file.dat
的pcap文件中提取出目标主机地址为172.16.134.191
的数据包的源主机地址,并统计不同源主机的数量,并将结果保存到名为20222317hzf.txt
的文件中。
输入:
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 > 20222317hzf.txt;wc -l 20222317hzf.txt
打开文件发现有165台主机被用于蜜罐攻击
(6)攻击者尝试攻击了那些安全漏洞?
使用wireshark的“统计-协议分级”:发现有tcp包和udp包,其中tcp是主要的
分别筛选TCP和UDP响应端口,读取dat文件,查看哪些端口是开放的,输入:
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
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
(7)那些攻击成功了?是如何成功的?
①tcp135端口,发现是普通连接并没有进行攻击
②139端口,也没有什么攻击
③25端口,也没有攻击
④445端口此时不再是简单的连接,出现了SMB网络文件系统协议
SAMR结构网格自适应等协议。有61.111.101.78向蜜罐主机发送PSEXESVC.EXE;
PsExec通常会被攻击者用作远程主机执行命令,客户端执行psexec.exe后若服务器认证成功,会将psexesvc.exe上传到服务端的ADMIN$目录并作为服务运行,在执行完命令后删除对应的服务和psexesvc.exe。
psexec建立连接之后目标机器上会被安装一个“PSEXESVC”服务。但是psexec安全退出之后这个服务会自动删除(在命令行下使用exit命令退出)。
⑤4899端口是一个远程控制软件服务端监听的端口,具有远程控制功能,通常杀毒软件是无法查出它来的。可能被黑客用此来进行远程控制。
⑥80端口,发现了传递大量的NNNNNN的内容,有可能是为了实现缓冲区溢出攻击或者蠕虫攻击
⑦udp的137端口,发现了大量NBNS协议包
NBNS(NetBIOS Name Service)协议是用于在局域网中解析 NetBIOS 名称与 IP 地址之间映射关系的服务。它主要用于 Windows 网络中,通过将计算机名(NetBIOS 名称)解析为IP地址,使计算机能够相互通信和识别。NBNS协议通常工作在UDP的端口137上
三、遇到的问题及解决方案
问题1:不会下载crackme1.exe,显示不信任该文件
解决方案:我发现要右键点击保留,然后才可以继续下载
问题2:IDApro无法打开crackme文件
解决方案:一开始进行实验使用的IDApro是从学习通上面直接下载进行使用的,显示无法正常运行IDApro;后面下载了老师发在群里的汉化版发现打开crackme文件会提醒该文件是恶意程序无法查看;最后在群里下载了同学发出来的最新版IDApro成功解决了问题
四、心得体会
本次实验相对简单顺利,没有之前那样花费大量的时间来安装环境。但是用到的工具特别特别多,主要是用来分析恶意代码的各种信息;在进行恶意代码分析实践实验的过程中,我深刻体会到了理论与实践相结合的重要性,同时也对网络安全领域有了更加深入和全面的认识。这次实验不仅锻炼了我的技术能力,还让我对恶意代码传播方式以及防御策略有了更加清晰的理解。