01
事件背景
近期,在吐司上看到一篇帖子,有人发现github上某shellcode加载器存在后门,故进行分析。
02
概要分析
进行分析时该项目已经被删除。
根据公开出来的信息,找到该样本的hash值:
文件名 | Hash |
ShellcodeLoader-releases-tag-v2.1.zip | a737860a66bcd9228cc18de7a51cc736e1a834a13e26cd6f19e2d162fdfef9bd |
ShellcodeLoader.exe | fa431a72e41d931e10fc4c5292ca07c42da81e521f7e0ac74e73d4a22cfc415d |
LoaderMaker.exe | c212a526c57ea42489930c0ee467f0a84b08cea95e1a6a8f8fa631cdaa856f7c |
该loader的生成方式为:
[*]usage:
[*]LoaderMaker.exe <shellcode.c> <outfile.exe>
[*]example:
[*]LoaderMaker.exe shellcode.bin loader.exe
*左右滑动查看更多
其中LoaderMaker.exe为生成器,也就是存在后门的地方。而ShellcodeLoader.exe则为该项目的模板loader,就是我们将shellcode传给生成器,然后生成一个免杀的加载器。该后门只要在正常生成loader的情况下就会被执行,如果只是查看usage,不会执行。
|
03
详细分析
找到main函数,首先看到的就是usage,为了提升该工具如何使用,而0x401950这里会默认当作为puts函数或printf函数。之后会读取传入的文件并读取ShellcodeLoader.exe,找到需要填充的位置,填充位置为全A。
|
上图为ShellcodeLoader.exe中的代码,生成loader时A会被替换。
|
之后就是生成loader和最后一次输出,如果正确生成,输出函数一共调用了7次。
进入输出函数内部查看,发现多了一个函数。
|
进入该函数内部查看,每次调用该函数要进行自增1的操作,直到第7次调用输出函数就会进入到后门函数中。
|
会通过寻址的方式解码explorer.exe,并对该进程进行进程注入。
|
之后是常规的进程注入。
|
动态调试可以找到注入的shellcode,为Cobalt Strike的shellcode。
|
04
loader
接下来可以学习一下这个免杀的手段,通过填充众多的A可以找到加载shellcode地方,查看代码可以看出为远程线程注入,调用的方法为RtlCreateUserThread。
|
向上寻找,可以得知该方法位于CShellcodeLoaderDlg类的中。在MFC初始化之后就会执行。
|
05
IOC
URL
www2.jquery[.]ink
Hash
a737860a66bcd9228cc18de7a51cc736e1a834a13e26cd6f19e2d162fdfef9bd
fa431a72e41d931e10fc4c5292ca07c42da81e521f7e0ac74e73d4a22cfc415d
c212a526c57ea42489930c0ee467f0a84b08cea95e1a6a8f8fa631cdaa856f7c
— 往期回顾 —
原文始发于微信公众号(安恒信息安全服务):九维团队-青队(处置)| 关于github上某免杀loader后门事件的分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论