其他
APT28样本超详细分析
本文为看雪论坛优秀文章
看雪论坛作者ID:FSNSN
一
基本信息
MD5:36524C90CA1FAC2102E7653DFADB31B2
SHA1:8D6DB316EA4E348021CB59CF3C6EC65C390F0497
CRC32:04DA02C3
二
测试环境及工具
2.1测试环境
2.2测试工具
2.2.1查壳工具
2.2.2监测工具
2.2.3调试工具
三
基本静态分析
3.1字符串分析
各种字符,猜测跟加密相关:
3.2PE分析
3.2.1导入表
CreateToolhelp32Snapshot
Process32NextW
WriteFile
DeleteFile
CreateFile
FlushFileBuffers
GetEnviromentVariable
Decodeointer
IsDebuggerPresent
IsProcessorFeaturePresent //判断处理器相关信息
可能跟提权相关
命令执行相关
3.3壳分析
四
行为分析
4.1文件监控
4.2进程监控
通过rundll32.exe加载释放的dll文件
4.3网络监控
威胁情报进行查询
4.4注册表监控
注册表HKCR\Environment\UserInitMprLogonScript键值所指的程序会在杀毒软件启动前启动,而且修改它不需要管理员权限,因此我们可以通过其来达到权限维持的效果。
五
综合分析
下面结合OD详细分析:
OD加载后,停留在此处。
执行大量函数,无法直观判断具体功能。
一直执行下去发现,程序终止,所以猜测上面的函数应该有反调试的功能。
根据动态获取的基地址,结合IDA的OEP,直接跳转程序入口,下断点并执行到此处。
程序开始执行。
函数内部有循环和运算操作,猜测是进行加解密操作。
OD执行查看,解密字符串如下,是三个路径。
第一次:cdnver.dll
函数内部如下:
第二次:函数内部逻辑同上
解密前:
解密后:
实现数据压缩解压缩
解压到此处
解压完毕
执行1DEF函数解密两个字符串
获取当前环境变量的字符串
加载Kernel32.dll
获取CreateFile函数地址
调用CreateFile创建一个文件
获取WriteFile函数的地址
此时文件已经写入完毕
加载ADVAPI32.dll,里面包含注册表、事件日志等相关操作
获取RegOpenKeyExW函数地址,用于打开注册表键
主键名称对应的常数
获取环境变量及处理字符串工作
_wgetenv:从环境中取字符串,获取环境变量
获取“LOCALAPPDATA”的环境变量
_wcsstr:从字符串中寻找子串
返回值:返回str中第一次出现strSearch的指针,如果strSearch未出现在str中,则返回NULL。如果strSearch指向长度为零的字符串,则函数返回str。
从cdnver.dll找".",获取文件后缀名字
循环判断,防止文件名中有不止一个"."
直到文件名中没有".",EAX返回值是0
将其宽字节转多字节,UNICODE转ASCII
同样的对字符串"#1"、"cdnver.dll"、"LOCALAPPDATA"、"start"、"cdnver.bat"进行处理
获取CreateFileA的函数地址,准备创建文件
创建文件
创建文件完毕
构建字符串
字符串构建完成
通过WriteFile,写入文件
写入成功
lstrcatW:字符串拼接,该函数将一个字符串附加在另一个字符串后面。
构造字符串
加载ADVAPI32.dll,获取RegSetValueEx的函数地址
设置注册表,权限维持操作。因为HKEY_CURRENT_USER\Environment\Logon Scripts 的执行顺序在杀软前,所以Logon Scripts可以优先于杀软执行,绕过杀软对敏感操作的拦截。
设置前和设置后
解密三个字符串
判断运行权限是属于高权限0x3000
结果是0x1000,直接退出
结果是0x2000,返回值是1
结果是0x3000,返回值是2
结果是0x4000,返回值是3
结果是0x5000,直接退出
如果是system权限
执行1B02函数
执行1957函数
加载一个Advapi32.dll
获取OpenProcessToken函数地址
调用OpenProcessToken函数
获取LookupPrivilegeValue函数地址
调用LookupPrivilegeValue函数
调用AdjustTokenPrivileges函数
上面是将程序更改为SeSecurityPrivilege权限,下面更改成SeTcbPrivilege权限
通过OpenProcess函数打开explorer进程,通过OpenProcessToken函数获得explorer的令牌句柄,将OpenProcessToken的第三个参数TokenHandle返回。
执行18DC函数,该函数,将ESI的字符串写入内存
再回到1B02函数
加载Advapi32.dll
获取CreateProcessAsUser函数地址
执行CreaterocessAsUser函数,以当前登录用户身份运行程序
执行完毕后
如果是administrator(高权限)权限,则直接执行
至此详细分析完毕。
梳理如下:
六
应对策略
1、释放文件C:\Users\Administrator\AppData\Local\cdnver.bat和C:\Users\Administrator\AppData\Local\cdnver.dll
2、修改注册表
基于此样本,删除文件、还原注册表即可。
看雪ID:FSNSN
https://bbs.pediy.com/user-home-819301.htm
# 往期推荐
3.CVE-2022-21999 Windows Print Spooler 权限提升漏洞分析
4.The House of Mind (FASTBIN METHOD) + PRIME
6.Android APP漏洞之战—插件化漏洞和解压缩漏洞详解
球分享
球点赞
球在看
点击“阅读原文”,了解更多!