簡體   English   中英

使用PHP驗證查找惡意PDF文件?

[英]Find malicious PDF files using PHP validation?

目前,對於文件驗證,執行以下操作,

  • 使用MIME詳細信息(如application / pdf)進行文件類型驗證
  • 驗證文件擴展名以及MIME詳細信息。

但是一些PDF文件包含像JavaScript這樣的惡意腳本來破壞系統

有關PDF攻擊的更多詳細信息:

http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2008-2992

問題: 對於這種情況,任何推薦的解決方

幾年前我做過這個(不再有代碼)了。

  • 上傳
    • 掃描文件中的惡意代碼(類似於病毒掃描程序)
    • 基於功能邏輯拒絕或允許文件

惡意代碼通常隱藏在文件meta內部的base 64函數內,或使用char代碼呈現惡意代碼。

您需要找到常見惡意代碼的字典,或創建自己的字典並使用php功能打開文件並掃描字典中的項目(數組)。

在這一點上,你可能會認為,這不是很優化或者會很慢......等等。

這是對的; 任何時候你拋出安全性它確實會帶來性能損失,但你可以通過創建一個新的服務器來解決它,文件上傳到並掃描然后傳回原始服務器......等等。

就掃描儀而言,我確信您可以找到服務或開源代碼,只需找到這個; https://github.com/mikestowe/Malicious-Code-Scanner/blob/master/phpMalCodeScanner.php (從未使用它,或者我推薦它)

看看這個項目https://github.com/urule99/jsunpack-n - 一個通用的JavaScript解包器

jsunpack-n在訪問URL時模擬瀏覽器功能。 它的目的是檢測針對瀏覽器和瀏覽器插件漏洞的漏洞。 它接受許多不同類型的輸入:( 也是PDF *)

通過查看文件https://raw.githubusercontent.com/urule99/jsunpack-n/master/pre.js,它看起來直接解決了您的問題。

var util = {
375     printf : function(a,b){print ("//alert CVE-2008-2992 util.printf length ("+ a.length + "," + b.length + ")\n"); },

在上傳時,我會將pdf提供給此工具並檢查結果。

下面是與vunelabirity相關的一些有趣的資源,它們深入地解釋了所有內容。

http://resources.infosecinstitute.com/hacking-pdf-part-1/

http://resources.infosecinstitute.com/hacking-pdf-part-2/

在文章的第2部分中有一個片段,說你可以使用蜘蛛猴執行pre.js(我提到的文件),以獲取有關CVE的信息

js -f pre.js -f util_printf.pdf.out

// alert CVE-2008-2992 util.printf length(13,undefined)

在下面的這個項目中添加另一個答案更容易使用,並且還能夠找到CVE-2008-2992漏洞。 我知道你在問PHP,但你可以使用例如escapeshellcmd從PHP運行任何腳本

peepdf是一個Python工具,用於探索PDF文件,以確定文件是否有害。 此工具的目的是提供安全研究人員在PDF分析中可能需要的所有必要組件,而無需使用3或4個工具來完成所有任務。 使用peepdf,可以看到文檔中的所有對象顯示可疑元素,支持所有最常用的過濾器和編碼,它可以解析文件的不同版本,對象流和加密文件

https://github.com/jesparza/peepdf

說明: http//eternal-todo.com/tools/peepdf-pdf-analysis-tool

你可以像下面一樣使用它,最后你可以通過CVE信息獲得所有有問題的元素

$ ./peepdf.py -f fcexploit.pdf

File: fcexploit.pdf
MD5: 659cf4c6baa87b082227540047538c2a
SHA1: a93bf00077e761152d4ff8a695c423d14c9a66c9
Size: 25169 bytes
Version: 1.3
Binary: True
Linearized: False
Encrypted: False
Updates: 0
Objects: 18
Streams: 5
Comments: 0
Errors: 1

Version 0:
    Catalog: 27
    Info: 11
    Objects (18): [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 22, 23, 24, 25, 26, 27, 28]
        Errors (2): [11, 25]
    Streams (5): [5, 7, 9, 10, 11]
        Encoded (4): [5, 7, 9, 10]
    Objects with JS code (1): [5]
    Suspicious elements:
        /OpenAction: [1]
        /JS: [4]
        /JavaScript: [4]
        getAnnots (CVE-2009-1492): [5] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM