恶意代码分析实战 — Lab 13-03

Lab13-03

运行程序,wireshark抓包,看到一个DNS解析,域名为www.practicalmalwareanalysis.com

Idapro载入,查看strings,有几个字符需要注意下

查找所有的xor指令,并将函数重命名

将六个可疑的加密函数:sub_401AC2、sub_40223A、sub_4027ED、sub_402DA8、sub_403166以及sub_403990,重命名为s_xor1到s_xor6。

使用PEID插件找到加密为疑似AES

使用idapro插件findcrypt找到8处疑似AES加解密

通过分析发现,Te加密引用的是xor2和xor4

Td解密用到的是xor3和xor5

查看一下xor6的函数调用,在函数sub_40352D中引用xor2和xor4和xor6,所以此函数可能就是AES加密部分,重命名为s_aes_encrypt

分析xor1,发现几个错误提示信息,与输入key密钥有关,所以xor1可能是密钥初始化操作

在xor1中,根据arg_0比较判断是否是空密钥,推断密钥保存在参数arg_0中

查看引用,找到第一个参数,这个字符串就是密钥

另一方面,在疑似base64编码中,被sub_40103F调用

查看调用关系,可以来到StartAddress,调用发生在ReadFile和WriteFile之间

在AES调用时,先CreateThread创建线程

所以将其改名为aes_thread

进入aes_thread函数,在第一个ReadFile调用的hFile参数是由var_BE0赋值

而var_BE0这个参数是由arg_0传递

返回上一级调用,这个参数arg_0值就是var_58

也就是var_18

然后看一下WriteFile函数中hFile参数 = var_BE0 +4 = arg_0 + 4 = arg_10

arg参数为arg_0/4/8/C/10…

回溯参数,arg_10

查找上一个调用,唯一参数,来自于s

向上查找,s为connect参数,创建的一个网络套接字

跟踪var_18可以看到,存在CreatePipe一个管道的句柄,并且与shell命令输出相连接

这个shell命令是从CreateProcessA中启动的

AES_Thread读取shell命令输出结果,在写入网络套接字前加密

Base64编码读取远程套接字内容作为输入,经过函数解密后,将结果发送作为shell命令输入。与AES线程输入非常相似。

您可能还喜欢...