Найти вредоносные PDF-файлы с помощью проверки PHP?

В настоящее время для проверки файлов реализованы следующие действия,

  • тип файла проверки с использованием MIME детали, как application / pdf
  • проверка расширений файлов вместе с деталями MIME.

но некоторые PDF-файлы содержат вредоносные скрипты, такие как JavaScript, чтобы повредить систему

подробнее о PDF атаки:

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

вопрос: для этого случая любые рекомендуемые решения?

3 ответов


взгляните на этот проект https://github.com/urule99/jsunpack-n - Универсальный JavaScript Код Распаковщика

jsunpack-n эмулирует функциональность браузера при посещении URL-адреса. Это цель состоит в том, чтобы обнаружить эксплойты, которые целевой браузер и браузер плагин факторы уязвимости. Он принимает множество различных типов ввода: ( также PDF-файлов* )

заглянув в файл ths 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 (файл, который я упомянул eariler), чтобы получить информацию о CVE

JS-f pre.JS-f util_printf.документ pdf.вон!--4-->

/ / предупреждение CVE-2008-2992 util.длина е (13,неопределено)


Я сделал это один раз несколько лет назад (больше нет кода).

  • загрузить
    • сканировать файл на наличие вредоносного кода (аналогично вирусному сканеру)
    • запретить или разрешить файл на основе функциональной логики

вредоносный код обычно скрыт внутри базовых 64 функций внутри файла meta или использует коды char для отображения вредоносного кода.

вам нужно будет найти словарь общего вредоносного кода, или создайте свой собственный и откройте файл с функциями php и сканируйте элементы в своем словаре (массиве).

на данный момент Вы, вероятно, думаете, что это не очень оптимизировано или будет медленным...так далее.

это правильно; в любое время, когда вы бросаете безопасность, требуется повышение производительности, но вы можете обойти это, создав новый сервер, на который файлы загружаются и сканируются, а затем передаются обратно на исходный сервер...так далее.

насколько сканеры Я уверен, что вы можете найти службы или открытый исходный код, только что нашел этот; https://github.com/mikestowe/Malicious-Code-Scanner/blob/master/phpMalCodeScanner.php (никогда не использовал его, или я рекомендую его)


добавление другого ответа, поскольку этот проект ниже намного проще в использовании, а также может найти уязвимость CVE-2008-2992. Я знаю, что вы спрашиваете о PHP, но вы можете просто запустить любой скрипт из PHP, используя, например,escapeshellcmd

peepdf-это инструмент Python для изучения PDF-файлов, чтобы узнать, файл может быть вредным или нет. Цель этого инструмента-обеспечить все необходимые компоненты, которые могут понадобиться исследователю безопасности в Анализ PDF без использование 3 или 4 инструментов для выполнения всех задач. С peepdf можно увидеть все объекты, отображаемые в документе подозрительные элементы, поддерживает все наиболее часто используемые фильтры и кодировки, он может анализировать различные версии файла, объектные потоки и зашифрованные файлы

https://github.com/jesparza/peepdf

инструкции: http://eternal-todo.com/tools/peepdf-pdf-analysis-tool

и вы используете его как ниже, и в конце вы получите все проблемные элементы с CVE info

$ ./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]