formbook脱壳记

本文为看雪论坛优秀文章
看雪论坛作者ID:大河向东流哇
formbook简介
最近看了个formbook的木马,整理了一下笔记作为学习使用。我将formbook分成两个部分,上半部分是C#部分(可以看作他的壳),下半部分是后门部分。我用2种方法获取到最终的后门,记录一下。
第一种方法
第一层 .exe


找到了关键位置,创建新对象。

最后发现这个位置并不是真正的调用第二层的地方,作用是load函数加载资源和解密资源。



出来之后继续跟:
在invoke里面可以看到调用的模块的函数。

进入模块内断下来:

第二层:

调用第三层模块的函数


第三层释放的c++

然后dump下来 就是后门部分。
第二种方法
第一层
在解密完资源之后直接在内存中用去混淆后的pe进行替换。


method_12:


这里涉及到一个知识点,如何在C#中使用内嵌资源文件。(http://t.zoukankan.com/vic_lu-p-2055613.html)
1、常用方法:pictureBox1.Image = Properties.Resources.Correct;
2、使用 ResourceManager 类的方法(该样本中使用的就是此种方法):
1)首先获取一个 ResourceManager 类的实例:
①ResourceManager resourceManager = newResourceManager("资源名称", Assembly.GetExecutingAssembly());
②ResourceManager resourceManager = newResourceManager(typeof(About));//此样本所采取的方法
③ResourceManager resourceManager = Properties.Resources.ResourceManager;
2)通过 ResourceManager 类的 GetObject() 方法:
Object target = resourceManager.GetObject("资源文件名");
3、反射法
4、资源文件读取类
1、删除原有资源

2、创建新资源,命名为Rara3

3、将新资源指向去混淆后的第二层dll

创建好的空白资源Rara3

4、因为第二层dll已经去混淆了,所以第一层里面的解密函数可以直接删掉

解密函数

右键-编辑类-删除解密部分,直接返回数组,让他怎么进来就怎么出去。

然后文件-保存模块!这步很重要,不然就白操作一通了。

这么做的目的是因为c#不能直接调dll,而第二层是带混淆的,如果想调没有混淆的dll就需要进行资源替换。
然后开始调试,在第二层入口下了断点之后发现可读性更强了。
第二层:


解密资源名:


保存好后重新调试,进入第二层dll:
第二层的目的依旧是加载并解密资源,调用第三层。


第二层各个函数的含义如下:

看雪ID:大河向东流哇
https://bbs.pediy.com/user-home-878276.htm
# 往期推荐


球分享

球点赞

球在看

点击“阅读原文”,了解更多!
[广告]赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- ChatGPT Crawler漏洞:通过HTTP请求进行DDOS攻击
- 短视频活跃用户破10亿:抖音、快手把前六名全占了
- Outlook与Hotmail有什么区别?
- 毫末智行与高通宣布采用Snapdragon Ride平台打造智能驾驶解决方案
- 火爆招生报名!《看雪安卓高级研修班(网课)-2023春季班》
- C、C++ 成众矢之的,这群程序员发起编程语言“革命”!
- 看雪·众安 KCTF赛况直播 | 白热化!第八题《群狼环伺》谁先拿下?
- TrustInTech 2021峰会:所有精彩即将绽放,12月2日见!
- 人工智能前沿创新奖正式创立,推动基础学科研究和应用创新
- 看雪·深信服 2021 KCTF 春季赛 | 第四题设计思路及解析
- 研究发现安卓手机收集用户数据是同类iPhone手机的20倍
- 70多位明星丑照被泄,代拍黑灰产有多丧心病狂
赞助链接