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

Поиск аномалий в PE EXE

vazonez

CD-диск
Пользователь
Регистрация
07.10.2009
Сообщения
13
Реакции
0
Собсна сабж, поиск в бинарнике подозрительных моментов, вроде не тех аттрибутов и т.п. Вот с этими аномалиями сейчас и думаю, что еще может быть палевно-нестандартного в файлике? В общем поиск зацепок аверских детектов, пытаюсь автоматизировать это дело.

Вот сижу и мозгую, какие косяки в формате файла чаще всего встречается в малвари?

TauScanner.zip

Кто что скажет по этому поводу?
 
Ненормальная энтропия, нестандартные имена секций, джамп с EP на последнюю секцию
1. Есть, считаю нормальной - <7
2. В смысле чек по списку дефолтных имен .text .data и т.п.?
3. А вот тут хз, сканить код - уже гимор и отход от первноначальной идеи.

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

http://ansav.com/get.php?f=ScAnsav_asm.zip
Вот в этом ав есть базовые аспекты детекта, хоть и простые.
Спасибо, скачал. Там такого не шибко много, жаль конечно.
А вообще писать авера на асме - изратище еще то).
 
Обновил оп-пост.
По поводу рассчета плавающей частоты - моя мысль такова, что это чем-то напоминает обычные сигнатуры, только с той разницей, что одинаковые бинари закриптованные схожим образом выдадут одинаковый график (как писал porky365 в соседнем топике). Поэтому, если в аверских двигах есть детект по такого рода данным, сбить его можно перетасовав большие блоки кода или данных. К примеру если размеры секций кода и данных равны и их поменять местами (с фиксами соответствующими), то общий вида графика оно сбивает. В общем как-то так.

По поводу Offline Checker'a - как-то вообще непонятно выходит, оно только импорт чекает или как? Кто есть автор, может у него есть толоквые мысли, как никак схожие направления.
 
Обновил оп-пост.
По поводу рассчета плавающей частоты - моя мысль такова, что это чем-то напоминает обычные сигнатуры, только с той разницей, что одинаковые бинари закриптованные схожим образом выдадут одинаковый график (как писал porky365 в соседнем топике). Поэтому, если в аверских двигах есть детект по такого рода данным, сбить его можно перетасовав большие блоки кода или данных. К примеру если размеры секций кода и данных равны и их поменять местами (с фиксами соответствующими), то общий вида графика оно сбивает. В общем как-то так.
Как вариант раздербанить какой-нибудь ав.
Вот ещё: http://wasm.ru/article.php?article=sdf (Статическое детектирование файлов: Часть 1 - Структура и данные)

По поводу Offline Checker'a - как-то вообще непонятно выходит, оно только импорт чекает или как? Кто есть автор, может у него есть толоквые мысли, как никак схожие направления.
http://www.xss.pro/index.php?action=profile;u=9644
 
На самом деле, утилита весьма поверхностная, но очень интересная. Я бы добавил проверку валидности элементов в таблице директорий. Не только рва проверять и размер, но и сами таблицы. Например, LoadConfigTable без списка указателей на сех-обработчики - явно лажа. Правильный указатель на LoadConfigTable, но битые указатели на сех - тоже лажа. То же самое сделать по ресурсам (чтобы битых не было), отладочной информации и т.д.

Второе предложение - проверять парные апи. Хотя бы из кернела. Это конечно слишком геморойно, но все же.

Ты не проверяешь флаги. Например, если есть в Pe.FileHeader.Characteristics флаг IMAGE_FILE_RELOCS_STRIPPED и в файле есть релоки, это явный косяк файла :) Твоя утилита это не проверяет. Еще можно проверять наличие релоков и флага длл/флага динамической базы (не знаю, проверяешь или нет)

Проверять корректность SizeOfCode и т.д. в опциональном заголовке в РЕ (не смотрел, проверяешь или нет)

Ты проверяешь частоту байт. Было б офигенно еще частоту инструкций выводить (вроде как движок BeeEngine умеет не только дизасмить, но и мнемонику показывать). Но это тоже геморойно.

Ах да, добавь кнопку "пересканировать". А то бывает файл на диске изменишь, а у тебя утилита не отображает изменения. Приходится заново переоткрывать файл.

А еще ты сигнатуру рич на валидность не проверяешь :) Как бы вот :)
 
UP
http://www.xaker.name/forvb/showthread.php?t=24335
Кто есть автор, может у него есть толоквые мысли, как никак схожие направления.
Да мыслей много, только вот времени как всегда нет ;(
Мне лично вообще непонятно зачем тебе это нужно (TauScanner пока не смотрел)
Я этот оффлайн-чекер кодил для того, чтобы убрать с форумов изрядно надоевшие блЭки про хуевые крипторы от "Васи"
Раньше меняли аськи и имена в About и перепродавали крипторы, после релиза Offline Checker'a этот беспредел закончился
Сейчас я не вижу этих блеков, поэтому и не вижу смысла апгрейдить Offline Checker
Ну, еще Offline Checker естественно полезен тем, что на начальном этапе при разработке криптора (при создании самого каркаса PE-формата) у начинающих могут возникать ошибки (там, к примеру, при создании фейкового импорта) – вот Offline Checker и будет показывать ошибки и рекомендовать нужные значения (правда, все примитивно, но хотя бы так – это все же, лучше чем вообще ничего)
Я вот помню, смотрел на стату скачиваний, там чет 40-50 скачиваний в месяц было, стало быть, есть потребность у народа в Offline Checker

Сейчас крипторы стали делать в основном на базе VB и UPX
Причем UPX используют для обхода AV (примитивно, но все же) с помощью стандартного стаба runtime-кода ставят обработчик исключений и декриптовка кода криптора происходит сразу, если UPX снят, то сработает исключение и сразу делается ExitProcess
Дело в том, что UPX выставляет атрибут секции кода разрешающий запись в секцию кода, а если снять UPX, то уже в секцию кода запись делать нельзя, так как после снятия UPX'a будут установлены стандартные атрибуты секции то и будет происходить исключение.. из-за этой тривиальной схемы и происходит обход стандартных распаковщиков AV, короче.. как-то так...
Offline Checker естественно на такие примитивные "приколы" не рассчитан
ЗЫ: проверь личку ;)
 
На PHP написал подобие TauScanner.
Таким обр-ом сканирование файла происходит на стороне сервера(бесплатного хостинга с поддержкой PHP).

Ф-ции:
1)Дамп экспорта.
2)Дамп импорта.
3)Встроенный сигнатурный сканер.
4)PE Viewer(недоработанный).
5)Hex Viewer.
6)Подсчёт сжатия файла.
7)Детектирование аномалий:
- Параметры: SizeOfCode,SizeOfInitializeData,SizeOfUninitializeData,BaseOfCode,BaseOfData = 0
- Кол-во секций меньше 3.
- В файле нету таблицы импорта.
- В файле нету таблицы ресурсов.
- Нестандартные имена у секций.
- Entry Point нах-ся не в первой секции.
- Entry Point нах-ся в file header.
- Секция, на кот. указывает Entry Point доступна для записи.
- В файле найден overlay.
8)Детектор Rich сигнатуры.

Нужный ли проект ?
 
На PHP написал PE EXE Packer.
Криптование файла происходит на стороне сервера.

Ф-ции:
- Метаморфный стаб.
- Случайная таблица импорта.
- Случайная таблица ресурсов.
- Фейковая Rich сигнатура.
- Опкоды пока что генерируются псевдослучайно.

Сейчас важно уделить внимание двум важным фактам:
1)Генерирование компилятороподобного кода.
2)Создание "идеального" PE файла(без аномалий).

Если есть предложения, идеи - пишите в пм, либо сюда в тред.
 
На PHP написал PE EXE Packer.
Криптование файла происходит на стороне сервера.

Ф-ции:
- Метаморфный стаб.
- Случайная таблица импорта.
- Случайная таблица ресурсов.
- Фейковая Rich сигнатура.
- Опкоды пока что генерируются псевдослучайно.

Сейчас важно уделить внимание двум важным фактам:
1)Генерирование компилятороподобного кода.
2)Создание "идеального" PE файла(без аномалий).

Если есть предложения, идеи - пишите в пм, либо сюда в тред.

Мсье знает толк....

Какие предложения, даже кода нет.
 
Какие вопросы по таблице ресурсов?
Интересует генерация Version Info.

Вот результат работы скрипта(без лоадера, просто каркас):
 
такой RcData уж очень не обычно выглядит, ав не полюбят такой генеринг, думаю акцент лучше делать на примитивные диалоговые окна, акселлераторы, стринговые, шрифты и т.д.

p.s. в restorator'е версия файла скорупчена (corrupt resource)

таблица импорта тоже уж оччень подозрительно выглядит
 


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