APT37分析之Final1stspy
2020-03-25 10:42:51 Author: xz.aliyun.com(查看原文) 阅读量:234 收藏

样本分析

样本名称 Final1stspy,Dropper
样本类型 PE32 executable (DLL) (GUI) Intel 80386, for MS Windows
样本大小 244224
MD5 0dd50c4a5aa9899504cb4cf95acd981e
SHA1 38f28bfce4d0b2b497e6cf568d08a2b6af244653
SHA256 2011b9aa61d280ca9397398434af94ec26ddb6ab51f5db269f1799b46cf65a76

线上沙箱

动静态分析

查看导入表,看到反调试相关的函数

程序中多次使用IsDebuggerPresent来检测程序是否被调试

或使用GetStartupInfo检测程序是否正在被调试

查看加密方式,发现样本采用base64编码和sha1哈希算法


查看样本导出表,看到只有一个main_func


进入main_func看到3个线程相关的函数


进入核心函数看到样本采用运行时加载dll的方法,绕过基于导入表的检测

com组件执行恶意操作

在9e0函数中继续跟进ea0函数,发现该样本使用com组件执行操作,通过CoCreateInstance创建组件


我们通过样本中的rclsid和riid参数查询出代码所运行的函数


并在注册表中进行查询


dc12a687-737f-11cf-884d-00aa004b2e24这个是调用WMI相关


之后样本通过ppv的偏移执行了对应的函数,如下执行了ConnectServer

随后调用ExecQuery执行WMI查询

持久化


跳出9e0函数,跟进c30,动态调试发现该函数为解密函数

将解密得到的'rundll32'作为参数,传入1460函数,该函数使用LoadLibrary和GetProcAddress找到控制注册表的函数地址,在SOFTWARE\Microsoft\Windows\CurrentVersion\Run写入自启动时间持久化

反监控

跟进18d0函数,程序中使用进程枚举,并通过与解密字串名称匹配的方法,来检测是否有特定进行


通过动态调试,发现加密的字符串解密后如下

Ollydbg.exe
idaq.exe
gmer.exe
IceSword.exe
wireshark.exe
tcpview.exe
procexp.exe
peview.exe
cff explorer.exe

若进程中发现有这些进程,则关闭该进程,并返回1,继续进入anti_debug4,直到进程中没有wireshark等监控程序的存在

发送请求

首先使用解密函数将域名及表头特征信息解密,然后传入参数中进行请求发送

进入该函数,同样是运行后动态寻址


请求返回值200才正常运行,否则退出

读取信息,仅当response开头是selfsign的时候跳出循环

拦截dns并在本地设置监听,本机接收到病毒发来的请求

进程替换技术

将response包内容读取之后,进入20a0函数,该函数同样通过LoadLibrary和GetProcAddress在运行后得到函数地址

经分析后发现该函数为进程替换函数,具体步骤为:首先创建一个正常的进程,VirtualAllocEx为恶意代码分配新的内存,WriteProcessMemory将恶意代码写入内存,SetThreadContext指向恶意代码,ResumeThread让恶意代码执行

关联分析

通过样本暴漏的pdb路径的搜索,搜索到相关信息

通过代码复用和特殊字段的匹配的方式,匹配到了该病毒属Final1stspy家族

对该域名关联的其他文件进行代码复用和特殊字符匹配,同样匹配到了Final1stspy家族

进而继续查找Final1stspy的信息

进而查找dogcall

IOCS

Hash: 2011b9aa61d280ca9397398434af94ec26ddb6ab51f5db269f1799b46cf65a76

Domain: kmbr1[.]nitesbr1[.]org

Url: http[:]//kmbr1[.]nitesbr1[.]org/UserFiles/File/image/index.php

ATT&CK ID:

T1060 - Registry Run Keys / Startup Folder
T1047 - Windows Management Instrumentation
T1087 - Account Discovery
T1055 - Process Injection
T1085 - Rundll32
T1175 - Component Object Model and Distributed COM
T1022 - Data Encrypted
T1057 - Process Discovery


文章来源: http://xz.aliyun.com/t/7429
如有侵权请联系:admin#unsafe.sh