成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PinDemonium通用動態脫殼工具

安全 數據安全
本文是對16年的blackhat大會上PinDemonium通用動態脫殼工具介紹。

一、簡介

本文是對16年的blackhat大會上PinDemonium通用動態脫殼工具介紹。

1. 通用脫殼工具簡介

通用脫殼工具可以通過以下方法實現:

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

其中PinDemonium采用的就是DB的方法。

采用DBI主要原因是:

  • DBI 提供了對待分析二進制文件非常細粒度的控制,可以全面控制程序執行的代碼,深入分析程序做了什么
  • 對反調試和反匯編技術免疫
  • 有豐富且文檔完備的API集合用于從運行的程序中提取出信息,能改變程序運行時的行為

2. PinDemonium原理

通常,程序的一個內存地址要么可寫,要么可執行,滿足Write xor Execution (WxorX)規則。但是加了殼的軟件會違反這條規則。

通用脫殼工具原理:加殼的可執行文件必需在運行時脫殼。脫殼過程中會向內存中寫入新的代碼,然后執行寫入的代碼。利用上述特性來構建通用脫殼工具。

通用脫殼工具必須解決的兩個問題:

  • 找到Original Entry Point(OEP);
  • 修復Import Directory來重構可執行的版本。

***個問題只能通過啟發式的方法解決,因為脫殼過程什么時候結束是不可判定的。PinDemonium 綜合多個文獻中提出的啟發式方法來增加找到OEP的可能性,并且重新構建一個可執行的版本。

第二個問題要找到Import Address Table(IAT),從而找到相關的API。

PinDemonium 也是利用通用脫殼工具的原理。記錄被寫過的地址來發現寫后執行的內存區域,當被寫過的內存區域要被執行時觸發轉儲和分析功能,然后嘗試找到程序所有的導入函數來重構一個可執行的程序。

3. PinDemonium特點

PinDemonium 先進性:

  • 考慮了堆上的代碼;
  • 解決一些IAT混淆技術;
  • 綜合多種OEP檢測啟發式方法來找到***的可執行的去混淆后的程序。

PinDemonium 主要特點:

(1) PinDemonium 的核心模塊記錄寫過的地址(包括對遠程進程的寫),當發現寫后執行的情況,就用 Scylla 對程序進行dump。

(2) 對 Scylla 進行了改進:

  • PE重構模塊:增加了對動態內存區域(例如堆)的考慮
  • IAT搜索和重構模塊:允許分析人員編寫自己的去混淆代碼并集成到 PinDemonium 中

(3) 為了保持性能和簡化識別寫后執行代碼的過程,忽略和脫殼無關的指令,如寫棧和寫Process Environment Block(PEB)

(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 的結束地址。同樣,反向掃描就可以找到開始地址。

(2)高級IAT搜索

對所有可執行頁面而不是僅僅對包含開始地址的可執行頁面來搜索IAT。

三、系統結構

PinDemonium系統結構如圖4所示:

PinDemonium系統結構

圖4

從圖中可以看出,PinDemonium主要包括5個模塊:

  • WxorX handler module
  • Hooking Module
  • Dumping module
  • IAT search and reconstruction Module
  • IAT Fixing and Import Directory Reconstruction

1. WxorX handler module

WxorX handler module是PinDemonium的核心模塊。WxorX handler module記錄寫過的地址(包括對遠程進程的寫),當發現寫后執行的情況,就用Scylla對程序進行轉儲。

為了檢測寫后執行,實現的兩個重要功能:

(1) Written addresses tracking:記錄被寫過的每個內存地址來創建 Write Interval(WI)。WI 是一個結構體,記錄一片被寫過的連續內存,包含以下信息:開始地址,結束地址,是否已分析的布爾標志,對 WI 所有啟發式方法的結果。圖5顯示了對2個WI進行合并的三種情況。為了保持性能和簡化識別寫后執行代碼的過程,忽略和脫殼無關的指令,如寫棧和寫Process Environment Block(PEB)。

對2個WI進行合并的三種情況

圖5

(2) Write xor Execution (WxorX) addresses notifier:檢查現在執行的指令是否在WI中,如果是,執行以下分析:

  • Dump 違反 WxorX 規則的內存區域。內存區域的位置包含3種情況:PE 文件主模塊,堆上的內存,其他程序的內存中;
  • 重構 IAT 并生成正確的 Import Directory;
  • 運用一系列啟發式方法(熵,長跳轉等)來評估目前的指令是否是 OEP。

WxorX addresses notifier 用于觸發轉儲功能,當某個WI***次被違反WxorX規則進行轉儲。為了解決圖6的情況,當同一個WI中的跳轉大于閾值時也會進行轉儲。

WxorX addresses notifier

圖6

PinDemonium hook系統調用來發現對遠程進程的寫,用hashmap將pid映射為WI,監控用于執行注入載荷的相關函數,當發現對遠程線程的寫后執行時,PinDemonium轉儲遠程進程被寫過的內存并調用啟發式方法對轉儲結果進行評價。

2. Hooking Module

Hooking Module 利用 Intel PIN 的功能對API和系統調用進行hook以達到跟蹤程序行為的目的。圖7顯示的是對API的hook。

對API的hook

圖7

圖8顯示的是對系統調用的hook。

對系統調用的hook

圖8

3. Dumping module

許多內存轉儲工具,只會轉儲目標程序的主模塊,遺漏了動態內存區域(例如堆)上的代碼,如圖9所示。

Dumping module

圖9

Dumping Module依賴于 Scylla。PinDemonium對 Scylla 進行了改進:將Scylla的PE重構模塊增加了對動態內存區域(例如堆)的考慮。PinDemonium將堆上的WI標記為heap write interval,當heap write interval違反WxorX規則,不僅轉儲程序主模塊,還向轉儲中添加新的節來包含heap write interval的內容并將Entry Point設在這個節內,如圖10所示。

Dumping Module依賴于 Scylla

圖10

圖11顯示的是利用Scylla來轉儲。

利用Scylla來轉儲

圖11

4. IAT search and reconstruction Module

為了獲得更好的結果,PinDemonium綜合運用Scylla的基本IAT搜索和高級IAT搜索功能,如圖12所示。

IAT search and reconstruction Module

圖12

5. IAT Fixing and Import Directory Reconstruction

沒有能解決IAT混淆的通用技術,所以PinDemonium對Scylla進行改進,讓分析人員能自己編寫去混淆代碼并集成到 PinDemonium 中。PinDemonium 實現了一種能夠解決圖13所使用的IAT混淆技術的算法。

IAT混淆技術的算法

圖13

6. Heuristics implementation

PinDemonium 使用啟發式方法對獲得的轉儲進行評估,每個啟發式方法可以在最終生成的報告中設置一個標志位,所有的的標志位幫助識別***的轉儲。有4種啟發式方法:

(1) 熵:圖14顯示了加殼前后MessageBox程序的熵的情況。加殼后熵明顯增加。所以可以對比脫殼前后熵的變化大小是否超過閾值來對脫殼結果進行判定。

加殼前后MessageBox程序的熵的情況

圖14

(2) 跳到節外:程序脫殼完畢后,調到OEP執行時通常會從一個節跳到另一個節,利用這一特點來對脫殼結果進行判定。

(3) 長跳轉:如圖15,程序脫殼完畢后,跳到原始代碼去執行的情況通常不是(a)和(b)那種短跳轉而是(c)那種長跳轉,利用這一特點來對脫殼結果進行判定。

對脫殼結果進行判定

圖15

(4) pushad popad:脫殼的過程中是否出現了pushad和popad這兩條指令,如果都出現了就在報告中設置對應的標志位。

四、實驗效果

實驗一,已知加殼類型的實驗,實驗結果如圖16:

已知加殼類型的實驗

圖16

實驗二,未知加殼類型,樣本來源于virustotal,實驗結果如圖17:

未知加殼類型,樣本來源于virustotal

圖17

五、使用

本人由于實驗需求,利用vmware搭建了PinDemonium環境,實現批量脫殼。

 

  1. pin -t PINdemonium.dll -- path-of-smaples\name-malwr.exe 

通過這個指令可以實現樣本的脫殼,脫殼結果截圖如圖18:

實現樣本的脫殼

圖18

設置 PinDemonium 的一些命令行參數可以開啟PinDemonium相應的功能來對付某些殼所使用的技巧。

責任編輯:趙寧寧 來源: FreeBuf
相關推薦

2015-10-10 16:31:58

2012-12-03 11:59:31

2012-12-03 13:17:04

脫殼DUMP

2012-12-03 13:30:19

脫殼OEP

2011-05-31 18:09:05

動態測試

2014-04-10 09:56:05

JavaScriptJS工具

2015-06-30 13:06:00

ShellterShellcode注入

2015-09-09 09:38:40

脫殼手工脫殼軟件逆向

2022-08-28 10:36:53

調試工具通用

2021-09-17 13:27:09

勒索病毒

2021-05-10 15:08:37

Java工具編碼

2010-05-17 09:34:46

LINQAjax

2021-04-01 10:40:22

網絡安全軟件

2025-01-03 10:30:00

2018-10-25 15:13:23

APP脫殼工具

2013-06-09 11:11:54

歐朋瀏覽器

2016-03-12 21:46:56

Inspeckage應用程序動態分析

2012-05-18 13:03:21

HTC

2021-06-22 09:44:56

鴻蒙HarmonyOS應用

2017-07-28 09:50:15

機器學習數據科學工具和語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级免费看 | 久久99视频这里只有精品 | 久久久久国产一区二区三区四区 | 色吊丝2288sds中文字幕 | 精产国产伦理一二三区 | 日韩精品在线观看一区二区 | av免费网站在线观看 | 日韩成人在线观看 | 成人欧美一区二区三区黑人孕妇 | 久久久夜色精品亚洲 | 四虎影视免费在线 | 91xx在线观看 | 亚洲在线一区二区 | 国产成人一区二区三区精 | 在线看无码的免费网站 | 久久久精品 | 日韩欧美一区在线 | 午夜视频免费在线观看 | 国产一区二区在线免费 | 日日碰狠狠躁久久躁96avv | 日本在线精品视频 | 福利精品 | 天天插天天干 | www.久草 | www.亚洲.com | 久久精品黄色 | 欧美福利网站 | 精品国产欧美 | 99re视频在线观看 | 人人擦人人干 | 欧美一级电影免费观看 | 香蕉久久a毛片 | 久久三区 | 成人欧美一区二区三区黑人孕妇 | 91精品中文字幕一区二区三区 | www.国产精| 国产视频中文字幕 | 蜜桃av一区二区三区 | 国产一区二区三区四区五区3d | 91一区二区 | 亚洲香蕉 |