如果图片看不见可以先移步看雪论坛的帖子 https://bbs.pediy.com/thread-264660.htm

样本基本信息

MD5:ae986dd436082fb9a7fec397c8b6e717
SHA1:31a0168eb814b0d0753f88f6a766c04512b6ef03
SHA256:3110f00c1c48bbba24931042657a21c55e9a07d2ef315c2eae0a422234623194

image-20201224203049898

思维导图

image-20201225193828852

行为分析

image-20201224205008067图标和名字伪装成ESET的升级程序,打开火绒剑设置过滤信息后,双击后弹窗提示升级成功,查看火绒剑捕获的动作信息

image-20201224205055495

火绒剑自动高亮了一个行为,这个是把C:\Users\Administrator\AppData\Roaming\目录下的程序加到开机启动项,前面的几步就是把释放的程序放到这个目录下

image-20201224205220083

详细分析

查壳

image-20201224210607192image-20201224211030831

32位程序无壳,在Keygener中发现有Base64和CRC32怀疑程序内有一定的加密措施,拖到IDA中接着分析

导入表分析

通过分析导入表发现有网络连接和文件操作的相关函数,印证了前面火绒剑行为分析的结构,不过很奇怪为什么火绒剑没有监测到网络连接行为

image-20201224211536448
image-20201224211625625

函数分析

WinMain

image-20201224213432292

sub_4011E0(LoadFunc)

进入函数后有一堆加密过的字符串和一堆GetProcAddress函数调用,猜测是动态加载某些函数,具体加载什么函数需要配合动态调试查看

image-20201224213715202

通过在OD中的动态调试发现这个函数就是导入了三个DLL(WININET.dll, urlmon.dll, kernel32.dll)

image-20201224214155723image-20201224214423343

前两个DLL 获取了网络相关函数

image-20201224220903027

kernel32获取了CreateToolhelp32Snapshot和WinExec

sub_403600(CopyMyselfAndBox)

这个函数简单来说就是把自身复制到特定目录,然后设置注册表实现自启动,最后弹窗欺骗用户升级成功已被保护

image-20201225091948396

sub_401580(GetNeInfo)

通过GetAdaptersInfo获取网卡相关信息

image-20201225101029046

GetVolumeInformation获取c盘序列号

image-20201225101135528

如果序列号获取失败就根据时间设置随机数

image-20201225101210701

sub_401770(GetSysInfo)

获取操作系统的相关信息,然后标准Base64编码一下

image-20201225102348387

image-20201225102223806

sub_402790(SetDomain)

把C2服务器的域名信息放置到注册表项SOFTWARE\Microsoft\Windows\CurrentVersion\Screensavers\ScreenRibbonsDomain中

image-20201225121614624

子线程分析

image-20201225122705512

sub_402F30(HTTPRequest)

前半部分先构造HTTP请求包

image-20201225125659487

后面利用先前动态加载的网络链接函数进行HTTP请求

image-20201225125816007image-20201225125903826

因为C2服务器现在无法链接了我就手动修改执行流程让程序以为自己收到了返回包接着执行

image-20201225130107885

后续就是从C2服务器接受数据,然后Base64解码传输的数据,在进行多字节到宽字节的转换

image-20201225130722944

把传输过来的数据经过一系列的运算来到sub_401AA0函数

sub_401AA0

生成一个临时文件名

image-20201225190330663

下面对此前从C2服务器接收到的数据通过“|”分割,依靠动物名字来下达指令,这里就到了样本的核心功能了远程控制

image-20201225190630766

比如:指令名为tiger时执行cmd指令

image-20201225191249012

指令名为monkey时,创建进程执行下载的程序

image-20201225192525182

指令名为fox和cat时会比monkey多一些注册表操作

image-20201225193132219

由于现在C2服务器已经连接不上了,其他一些的指令操作就不在详细分析,功能和我们一般见到的远控都差不多。

总结

这次样本分析总体来说比较常规,难度不算很大只要抓住主要执行脉络都能比较清晰的理解整个程序

参考链接

威胁情报

Kimsuky APT组织利用假冒的ESET安全软件更新程序进行恶意活动