В этой статье мы не будем учиться чему-то сверх охуенному. Рассмотрим самые банальные методы, которые юзают в основном.
Приготовление:
Если вы не дебил, то понимаете что изучать предполагаемую склейку следует на виртуальной машине.
Я буду использовать VirtualBox с OS Win XP.
Для работы нам нужно:
- Отладчик (в моём случае OllyDBG)
- PE Explorer
- Бинарь который будем проверять
- Мозги
- Прямые руки
Теперь настроем в нашей системе параметры папок. А именно просмотр файлов с атрибутами - hidden, system.
Начало работы:
1) SFX и распаковщики файлов
Это самый банальный метод, при котором происходит дроп в какую либо папку и затем происходит запуск распакованных файлов.
Кидаем наш файл в отладчик, нажимаем комбинацию Ctrl + G и пишем названия следующих функций:
(ОБЯЗАТЕЛЬНО СОБЛЮДАТЬ РЕГИСТР БУКВ)
После того как мы перешли по данным адресам, ставим на них точки остановки (BreakPoint).
Для этого выберете первую инструкцию (mov edi, edi) и нажмите F2. После этого нажимаем один раз F9.
Теперь нам нужно сейчас наблюдать за тем, что происходит в стеке
Мы видим что вызвалась функция CreateFile, которая состоит из следующих параметров:
FileName - Файл который должен быть открыт/создан
Access - права доступа к файлу
ShareMode - запрашиваемый доступ к файлу
SecurityAttributes - дескриптор безопасности
CreationDisposition - запись файла на устройство которое есть, либо нет
FlagsAndAttributes - атрибут файла
TemplateFile - расширенный атрибут
Нам интерес самый первый параметр (FileName). Пока что функция обратилась к файлу который мы отлаживаем. Нам он не интересен. Нажимаем дальше F9 до тех пор, пока не увидим нечто подобное:
Как видим бинарь который мы отлаживаем создаёт два подозрительных файла. Обычно дроп происходит в папки temp либо appdata, но в моём случае дроп идёт на рабочий стол.
Чтобы полностью убедиться что это распакованные файлы малвари, уберём точки остановки (BreakPoint) с функций CreateFileA / CreateFileW. Затем перейдем через Ctrl + G на следующие функции: CreateProcessA / CreateProcessW (мне влом расписывать эту функцию) и нажимаем один раз F9, и смотрим есть ли обращение к данным распакованным файлам:
Если вы видите что идёт обращение в данным файлам, то следует остановиться на данном этапе. Иначе после выполнение данной функции создается процесс того файла, который передался в функцию. В нашем случае - это распакованные файлы, в которых может быть что угодно.
Поэтому запоминаем путь куда распаковались файлы и закрываем отладчик.
В моём случае файлы должны были распаковаться на рабочий стол. Проверяем:
Как видно они успешно распаковались. Далее уже эти файлы можете изучать и смотреть что в них ну или же просто залить на VT (VirusTotal).
2) Распаковка из ресурсов
В данном примере в файл вшивается ресурс с малварью.
Увидеть это можно двумя способами: отладкой программы или посмотреть через PE Explorer.
Переходим по следующим функциям и ставим точку остановки: FindResourceA / FindResourceW; SizeofResource ; LoadResource ; FreeResource. Затем запускаемся на F9 до тех пор, пока не увидим подозрительное имя ресурса.
Был найден на вид подозрительный ресурс с именем "B". Запомним его и нажмём F9.
Теперь мы остановились на функции SizeofResource. С помощью ёё мы получим размер загружаемого ресурса. Нажимаем Ctrl + F9 чтобы дойти до конца функции и извлекаем из регистра EAX HEX значение. Это наш размер ресурса. Запоминаем его. Нажимаем F9.
Мы остановились на функции LoadResource. С помощью ёё мы получим адрес начала файла для дампа.
В EAX лежит тот самый адрес. Запоминаем его. Нажимаем F9.
Мы остановились на функции FreeResource. Данная функция выгружает из памяти переданный адрес ресурса. Данный адрес лежит в регистре EAX.
Советую поставить точки остановки на функциях: CreateProcessA / CreateProcessW. Чтобы понять когда нужно остановиться искать ресурсы.
Повторяем все действия выше, до тех пор пока не остановимся на функции CreateProcess. После этого имея адреса ресурсов и их размеры, мы будем их дампить из памяти. Для этого я использовал плагин OllyScript.
Жмём ПКМ в окне CPU и открываем Script Window.
Далее жмём Ctrl + X и вводим следующую команду: dm Ptr, Size, "dump.exe"
Ptr - адрес ресурса
Size - размер ресурса
Нажимаем Enter и смотрим в папку там, где был файл, который мы отлаживали. У нас появился там сдампленный файл ресурса. Проводим эту операцию со всеми найдеными ресурсами.
Результат:
Итог:
Надеюсь данная статья была вам полезна. Через пару дней я обновлю стать, и расскажу как искать склейку вшитую в виде массива байтов. Всем спасибо кто дочитал до конца.
Автор статьи - [#PCR#] AcroniS
P.S Если вы сливаете данную тему на другой форум, то пожалуйста. Оставляйте ссылку на оригинальный источник.
Ссылка на архив файлов с которыми я работал -
Приготовление:
Если вы не дебил, то понимаете что изучать предполагаемую склейку следует на виртуальной машине.
Я буду использовать VirtualBox с OS Win XP.
Для работы нам нужно:
- Отладчик (в моём случае OllyDBG)
- PE Explorer
- Бинарь который будем проверять
- Мозги
- Прямые руки
Теперь настроем в нашей системе параметры папок. А именно просмотр файлов с атрибутами - hidden, system.
Начало работы:
1) SFX и распаковщики файлов
Это самый банальный метод, при котором происходит дроп в какую либо папку и затем происходит запуск распакованных файлов.
Кидаем наш файл в отладчик, нажимаем комбинацию Ctrl + G и пишем названия следующих функций:
(ОБЯЗАТЕЛЬНО СОБЛЮДАТЬ РЕГИСТР БУКВ)
После того как мы перешли по данным адресам, ставим на них точки остановки (BreakPoint).
Для этого выберете первую инструкцию (mov edi, edi) и нажмите F2. После этого нажимаем один раз F9.
Теперь нам нужно сейчас наблюдать за тем, что происходит в стеке
Мы видим что вызвалась функция CreateFile, которая состоит из следующих параметров:
FileName - Файл который должен быть открыт/создан
Access - права доступа к файлу
ShareMode - запрашиваемый доступ к файлу
SecurityAttributes - дескриптор безопасности
CreationDisposition - запись файла на устройство которое есть, либо нет
FlagsAndAttributes - атрибут файла
TemplateFile - расширенный атрибут
Нам интерес самый первый параметр (FileName). Пока что функция обратилась к файлу который мы отлаживаем. Нам он не интересен. Нажимаем дальше F9 до тех пор, пока не увидим нечто подобное:
Как видим бинарь который мы отлаживаем создаёт два подозрительных файла. Обычно дроп происходит в папки temp либо appdata, но в моём случае дроп идёт на рабочий стол.
Чтобы полностью убедиться что это распакованные файлы малвари, уберём точки остановки (BreakPoint) с функций CreateFileA / CreateFileW. Затем перейдем через Ctrl + G на следующие функции: CreateProcessA / CreateProcessW (мне влом расписывать эту функцию) и нажимаем один раз F9, и смотрим есть ли обращение к данным распакованным файлам:
Если вы видите что идёт обращение в данным файлам, то следует остановиться на данном этапе. Иначе после выполнение данной функции создается процесс того файла, который передался в функцию. В нашем случае - это распакованные файлы, в которых может быть что угодно.
Поэтому запоминаем путь куда распаковались файлы и закрываем отладчик.
В моём случае файлы должны были распаковаться на рабочий стол. Проверяем:
Как видно они успешно распаковались. Далее уже эти файлы можете изучать и смотреть что в них ну или же просто залить на VT (VirusTotal).
2) Распаковка из ресурсов
В данном примере в файл вшивается ресурс с малварью.
Увидеть это можно двумя способами: отладкой программы или посмотреть через PE Explorer.
Переходим по следующим функциям и ставим точку остановки: FindResourceA / FindResourceW; SizeofResource ; LoadResource ; FreeResource. Затем запускаемся на F9 до тех пор, пока не увидим подозрительное имя ресурса.
Был найден на вид подозрительный ресурс с именем "B". Запомним его и нажмём F9.
Теперь мы остановились на функции SizeofResource. С помощью ёё мы получим размер загружаемого ресурса. Нажимаем Ctrl + F9 чтобы дойти до конца функции и извлекаем из регистра EAX HEX значение. Это наш размер ресурса. Запоминаем его. Нажимаем F9.
Мы остановились на функции LoadResource. С помощью ёё мы получим адрес начала файла для дампа.
В EAX лежит тот самый адрес. Запоминаем его. Нажимаем F9.
Мы остановились на функции FreeResource. Данная функция выгружает из памяти переданный адрес ресурса. Данный адрес лежит в регистре EAX.
Советую поставить точки остановки на функциях: CreateProcessA / CreateProcessW. Чтобы понять когда нужно остановиться искать ресурсы.
Повторяем все действия выше, до тех пор пока не остановимся на функции CreateProcess. После этого имея адреса ресурсов и их размеры, мы будем их дампить из памяти. Для этого я использовал плагин OllyScript.
Жмём ПКМ в окне CPU и открываем Script Window.
Далее жмём Ctrl + X и вводим следующую команду: dm Ptr, Size, "dump.exe"
Ptr - адрес ресурса
Size - размер ресурса
Нажимаем Enter и смотрим в папку там, где был файл, который мы отлаживали. У нас появился там сдампленный файл ресурса. Проводим эту операцию со всеми найдеными ресурсами.
Результат:
Итог:
Надеюсь данная статья была вам полезна. Через пару дней я обновлю стать, и расскажу как искать склейку вшитую в виде массива байтов. Всем спасибо кто дочитал до конца.
Автор статьи - [#PCR#] AcroniS
P.S Если вы сливаете данную тему на другой форум, то пожалуйста. Оставляйте ссылку на оригинальный источник.
Ссылка на архив файлов с которыми я работал -
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!
Вложения
-
67.3 KB Просмотры: 162
-
11.4 KB Просмотры: 270
-
12 KB Просмотры: 197
-
394.3 KB Просмотры: 169
-
23.6 KB Просмотры: 287
-
22.1 KB Просмотры: 201
-
46.5 KB Просмотры: 197
-
44.3 KB Просмотры: 171
-
47.5 KB Просмотры: 204
-
14.1 KB Просмотры: 207
-
384.7 KB Просмотры: 111
-
387.5 KB Просмотры: 262
-
378.4 KB Просмотры: 202
-
366.5 KB Просмотры: 199
-
51.1 KB Просмотры: 119
Последнее редактирование модератором: