作家
登录

PinDemonium通用动态脱壳工具

作者: 来源: 2017-05-25 11:04:49 阅读 我要评论

一、简介

本文是对16年的blackhat大年夜会上PinDemonium通用动态脱壳对象介绍。

1. 通用脱壳对象简介

通用脱壳对象可以经由过程以下办法实现:

  • -debuggers
  • -kernel modules
  • -hypervisor modules
  • -Dynamic Binary Instrumentation (DBI) frameworks

个中PinDemonium采取的就是DB的办法。

2. PinDemonium道理

平日,法度榜样的一个内存地址要么可写,要么可履行,知足Write xor Execution (WxorX)规矩。然则加了壳的软件会违背这条规矩。

通用脱壳对象道理:加壳的可履行文件必须在运行时脱壳。脱壳过程中会向内存中写入新的代码,然后履行写入的代码。应用上述特点来构建通用脱壳对象。

(3) 为了保持机能和简化辨认写后履行代码的过程,忽视和脱壳无关的指令,如写栈和写Process Environment Block(PEB)

通用脱壳对象必须解决的两个问题:

  • 找到Original Entry Point(OEP);
  • 修复Import Directory来重构可履行的版本。

第一个问题只能经由过程启发式的办法解决,因为脱壳过程什么时刻停止是弗成剖断的。PinDemonium 综合多个文献中提出的启发式办法来增长找到OEP的可能性,并且从新构建一个可履行的版本。

第二个问题要找到Import Address Table(IAT),大年夜而找到相干的API。

PinDemonium 也是应用通用脱壳对象的道理。记录被写过的地址来发明写后履行的内存区域,当被写过的内存区域要被履行时触发转储和分析功能,然后测验测验找到法度榜样所有的导入函数来重垢荷琐可履行的法度榜样。

3. PinDemonium特点

PinDemonium 重要特点:

(1) PinDemonium 的核心模块记录写过的地址(包含对长途过程的写),当发明写后履行的情况,就用 Scylla 对法度榜样进行dump。

(2) 对 Scylla 进行了改进:

  • PE重构模块:增长了对动态内存区域(例如堆)的┞峰酌
  • IAT搜刮和重构模块:许可分析人员编写本身的去混淆代码并集成到 PinDemonium 中

(4) 经由过程设置 PinDemonium 的一些标记可以开启 PinDemonium 响应的功能来对于某些壳所应用的技能

二、构成

PinDemonium 应用了两个第三方对象:插桩对象Intel PIN和Scylla。

1. Intel PIN

PinDemonium 选择插桩来实现通用脱壳对象, 因为:

  • 插桩供给了对待分析二进制文件异常细粒度的┞菲握,可以周全控制法度榜样履行的代码,深刻分析法度榜样做了什么;
  • 插桩对反调试和反汇编技巧免疫;
  • 插桩有丰富且文档完全的API集合用于大年夜运行的法度榜样中提掏出信息,能改变法度榜样运行时的行动。

选择Intel PIN,因为PIN功能周全,文档丰富。

PIN 插桩的粒度可所以:

  • Instruction:一条汇编指令;
  • Basic blocks:以前提跳转结尾的指令序列;
  • Trace:以无前提跳转结尾的根本块序列。

PIN插桩粒度如图1所示

PIN插桩粒度

图1

应用插桩可以实现多种功能,如图2所示,一个应用插桩计算法度榜样指令数的例子。

应用插桩计算法度榜样指令数

图2

pintool是用户开辟的dll来实现想要的功能。pintool 必须包含两个部分:

  • Instrumentation routines:代码收集完毕后履行的回调函数,可以用于分析代码属性和在恰当地位插入Analysis routines。
  • Analysis routines:可以在当前指令履行前或履行后履行的函数。

如图3所示,显示了PIN的流程。

PIN的流程

图3

2. Scylla

Scylla的两个重要功能是IAT搜刮和Import Directory重构。个中,IAT搜刮部分,Scylla应用两种技巧搜刮IAT:根本IAT搜刮和高等IAT搜刮。

(1)根本IAT搜刮

  • Scylla 接收一个开端地址作为输入,大年夜开端地址开端搜刮IAT;
  • 扫描包含开端地址的可履行页面中的call和jump指令,这些指令的每个目标地址作为可能的IAT人口指针;
  • 目标地址中的值和所有导入函数地址进行比较,如不雅没有一致的,目标地址就被镌汰;
  • 大年夜上述步调找到的IAT人口地址开端扫描内存,直到碰到4个0字节,如许就找到 IAT 的停止地址。同样,反向扫描就可以找到开端地址。

对所有可履行页面而不是仅仅对包含开端地址的可履行页面来搜刮IAT。

三、体系构造

采取DBI重要原因是:

  • DBI 供给了对待分析二进制文件异常细粒度的┞菲握,可以周全控制法度榜样履行的代码,深刻分析法度榜样做了什么
  • 对反调试和反汇编技巧免疫
  • 有丰富且文档完全的API集合用于大年夜运行的法度榜样中提掏出信息,能改变法度榜样运行时的行动

PinDemonium体系构造如图4所示:

PinDemonium体系构造


  推荐阅读

  最新SMB僵尸网络利用了7个NSA工具,而WannaCry只用了两个……

据悉,该蠕虫由安然研究人员Miroslav Stampar(克罗地亚当局CERT成员,以及用于检测和应用SQL注入马脚的sqlmap对象的开辟者)于上周三(5月17日)在本身搭建的SMB蜜罐中发明。 近日,研究人员>>>详细阅读


本文标题:PinDemonium通用动态脱壳工具

地址:http://www.17bianji.com/lsqh/35416.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)