Прячем Зло или Чистим АВ-сигнатуры

Тема в разделе "Статьи", создана пользователем onthar, 21 окт 2010.

  1. onthar
    onthar Продвинутый
    Симпатии:
    224
    Прячем Зло или Чистим АВ-сигнатуры

    Автор: Vazonez

    Интро
    Надюсь, тебе известно, как в АВ-программах организован поиск зловредов: в антивирусе есть база данных, в которой собраны сигнатуры вирусов - уникальные куски кода/данных. Антивирус ищет в файле эти куски, и если находит - прощай свежий криптор или троян.
    Доковыряться до сигнатур них - задача не из легких, поэтому мы выберем путь полегче - найдем их самостоятельно, не копаясь в базах продуктов мозговой жизнедеятельности аверов.
    Суть такого поиска сигнатур - попробовать менять каждый байт вируса, и если после такого он станет чистым в глазах АВ - мы нашли ее! У такой методы есть большое количество минусов - скорость поиска, возможность вообще ничего стоящего не получить и т.п. Но пробовать все-равно стоит!
    "Сестра! Скальпель и кувалду!"
    Для примера, от настырных глаз АВ будем прятать EXE - контейнер джоинера SunS Joiner. Склеивать будем 2 маленькие свежескомпилированые мирные проги - обе создают по обычному окну. Они есть в архиве к статье (см. внизу).
    Софт, который будет использоваться:
    1) Free Hex Editor (http://frhed.sourceforge.net/) - простенький хекс-редактор. Можно использовать тот-же WinHex.
    2) OllyDbg v1.10 (http://www.ollydbg.de/) - отладчик, нужен для просмотра и редактирования нужной сигнатуры.
    3) SunS Joiner v2.2.4 (http://rapidshare.com/files/131667281/SunS-joiner2.2.4.rar.html) - джоинер, которым будем клеить файлы. Жутко палится, но нам это и нужно.
    4) [SD] SignDetect (http://vazonez.com/files/39-other/186-signdetect) - пропиарюсь немного :) Этой тулзой будем искать сигнатуру.
    5) KIS7 (http://www.kaspersky.com/) - собственно, от него и будем прятать файл.
    6) PEiD v0.95 (http://www.peid.info/) - для скана контейнера с целью сильно ускорить весь процесс очистки (см. ниже)

    "На старт! Внимание! Марш!"
    Открывай джоинер:
    [​IMG]​
    Жми сразу "Без иконки". Для теста, лучше иконку не ставить, т.к. размер ЕХЕ на выходе будет меньше, соотвественно и сигнатуру искать быстрее будет. Добавляем наши тестовые файлы "poasm1k.exe" и "simple.exe". Нажимай на "Склеить" - сохраняй контейнер под любым именем, например "aaa.exe". Дальше клей нам не понадобится, поэтому закрывай его.
    Следующий инструмент в очереди - SignDetect. Немного о нем: суть его работы вот в чем - берет наш контейнер, и по очереди меняет 1 байт (опционально, можно увеличить) файла и сохраняет такой "мод" в отдельной папке. После окончания работы в этой папке будет большое количество таких вот "модов". На эту папку нужно натравить АВ, который чекнет и удалит все палящиеся файлы. Файлы, что останутся в ней после проверки - с очищенной сигнатурой.
    Запускай тулзу:
    [​IMG]​
    Жми на "..." - выбирай контейнер "aaa.exe". Следующий шаг - определиться с настройками проги.
    Опция "Скан файла" предназначена для выбора диапазона байт в файле, которые мы будем менять. Если контейнер большой (более 100 КБ) - процесс записи тулзой файлов будет длится долго, точно как и скан АВером всех файлов и очистка их же. Поэтому, если есть желание, время и фри спэйс на харде, то выбирай "Весь файл". В нашем случае выбираем "Диапазон (HEX)". Нижняя и верхняя границы диапазона - левое и правое поля соответственно. Для удачного в плане скорости выбора следует правильно выбрать их. Нижнее поле - чаще всего надо использовать смещение начала первой секции контейнера. Для этого открываем PEiD, выбираем в нем наш контейнер, и жмем на кнопку просмотра секция файла:
    [​IMG]​
    Откроется окно с аттрибутами секций файла. Нам нужно узнать смещение первой секции EXE. Вот оно:
    [​IMG]​
    Т.е. нужно выбирать самое наименьшее значение столбца "R. Offset". В данном случае оно равно 400h. На этом PEiD нам отслужил - можно закрывать, больше не понадобится. Вводим 400 в левое поле [SD] - это было нижнее значение. Верхнее - это размер файла. Смотрим его в проводнике или TC (Не забудь - оно там в десятиричном виде, а в [SD] нужно вбивать в HEX. Сконвертируй в калькуляторе или в уме ;-) В нашем случае вышло "560C". Это - верхнее значение, вбивай его в правое поле.
    Следующая опция - "Количество байт для записи" - думаю назначение понятно. По умолчанию стоит "1". Если после окончания работы тулзы, все созданные файлы палятся - следует увеличить значение и повторить работу с тулзой.
    Перед началом работы тулзы, лучше вырубить защиту АВ, т.к. она начнет буйно реагировать на работу с зараженным файлом. Жмем кнопку "Старт!" и ожидаем окончания работы, о чем нам скажет сообщение - "Готово!". На этом работа с тулзой закончена - можно ее закрывать.
    Природный отбор
    После окончания работы с [SD], рядом с программой создастся папка "SIGN_DETECT", в которой будут измененные EXEшники нашего контейнера. Натравляем АВ на эту папку (Важно! В антивирусе нужно включить опцию - "удалять зараженные". С ней будет намного удобнее - те файлы, которые остались палевными удалятся, а нужные останутся в папке) и ждем конца проверки. После окончания видим такую картину:
    [​IMG]​
    Всего файлов в папке - 21448, а зараженных - 20876. Т.е. очищенных - 572 файла! Это отличный результат. Теперь, чтобы эти файлы не искать, дадим антивирусу удалить грязные файлы. Опять ждем, пока удалится ~20к файлов. После этого в папке остались только нужные нам файлы.
    Сама чистка
    Закрываем АВ и заходим в папку "SIGN_DETECT". Выбираем любой файл, например "000035A0.exe". Название файла соответствует смещению, по которому изменился байт. Этот файл нам больше не нужен, т.к. все что нужно - смещение, мы узнали.
    Запускай Frhed и открывай в нем файл "aaa.exe" - наш контейнер. Топаем по адресу 000035A0 и видим такую картину:
    [​IMG]​
    Запоминаем несколько байт по этому адресу, например 8 штук - (BF 68 66 40 00 33 С0 55). Чем больше байт, тем лучше - но в нашем случае восьми будет достаточно. Закрывай Frhed - он больше не понадобится.
    Последний инструмент, который будем использовать - OllyDbg. Запускай ее, и открывай в нем наш "aaa.exe".
    Откроется окно CPU с кодом программы. Нам нужно найти в этом коде ту последовательность байт, при изменении которой файл перестает палится. Для этого откываем окно "Binary Search" - Ctrl+B, вводи в нижнее поле последовательность байт BF 68 66 40 00 33 С0 55, чтобы это выглядело так:
    [​IMG]​
    Жми "Enter" - поиск закончится и указатель в окне CPU станет на найденную инструкцию:
    [​IMG]​
    Поиск остановился на адресе 004041A0, на строке "MOV EDI, 406668" - помещение в регистр EDI значения 406668h. Учитывая большое количество отсеяных файлов (572), скорее всего эта строка - только часть сигнатуры, т.е. если мы уберем/перенесем ее - АВ заткнется. Если ее просто изменить на случайное значение - ЕХЕ перестанет работать, поэтому нужно изменить байты так, чтобы код не потерял работоспособности. Самый простой способ - перенести эту команду в неиспользуемое место. Иллюстрация:
    [​IMG]​
    Т.е. на место "MOV EDI, 406668" ставим прыжок на неиспользуемое пространство, там вставляем: "MOV EDI, 406668" и переход обратно.
    Чтобы это осуществить, нужно найти неиспользуемое место в коде. Листаем 2 экрана вниз в окне CPU и видим много нулей, начиная с адреса 404379. Чтобы было удобнее, возьмем круглый адрес - 404380. Ставим на него указатель, жмем пробел - откроется окно для ввода инструкции. Вводим "MOV EDI, 406668" (без кавычек) и жмем "Assemble". Сюда же вводим команду: "JMP 4041A5" - переход на адрес, по которому лежит инструкция, следующая за "MOV EDI, 406668" в оригинальном ЕХЕ - "aaa.exe".
    Последний штрих - по адресу 004041A0 вбиваем команду "JMP 404380". Сохраняем модифицированный ЕХЕ: в контекстном меню окна CPU выбираем "Copy to executable" -> "All modifications" -> "Copy all". В контекстном меню появившегося окна выбираем "Save file" и сохраняем под именем "aaa2.exe".
    Готово! Закрывай OllyDbg и запускай "aaa2.exe". Если все делалось правильно - должно появится 2 окна, а значит патч сработал и мы все сделали правильно.
    Проверка на вшивость
    Каспер удачно заткнулся - можешь проверить на своем. Но есть более интересный результат:
    Файл "aaa.exe", который мы не трогали, на VT:
    35/41
    www.virustotal.com
    Файл "aaa2.exe", наша версия:
    19/41
    www.virustotal.com
    Очень отчетливо видно, как заткнулись 16 антивирусов :-D Среди них и продукт ЛК!!!
    Аутро
    Вот так, имея в запасе 20 минут свободного времени можно забыть об АВ. Такой метод очень хорошо себя проявляет тогда, когда нужно протроянить определенную жертву, когда знаешь, какой у нее АВ - например друзья, родственники и т.д. ;-)
    Архив с подобытными кроликами и модифицированным файлом можно найти тут:
    http://vazonez.com/downloads/harmful/malwareclean/rabbitz.zip : vazonez
    Видео-туториал можно скачать тут:
    http://www.multiupload.com/WH34NG5HA3

    (c)vazonez, vazonez.com​
     
    Последнее редактирование: 31 янв 2011
    21 окт 2010
  2. onthar
    onthar Продвинутый
    Симпатии:
    224
    Прячем Зло или Чистим АВ-сигнатуры: Второе пришествие

    Автор: Vazonez

    This is war, ain't no fun and games
    Наконец-то я решил написать продолжение мануала по чистке файлов. Суть способа почти не изменилась, поэтому для начала лучше прочитать первую часть (http://vazonez.com/page/malware-cleanin) - там есть немного информации для старта.
    Into The Lungs Of Hell
    Для начала, ознакомимся с ключевыми теоретическими моментами, с которыми связана чистка и на которых многие тормозят.
    Первый вопрос - что же чистить?
    Многие знают, что чистить нужно стаб, но что это такое? Рассмотрим назначение стаба на примере джоинера. Этот тип программ склеивает несколько файлов в один, при запуске которого файла извлекаются и исполняются. Но ведь если просто записать один файл в конец другого - эффекта склейки не выйдет, и, если повезет, запустится только первый файл - к которому дописывали другой файл. Для решения этой проблемы пишут небольшую программу, в конец которой дописывают файлы для склейки (также возможна запись в ресурсы). Она при запуске извлекает и запускает файлы. Именно эту программу и называют стабом.
    Другой вариант - если целью чистки является не джоинер или криптор, а обычная программа, которую, антивирусы ошибочно детектируют как вирус, или, например, уже готовый троян, вирус и т.п. - тогда ни о каком стабе не идет речь и нужно чистить сам файл.
    Второй вопрос - почему именно стаб нужно чистить?
    В виду того, что, например, в джоинере используется всего один стаб, результирующий файл (далее - "контейнер") после склейки любых файлов будет иметь одно общее - стаб. Именно из-за этого антивирусы берут за основу своей сигнатуры именно часть стаба, а не файлов внутри контейнера (так происходит в большинстве случаев).
    Третий вопрос - где взять стаб?
    Очень логичный вопрос, так как я встречался с разными уникальными персонами, которые прятали стаб как можно глубже.
    Самый простой вариант - стаб находится рядом с джоинером - в этом случае нужно просто почистить файл и заменить старый стаб очищенным.
    Более сложный вариант - стаб находится в ресурсах программы. Достать его достаточно легко, воспользовавшись программой Restorator:
    1) Открываем в Restorator'e наш джоинер.
    2) Для хранения стаба в большинстве случаев используется тип ресурса "RCData". Если в дереве ресурсов файла в Restorator'e есть такой формат, значит стаб вероятнее всего там. Другой вариант - стаб находится в ресурсах, но в другом типе. Найти его легко - достаточно пересмотреть все ресурсы файла на предмет сигнатуры PE EXE файла. Т.е. первые 2 байта файла в ресурсах должны быть "M" и "Z" соответственно.
    3) Само извлечение показано на скриншоте #1:
    [​IMG]​
    4) Чистим стаб и записываем его обратно в ресурсы программы:
    [​IMG]​
    Самый изощренный способ - хранение стаба в виде константы. Т.е. стаб находится в секции кода, в секции данных программы или в оверлее. Оверлей - место в PE EXE файле после самого файла, т.е. стаб записан в конец программы. Поиск стаба файла не сложен - достаточно искать его по сигнатуре "MZ". При помощи HEX-редактора нужно извлечь его оттуда, очистить и вставить обратно тем-же HEX-редактором.
    Going Under
    В первой части статьи суть чистки была вот в чем - меняем каждый байт файла и проверяем антивирусом. Способ действенный, но очень медленный. С момента её выхода в свет я почистил не один десяток файлов и нашел некоторые закономерности, используя которые, процесс чистки ускоряется в десятки раз.
    Например, во всех файлах (далее под фразами "всех" и "всегда" я буду иметь в виду "почти всех" и "почти всегда" :) ) сигнатуры находятся в первой секции (чуть реже чем всегда она с кодом, а не с данными), из-за чего процесс чистки одинаков для любых PE-EXE файлов. Это очень существенно ускоряет чистку, ведь ты точнее знаешь местоположение сигнатуры.
    Также, для значительного ускорения я переписал в SignDetect одну функцию, а именно - "Bytes to write". Именно она помогает более быстро обнаружить сигнатуру.
    Needful Things
    Чтобы понять некоторые ключевые моменты, желательно иметь хотя бы поверхностные знания ассемблера и формата файлов PE EXE. Для работы нам понадобится любой HEX-редактор (например WinHex), любой отладчик (я буду использовать OllyDbg), PE Tools, PEiD. Не лишними были бы хоть небольшие навыки работы с этими программами.
    Желательно также ознакомиться с туториалами по OllyDbg от Рикардо Нарваха - http://www.wasm.ru/publist.php?list=23#series_17 - как минимум, первых 15-20 глав.
    Highway To Hell
    Итак, вкратце объясню, как всё будет происходить. Предположим, мы имеем PE EXE, который определяется антивирусом Касперского, и сигнатура находится в секции кода. Казалось бы, что сложного - надо просто найти её и изменить. Изменить так, чтобы файл работал. В этом и кроется вся проблема - на сегодняшний день очень незначительно количество людей может это правильно сделать, так как в большинстве случаев требуется знание ассемблера. Далее я опишу небольшую заготовку на ассемблере, которую можно использовать вслепую, не совсем понимая - что, зачем и как. Но для понимания некоторых примеров все-таки лучше знать назначение некоторых команд.
    Сигнатура антивируса Касперского (тогда, когда она находится в секции кода) чаще всего начинается с инструкции длиной в 5 байт и более. Это могут быть уникальные инструкции, например "MOV EAX, DWORD PTR [ECX+ECX*4+17]", которые адекватно изменить с сохранением работоспособности будет непросто. Да, если учесть факт того, что в большинстве случаев длина сигнатуры равна 128 байт, то действительно, для отдельного файла можно найти уютный кусок кода, который можно изменить так, как нам надо. Но такой вариант сложнее - для каждого файла нужно вручную искать инструкцию, подходящую нам. Я молчу о том, что для этого необходимо наличие начальных знаний команд ассемблера. Или, например, сигнатура попадает на строку, которая находится в секции кода (так делает например компилятор от Borland) - без потерь не обойтись. В общем - излишние затраты времени и нейронов.

    Теперь о сути способа. Все вышеизложенные проблемы обходятся очень просто. Мы меняем (удаляем или изменяем - без разницы) нашу сигнатуру, предварительно запомнив её. Далее дописываем небольшой участок кода, который бы при запуске восстановит измененный нами кусок кода/данных с сигнатурой. Т.е. файл как бы изменен, но при запуске сам восстанавливает тот участок и работает как и ранее. Для более внятного понимания перечитай.
    При этом возникают некоторые непонятные моменты, например как перенаправить выполнение программы на наш участок и куда записать наш код. Первое решается сменой одного поля в структуре PE EXE, а именно "Entry Point". Для решения второго есть два способа - запись в конец секции с кодом или добавление новой секции с нашим кодом. Запись в конец проще и, чаще всего, более удобна. Но я сталкивался с такими файлами, в которых оставалось всего несколько неиспользуемых байт, вместить в которые нужный код не представлялось возможным. В таких случаях ничего не остается, кроме как добавить новую секцию. Громадный минус этого способа - изменение размера файла. Именно из-за этого очищенный стаб может стать нерабочим.

    Ниже я буду описывать именно первый вариант, так как он более прост и подходит в большинстве случаев.
    Если цель понятна и ты знаешь, как это реализовать - не читай дальше, а иди делай.
    I'll get even with you
    Примером чистки будет служить уже знакомый тебе SunS Joiner, который можно взять тут - http://rapidshare.com/files/131667281/SunS-joiner2.2.4.rar.html
    Извлекай файл стаба как показано на рисунке выше и сохраняй в файл. Выбирай в SignDetect файл стаба и папку для складирования очищенных файлов.
    Важная часть настройки чистки - выбор диапазона (Range) и количества байт для записи (Bytes to write - BTW).
    Про выбор диапазона я уже писал выше - нам нужна первая секция файла. Жми на кнопку "From sections":
    [​IMG]​

    В данном случае первой секцией является "CODE" - дважды кликни на ней для выбора диапазона байт, относящихся к этой секции. Поля диапазона заполнятся смещениями 00000400 и 00003800.
    Теперь о "BTW". Просто запомни такое правило - на первом этапе поиска сигнатуры: BTW = ( RangeMax - RangeMin ) / 20 но не менее чем 128 байт. Именно такой выбор позволяет значительно ускорить процесс и увеличить точность поиска сигнатуры.
    Жми кнопку "Start" и ожидай завершения обработки файла. Когда SD закончит - закрывай её.
    Натравливай антивирус на папку с файлами, которую ты выбирал и в которой SD создала файлы. После проверки папки, в ней осталось всего 2 файла:
    [​IMG]​
    Проверка антивирусом у меня длилась всего 12 секунд - несравнимо короткий срок.
    Второй этап чистки - уточнение положения сигнатуры в файле. Мы уже узнали, что она лежит в пределах [00003580..00003680]. Нижняя граница - самое меньшее значение среди оставшихся файлов после первого этапа. Второе - это наибольшее значение + выбранное нами значение BTW.
    Запоминаем эти два значение и очищаем папку, в которую SD создавала файлы. Опять запускаем её, выбираем наш стаб и папку. Диапазон на второй стадии мы уже нашли - 00003580 и 00003680. В BTW же нужно выставить единицу. Запускаем обработку файлов, которая длится всего несколько секунд и после её завершения закрываем SD, она нам больше не понадобится. Натравливем антивирус и получаем на выходе 128 файлов. А это значит, что мы полностью нашли сигнатуру и править можно любой байт из этого диапазона [000035A0..0000361F].
    Angel in our pocket, devil by our side
    На этом этап поиска сигнатуры завершен, приступим к корректному изменению кода стаба.
    Для начала нужно узнать VA (виртуальный адрес) кода, с которого начинается сигна.
    VA = SignOffset - R.Offset + V.Offset + ImageBase
    Где SignOffset - начало диапазона сигны, который мы уже нашли (000035A0). Все остальные значение находятся в полях структуры PE EXE нашего стаба и их можно узнать в PEiD'e, они находятся тут:
    [​IMG]​
    [​IMG]​
    [​IMG]​

    [​IMG]​

    Подробнее об этих значениях можно узнать в различных туториалах, посвященных формату PE EXE, поэтому я не буду на них останавливаться, для чистки нам это не понадобится.
    После этого, формула для нашего стаба приобретает такой вид:
    VA = 000035A0 - 00000400 + 00001000 + 00400000 = 004041A0
    004041A0 - Это и есть виртуальный адрес, по которому начинается сигнатура.
    Далее нам понадобится отладчик - OllyDbg, открывай в нем файл стаба.
    Первое, что нужно сделать - запомнить виртуальный адрес точки входа (EP):
    [​IMG]​
    Листай вниз, до того момента, когда заканчивается весь код и данные, и начинаются нули. Именно здесь мы будет вписывать наш код, восстанавливающий сигнатуру:
    [​IMG]​
    Выбираем для записи место с нулями, например 00404380.
    Вот прототип кода, который выполняет свою миссию - восстановление сигны:
    mov esi, %VA%
    mov edi, esi
    mov ecx, %size%
    %label1%:
    lodsb
    xor al, cl
    stosb
    loop %label1%
    jmp %EP%
    Где:
    %VA% - виртуальный адрес сигнатуры, в нашем случае это 004041A0
    %size% - количество байт, которые мы будем менять. Достаточно и одного, но в большинстве случаев лучше выбрать число из диапазона [16..128]. Почему так нужно делать, ведь если изменить 1 байт, то сигнатура все-равно пропадет? Дело в том, что мы чистим от одного антивируса - Касперского, но очень часто встречается, что где-то рядом с сигнатурой Касперского лежит например сигна Доктора Веба - тем самым можно почистить от нескольких антивирусов сразу, как повезет.
    %EP% - виртуальный адрес точки входа, который мы запомнили в начале работы с файлом стаба в отладчике.
    %label1% - условное обозначение адреса, по которому находится следующая инструкция, т.е. "lodsb" - на картинке с примером будет яснее:
    [​IMG]​
    После команды "loop" нужно вводить адрес команды "lodsb", как на картинке.
    Выделяй весь введенные код и сохраняй его:
    Кликни правой кнопкой мыши на нем -> "Copy to executable" -> "Selection". Появится окно, жми в нем "Copy All", появится еще одно окно, нажимай как на рисунке:
    [​IMG]​
    и сохраняй стаб, например под именем "stub_2.exe".
    Следующий пункт - работа с PE Tools.
    Для чего, ведь код мы уже записали?!
    В стабе нам нужно провести еще 2 изменения - изменить точку входа, чтобы сначала исполнился наш код и восстановил сигнатуру, и изменить атрибуты первой секции.
    У каждой секции в PE EXE файле есть атрибуты, которые характеризуют её содержимое - например, что в ней хранится только код или только данные. По дефолту, в секции кода не стоит атрибут, позволяющий писать в неё - это мы и исправим, чтобы наш код нормально заработал и не выдал ошибку при записи сигны.
    Запускай программу, вызывай PE Editor (Alt+1) и выбирай в нем наш модифицированный стаб "stub_2.exe".
    Первым делом сменяем EP - сначала нужно высчитать правильное значение.
    NewEP = NewCodeVA - ImageBase
    где:
    NewCodeVA - тот адрес, по которому мы начали записывать код
    ImageBase - уже известно, что это
    В нашем случае это приобретает такой вид:
    NewEP = 00404380 - 00400000 = 00004380
    Редактируй поле с EP подставляя новое значение:
    [​IMG]​
    [​IMG]​
    и жми "Ok".
    Далее меняем аттрибуты секции, в которую мы дописывали код, а именно - "CODE":
    [​IMG]​
    [​IMG]​
    [​IMG]​
    [​IMG]​

    Выставляй галку "Writeable", жми "Ok", "Ok", "Close", "Ok".
    Казалось бы - всё готово, ан нет. Код записали, секцию подготовили, но не сделали самого главного - не убрали саму сигнатуру.
    Для этого открываем "stub_2.exe" в OllyDbg и оказываемся на точке входа.
    В дописаном коде я использовал обратимое изменение данных - т.е. сигнатура меняется и восстанавливается одной и той-же командой, а именно "xor". Т.е. достаточно запустить наш код и данные изменятся так, как нам надо.
    Выделяем строку с последней введенной командой "JMP 00404184" и жмем F2 - тем самым ставя брекпойнт на эту команду, т.е. исполнение программы остановится именно на этом джампе. Запускаем стаб на исполнение нажатием F9 - исполнение остановилось и выделилась строка с джампом. Опять жмем F2 чтобы убрать брекпойнт.
    Последнее, что нужно сделать - сохранить стаб. Переходи по адресу сигнатуры - 004041A0 и выделяй вниз измененные байты - можно чуть больше, чем мы изменяли (16 байт), делай так:
    [​IMG]​

    отвечай в следующем диалоге "Да". Далее появится окно, с выделенным фрагментом сигнатуры, который мы изменили. Жми правой кнопкой на выделенном:
    [​IMG]​

    и сохраняй чистый стаб.
    Всё! Осталось только записать стаб обратно в джоинер с помощью Restorator'a. Как это сделать было описано в начале.
    А теперь самое главное - оценка результата.
    До чистки стаб определяло вот так:
    20 on 22 http://scanner.novirusthanks.org/analysis/46299cadfe021f2dae5ea043a6869fbc/c3R1Yi5leGU=/
    А теперь:
    13 on 21 http://scanner.novirusthanks.org/file/05a00a4cb098ac0917140346328dbe47/c3R1Yl8zLmV4ZQ==/
    Т.е. мы зацепили сигнатуры не только Касперского, но и еще многих других явно кривых антивирусов.
    Shit Happens
    Почистил файл, а он снова стал палиться? Достаточно провести аналогичную процедуру, изменив, например, смещение или количество байт для смены (то значение, которое мы ложили в регистр ECX).
    The End Of The Line
    Была идея писать всё это в стиле старого Хакера, упоминая пиво, порно и сиськи, но я искренне надеюсь, что ты перестал читать откровенно идиотскую хуету.
    Я надеюсь, что внятно все описал, но если останутся вопросы - выслушаю их на форуме.
    Спасибо за внимание.
     
    Последнее редактирование: 31 янв 2011
    21 окт 2010
  3. Zloi-antivirus
    Zloi-antivirus Новичок
    Симпатии:
    1
    Сама чистка
    Закрываем АВ и заходим в папку "SIGN_DETECT". Выбираем любой файл, например "000035A0.exe". Название файла соответствует смещению, по которому изменился байт. Этот файл нам больше не нужен, т.к. все что нужно - смещение, мы узнали.
    Запускай Frhed и открывай в нем файл "aaa.exe" - наш контейнер. Топаем по адресу 000035A0 и видим такую картину:
    [​IMG]​
    Запоминаем несколько байт по этому адресу, например 8 штук - (BF 68 66 40 00 33 С0 55). Чем больше байт, тем лучше - но в нашем случае восьми будет достаточно. Закрывай Frhed - он больше не понадобится.
    Последний инструмент, который будем использовать - OllyDbg. Запускай ее, и открывай в нем наш "aaa.exe".
    Откроется окно CPU с кодом программы. Нам нужно найти в этом коде ту последовательность байт, при изменении которой файл перестает палится. Для этого откываем окно "Binary Search" - Ctrl+B, вводи в нижнее поле последовательность байт BF 68 66 40 00 33 С0 55, чтобы это выглядело так:
    [​IMG]​
    Жми "Enter" - поиск закончится и указатель в окне CPU станет на найденную инструкцию:
    [​IMG]​
    Поиск остановился на адресе 004041A0, на строке "MOV EDI, 406668" - помещение в регистр EDI значения 406668h.
    Не находит нифига,или это уже не актуально?Я искал адреса,ни одного адреса нету.Что за бред? У кого получилось отпишите.
     
    Последнее редактирование: 5 фев 2011
    5 фев 2011
  4. zaratrem
    zaratrem Новичок
    Симпатии:
    0
    Следую точно инструкции, получаю около 2к файлов, проверяю авастом, он их всех убивает. Далее ставлю Bytes to writr не 1, а 2, в итоге имею около 6.5к файлов, из них живыми аваст оставляет только 16, выбираю первый - "000326a.exe" открываю склееный файл при помощи frhed, но в первом столбце не нахожу значения 326a, с остальными файлами тоже самое, что я не так делаю?
     
    25 ноя 2011
  5. yda4a
    yda4a Новичок
    Симпатии:
    0
    ставь больше байт и при скане поставь галочку scan only strings
     
    13 дек 2011
  6. viliam
    viliam Новичок
    Симпатии:
    0
    юзай авточистку SignDetect`a

    Добавлено через 5 минут
    кста... заметил что для каспера хватает сдвигать на 1 байт а для др.веба как минимум на 2 ;)
     
    Последнее редактирование: 27 дек 2011
    27 дек 2011
  7. zaratrem
    zaratrem Новичок
    Симпатии:
    0
    Всё тоже самое сделал, только указал 3 байта, и использовал Scan only Strings, програ выдала 156 файлов, при проверке аваст не удалил ни один из них. 95% имён файлов ссылаются на несуществующий адрес в frhed, так и должно быть? Один из удачных ардесов, послал меня на следующую строчку в ollydbg:
    Дальше я сделал всё в соответсвии с инструкцией в первом посте. В итоге полученный файл хотя-бы исполняется, но как только я включаю аваст, он его уничтожает. Где моя ошибка? очень прошу, помогите мне разобраться.
     
    24 фев 2012
  8. chimatii
    chimatii Глобальный модератор
    Симпатии:
    73
    zaratrem,
    данный метод спасает от сигнатурного анализа, а от эвристики, которая используется при выполнении программы, увы, нет
     
    24 фев 2012
  9. zaratrem
    zaratrem Новичок
    Симпатии:
    0
    Я немного уточню, я исполнял файл когда антивирь был выключен, просто чтобы проверить работоспособность. Потом я врубил АВ и проверил файл на вирусы, не запуская сам файл, то-есть проверял аваст именно сигнатуры (которые я и чистил) и всё равно обнаружил угрозу.
     
    25 фев 2012
  10. zaratrem
    zaratrem Новичок
    Симпатии:
    0
    Тут есть всё необходимое кроме Каспера и вместо frhed, winhex с кейгеном:
    http://rghost.ru/36699468
     
    25 фев 2012
  11. sssr1
    sssr1 Новичок
    Симпатии:
    1
    видео перезалейте пожалуйста.
     
    7 апр 2012
  12. Bas916
    Bas916 Новичок
    Симпатии:
    1
    Пытался закриптовать свой проект, после замены по 1 байту и скана папки АВ остлось почти 6к файлов из 22к, все бы хорошо, но... Начинаю искать строки, как указано в инструкции, OllyDbg не находит ни одной((( Пробывал примерно для 10 разных, результат 1 и тот же, не находит ничего. Может кто-нибудь помочь по этому поводу? Если можно, в лс.
     
    8 июн 2012
  13. Misterr
    Misterr Новичок
    Симпатии:
    0
    Сколько не ставлю Bytes to write - в итоге при сканировании антивиром получается либо "модифицированный бла-бла-бла троянская программа", либо "UPX v13_2m ошибка распаковки", непалевных файлов как таковых нет. Запарился уже от этих бесконечных сканирований с нулевым результатом.:(

    кто что посоветует?
     
    Последнее редактирование: 30 июл 2012
    30 июл 2012
  14. DARKLORD
    DARKLORD Продвинутый
    Симпатии:
    40
    ну начнем с того,что пытаешься чистить?и каким АВ проверяешь?что значит,безпалевных файлов нет?у тебя удаляет все?или как понять?
     
    30 июл 2012
  15. Misterr
    Misterr Новичок
    Симпатии:
    0
    чищу файл стилера, проверяю eset'ом, АВ удаляет все файлы, кроме тех, что с ошибкой ("UPX v13_2m ошибка распаковки")

    "безпалевных" - с очищенной сигнатурой
     
    Последнее редактирование: 30 июл 2012
    30 июл 2012
  16. DARKLORD
    DARKLORD Продвинутый
    Симпатии:
    40
    а ты обратил внимание,что статья по чистке СТАБА????
    /facepalm
     
    30 июл 2012
  17. Misterr
    Misterr Новичок
    Симпатии:
    0
    :dontknow:принцип не один и тот же?
     
    30 июл 2012
  18. onthar
    onthar Продвинутый
    Симпатии:
    224
    стаб криптера чистить проще, т.к. сложнее убить работоспособность.

    а такой файл скорее всего будет битым, т.к. может быть повреждена процедура распаковки.
     
    30 июл 2012
  19. Misterr
    Misterr Новичок
    Симпатии:
    0
    Запутался в край с байтами, все равно палится, что бы не делал :bu:
    Как и zaratrem, не могу найти сигнатуры в free hex editor.
    Сделайте, пожалуйста, новый видеотуториал, хотя б на примере этого криптора :) его стаб я пытался чистить.
     
    Последнее редактирование: 30 июл 2012
    30 июл 2012
  20. DARKLORD
    DARKLORD Продвинутый
    Симпатии:
    40
    http://www.xaker.name/forvb/showthread.php?t=26778
    попробуй так.а ты не думай,что по методам,что найдешь,ты сделаешь фуд.
     
    30 июл 2012
Загрузка...