网络与系统攻防技术
实验四 恶意代码分析实践
dky 20192414 袁浩然
实践目标
恶意代码文件类型标识、脱壳与字符串提取
对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:- 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
- 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
- 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:
- 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
- 找出并解释这个二进制文件的目的;
- 识别并说明这个二进制文件所具有的不同特性;
- 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
- 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
- 给出过去已有的具有相似功能的其他工具;
- 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
取证分析实践
Windows 2000系统被攻破并加入僵尸网络
问题: 数据源是Snort收集的蜜罐主机5天的网络数据源,并去除了一些不相关的流量,同时IP地址和其他敏感信息被混淆。回答下列问题:- IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
- 僵尸网络是什么?僵尸网络通常用于什么?
- 蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
- 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
- 哪些IP地址被用于攻击蜜罐主机?
- 攻击者尝试攻击了那些安全漏洞?
- 那些攻击成功了?是如何成功的?
实验过程
实验1-1 使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
实验器材
- win11主机
- powershell
- file指令包
- strings指令包
- 恶意代码 RaDa.exe
- peiD
- windows xp 虚拟机
实验步骤
-
下载file指令包
-
下载strings指令包
-
对两个指令包进行安装
-
使用powershell调用strings指令查看字符串,发现都是乱码,我们可以得知已经加壳。
-
使用powershell调用file指令查看相关信息。图片中我们可以得知
- 文件格式
可执行文件PE32
- 运行平台
windows
- 文件格式
-
下载peiD,在主机打开报错,选择在虚拟机打开
-
在PEiD查看ReDa.exe,可以查看加壳方式为
UPX
实验1-2 && 实验1-3
实验1-2 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理
实验1-3 用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
实验器材
- win11主机
- powershell
- strings指令包
- 恶意代码 RaDa.exe
- 超级巡警
实验步骤
-
百度
超级巡警
下载脱壳,居然失败了...
-
重新找了一个页面进行下载,脱壳成功!生成RaDa_unpacked.exe
-
对脱壳后的文件进行strings命令查看
-
我们可以看到一些有意义的信息,脱壳成功!
-
我们向下仔细查看,可以看到作者信息
实验2 使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。
实验器材
- win11主机
- powershell
- 代码crackme1.exe crackme2.exe
- ida
实验步骤1(crackme1.exe)
-
玩一下crackme1.exe 我们可以推测输入为一个参数
-
ida打开crackme1.exe
-
查看strings字符串
-
查看函数调用图,我们可以得知主要的函数是_main
-
查看_main函数(由于是汇编语言 看的很难受)
-
查看函数图 大体知道其结构 进行了两次判断
-
对_main进行反编译
-
根据反编译的结果,我们可以得知:
- 如果输入参数个数不等于2,打印"I think you are missing something."
- 第二个输入参数如果不等于"I know the secret",则会打印"Pardon? What did you say?"
- 第二输入参数等于"I know the secret",则会打印"You know how to speak to programs,Mr. Reverse-Engineer"
-
powershell输入 ./crackme.exe "I know the secret",成功回显
-
破解完成!
实验步骤2(crackme2.exe)
-
玩一下crackme2.exe 我们可以推测输入为一个参数
-
ida打开crackme2.exe
-
查看strings字符串
-
查看函数调用图,然后居然报错了...
-
删除IDA,重新百度一个...
-
查看函数调用图,我们可以得知主要的函数是_main
-
查看函数图 大体知道其结构 进行了多次判断
-
对_main进行反编译
-
根据反编译的结果,我们可以得知:
- 如果输入参数个数不等于2,打印"I think you are missing something."
- 如果第一个输入参数不等于crackmeplease.exe,会打印"I have an identity problem."
- 第二个输入参数如果不等于"I know the secret",则会打印"Pardon? What did you say?"
- 第二输入参数等于"I know the secret",则会打印一些东西,暂时看不出来,等会打一下试试~
-
在powershell里面改名复制并执行,发现竟然错了!
-
经过考虑,我们发现在powershell输入的第一个参数为
./crackmeplease.exe
,而不是crackmeplease.exe。但是在powershell直接输入crackmeplease.exe不会执行,会报错 -
转战cmd,成功得到回显
实验3 分析一个自制恶意代码样本rada,并撰写报告
实验器材
- win11主机
- winxp虚拟机
- Process Monitor
- Process Explorer
- RaDa.exe RaDa_unpacked.exe 恶意代码
- gitshell
实验步骤1
- 使用gitshell的md5sum指令,查看RaDa.exe的md5值
实验步骤2
-
打开Process Monitor,选择监视RaDa_unpacked.exe文件
-
打开RaDa_unpacked.exe,结果报错,在Process Monitor中也检测不到这个进程,应当为自动杀死。
-
转战winxp虚拟机
-
Process Explorer里面查看RaDa_unpacked.exe创建的进程
-
查看字符串,我们可以看到
C:\RaDa\bin
和RaDa.exe,并疑似设为开机自启动
-
进入果真看到RaDa.exe
-
深入查看,我们可以看到使用指令RegWrite RegRead RegDelete读写注册表,并进行截图等一系列操作
-
继续深入查看发现
-- authors
,试一下是不是可以直接查看作者
-
发现果然可以直接查看作者
实验问题
- 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
MD5值: caaa6985a43225a0b3add54f44a0d4c7
基本信息:PE32 executable for MS Windows (GUI) Intel 80386 32-bit
- 找出并解释这个二进制文件的目的
在字符串中,我们可以看到10.10.10.10,反向连接这个ip地址,进行数据传输,这样可以逃避防火墙
- 识别并说明这个二进制文件所具有的不同特性
修改注册表 开机自启动 自己复制到C盘下面 可以截图等操作
- 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
UPX加壳 查看字符串时如果不脱壳会发现为乱码
- 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
应当为后门程序
不会进行传播,不属于蠕虫或者病毒
没有伪装成正常程序,不属于木马
可以获得控制权限,属于后门
有很强的伪装性,开机自启动,并且可以持续
- 给出过去已有的具有相似功能的其他工具
msfvenom生成的后门也可以反向连接,也可以获得控制权,也可以进行截图等操作
- 可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以 需要脱壳或者输入
RaDa.exe --authors
查看作者
实验4 取证分析实践
实验器材
- kali虚拟机
- wireshark
实验问题
-
IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?
- 因特网中继聊天(Internet Relay Chat),一般称为互联网中继聊天,简称:IRC。它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议。经过十年的发展,世界上有超过60个国家提供了IRC的服务。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。所有用户可以在一个被称为"Channel"(频道)的地方就某一话题进行交谈或密谈。每个IRC的使用者都有一个Nickname(昵称)。
- 注册时需要发送的消息有三种,分别是口令,昵称和用户信息。格式如下:PASS 、NICK 、USER 。注册完成后,客户端就使用 JOIN 信息来加入频道,格式如下:JOIN 。
- IRC 服务器明文传输通常在 6667 端口监听,也会使用 6660—6669 端口。 SSL 加密传输在 6697 端口。
-
僵尸网络是什么? 僵尸网络通常用于什么?
- 僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
- 用于DDOS攻击 垃圾邮件攻击等
-
蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?
- 打开wireshark对包进行分析
- 筛选源地址为172.16.134.191,目的端口为6667的包(指令
ip.src == 172.16.134.191 && tcp.dstport == 6667
) - 可以得知IRC服务器的IP地址分别为209.126.161.29 66.33.65.58 209.196.44.172 63.241.174.144 217.199.175.10
-
在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络?
-
导出访问209.196.44.172:6667的所有包的信息
-
统计与多少主机相连
-得出结果3462
-
-
哪些IP地址被用于攻击蜜罐主机
- 调取目的地址为172.16.134.191的源地址IP包写入2.txt
- 查看2.txt我们可以看到攻击蜜罐主机的IP地址
-
攻击者尝试攻击了那些安全漏洞?
-
查看网络流分布情况
-
查看TCP的响应端口
-
查看UDP的响应端口
-
查看TCP135端口 发现只是进行连接,没有数据交换
-
查看TCP25端口 发现只是进行连接,没有数据交换
-
查看TCP139端口 大部分是连接,少部分是NBSS和SMB
-
查看TCP445端口 发现PSEXESVE.EXE,是一种蠕虫
- 该源IP地址与蜜罐主机建立了会话,攻击成功,这里Windows的svcctl MSRPC接口用于同SCM(服务控制管理器)通讯,svcctl漏洞允许匿名用户连接到SCM,然后就可以枚举所安装的或正在运行的服务。
- 该源IP地址与蜜罐主机建立了会话,攻击成功,这里Windows的svcctl MSRPC接口用于同SCM(服务控制管理器)通讯,svcctl漏洞允许匿名用户连接到SCM,然后就可以枚举所安装的或正在运行的服务。
-
查看TCP4899端口 发现只是进行连接,没有数据交换
-
查看TCP80端口 发现缓冲区溢出攻击
- 后续又发现调用命令行
- 发现蠕虫
www.worm.com
c:\notworm
- 后续又发现调用命令行
-
查看UDP137端口 发现只是进行连接,没有数据交换
-
-
那些攻击成功了?是如何成功的?
-
TCP80注入蠕虫病毒
-
没有注入成功
-
PSEXESVE.EXE执行
-
无回显 没有成功
-
TCP 445端口 返回信息中含有\PIPE\ntsvcs 成功
-
实验感想
- 本次实验特别长,实验要求和实验量都远远超过之前几个实验,用到了很多工具,也用到了很多之前根本没有学过的指令。
- 通过本次实验,我了解了如何对恶意代码进行分析,学会使用了很多的工具对软件进行破解。
- 通过本次实验,我更加知道了我需要学习的地方还有很多,要更加深入学习使用这些软件,这些指令,可以破解更多的恶意软件,为信息安全保驾护航,