APT Turla样本分析

APT 2年前 (2022) admin
1,085 0 0

APT Turla样本分析

本文为看雪论坛优秀文章
看雪论坛作者ID:戴夫的小推车

组织简介


Turla,又名Snake,Uroburos,Waterbug,WhiteBear。由GData在2014年披露后,卡巴斯基、赛门铁克、ESET持续对该组织进行追踪和分析。根据该组织使用的恶意文件的编译时间,最早可以追溯到2011年。通过对代码及功能对比,可以追溯到2006年检测名称为Agent.BTZ的恶意文件与该组织有关联。因此可以推测出该组织早在2006年就已经开始进行攻击。
 
Turla组织使用了rootkit技术对计算机进行监控,完成数据窃取功能。这个方法在Windows早期版本的系统中非常实用,可以有效隐藏在计算机中,拥有较高权限。从Windows vista开始,微软加强了对第三方驱动加载过程的控制,需要获取证书并由用户同意才可以正常安装。因此Turla组织转而使用更复杂的侵入过程并植入不带rootkit套件的远控软件对信息进行采集,但这增大了被发现的几率。
 
Turla组织攻击目标包括政府机构,使馆,教育,研究和制药公司等。最初在攻击美国情报部门后被披露。近几年,该组织攻击了德国外交部,法国相关公司的服务器,窃取了大量的情报信息。
 
 

概述


 
一二三阶样本都是DLL文件,导出表中包含10个函数,但仅”LocalDataVer”和”DllMain”函数可用,样本在沙箱中不能分析出恶意行为,推测其他无用函数用于干扰沙箱分析。由于样本流程非常复杂且包含大量加解密行为,所以直接动态分析。
 
使用rundll32.exe加载一阶DLL并启用函数”LocalDataVer”,运行后样本尝试创建或访问”C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader”、”C:\ProgramData\Adobe\ARM”目录,并分别于目录下释放二阶样本”lib3DXquery.dll”,配置文件”Reader_20.021.210_47.dat”。随后样本寻找rundll32.exe并启动二阶样本”lib3DXquery.dll”的”LocalDataVer”函数,最后删除一阶样本自身。
 
二阶样本启动后创建互斥体”Global\Adobe Update Module”,读取配置文件”Reader_20.021.210_47.dat”前5个字节,作为读取文件长度(本文是119字节),再读取文件从第6个字节以后的119字节作为配置文件内容并解密到内存中。打开服务管理器创建新服务”Adobe Update Module”并将二阶样本运行指令写入注册表,达到样本自启动目的。最后读取文件”Reader_20.021.210_47.dat”,解密出三阶样本并于内存中启动。
 
三阶样本先读取配置文件”Reader_20.021.210_47.dat”到内存,再通过寄存器动态寻址方式获取解密函数地址解密配置信息。读取注册表信息获取UA头,最后以POST方式向”newshealthsport.com/sport/latest.php”发送请求。
 
 

一阶样本


3.1)基本信息

MD5
2D3115AC3D96B29D9BA20E310A8E7457
时间戳
2020-05-15 18:59:47
架构
架构:64位
表 基本信息
使用rundll32.exe加载一阶DLL并启用函数”LocalDataVer”,运行后样本尝试创建或访问”C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader”、”C:\ProgramData\Adobe\ARM”目录,并分别于目录下释放二阶样本”lib3DXquery.dll”,配置文件”Reader_20.021.210_47.dat”。随后样本寻找rundll32.exe并启动二阶样本”lib3DXquery.dll”的”LocalDataVer”函数,最后删除自身。

 

3.2)行为分析

 

1.创建目录”C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader”、”C:\ProgramData\Adobe\ARM”。
APT Turla样本分析
图 目录创建

 

2.创建文件”Reader_20.021.210_47.dat”、”lib3DXquery.dll”。
APT Turla样本分析
图 创建Reader_20.021.210_47.dat配置文件
 
APT Turla样本分析
图 创建lib3DXquery.dll

 

3.运行一段时间后ping 127.0.0.1 3次后删除自身。
APT Turla样本分析
图 删除自身

 

4.请求域名newshealthsport[.]com
APT Turla样本分析
图 域名请求

 

3.3)动态分析

 
1.样本解密出路径”C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader”并尝试打开”Reader”目录,如果失败则执行命令”ping 127.0.0.1″ 3次后删除自身。如果成功访问目录,则创建或访问另一目录”C:\ProgramData\Adobe\ARM”。
APT Turla样本分析
图 Adobe目录创建
 
APT Turla样本分析
图 删除自身
 
APT Turla样本分析
图 Arm目录创建
2.样本解密字符”%WinDir%\System32″从而寻找”System32″目录并尝试打开rundll32.exe。
APT Turla样本分析
图 查找rundll32.exe

 

3.尝试在”ARM”目录下创建新二进制文件”Reader_20.021.210_47.dat”,在”Reader”目录下创建新DLL “lib3DXquery.dll”。
APT Turla样本分析
图 配置文件Reader_20.021.210_47.dat
 
APT Turla样本分析
图 二阶样本

 

4.使用”rundll32.exe”加载”lib3DXquery.dll”的”LocalDataVer”模块,运行完后删除自身。
APT Turla样本分析
图 启动二阶样本
 
APT Turla样本分析
图 删除自身

二阶样本


 

4.1)基本信息

MD5
03B236B23B1EC37C663527C1F53AF3FE
时间戳
2020-05-15 18:56:55
架构
64位
表 基本信息
二阶样本启动后创建互斥体”Global\Adobe Update Module”,读取配置文件”Reader_20.021.210_47.dat”前5个字节,作为读取文件长度(本文是119字节),再读取文件第6个字节以后的119字节作为配置文件内容并解密到内存中。打开服务管理器创建新服务”Adobe Update Module”并将二阶样本运行指令写入注册表,达到样本自启动目的。最后读取文件”Reader_20.021.210_47.dat”,解密出三阶样本并于内存中启动。
 

4.2)动态分析

 

1.”Global\Adobe Update Module”作为互斥体名,创建临时互斥体”crglmu”随后释放。
APT Turla样本分析
图 互斥体创建
 
APT Turla样本分析
图 互斥体创建
2.读取配置文件”Reader_20.021.210_47.dat”,该文件前5个字节作为读取文件长度(119字节),再读取文件从第6个字节以后的119字节作为配置文件内容并解密到内存中:”||1200||params||192||loader_params||1266176||LastJournalx32.adf||12||ExportName||0||fAetno||35||CurrentTransportState||”。
APT Turla样本分析
图 前五个字节
 
APT Turla样本分析
APT Turla样本分析
图 配置信息解密

 

3.解密配置文件”Reader_20.021.210_47.dat”获取秘钥:”3B03B977BA80B101ACE8AA96754564815C3D35CFF9F62DCF43479E5FB3F07DE2″。
APT Turla样本分析
图 解密秘钥

 

4.调用CryptDecrypt函数,解密配置文件”Reader_20.021.210_47.dat”,获得:”{“Autoruns”:{“Service”:{“Enabled”:”true”,”ServiceName”:”Adobe Update Module”,”DisplayName”:”Adobe Update Module”}},”RunDllInfo”:{“Name”:”rundll32.exe”,”Path”:”C:\\Windows\\System32″}}”。
APT Turla样本分析
图 配置信息

 

5.打开服务管理器,遍历注册表”SYSTEM\CurrentControlSet\Services”,创建新服务”Adobe Update Module”将指令”rundll32.exe lib3DXquery.dll LocalDataVer”写入键值中并设置为开机自启动,达到长期控守目的。(此外貌似有多种驻留方式,在此就不一一尝试)。
APT Turla样本分析
图 打开服务管理器
 
APT Turla样本分析
图 服务注册

 

6.读取文件”Reader_20.021.210_47.dat”,解密出三阶样本并保存在内存中,调用”rtladdfunctiontable”函数添加三阶样本所需DLL如”kernal32.dll”、”shell.dll”等及相关函数,调用”bsearch”函数内存中搜索DLL导出函数”LocalDataVer”,于内存中启动三阶样本。
APT Turla样本分析
图 解析所需函数
 
APT Turla样本分析
图 搜索函数LocalDataVer
 
APT Turla样本分析
图 三阶样本入口
 
 

三阶样本


 

5.1)基本信息

MD5
94B91212154713F70121761FD3B049A9
时间戳
2020-05-15 18:56:28
架构
64位
表 基本信息
 
三阶样本先读取配置文件”Reader_20.021.210_47.dat”,再通过寄存器动态寻址方式获取解密函数地址解密配置信息。读取注册表信息获取UA头,最后以POST方式向newshealthsport[.]com/sport/latest.php发送请求。
 

5.2)动态分析

 

1.读取配置文件”Reader_20.021.210_47.dat”,通过寄存器动态寻址方式获取解密函数地址解密配置信息,隐蔽性很高。
APT Turla样本分析
APT Turla样本分析
图 解密配置信息

 

2.读取注册表”SOFTWARE\Microsoft\Internet Explorer”获取键值,再调用”urlmon.dll”的”ObtainUserAgentString”函数获取ua信息。
APT Turla样本分析
APT Turla样本分析
图 获取UA

 

3.解密配置文件配置发送负载:”newpass=ABebcdK2gAf–e988c74qKh0Y3X1W1Z0UzSySxQPAAVvC8T08w7n2BoP1X116p1JdMdO7a4NoognB1GkpOPOJC4XzjlIKsB0tDIe-TzX5K4Mmyv8EVRSY/64eRlEDU0″并通过寄存器动态获取函数地址,在动态获取地址中再动态获取解密请求需要的信息。
APT Turla样本分析
图 数据负载

 

4.以POST方式向newshealthsport.com/sport/latest.php发送请求测试网络连通性并从网络上获取新指令。
APT Turla样本分析
APT Turla样本分析
图 发送请求
 
APT Turla样本分析
图 获取指令
 

总结


 
样本特性:
 
1)通过多组无用导出函数,干扰沙箱分析。
 
2)样本流程非常复杂,调试起来消耗大量时间,贴一个流程例子:
APT Turla样本分析
3)网络模块在三阶样本中,三阶样本在内存中解密并启动,不留驻留文件,隐蔽性较强。
 
4)通过寄存器动态寻址,隐蔽核心函数,给静态分析增大难度。

APT Turla样本分析

看雪ID:戴夫的小推车

https://bbs.pediy.com/user-home-952303.htm

*本文由看雪论坛 戴夫的小推车 原创,转载请注明来自看雪社区
 

APT Turla样本分析

# 往期推荐

1.CVE-2021-24086漏洞分析

2.BattlEye内核驱动检测模块深入分析

3.Seccomp BPF与容器安全

4.CVE-2019-1458提权漏洞学习笔记

5.House of apple 一种新的glibc中IO攻击方法

6.PWN 堆利用 unlink 学习笔记

APT Turla样本分析

APT Turla样本分析

球分享

APT Turla样本分析

球点赞

APT Turla样本分析

球在看

APT Turla样本分析

点击“阅读原文”,了解更多!

原文始发于微信公众号(看雪学苑):APT Turla样本分析

版权声明:admin 发表于 2022年7月20日 下午6:07。
转载请注明:APT Turla样本分析 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...