avatar

目录
Csharp_Dll

调试C#的.DLL文件

Dnspy调试的时候,进程是.NET加载.NETDLL可以直接调试,单独的.NETDLL在调试器中不能直接运行,需要加载器先加载。

基本信息

DEPT_NCOC.xlsm

1a2274608ec4a96c703652359f9147d5e214d9d361dce25a6b669ca562bc9bdb

样本分析

DEPT_NCOC.xlsm

运行后会提示部分内容有问题,但是点击信任后可以正常打开

诱饵文档是仿冒巴基斯坦国家指挥与作战中心(NCOC)利用COVID-19为话题,提示附带有宏代码

在Office 2013版本尝试运行宏代码会提示“ActiveX部件不能创建对象”,不知道什么原因,尝试了很多方法依然不能正常执行。但是在WPS下可以直接运行,关键时刻害得看国产软件。

文档内有多个隐藏表,宏代码主要内容是将其他隐藏表被的Base64编码的内容解码后释放并加载执行

通过代码可知,将附带的后续载荷释放到了“C:\ProgramData\Printer.config”并加载HP.Program.RunService()

QuasarRAT

后续释放的载荷为QuasarRAT,直接是.DLL文件通过反射加载执行,所以直接不能直接使用调试器调试,需要加载器加载DLL到同样的入口点HP.Program.RunService()

找了一个大佬的加载器:https://github.com/hexfati/SharpDllLoader

生成后拉入Dnspy调整参数,SharpDllLoader.exe -d DLL_PATH [-n NAMESPACE] -c DLL_CLASS -m METHOD [-a "ARG1 ARG2"]

在加载器main函数断下,执行过程中发现抛出异常,发现似乎是样本检测到了调试器

样本加了高强度混淆,在调试过程中比较麻烦,想着先去混淆,但是在样本内没有找到什么特征,在exeinfo查壳是IntelliLock,而exeinfo又经常把.NET Reactor误报IntelliLock,试了下.NET Reactor的反混淆,能直接去掉乱码的类,看起来似乎可以了实际上在加载调试过程中依然会出错。

最后用NET-Reactor-Cflow-Cleaner-6.7.0.0和d4d .NET Reactor 6.7_string cleaner反混淆了Control Flow和字符串,但是依然没什么卵用加载器加载会出问题。

后来用了.NET Reactor Slayer https://github.com/sychicboy/netreactorslayer,虽然在使用过程中告诉我已经去掉了antidebug,但在调试中还是因为检测到debug而退出,抛出异常时查看异常窗口,找到反调的代码下断

在反调的地方下断,再次运行,命中到断点,命中之后直接进行一个反反调

反调后回到加载器代码,单步成功进入DLL的入口

进入后先通过ip-api.com的api接口查询主机是否为hosting类型,并对抗调试

绕过反调后,先获取系统信息,再解密字符串,从字符串可以发现包含下载执行、上传文件、DLL注入、启动进程、杀死进程等操作

注册表设置自启

通过AES解密C2地址,连接C2地址,远控

文章作者: Yenn_
文章链接: https://0xdf1001f.github.io/2022/04/22/Csharp-Dll/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Wei's Blog

评论