新型Golang恶意软件的详细分析
字数 1971 2025-08-06 08:35:35
Golang恶意软件分析与逆向工程教学文档
一、Golang恶意软件概述
1.1 Golang语言特点
- 相对较新的编程语言(2009年发布)
- 编译型语言,生成静态链接的可执行文件
- 跨平台支持良好
- 内置并发支持(Goroutines)
- 运行时环境包含在二进制文件中,导致文件体积较大
1.2 Golang恶意软件特点
- 不常见但逐渐增多
- 二进制文件体积庞大
- 调试分析时与传统C/C++程序差异明显
- 使用静态链接库导致分析复杂度增加
- 使用UPX等工具打包以减小体积
二、样本分析基础
2.1 样本信息
- 名称:Trojan.CryptoStealer.Go
- SHA256:941330c6be0af1eb94741804ffa3522a68265f9ff6c8fd6bcf1efb063cb61196
- 原始包:HyperCheats.rar
- C&C服务器:cu23880.tmweb.ru/landing.php
2.2 行为分析
-
文件搜索行为:
- 搜索多种浏览器用户数据目录
- 搜索桌面文件(*.txt)
- 针对俄罗斯用户(Yandex浏览器路径)
-
数据窃取行为:
- 复制找到的文件到%APPDATA%创建的文件夹
- 将数据压缩打包
- 发送到C&C服务器
三、逆向工程工具与方法
3.1 必备工具
-
UPX:用于解压UPX打包的可执行文件
upx -d sample.exe -
IDA Pro:主要逆向分析工具
- 配合IDAGolangHelper脚本(George Zaytsev开发)
- 支持函数重命名和类型识别
-
调试工具:
- PIN跟踪器(用于跟踪Windows API调用)
- GDB/Delve(Go语言专用调试器)
3.2 IDA Pro分析流程
- 加载二进制文件
- 运行IDAGolangHelper脚本:
- 文件 -> 脚本文件 -> 选择IDAGolangHelper.py
- 确定Golang版本:
- 脚本提供版本识别功能(本例为Go 1.2)
- 重命名函数:
- 自动解析标准Go函数和类型
- 添加注释:
- 重点关注main_*函数(程序特有逻辑)
3.3 关键函数识别
-
main_init:
- 程序初始化函数
- 包含使用的模块信息
- 负责字符串初始化(base64解码)
-
main_main:
- 主逻辑函数
- 创建目录
- 启动Goroutines
- 文件搜索和数据处理
四、恶意功能深入分析
4.1 使用的第三方库
- GRequests:网络通信
- GitHub: https://github.com/levigross/grequests
- go-sqlite3:SQLite3数据库操作
- GitHub: https://github.com/mattn/go-sqlite3
- try:异常处理
- GitHub: https://github.com/manucorporat/try
4.2 数据窃取目标
-
浏览器数据:
- 信用卡信息(name_on_card, card_number_encrypted等)
- 自动填充数据(autofill_profiles)
- 电子邮件地址
- 电话号码
-
加密货币钱包:
- Bitcoin (wallet.dat)
- Ethereum (keystore)
- Exodus (seed.seco)
- Zcash (wallet.dat)
- 其他多种加密货币
-
即时通讯软件:
- Telegram (tdesktop.tg)
4.3 SQL查询分析
恶意软件执行的关键SQL查询:
SELECT name_on_card, expiration_month, expiration_year, card_number_encrypted, billing_address_id FROM credit_cards
SELECT * FROM autofill_profiles
SELECT email FROM autofill_profile_emails
SELECT number FROM autofill_profile_phones
SELECT first_name, middle_name, last_name, full_name FROM autofill_profile_names
4.4 字符串处理特点
- Golang字符串以串联形式存储
- 通过偏移量和长度检索特定字符串
- 大量使用base64编码
五、防御与检测建议
5.1 检测指标
-
文件系统行为:
- 对浏览器用户数据目录的异常访问
- 对加密货币钱包文件的读取
-
网络行为:
- 与已知C&C服务器(cu23880.tmweb.ru)的通信
- 异常的数据压缩和上传行为
-
进程行为:
- 大量Goroutines创建
- SQLite3数据库查询行为
5.2 防御措施
-
终端防护:
- 监控对敏感目录的访问
- 限制未知程序的网络连接
-
浏览器安全:
- 使用强密码保护敏感数据
- 定期清理自动填充数据
-
加密货币安全:
- 使用硬件钱包
- 定期备份钱包文件
六、Golang恶意软件发展趋势
- 逐渐增多:随着Go语言流行度上升,相关恶意软件会增加
- 分析工具成熟:专用逆向工具将不断完善
- 混淆技术增强:可能采用更复杂的打包和混淆技术
- 跨平台攻击:利用Go的跨平台特性进行多平台攻击
七、总结
本案例中的Golang恶意软件虽然功能相对简单,但展示了新型语言编写的恶意软件的特点和挑战。通过适当的工具和方法,可以有效分析这类恶意软件。安全研究人员需要持续关注Golang等新兴语言在恶意软件中的应用,并开发相应的分析技术和防御措施。