只做了前两个,lab13-3没做
笔记
数据加密指的是以隐藏恶意代码目的的加密行为,分析加密算法有两步骤:识别,解密
简单加密算法
特点:使用代码量少
凯撒密码:字符串向右移动字符
异或加密:异或加密只需要一个字符即可,单字节加密可通过暴力破解来解密(暴力破解识别)
- 保留NULL的单字节XOR加密:遇到NULL和密钥本身则不加密,这种更隐蔽
- 分析的时候看到异或在循环里,可能是在加解密
其他简单算法:
- ADD和SUB组合:一个加,一个减,配套使用
- ROL,ROR:旋转字节左右的比特位
- ROT:凯撒密码,通常使用可打印字符
- Multibyte:按块(4字节或8字节)进行异或
- 链或环:使用内容本身作为密钥,最常见的是原始密钥在明文两端,编码过的输出字符作为下一个字符的密钥
Base64:比较常见,广泛用于HTTP和XML
- 长度有限的随机字符,如果被补齐,长度通常可以被4整除
- 通常填充字符是
=
- Base64加密最精彩的地方是可以自定义加密索引
常见加密算法
可以通过识别字符串和导入来判断使用了什么加密库
通过识别加密常量也可以获取加密相关信息,使用IDA的插件可进行操作
另一种识别方法是通过查找高熵值内容
通过组合加密手段来进行自定义加密
解密
最经济的解密方法是把程序运行起来让其自解密
也可以手动执行解密函数,自己编写解密函数或者调用程序自己的解密函数
作业
Lab 13-1
分析目标:Lab13-01.exe
-
比较恶意代码中的字符串(字符串命令的输出)与动态分析提供的有用的信息,基于这些比较,那些元素可能被加密?
加密的是要访问的恶意网站,在main函数中,最上面进行了字符串解密,然后在网络功能初始化之后使用该字符串作为参数进行操作,应该是网址
-
使用IDA Pro搜索恶意代码中字符串’xor’,以此来查找潜在的加密,你发现了那些加密类型?
这里是异或加密:
-
恶意代码使用什么密钥加密。加密了什么内容?
使用异或字符0x3B(59)加密,加密了网址:
-
使用静态工具 FindCrypt2,KryPto,ANALyzer以及IDA熵插件识别一些其他类型的加密机制,你发现了什么?
在字符串里发现了:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
这是base64编码用来编码的索引表 -
什么类型的加密被恶意代码用来发送部分网络流量?
抓包看到发送的请求包的地址还有疑似乱码的东西:解码可得:selph-da2ba2
-
Base64编码函数在反汇编的何处?
在sub_4010B1,这个函数对字符串进行处理,3位一组,是base64编码的特征
-
恶意代码发送Base64加密数据的最大长度是什么?加密了什么内容?
最大加密12个字节的主机名,使得GET请求最大字符数是16
-
恶意代码中,你是否在Base64加密数据中看到了填充字符(=或者==)?
当base64编码位数不足的时候,会使用=填充:
-
这个恶意代码做了什么?
向主机发送一个特定信号,然后退出,让攻击者直到该主机在运行
Lab 13-2
分析目标:Lab13-02.exe
-
使用动态分析,确定恶意代码创建了什么?
每10s,在exe所在目录创建一个temp文件
-
使用静态分析技术,例如xor搜索指令,FindCrypt2,KANAL以及IDA熵插件,查找潜在的加密,你发现了什么?
发现这两个函数里有好多异或指令
-
基于问题1的回答,那些导入函数将是寻找加密函数比较好的一个证据?
WriteFile函数在调用之前可能会调用加密函数
-
加密函数在反汇编的何处?
函数sub_401000:WriteFile参数中的Buffer,还有CreateFile的文件名,都是参数传过来的,也就是说需要在调用这里之前去看看
是sub_401851调用的sub_401000函数,sub_201851:这里调用了两个函数,sub_401070应该是写入内容到缓冲区,然后sub_40181F应该是加密,这里知道了文件名是怎么一回事
-
从加密函数追溯原始的加密内容,原始加密内容是什么?
跟进上面推测的sub_401070函数查看:是桌面截图的功能,这里应该是把截图内容加密存储了
-
你是否能够找到加密算法?如果没有,你如何解密这些内容?
加密算法是不标准算法,简单方法是通过解密工具解密
Lab 13-3
分析目标:Lab13-03.exe
-
使用动态分析,确定恶意代码创建了什么?
首先看到代码解析了一个域名
www.practicalmalwareanalysis.com
,然后通过抓包软件看到代码向目标ip的8910端口发送了数据包这里发送了3个Syn包,然后对方回复了一个reset ack,应该是已经连接不通了,现在只能推测是恶意代码企图通过网络发送些东西出去
-
使用静态分析技术,例如xor指令搜索。通过这种方法,你发现什么类型的加密?
搜搜xor指令发现了多个函数多次调用xor
做得太难受了,加密解密这一块先不碰了,前置知识匮乏,做的太艰难了。。。,下面就不做了,到此为止了,以后有机会再来填坑吧
-
使用静态工具,如FindCrypt2,KANAL以及IDA熵插件识别一些其他类型的加密机制,发现的结果和搜索字符xor结果比较如何?
-
恶意代码使用哪俩种加密技术?
-
对于每一种加密技术,它们的密钥是什么?
-
对于加密算法,它的密钥足够可靠吗?另外你必须知道什么?
-
恶意代码做了什么?
-
构造代码来解密动态分析过程中生成的一些内容,解密后的内容是什么?