мыщъх чуть не поперхнулся увидав, что кал уже месяц как не ловит эту заразу, что очень странно и вообще подозрительно. ну оригинальные сплоиты, опубликованные в сети, ловит только половина антивирусов, что говорит об их качестве и сигнатурном алгоритме детекции. и даже не сигнатурном, а вообще галимом. бракоделы!!! если выдернуть фонт из оригинального pdf и воткнуть его в другой pdf, но сплоит будет работать как и прежде, а вот куча антивирусов сядет на измену -- типа знать не знаю, ведать не ведаю. а вот мудрый индус из симантека (хотя какой он индус как уже давно американец?) распарсил CFF и отвалидировал аргументы, в результате чего он ловит (в теории) все модификации. на практике же выяснилось, что и симантек лgжает если перемудрить с форматом, но это не косяк того индуса, это косяк парсера pdf, который уже писал совсем другой человек. короче, с опубликования дыры прошло полгода как. больше месяца с появления публичных сплоитов, а вся антивирусная индустрия до сих пор эту заразу не ловит. граждане, я фигею (наш тим поймал этого зверя на январском билде, но только x86 версию, для яблочников сейчас срочно пишется поддержка ARM'а и ROP'а -- просьба не считать саморекламой ибо если продукт стоимостью $70k лажает как антвирь, продающийся в супермаркете, то всем разработчикам дружно дают мегапесды). но это все лирика. лучше за баб поговорим. нет, баб мы трогать не будем, ибо такого оргазма мыщъх давно не испытывал и нах эти бабы когда у нас супер сплоиты есть (где искать не скажу, найдете сразу максимум на третьей минтуте гугления). так вот. за сплоит. оригинальное семейство нацелено на iPod и iPhone. стало быть, это ARM. ну что мыщъх ARM'а не видел что-ли?! щас мы это дело задизамблируем хоть в hiew'e, хоть в IDA, хоть даже в GNUARM. какие сложности?! а вот такие!!! шелл-код построен по ROP технологии уже знакомой нам, хакерам, по атакам типа ret2libc. это короче когда в вместо машинных команд идут аргументы и адреса возврата, указывающие куда-то внутрь системы. то есть без самой системы это ни за что не отладить. а система на себя дебаггер устанавливать не позволяет. но!!! этот сплоит как раз и проявляет себя тем, что снимает блокировку от установки левых программ!!! получается так! качаем pdf, открываем его на iPhone. сплоит ломает iPhone, после чего мы ставим туда gdb и шелл и дебажим этот самый сплоит а дальше?! а дальше вот что: привожу кусок чтобы было понятно как оно работает. 00000000h POP {R4-R7,PC} 31606FADh 00000000h 00000000h 00000000h POP {R0-R3,PC} 09100638h -> "/System/Library/PrivateFrameworks/IOSurface.framework/IOSurface" 00000000h 00000000h 00000000h BLX R4 -> dlopen() POP {R4,R5,R7,PC} 31606FADh 00000000h 00000000h POP {R0-R3,PC} 09100678h -> "/System/Library/Frameworks/IOKit.framework/IOKit" 00000000h 00000000h 00000000h BLX R4 -> dlopen() POP {R4,R5,R7,PC} и вот такого шелл-кода там только мала часть. потом идут либы, скачивающие другой дроппер, и дальше уже начинается классика. благо там они писана на си (вроде) и потому их уже дизассемблировать проблем нет: а теперь самое важное!!! непатченный Adobe пробивается даже при отключенной жабе, флеше и т.д. и т.п. короче, если есть встроенный косячный CFF фонт (а он достаточно часто встречается) -- то это песец. и ведь антивирусы не ловят. но это фигня. щас выяснилось, что Adobe, Apple и MS использовали оперсорурсную библиотеку с кузни в которой эта дыра и была (кстати давно закрытая). но вот в коммерческих бранчах исправления не перекочевали и теперь этой напасти подвержен не только один PDF, а очень много разных приложений юзающих CFF. вот такая ситуация... а сплоит и в самом деле оччень интересный. самый интересный из всех, что встречал. рекомендую в нем поковыряться всем любителям экстрима и нетрадиционного секса. P.S. появилась инфа, что и андроид тоже подвержен атаке. мужики, у кого он есть -- проверьте, а ?!
Так а не проще ли было бы (в-теории) отреверсить бажную библиотеку, понять как работает бага, а не эксплоит, и написать эмулятор баги и ловить _исключения_?
Folk Acid > Так а не проще ли было бы (в-теории) отреверсить бажную библиотеку, чего ее реверсировать? оренсоурсная она. причем пофиксенная самими разработчиками. задолго до. > понять как работает бага, там короче есть структура INDEX. это в общем массив. если в стек не влезеает, то... переполнение. вот только это ARM. и стек там неисполняемый. какие будут предложения? ну конечно же ROP, ибо зверь известный... то есть с багой все понятно. а вот что делает сплоит? а вот его очень секусально реверсить... но это можно понять только попробовав! > а не эксплоит, и написать эмулятор баги и ловить _исключения_? а чего их ловить? парсим CFF и валидируем аргументы. благо спекка есть. но возникает вопрос - что успел натворить сплоит и как его вычистить из системы? а без анализа сплоита это сложно сделать....
kaspersky Ну это уже проще. ) Чаще всего как раз сложнее понять почему и как происходит эксплуатация. Чем потом разреверсить шелкод. А вообще CFF - это такое гавно я вам скажу.. Ппц просто. Структура - по удобству хуже чем PE формат. (чисто мое мнение)
Разве для того люди гробят зрение, чтобы до маразма копаться в чужом дерьме? Не спорю, полезно, чтобы были идеи и держать себя в форме.
TermoSINteZ >> то есть с багой все понятно. а вот что делает сплоит? > Ну это уже проще. ) сразу видно, что месье даже в глаза это не видел
dZentle_man > Судя по тому, что мыщъх не просил проверить сплоит на iPhone, последний у него таки есть) в виде эмулятора: http://developer.apple.com/iphone/library/documentation/xcode/conceptual/iphone_development/125-Using_iPhone_Simulator/iphone_simulator_application.html
dZentle_man > Вот именно, поэтому и предположил что мыщъх предпочел тестить на реальном аппарате) у меня филька. причем его в качестве холодного оружия юзать можно. зато и работает месяц без подзарядки. при моей кочевой жизни это актуально
>>А вот как ищут баги в adobe? -Как и в других компаниях. В основом используются 3 метода. 1) Stupid Fuzzing - основывается на тупой генерации специально заготовленных пакетов, файлов с целью выяснения багов. Например pdf. Программа (Fuzzer) перебирает и последовательно подставляет сгенирированные файлы программе-жертве в надежде что программа скажет : "Мяу!". Процесс долговременный. Поэтому приходится запасаться терпением. 2) Clever Fuzzing - "Умный Фаззинг". Алгоритм тот же, только вот данные и адресса можно динамически изменять [с умом ест-но]. Причем круг поиска ошибок значительно сужается. Процесс отлова сокращается как минимум в 4-6 раз. 3) Прямыми руками и прокачанной головой. Самый Трудоемкий процесс, требующий не только высокой квалификации, но и везения. Само название говорит само за себя. Если вы не боитесь заработать геморой и красноглазие, то способ как раз для вас. Лично я выбираю именно это способ, так как считаю его полным ДЗЕНОМ. ЗЫ.: Хотя и Fuzzing это "тупой" способ нахождения ошибок, примерно 70% современных современных багов(эксплойтов) находится(разрабатывается) таким вот незамысловатым образом Зы.: У Криса вроде была статья про универсальный поиск ошибок в двоичном коде