Категория > Новости > Искусство распаковки. Потрошим защиту хитрого банкера GootKit - «Новости»
Искусство распаковки. Потрошим защиту хитрого банкера GootKit - «Новости»13-08-2018, 18:00. Автор: Turner |
"); }else{ $('#mpu1-desktop').remove(); console.log('mpu1-desktop removed'); } }); Распаковка исполняемых файлов — одна из задач, возникающих при реверсе. И если наш объект — это малварь, то зачастую приходится сталкиваться с кастомными упаковщиками. В этой статье я покажу, как справиться с защитными механизмами банкера GootKit, который постоянно развивается и апгрейдится, к тому же использует разные методы сопротивления отладке. INFO В прошлой статье мы пробежались по азам вскрытия кастомных пакеров, взяв для примера вымогатель GlobeImposter 2.0. Он практически не сопротивлялся распаковке и кое-чем даже помогал в этом деле. Из инструментария мы будем использовать отладчик x64dbg (его 32-битную версию x32dbg), интерактивный дизассемблер IDA, шестнадцатеричный редактор HxD и детектор пакеров и протекторов DiE. Мы будем противостоять антиотладке при помощи мьютексов и разберемся с нестандартными параметрами функции WARNING Все описанные в статье действия выполнялись внутри виртуальной машины, которая была изолирована от сети. Повторение действий на основном компьютере может привести к заражению банкером GootKit, способным похитить твои данные. Для начала давай посмотрим на GootKit через программу Detect it Easy. Нераспакованный образец GootKit Детектор не определяет никакой навесной защиты, зато энтропия файла зашкаливает. Энтропия GootKit Загружаем файл в дизассемблер для более интимного знакомства. Видим, что при входе у нас сразу идет вызов подпрограммы. Прыгаем в него и наблюдаем достаточно интересный код. На стек помещаются значения, инициализируются переменные, далее идут вызовы. Разумеется, это похоже на динамический вызов функций. Чтобы самостоятельно убедиться в этом, можешь скомпилировать и посмотреть в IDA простую программу, которая использует эту технику вызовов. Конечно, код будет более «чистый» и понятный, но общая суть очевидна.
Давай переключимся в псевдокод, нажав кнопку F5, так будет еще очевиднее. Инициализация и вызов функций выглядит таким образом:
И тем не менее код кажется странным, хоть и очевидно, как он работает и что делает. Посмотрим перекрестные ссылки на буферах, которые передаются в функции. Вот один из буферов. Очевидно, применяется шифрование строк при помощи XOR по ключу Псевдокод этого алгоритма такой:
Зная ключ, попробуем расшифровать содержимое буфера средствами Python, который встроен в IDA. Набираем
Пишем байты по адресу
Все верно: это именно то, что мы видели в IDA. Теперь присвоим переменной
Теперь приступим к циклу дешифровки. Перейти обратно к новости |