Raccoon
Raccoon 样本分析
1. 样本信息
Raccoon
是一种信息窃取类型恶意软件,可作为恶意软件即服务使用。它可以通过订阅获得,每月收费 200 美元。Raccoon
恶意软件已经感染了超过 100,000 台设备,并成为 2019 年地下论坛上被提及最多的病毒之一。
ioc
类别 | 特征值 |
---|---|
MD5 | f1521ff38743ca05cc8c6f25cd95309c |
SHA1 | ebb54174674901b68474ae44944fbe5283d56398 |
SHA256 | 1a79ac5d13c3c8ab8fc5b8d7e512065f512a2d81e61b199902a0ad0f380a2256 |
C2 | 91.219.236.49 |
2. 样本分析
2.1. 空间申请
ida
载入样本,从主函数往下发现其调用GlobalAlloc
在堆中申请空间:
通过计算或动态调试可知sizeBytes
大小为0x4DBD0
:
2.2. 数据拷贝
然后会将本地0x407B58
地址处的数据逐字节拷贝到刚才申请的堆空间中:
数据的内容如下:
2.3. 修改虚拟空间保护
通过GetProcAddress
获取kernel32.dll
中&byte_479098
字符串的函数地址,然后调用该函数使申请的堆空间可读可写可执行。&byte_479098
所对应的字符串可通过计算或动态调试得知为VirtualProtect
:
2.4. 解密释放数据
handleAddress
处拷贝的数据进行解密后,便跳转到handleAddress
进行执行:
解密方式如下:
2.5. 第一次执行虚拟内存代码
在申请内存空间时,空间句柄保存在handleAddress
中,当解密完数据后,EIP
将指向handleAddress
(因申请空间存在随机性,复现时内存地址亦存在差异):
通过动态调试跟踪执行,发现第一个call
函数的主要功能是获取API
函数地址:GlobalAlloc
、GetLastError
、Sleep
、VirtualAlloc
、CreateToolhelp32Snapshot
、Module32First
、CloseHandle
;第二个call
函数则包含了一些有趣的东西:
在内存dataAddress
中存在一个加密数据块,其中存储着恶意代码,下方第一个红框则是对该部分的密钥进行计算,第二个红框是解密过程(获取密钥再xor
解密),第三个红框是判断是否全部解密(解密长度大小为0x4D1F1
):
当解密完成后,dataAddress
数据块内容如下:
通过VirtualAlloc
申请一块内存virtualAddress
,用于存储下一次解密后的数据,该解密是从dataAddress
获取基础数据,然后解密后加载到virtualAddress
:
当解密完成后,virtualAddress
数据块内容如下:
2.6. 第二次执行虚拟内存代码
当解密完数据后,EIP
将指向virtualAddress
,转入其中的代码样式如下:
通过动态调试发现其中存在内存申请,并将数据拷贝到申请的内存中,数据大小为0x8C800
:
循环加载该PE
文件的到0x400000
,然后释放上一个内存空间:
内存布局中呈现的节区信息如下:
最终将跳转到0x43E9BE
继续执行:
2.7. 恶意载荷分析
在恶意载荷内存中转拷贝过程中,将完整的PE
文件dump
下来进行分析,恶意载荷首先会获取当前主机用户名,创建互斥锁:
然后进行本地语言判断,如果是白名单区域的主机将退出:
提取内存中的语言白名单如下:
Russian、Ukrainian、Belarusian、Kazakh、Kyrgyz、Armenian、Tajik、Uzbek
恶意载荷将进行字符串拼凑及解码,本次解码获得的Telegram
频道为agrybirdsgamerept
:
http://telegin.top/agrybirdsgamerept
http://ttmirror.top/agrybirdsgamerept
http://teletele.top/agrybirdsgamerept
http://telegalive.top/agrybirdsgamerept
http://toptelete.top/agrybirdsgamerept
http://telegraf.top/agrybirdsgamerept
https://t.me/agrybirdsgamerept
解码获得链接后,与其中一个链接(http://telegin.top/agrybirdsgamerept
)进行通信:
用到的WinHttpOpen
和WinHttpConnect
函数:
解密响应内容,获得一个链接http://91.219.236.49/
:
获取用户名和Guid
:
然后将Guid
与用户名加密后,发送到C2
:
从响应报文中解码出一个json
格式的字符串:
从内存中提取json
文本格式如下:
{
"_id": "4pwhxXwB3dP17SpzDPUc",
"au": "/l/f/4pwhxXwB3dP17SpzDPUc/f986ccd7ae3990632485c23da5d654a8641da382",
"ls": "/l/f/4pwhxXwB3dP17SpzDPUc/431b842dcfe7fd233578e09291277c256e232336",
"ip": "*.*.*.*",
"location": {
"country": "",
"country_code": "",
"state": null,
"state_code": null,
"city": null,
"zip": null,
"latitude": ,
"longitude":
},
"c": {
"m": null,
"t": null,
"lu": null
},
"lu": null,
"rm": 1,
"stm": 1,
"tg": 1,
"is_screen_enabled": 0,
"is_history_enabled": 1,
"depth": 3,
"s": [...],
"cs": [...],
"steamstr": [...],
"tgs": [...],
"ews": [...]
}
其中参数对应关系如下:
id
:当前主机的编号;au
:下载SQLite3.dll
的地址;ls
:下载窃密功能动态链接库压缩包(tS1oI8aQ4.zip
)的地址;location
:当前主机地理位置相关信息;rm
:是否启用自我删除;stm
:是否窃取Steam
相关信息;tg
:是否窃取Telegram
相关信息;s
:窃取的浏览器列表;cs
:窃取的钱包列表;steamstr
:Steam
路径;tgs
:Telegram
路径;ews
:窃取的加密货币地址;
被窃取的浏览器包含:
edge、chrome、chromeBeta、chromeSxS、chromium、xpom、comodo、amigo、orbitum、bromium、brave、nichrome、rockmelt、360browser、vivaldi、go、sputnik、kometa、uran、qipSurf、epicprivacy、coccoc、centbrowser、7star、elements、torbro、suhba、saferbrowser、mustang、superbird、chedot、torch、UC Browser、QQ Browser、opera
被窃取的钱包包含:
binance、atomic、daedalus、electrum、electrum-ltc、electroncash、exodus、green、guarda、jaxxliberty、jaxxold、mymonero、monerogui、wasabi、ledger_live
Steam
与Telgram
的地址信息如下:
被窃取的加密钱包地址包含:
meta、meta_e、brave、ronin、tronlink、bsc、MEW、guarda、Yoroi、Yoroi_e、math、math_e、equal、iwallet、jaxx、wombat、nifty、phantom、guild、saturn、liquality、terrastation、terrastation_e、keplr、neoline、polymesh、clover、sollet、iconex、temple、coin98、tezbox、khc、auromina、coinbase、cyano
3. 参考资料
https://labs.k7computing.com/index.php/raccoon-the-info-stealer/
https://app.any.run/tasks/f877e664-3a3c-4e03-a35a-e96e079317a5/#
https://www.virustotal.com/gui/file/1a79ac5d13c3c8ab8fc5b8d7e512065f512a2d81e61b199902a0ad0f380a2256