20202422 2022-2023-2 《网络与系统攻防技术》实验四实验报告

20202422 2022-2023-2 《网络与系统攻防技术》实验四实验报告

1.实践内容

一、恶意代码文件类型标识、脱壳与字符串提取

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;

(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;

(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。

三、分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

(1)提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;

(2)找出并解释这个二进制文件的目的;

(3)识别并说明这个二进制文件所具有的不同特性;

(4)识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;

(5)对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;

(6)给出过去已有的具有相似功能的其他工具;

(7)可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

四、取证分析实践

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 恶意代码文件类型标识、脱壳与字符串提取

2.1.1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具

1.使用file查看
在这里插入图片描述
“PE32”说明是一个32位的PE文件,“(GUI) Intel 80386”说明运行在Intel 80386 GUI上,“MS Windows”说明针对的操作系统是Windows。

2.在Windows系统使用PE explorer
在这里插入图片描述

3.使用PEID解析文件
在这里插入图片描述

2.1.2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

在这里插入图片描述

2.1.3 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁

如图,使用:

strings RaDa_unpacked.exe 

查看文件的字符串信息。

在这里插入图片描述
关键信息找到:

在这里插入图片描述
另,也可以通过IDApro查看字符串,在view中打开Opne subviews,打开Strings子图,从字符串中寻找到作者的信息。
在这里插入图片描述
在这里插入图片描述

找到线索:
JDR0:00402D04 00000058 C (16 bits) - UTF-16LE Copyright © 2004 Raul Siles & David Perez

2.2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息

首先是下载IDApro并破解。用学习通里面的,我出现报错信息,于是直接放弃,在网上找链接下载。我成功的下载教程如下:
IDA下载、使用教程

2.2.1 分析crackme1.exe

cmd测试crackme1.exe文件
在这里插入图片描述
使用IDApro查看crackme,首先查看
在这里插入图片描述
“View”→“Open subviews”→“Generate pseudocode”得到main函数的伪代码:
分析这个伪代码可以得知,如果输入的参数有两个就会调入一个循环里面,如果此时第二个参数正好是I know the secret ,则触发目标语句 You know how to speak to programs, Mr. Reverse-Exgineer。这下就分析清楚了。
在这里插入图片描述
最终成功得到:
在这里插入图片描述

注意,输入的参数中,第一个只能是程序名字!比如上面成功的例子中,第一个参数是程序名,第二个参数是"I know the secret"。

2.2.2 分析crackme2.exe

crackme2.exe:
结构类似
在这里插入图片描述
在这里插入图片描述
分析主函数的结构,只有满足三个条件:
1.输入的命令个数为2。
2.第一个命令是:crackmeplease.exe
3.第二个命令是:I know the secret
才可以触发正确的结果。
但是我们知道,输入的第一个命令是程序名,如何输入?只有改变文件的名字。
在这里插入图片描述

2.3 分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

2.3.1提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;

在linux环境,md5sum命令是求文件摘要的命令。

在这里插入图片描述

识别信息:
同样,采用file命令识别文件的一般信息。
在这里插入图片描述

2.3.2找出并解释这个二进制文件的目的;

我尝试直接在linux运行这个可执行文件,但是出现如下结果:
在这里插入图片描述
其实linux可以执行windows的exe,但无法直接执行。通常情况下,exe程序是不能在LINUX下运行的,这是因为它们的内核是不同的;但是可以通过在Linux上安装wine来运行exe程序。Wine是一个能够在多种POSIX-compliant操作系统上运行Windows应用的兼容层;它可以将Windows API调用翻译成为动态的POSIX调用,免除了性能和其他一些行为的内存占用。

我直接在IDA的字符串窗口中,通过查找字符串信息,来分析这个程序的目的。如图是一些关键字符串的分析。
在这里插入图片描述
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.注册表读写删除操作,符合上面的4、6操作。
9.get put screenshot sleep操作,都是入侵系统的操作。

2.3.3识别并说明这个二进制文件所具有的不同特性;

1.可以修改系统。根据上面的分析,改程序可以通过修改注册表的方式修改系统设置,比如通过修改HKLM\Software\Microsoft\Windows\CurrentVersion\Run\,很可能是实现开机自启动。
2.可以远程控制。比如请求10.10.10.10\RaDa\RaDa_commands.html,有可能是让主机被一个特定的远程终端所控制。
3.具有侵略性。修改系统后,会触发截屏、挂起等操作,属于恶意程序。

2.3.4识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;

主要是加壳。我们用同样的方式打开原来的RaDa.exe文件,查看字符串,得到如下结果:
在这里插入图片描述
看来不能查看字符串,只有脱壳之后才可以查看。证明加壳技术确实有防止被分析的效果。

2.3.5对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;

后门程序。首先它不具备自我复制的机制,所以排除蠕虫和病毒,其次它没有伪装成良性程序进行欺骗,所以排除木马。
最后,其具备操控靶机、提取权限的操作,是典型的后门程序的特点。

2.3.6 给出过去已有的具有相似功能的其他工具;

1.MS OFFICE MACRO
2.Cobaltstrike生成后门
3.bobax
4.Setiri
5.msfvenom

2.3.7 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

可以的,在上述逆向分析的过程中,很多地方都查出了该程序的作者,比如通过IDA pro逆向分析等。

另外,在windows环境下,直接输入RaDa.exe --authors 也可以查看,如下:
在这里插入图片描述

2.4 取证分析实践

Windows 2000系统被攻破并加入僵尸网络

问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:

2.4.1IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

  1. IRC(Internet Relay Chat),即因特网中继聊天。 用户用自己的PC运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器即可聊天。
  2. 当IRC客户端申加入一个IRC网络时将发送JOIN信息来加入频道
  3. IRC服务器通常在6667端口监听,也会使用6660—6669端口

2.4.2 僵尸网络是什么?僵尸网络通常用于什么?

僵尸网络Botnet是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络
僵尸网络通常被用于发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等

2.4.3蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

首先,蜜罐是一个攻击诱骗系统,通过使用蜜罐模拟一个或多个易受攻击的主机和服务,给攻击者提供一个容易被攻击的目标,伪装成用户的业务应用,使攻击者误认为是欲攻击的目标对象。
然后再对botnet_pcap_file.dat文件进行分析。用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

2.4.4 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?

首先安装tcpflow

TCPflow是一款功能强大的、基于命令行的免费开源工具,用于在Unix之类的系统(如Linux)上分析网络流量。它可捕获通过TCP连接接收或传输的数据,并存储在文件中供以后分析,采用的格式便于协议分析和调试。

它实际上是类似tcpdump的工具,因为它处理来自网络或存储文件的数据包。它同样支持tcpdump支持的功能强大的过滤表达式。唯一的区别是,tcpflow让所有TCP数据包井然有序,并在单独的文件(每路方向的数据流有一个文件)中组装每路数据流,供以后分析。
具体的信息参考这篇文章:
tcpflow
在这里插入图片描述
通过如下命令查找有多少主机访问了以209.196.44.172为服务器的僵尸网络。
在这里插入图片描述

在这里插入图片描述

可以得到三个文件:209.196.044.172.06667-172.016.134.191.01152、
172.016.134.191.01152-209.196.044.172.06667、
report.xml。
根据需要我们 选择打开209.196.044.172.06667-172.016.134.191.01152文件,情况如下:
在这里插入图片描述

我发现这种打开方式并不能实现我们的分析目的:分析出多少不同的主机访问了以209.196.44.172为服务器的僵尸网络。于是我查找资料,发现以统计的方式打开此文件可以得出有多少主机访问了以该IP为服务器的僵尸网络。
于是乎输入如下管道命令:

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太主机访问了僵尸网络。
在这里插入图片描述

2.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 > 20202422.txt;wc -l 20202422.txt

将所有连接到蜜罐主机(172.16.134.191)的IP输入到20202422.txt中(自动创建该文件)
在这里插入图片描述
打开20202422.txt以后看到一下情况:
在这里插入图片描述
可以知道一共165个ip地址被用于攻击蜜罐主机。

2.4.6攻击者尝试攻击了那些安全漏洞?

首先在wireshark查看抓包文件的协议分级统计情况。如下图:
在这里插入图片描述如上图,我发现UDP协议有186个包,TCP协议有54350个包,他们在ip层的协议都是ipv4。于是我们重点筛选tcp端口和udp端口。
对于tcp协议端口的扫描:

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-ssn)、25(smtp)、445(smb)、4899(radmin)、80(http)端口是开放并相应的。

同理,对于udp协议端口的扫描:

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

如图,只有137端口是开放并相应的。
在这里插入图片描述

2.4.7 那些攻击成功了?是如何成功的?

接下来依次分析上面一个问题中扫描出的端口。
TCP协议:

  1. 135端口:
    在这里插入图片描述
    均为tcp三次握手的数据包,没有明显的攻击行为。
  2. 139端口:

在这里插入图片描述
也没有明显的攻击行为

  1. 25端口:

在这里插入图片描述
tcp握手包,没有攻击行为

  1. 445端口:
    在这里插入图片描述
    看到了 \System32\PSEXESVX.EXE,这是一种蠕虫。
    在这里插入图片描述

上网查了一下,Microsoft Windows对匿名管道的处理上存在问题,攻击者可以利用空会话的硬编码命名管道及MSRPC属性匿名枚举Windows服务。Windows的svcctl MSRPC接口用于同SCM(服务控制管理器)通讯。svcctl漏洞允许匿名用户连接到SCM,然后就可以枚举所安装的或正在运行的服务。攻击者可以利用这个漏洞匿名启动或中止Windows服务,具体取决于保护服务的安全描述符。

在这里插入图片描述
反过来查看回显信息,看到了results:Acceptance,根据意思,判断这个针对蜜罐主机的攻击是成功的(有效攻击)。

  1. 4899端口:
    在这里插入图片描述
    4899端口中,有http协议包,其中包含获取主机cmd的恶意程序。

  2. 80端口:
    在这里插入图片描述
    80端口的包中,猜测有蠕虫病毒。
    在这里插入图片描述
    另外看到连续的无特殊意义的字符串,很可能是缓冲区溢出攻击。
    在这里插入图片描述
    在这里插入图片描述
    但是看这个端口的回显包,没有看出异常情况,80端口的攻击行为是失败的。

UDP协议:

1.137端口
在这里插入图片描述
此处是在进行NetBIOS查点。

综上,没有攻击行为的端口:
135 139 25 137
有攻击行为,但是并没有攻击成功的端口:
80
有攻击行为,并且攻击成功(有效攻击)的端口:
445 4899

3.学习中遇到的问题及解决

3.1 无法安装IDA pro

安装IDA pro我遇到了很多问题,很多网站安装后不能运行,或者 不太好激活,等等。
解决办法:在合理范围内,不断进行尝试,总能找到合适的下载办法。

3.2 逆向分析crackme1/2文件,不知道从何入手

由于第一次进行逆向分析,不知道如何入手。其实我们以前写代码是正向的过程,逆向分析则是从可执行文件分析出原码怎么写的,从而知道如何触发一些模块。
解决办法:于是我查看了一些资料,尤其是通过IDApro进行逆向分析的办法,就知道如何解析一个可执行程序了。

3.3 分析哪些端口受到攻击、哪些被攻击成功,不知道如何入手

解决办法:查找资料,得到比较合理的方法:首先通过命令扫描tcp协议端口和udp协议端口,然后再依次分析各个端口的行为。
在分析某个端口的过程中,可能会面对非常多的包,大部分是看不出什么情况的,这个时候需要很耐心地依次分析,直到找到一些线索。比如出现连续的无意义的字符串,猜想很有可能是缓冲区溢出攻击,等等。

4.学习感想和体会

本次实验和之前的实验是明显的不一样,因为侧重系统防御。俗话说,能进能退,乃真正法器。学技术也是如此,不仅要学会网络与系统攻击手段(比如前三次实验),也要会网络与系统防御技术。
本次实验首先是基本的恶意代码分析,包括基本信息提取、脱壳、提取字符串等,可以基本地实现恶意代码的性质获取。然后是逆向分析,仅仅通过一个可执行程序解析这个代码的逻辑。再次是进一步分析恶意代码,这次分析比刚才的更加仔细、专业,可以得出关键的信息,比如恶意代码的目的,以及作者等。最后是取证分析。这个过程比较复杂,主要是分析一个僵尸网络攻击过程,包括追踪蜜罐主机的通信记录,分析哪些IP地址攻击了蜜罐主机,攻击者攻击了哪些安全漏洞、哪些成功、怎么成功的,等等信息。
通过本次实验我收获很多,以后遇到一个恶意代码就知道通过什么方式、利用什么软件对其分析。今后面对复杂的网络形势,我又多了一份自信和从容!

5.参考链接

https://www.cnblogs.com/lanjianhappy/p/9851073.html
https://blog.csdn.net/Waffle666/article/details/109753950
https://blog.csdn.net/weixin_51198288/article/details/129947903?spm=1001.2014.3001.5501
https://www.cnblogs.com/lanvin/p/16156054.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值