selph
selph
发布于 2021-11-10 / 706 阅读
0
0

恶意代码分析实战Lab13-数据加密

只做了前两个,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

  1. 比较恶意代码中的字符串(字符串命令的输出)与动态分析提供的有用的信息,基于这些比较,那些元素可能被加密?

    image-20211109165625636

    加密的是要访问的恶意网站,在main函数中,最上面进行了字符串解密,然后在网络功能初始化之后使用该字符串作为参数进行操作,应该是网址

  2. 使用IDA Pro搜索恶意代码中字符串’xor’,以此来查找潜在的加密,你发现了那些加密类型?

    这里是异或加密:

    image-20211109165759359

  3. 恶意代码使用什么密钥加密。加密了什么内容?

    使用异或字符0x3B(59)加密,加密了网址:

    image-20211109165852571

  4. 使用静态工具 FindCrypt2,KryPto,ANALyzer以及IDA熵插件识别一些其他类型的加密机制,你发现了什么?

    在字符串里发现了:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/这是base64编码用来编码的索引表

  5. 什么类型的加密被恶意代码用来发送部分网络流量?

    抓包看到发送的请求包的地址还有疑似乱码的东西:解码可得:selph-da2ba2

    image-20211109170518006

  6. Base64编码函数在反汇编的何处?

    在sub_4010B1,这个函数对字符串进行处理,3位一组,是base64编码的特征

    image-20211109171610896

  7. 恶意代码发送Base64加密数据的最大长度是什么?加密了什么内容?

    最大加密12个字节的主机名,使得GET请求最大字符数是16

  8. 恶意代码中,你是否在Base64加密数据中看到了填充字符(=或者==)?

    当base64编码位数不足的时候,会使用=填充:

    image-20211109172302372

  9. 这个恶意代码做了什么?

    向主机发送一个特定信号,然后退出,让攻击者直到该主机在运行

Lab 13-2

分析目标:Lab13-02.exe

  1. 使用动态分析,确定恶意代码创建了什么?

    每10s,在exe所在目录创建一个temp文件

    image-20211109172814306

  2. 使用静态分析技术,例如xor搜索指令,FindCrypt2,KANAL以及IDA熵插件,查找潜在的加密,你发现了什么?

    发现这两个函数里有好多异或指令

    image-20211109174405767

  3. 基于问题1的回答,那些导入函数将是寻找加密函数比较好的一个证据?

    WriteFile函数在调用之前可能会调用加密函数

  4. 加密函数在反汇编的何处?

    函数sub_401000:WriteFile参数中的Buffer,还有CreateFile的文件名,都是参数传过来的,也就是说需要在调用这里之前去看看

    image-20211109174452091

    是sub_401851调用的sub_401000函数,sub_201851:这里调用了两个函数,sub_401070应该是写入内容到缓冲区,然后sub_40181F应该是加密,这里知道了文件名是怎么一回事

    image-20211109191543573

  5. 从加密函数追溯原始的加密内容,原始加密内容是什么?

    跟进上面推测的sub_401070函数查看:是桌面截图的功能,这里应该是把截图内容加密存储了

    image-20211109191848735

  6. 你是否能够找到加密算法?如果没有,你如何解密这些内容?

    加密算法是不标准算法,简单方法是通过解密工具解密

Lab 13-3

分析目标:Lab13-03.exe

  1. 使用动态分析,确定恶意代码创建了什么?

    首先看到代码解析了一个域名www.practicalmalwareanalysis.com,然后通过抓包软件看到代码向目标ip的8910端口发送了数据包

    image-20211110094833213

    这里发送了3个Syn包,然后对方回复了一个reset ack,应该是已经连接不通了,现在只能推测是恶意代码企图通过网络发送些东西出去

  2. 使用静态分析技术,例如xor指令搜索。通过这种方法,你发现什么类型的加密?

    搜搜xor指令发现了多个函数多次调用xor

    做得太难受了,加密解密这一块先不碰了,前置知识匮乏,做的太艰难了。。。,下面就不做了,到此为止了,以后有机会再来填坑吧

  3. 使用静态工具,如FindCrypt2,KANAL以及IDA熵插件识别一些其他类型的加密机制,发现的结果和搜索字符xor结果比较如何?

  4. 恶意代码使用哪俩种加密技术?

  5. 对于每一种加密技术,它们的密钥是什么?

  6. 对于加密算法,它的密钥足够可靠吗?另外你必须知道什么?

  7. 恶意代码做了什么?

  8. 构造代码来解密动态分析过程中生成的一些内容,解密后的内容是什么?


评论