专业丰富的破解论坛技术交流,提供软件安全,病毒分析,脱壳破解,安卓破解,加密解密等,由无数热衷于软件爱好者共同维护
 
发新帖
楼主: 零五零八
查看: 875|回复: 0

[技术文章] 网络拉取内存加载C#木马-流程分析

[复制链接]
零五零八 发表于 2020-9-28 14:55:01 | 显示全部楼层
本帖最后由 零五零八 于 2020-9-28 15:07 编辑

所爱隔山海,山海皆可平,废话不多话,冲冲冲冲冲

1. 拖到查壳中
1.jpg
没有分析出来
2. 直接用火绒剑看一下调用
C# 的系统dll
2.jpg

运行的时候 并没有发现有什么网络请求
3. 直接拖IDA
发现IDA识别出来很多函数


3.png
看了一下字符串也没看到啥有用的
4.jpg
仔细看主函数 一堆乱七八杂的判断和 if,但是 在这里面 它肯定要调用函数,我只发现了一个调用点
5.jpg
进去分析发现了类似的代码结构(有点像llvm过的代码),它调用了InternetOpenA(导入表中有一些 winiNet http请求的函数)然后又jmp走了
6.jpg
7.jpg
4. x32dbg动态调试
直接下断 InternetConnectA,HttpOpenRequestA 看一下它的请求
8.jpg

9.jpg
url: pastebin.com:443(0x1BB)/raw/nrSZnmgc Get Https(443)
返回值很像base64

10.jpg
base64解密之后 发现 开头就是 e9 0a 05 00 00 很像jmp (怀疑是shellcode)


11.png
动态调试下断点:InternetReadFile 函数返回结束的地方
12.jpg
因为返回值是base64加密,而且是shellcode,所以怀疑出去之后解密数据,解密完之后把shellcode贴到内存中

直接下memcpy,发现程序都运行起来了 它都没有copy...

所以只能慢慢跟

找到它贴shellcode的地方,然后下断点,动态跟踪

动态调试shellcode的时候发现了C加载C#的函数
C内存运行C#dll-参考地址:www.cnblogs.com/flyDream12315/p/6062920.html

LoadLibrary("mscoree.dll");
13.png
网络拉取shellcode base64解密 是个PE文件 esp+104 = PeDll
14.png

16.png


17.jpg
IUnknown:

18.jpg
(pMetaHost)+0xC的位置 pMetaHost->GetRuntime(runtimeVersion, IID_ICLRRuntimeInfo, (VOID**)&pRuntimeInfo);


19.jpg
ICLRRuntimeInfo:
20.jpg

21.png

22.png

23.jpg

24.png


25.png
26.jpg
SAFEARRAY* pSafeArray = SafeArrayCreate(0x11,1,pData) SafeArrayCreate
27.png

28.png


29.jpg
esp+0x14 = pDefaultAppDomain,(pDefaultAppDomain)+0xB4 pDefaultAppDomain->Load_3(pSafeArray, &pAssembly); 加载C#dllV 30.jpg
pAssembly(_Assembly) (pAssembly)+0x40 pAssembly->get_EntryPoint(&pMethodInfo) 获取入口函数
总结:全流程就是exe运行了一个shellcode shellcode中执行了C#的dll,所以主程序只是一个加载器而已,当获取到C# pedll的时候,其实就可以直接拉dnspy里面查看





快速回复 返回顶部 返回列表