20222314 2024-2025-1 《网络与系统攻防技术》实验四实验报告
网络与系统攻防实验报告
实验时间:2024-11-01 ~ 2024-11-10
实验人员:20222314陈振烨
实验地点:地下机房
指导教师:王志强
1.实践内容
1.1学习内容
本周学习了恶意代码的相关知识
①恶意代码的类型有:计算机病毒 、 蠕虫、特洛伊木马、逻辑炸弹、系统后门、 Rootkit
②各种形态恶意代码在关键环节上具有其明确的定义特性:传播、控制、隐藏、攻击
③恶意代码的发展历史
④计算机病毒的定义:计算机病毒是一种能够自我复制的代码,通过将自身嵌入其他程序进行感染,而感染过程通常需要人工干预才能完成。
⑤计算机病毒感染机制:感染可执行文件、感染引导扇区(系统启动过程)、感染数据文件-宏指令(文件打开自动执行)
⑥僵尸网络(BotNet):攻击者出于恶意目的,传播僵尸程序控制大量主机,并通过一对多的命令与控制信道所组成的网络。定义特性:一对多的命令与控制通道的使用。
1.2 实验内容
1.2.1恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:
(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
1.2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
1.2.3分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
(2)找出并解释这个二进制文件的目的;
(3)识别并说明这个二进制文件所具有的不同特性;
(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
(6)给出过去已有的具有相似功能的其他工具;
(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
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。
什么是PE文件:
PE文件是一种Windows操作系统下可执行文件的格式,全称为Portable Executable。PE文件是一种用于存储程序代码、数据和资源的文件格式,它是Windows操作系统中常见的可执行文件格式之一。
PE文件包含了程序的代码段、数据段、资源和其他元数据,如导入表、导出表、重定位表等。它还包含了程序运行所需的头部信息,用于告诉操作系统如何加载和执行这个程序。
PE文件格式具有一定的结构,通常包括DOS头部、PE头部、节表等部分。DOS头部用于兼容DOS系统,在Windows系统中并不直接使用。PE头部包含了PE文件的基本信息,如文件类型、节表偏移等。节表则描述了文件中各个节的信息,如代码段、数据段等。
(2)在Windows系统使用exeinfope.exe
(3)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
脱壳之后生成的RaDa_unpacked.exe文件在后续仍有使用
(4)通过IDApro查看字符串,shift+F12快捷键直接搜索出字符串,从字符串中寻找到作者的信息。
2.2使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
分析crackme1.exe
我们利用IDA,shift+F12查看字符串。双击字符串后双击所属于的函数,然后F5
经过分析可以得出结论:
如果第二个参数是“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.”。
因此可以与最开始的试探输入格式进行比较:
到此crackme1.exe文件分析结束
分析crackme2.exe,大致内容同上
shift+F12查看字符串。双击字符串后双击所属于的函数,然后F5:
经过分析可以得出结论:
程序首先判断参数个数,若参数个数为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文件分析结束
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就可以生成后门文件,然后传递到被攻击者的主机上实现反弹连接
(7)可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以的,并且很容易,在上面实验的多个工具中,我们都可以查到该文件的作者是两位外国友人。只要我们有工具并且在安全的环境下保存了这个文件就可以查出文件的作者。
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网络时,通常会发送一条消息以建立连接和进行身份验证。这条消息一般为:
USRE <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工具读取名为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 "^KaTeX parse error: Expected group after '^' at position 33: …有-v选项,用于过滤掉空行。"^̲"是一个正则表达式,表示匹配空行。
7.sort -u: 这个命令使用sort工具对行进行排序,并通过-u选项去除重复行,这可能是为了得到唯一的单词列表。
8.wc -l: 最后,这个命令使用wc工具统计行数(单词的数量),输出结果表示单词的总数
统计访问以209.196.44.172为服务器的僵尸网络的主机数:发现有3461台
(5)哪些IP地址被用于攻击蜜罐主机?
从名为botnet_pcap_file.dat的pcap文件中提取出目标主机地址为172.16.134.191的数据包的源主机地址,并统计不同源主机的数量,并将结果保存到名为20222314czy.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 > 20222314czy.txt;wc -l 20222314czy.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
说明135/139/25/445/4899/80端口的开放的,后续就要针对这些端口分析
说明只要137端口的开放的
(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端口,发现了传递大量的CCCC的内容,有可能是为了测试缓冲区溢出攻击
⑦udp的137端口,发现了大量NBNS协议包
NBNS(NetBIOS Name Service)协议是用于在局域网中解析 NetBIOS 名称与 IP 地址之间映射关系的服务。它主要用于 Windows 网络中,通过将计算机名(NetBIOS 名称)解析为IP地址,使计算机能够相互通信和识别。NBNS协议通常工作在UDP的端口137上
4.实践总结
本次实验相对简单顺利,没有之前那样花费大量的时间来安装环境。但是用到的工具特别特别多,主要是用来分析恶意代码的各种信息,但使用了这么多工具我发现都不如我在恶意代码课上学到的好用,我认为ollydbg和winhex可以充分分析文件的各种信息,包括文件头、文件结构、文件中的data节、text节等等。