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/
关注KnowSafe微信公众号
随时掌握互联网精彩
随时掌握互联网精彩
- Home Assistant来自全球DIY爱好者的开源家庭自动化项目
- 思源笔记以隐私保护和数据安全为核心的个人知识管理系统
- 谷歌Go团队十二年技术负责人突然退位!微软、华为等表达感谢
- 招生!【2023秋季班】安卓高研班(网课)月薪三万&月薪两万计划
- 记录调试Windows服务操作
- CSDN获评2022年科创中国开源创新榜「开源机构」
- 苹果汽车售价或低于 10 万美元;微软将开发一站式“超级应用”;Adobe 将销售 AI 生成图片|极客头条
- HUAWEI CONNECT 2021 "华为助力星”招募开始啦!
- 这几款 JVM 故障诊断处理工具,你还不会?
- 高朋满座话未来|专访魅族科技CEO黄质潘
- 又拍云 Open Talk 技术沙龙入选 2020 最受欢迎技术活动
- 嘘!老板说这波折扣太低了,我偷偷地……
赞助链接