KimSuky组织样本分析
MD5:ae986dd436082fb9a7fec397c8b6e717
SHA1:31a0168eb814b0d0753f88f6a766c04512b6ef03
SHA256:3110f00c1c48bbba24931042657a21c55e9a07d2ef315c2eae0a422234623194
1. 行为分析
图标伪装成ESET杀毒软件,样本名字为eset_update.exe,伪装成升级程序。
打开火绒剑进行进程过滤 (过滤->进程过滤->添加->开启监控),双击样本后程序运行如下
可以看到火绒剑在这里高亮了蓝色,这个是把C:\Users\Administrator\AppData\Roaming\目录下的程序加到开机启动项,前面的几步就是把释放的程序放到这个目录下
有一个网络连接,应该是要和远程的一个网站进行交互
2.PE结构和IDA分析
#### 2.1PEiD与Keygener
首先用PEiD查壳,显示32位程序无壳。
在Keygener中发现有Base64和CRC32怀疑程序内有一定的加密措施,后续直接拖到IDA分析
2.2 IDA分析
2.2.1导入表分析
可以看到关于文件的操作以及网络连接,印证了火绒剑行为分析
2.2.2 WinMain函数分析
在winmain
函数中可以看到首先是创建了一个互斥对象,应该是为了创建相关进程或者检测相关进程是否存在,getlasterror
判断指定的本地组是否存在
2.2.3 sub_4011E0函数分析
进入函数后有一堆加密过的字符串和一堆GetProcAddress
函数调用,猜测该函数为加载dll和相关字串解密获取相关api函数地址
用OD动态调试查看加密的DLL名字,打开OD发现基址是00480000,所以在4811E0处f2下断点,f9直接运行到函数处调试,可以看到导入的3个dll(WINNET.dll
,urlmon.dll
,kernel32.dll
)
前两个dll是获取了与网络相关的函数,kernel32获取了CreateToolhelp32Snapshot
和WinExec
2.2.4 sub_403600函数分析
先在OD里面一步一步看看这个函数里面的各个函数要做什么,参数是什么,注释在下图,这个函数功能主要是将自身复制到特定目录,然后操作注册表实现自启动,最后弹窗欺骗用户ESET升级成功,电脑已被保护。
2.2.5 401580函数分析
主要功能为获取本机网卡信息和执行获取磁盘序列号,以及随机数的生成,通过GetAdaptersInfo
获取网卡配置和ip信息,后又通过GetVolumeInformationA
来获取磁盘序列号,最后通过GetTickCount
来生成随机数
2.2.6 401770函数分析
该函数主要为获取系统版本信息的获取和操作系统的位数,通过GetVersion
函数获取相关系统版本信息,然后通过GetNativeSystemInfo
,格式化一下,然后做数学运算应该是一些加密操作。
2.2.7 402790函数分析
和前面一样,先OD动态调试查看解密后的值等
函数功能为注册表信息修改,然后将存储在qword_41A620
处的恶意url写入注册表(此处先猜测该域名为C2服务器域名
2.2.8 CreateThread分析
进入线程函数中查看线程函数完成的功能,首先是sub_402F30
,前半部分构造http请求包
用OD调试发现后半部分是网络请求设置(头,方式,协议)
后续就是从C2服务器接受数据,然后Base64解码传输的数据,在进行多字节到宽字节的转换,把传输过来的数据经过一系列的运算来到sub_401AA0
函数,
但是因为C2服务器现在无法连接了,所以动态调试没法接受传输过来的数据,下面分析sub_401AA0
函数,由于无法动态调试,所以无法知道加密的字符串是什么,查找网上的博客知道是rundll32.exe.
下面对C2服务器收到的数据通过”|“分割,依靠动物名字下达指令(核心功能远程控制)
比如tiger为cmd操作,mongkey为创建进程执行下载程序。
3.总结
样本通过sub_4011E0调用解密函数解密一部分关键api,加载了WININET.dll、urlmon.dll、
kennel32.dll,并通过GetProcAddress函数获取相应函数地址,函数如下InternetOpenA、InternetCloseHandle、InternetConnectA、HttpOpenRequestAHttpSend、RequestAURLDownloadToFileA、DeleteUrlCacheEntryA、WinExec、CreateToolhelp32Snapshot、InternetReadFile、InternetQueryDataAvailable。通过sub_403600函数实现文件自拷贝,自启动设置,程序弹窗设置。
通过sub_401580获取主机网卡和ip信息。
通过sub_401770获取系统版本信息的获取和操作系统的位数。
通过sub_402790修改注册表写入恶意url。
通过sub_931AA0实现相关的远程注入。
该样本代码中加入了一系列动物名称,例如tiger、wolf等,属于KimSuky家族系列。
个人体会
这次样本分析发现该样本其实用到的函数在项目中经常见到,所以分析起来比较顺手,知道各个API在用的时候企图达到什么样的目的。并且在这一次分析用到了OD,并且学会了OD动态调试查看dll调用情况以及加密的参数值。