ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

恶意代码分析实战13-01

2021-06-15 23:02:56  阅读:180  来源: 互联网

标签:13 01 加密 恶意代码 Base64 主机名 看到 字符串


本次实验我们将会分析lab13-01.exe文件。先来看看要求解答的问题
Q1.比较恶意代码中的字符串(字符串命令的输出)与动态分析提供的有用信息,基于这些比较,哪些元素可能被加密?
Q2.使用IDA Pro搜索恶意代码中字符串’xor’ ,以此来查找潜在的加密,你发现了哪些加密类型?
Q3.恶意代码使用什么密钥加密,加密了什么内容?
Q4.使用PEiD插件识别一些其他类型的加密机制,你发现了什么?
Q5.什么类型的加密被恶意代码用来发送部分网络流量?
Q6.Base64编码函数在反汇编的何处?
Q7.恶意代码发送的Base64加密数据的最大长度是什么?加密了什么内容?
Q8.恶意代码中,你是否在Base64加密数据中看到了填充字符(=或者==) ?
Q9.这个恶意代码做了什么?

先通过wireshark抓包监控
在这里插入图片描述

过滤出http之后,主要到有个get请求,访问的是www.practicalmalwareanalysis.com,但是get后面的字符串似乎是编码或者混淆过的(注意,这一字符串可能会根据主机不同而不同)

接下来将其载入IDA
打开strings窗口
在这里插入图片描述

可以看到Mozilla/4.0,这和我们在wireshark中看到的user-agent是一样的,可是除此之外,那个网址和字符串在strings都没找到
Q1.比较恶意代码中的字符串(字符串命令的输出)与动态分析提供的有用信息,基于这些比较,哪些元素可能被加密?
A1.网络中出现两个恶意代码中不存在的字符串(打开strings窗口,没有字符串输出)。一个字符串是域名www. practicalmalwareanalysis . com,另外一个是GET请求路径,它看起来像eWDFszs02oDllm2u3(注意,这是随机的,在实验时可能会有所不同)。
接下来使用IDA搜索所有xor
search-》text
在这里插入图片描述

点击ok
在这里插入图片描述

搜索结果如上
xor自身,是用于清空寄存器,除此之外,只有三个是符合的,但是最后两个是库代码,所以可以看到他们的function是没有列出函数名的。
现在只剩下xor eax,3bh
双击跟入
在这里插入图片描述

可以看到这里是一个循环,循环中递增的是计算器var_4
异或的地方在004011b8,用0x3b与eax异或,而eax来自缓冲区arg_0
这里的arg_4则是缓冲区的长度
所以我们知道了这里是实现用0x3b执行单字节的异或加密,并将缓冲区即其长度作为参数。所以可以给该函数重命名为xorEncode
Q2.使用IDA Pro搜索恶意代码中字符串’xor’ ,以此来查找潜在的加密,你发现了哪些加密类型?
A2.地址004011B8处的xor指令是sub_401190 函数中一个单字节XOR加密循环的指令

对其查看交叉引用
在这里插入图片描述

看到sub_401300是唯一调用xorEncode的函数。双击跟入
在调用位置之前看看之前的代码
在这里插入图片描述在这里插入图片描述

看到调用了GetModuleHandleA,FIleResourceA,SizeofResource,GlobalAlloc,LoadResource和LockResource。大部分是与资源相关的函数。
先关注用于找到资源的函数FindResourceA
在这里插入图片描述

看到传入的lpType参数为0xA,查阅msdn知

在这里插入图片描述在这里插入图片描述

表示资源数据时应用程序预定义的资源类型是原始数据。
lpName在IDA中可以看到是索引号65h,10进制为101
可以打开resource hacke
在这里插入图片描述

找到索引号为101的RCDATA
上图中可以看到资源在偏移量0x7060,长度为32字节
将其保存为13.1.exe
在这里插入图片描述

接下来可以通过winhex打开13.1.exe,然后与3b异或,具体操作如下
edit->modify data
在这里插入图片描述

点击ok后结果如图
在这里插入图片描述

可以看到显示出了wireshark抓到的网址
Q3.恶意代码使用什么密钥加密,加密了什么内容?
A3.单字节XOR加密使用字节0x3B。解密的XOR加密缓冲区的内容是WWW. practicalmalwareanalysis . com。
我们现在还有GET请求那一段字符串还没有找到,推测也是被加密过的
可以通过peid载入,通过图示的插件进行查找
在这里插入图片描述

结果如下
在这里插入图片描述

Q4.使用PEiD插件识别一些其他类型的加密机制,你发现了什么?
A4. 用插件PEiD KANAL可识别出恶意代码使用标准的Base64编码字符串:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

在4080e8的位置找到了base64的编码表
回到IDA直接跳到这里
在这里插入图片描述

如下所示
在这里插入图片描述在这里插入图片描述

可以看到这些其实就是大小写的A到Z,以及数字和+,/
我们看一下这个字符串的交叉引用
在这里插入图片描述

看到四处的交叉引用都在sub_401000。跟入
将其重命名,方便后续分析
在这里插入图片描述

往下看
在这里插入图片描述

在箭头所指向的位置的3Dh实际上就是=
因为base64加密中是用‘=’作为填充字符的,所以也印证了这是base64
Q5.什么类型的加密被恶意代码用来发送部分网络流量?
A5.标准的Base64编码用来创建GET请求字符串

接下来我们看看在哪儿调用这个函数的
在这里插入图片描述

跟入sub_4010b1
Q6.Base64编码函数在反汇编的何处?
A6. Base64 加密函数从0x004010B1处开始。
在这里插入图片描述

这里的结构很繁杂,可以f5看伪码
在这里插入图片描述

上图所示为主体部分
17行是一个while.判断v10是否小于v9
15行看到v10初值为0,在32行可以看到v10自增
在这里插入图片描述

而13,14行看到v9是字符串长度
那么也就说这个while的目的就是对源字符串的每个字符都进行接下来的操作
20行处的for是将字符串进行三字节一组的切割,也就是将字符串划分成3字节的块,保存在v7中
24行开始的if-else是用于判断是否赋值完毕,完毕则在v7最后加上0表示结束,否则自增
然后在37行看到是将3字节块传给base64index,而38行的循环这里是用于将传入的3字节加密成4字节
可见这就是base64编码的主函数,可以重命名为base64encode
34=12,44=16
Q7.恶意代码发送的Base64加密数据的最大长度是什么?加密了什么内容?
A7. Base64 加密前,Labl3-01.exe 复制最大12个字节的主机名,这使得GET请求的字符串的最大字符个数是16,加密的内容为请求的字符串。
查看交叉引用
在这里插入图片描述

来到了这里
在这里插入图片描述

看到,base64encode的传入的字符串来自var_18,是strncpy的输出
而strncpy的输入是00401201处gethostname的输出,所以我们就知道了get后面的字符串是主机名经过base64加密后得到的
在00401209看到的0c是10进制的12,说明strncpy仅复制主机名的前12字节
这样就可以回到第8个问题:只有在主机名小于12个字符且主机名的长度不能被3完全整除时,才可能看到=的填充
Q8.恶意代码中,你是否在Base64加密数据中看到了填充字符(=或者==) ?
A8.如果主机名小于12个字节并且不能被3整除,则可能使用填充字符
在这里插入图片描述

接下来看看剩下的,调用了InternetOpenA,InternetOpenUrlA,InternetReadFile用于打开并读取之前形成的url
在这里插入图片描述

成功返回后会在004012f1与6fh,也就是字符o进行比较
如果是o,则走左边,将eax赋1
如果不是o,则走右边,通过xor异或自身,清空eax,也就是给eax赋0
那么我们看看sub_4011c9的交叉引用
在这里插入图片描述

跟入
在这里插入图片描述

是在main中
可以看到在一个循环里,通过test eax,eax判断返回值是否为0,如果是0则继续循环,如果不是0则结束,也就是说,当sub_4011c9真(获得以o开始的web响应的时候,就会退出循环,结束程序)
总的来说,恶意代码发送通信信号,让攻击者知道它在正常运行。具体来说,恶意代码用加密的主机名作为标识符发出一个特定的通信信号,当收到以o开始的web响应时,则终止。
Q9.这个恶意代码做了什么?
A9. Labl3-01.exe 用加密的主机名发送一个特定信号,直到接收特定的回应后退出。

标签:13,01,加密,恶意代码,Base64,主机名,看到,字符串
来源: https://blog.csdn.net/yalecaltech/article/details/117934676

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有