前言
发现金山说FlashFXP供应链攻击,吓了一跳,赶紧看了看,发现官网并没有异常,原来是野生的下载站被搞了,不过还是下载了下来,分析一下,练功。
对于加了货了正规软件来说,寻找恶意代码是第一步,因为正规软件动辄就几万行代码,所以文章也说了他是如何插入恶意代码已经恢复的,小弟功有所不全,力有所不任,才有所不足,诚惶诚恐,如有纰漏或者错误,还请斧正,定当改进。
环境
WIN7 32
exeinfo
OD
静态信息
样本MD5: 9CDFCB8C8306A2AC401CB769AD8A7EE8
样本信息:
基本信息
拖入IDA,我之前文章也写过,再其进行主函数之前是存在一个循环,
即
该循环会调用一个函数指针数组
对于我来说,首先就质疑是否存在这个数组中,我们利用biff进行详细分析,把正版软件和加货的软件进行对比
最后发现这个函数sub_00472BD4,发现的过程无疑是把数据考下来,写程序进行对比,当然也可以直接手工考察,最终得以发现
动态分析
插入恶意代码技巧
直接拖入OD,动态调试,下断点,并拷贝数据
执行该段代码,代码中掺杂了很多无用代码,但是我们可以发现其有效代码保存在edx中,主要解密过程为
002E01F5 8102 5B52D3D3 ADD DWORD PTR DS:[EDX],D3D3525B
002E01F5 8102 5B52D3D3 ADD DWORD PTR DS:[EDX],D3D3525B
002E02A1 8132 5B52D3D3 XOR DWORD PTR DS:[EDX],D3D3525B
002E031F F712 NOT DWORD PTR DS:[EDX]
002E0389 8102 5B52D3D3 ADD DWORD PTR DS:[EDX],D3D3525B
002E040B F712 NOT DWORD PTR DS:[EDX]
002E043B 812A 5B52D3D3 SUB DWORD PTR DS:[EDX],D3D3525B
002E04B3 812A 5B52D3D3 SUB DWORD PTR DS:[EDX],D3D3525B
002E052B 8132 5B52D3D3 XOR DWORD PTR DS:[EDX],D3D3525B
解密之后,开始查找相应的API,算法为字符串按位右移0x0D,所寻找API分别为VirtualProctect和CreateThread
修改内存属性
拷贝数据,可以看到拷贝的数据为资源节中的数据,并且,拷贝到我们之前找到的函数位置
解密代码为为 xor 47F3812A,解密之后我们查看解密都得代码,可以看到该段代码为恢复该函数正常功能的代码
之后创建线程,继续执行恶意代码
为了软件不崩溃,使其正常运行,可以看到作者使用push retn 的手法返回执行点,继续执行正常代码
手动映射恶意PE文件
继续分析恶意代码,即创建的线程代码
首先获取所需API,其获取方式与之前类似,编码方式不同
申请空间,解密新的PE
申请空间,手动进行内存映射
手工重定位
跳转执行该代码
恶意软件分析
把之前的PE dump下来,查找字符串,可以看到该段PE 很可能存在联网操作,并且是个dll文件
话不多说,接下来继续分析
该PE继续创建线程执行,线程代码中由主要存在两个线程,主体如下
线程 1
解密域名,这里涉及密码学知识,由于本人不是很了解,所以这里就不详述了,获取链接为
https://www.update08.com/update.php?1={g}&2={f}&3={k}&4={y}&5={r}&6={s}&7={e}&8={l}
分别获取COMPUTERNAME、USERNAME、SysTem、PROCESSOR_IDENTIFIER,加密填充
流量工具检测
连接网络,获取数据
其返回数据为
获取@! xxx !@中的内容并进行解密
解密数据,解密之后为一个域名: "https://www.update08.com/update.php?download"
连接该域名,获取数据
按照之前的解密方法进行分割解密,解密之后为一PE文件
再次创建线程
该线程为映射上述的PE文件,并调转执行
该PE主要存在功能依旧在一个线程中进行
拼接所获取文件路径
查找其文件
获取文件信息,格式为 长度+时间
打开文件,获取文件内容
对内容进行加密
网络传输
这样一个文件的窃取就done了
同理Sites文件的窃取也是这样,这里就不赘述了
线程2
之后就最开始的也是最后一个线程了
首先解密三个域名、分别为
https://giveyouranaddress.wordpress.com/feed/
https://giveyouranaddress.wordpress.com/
https://github.com/xe5v6sz7iot2n4apjcbh/
之后与上述线程1行为相同,开始循环获取计算机名等信息
但由于作者似乎并没有向之前那样有上述参数,导致这个循环一直进行,也许作者还没有完成或者说弃坑了吧。
附件:
由于附件大于3M,所以上传失败,这里只能到盘下载了
链接:https://pan.baidu.com/s/1_6yR_Xtil3Q-CLUzHr5JqQ]https://pan.baidu.com/s/1_6yR_Xtil3Q-CLUzHr5JqQ
提取码: quq4
解压密码: 52pojie
总结
谢谢大家。