IT-ИМПУЛЬС
Контакты Меню

Реверсинг малвари для начинающих. Внедрение shellcode и шифрование malware-кода

Содержание статьи Рад снова тебя встретить на страницах нашего журнала, мой друг! Мы продолжаем прокачивать скиллы в реверсинге и познавать нелегкое ремесло malware-аналитика. В сегодняшнем выпуске мы поговорим о двух интересных фичах, которые довольно часто встречаются в «живых образцах» вредоносного ПО: шифровании (encoding) и внедрении shellcode, позволяющего в дальнейшем получить командную оболочку ОС потенциальной жертвы.

Ну что, ты готов попробовать свои силы и ринуться в бой? Тогда смело приступаем к делу!

 Четыре предыдущих урока

Перед прочтением этой статьи рекомендуем освежить в памяти предыдущие материалы: нулевой, первый, второй, третий.


WARNING

Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи. Если ты что-то делаешь — будь уверен и понимай, что ты делаешь!

В нашем сегодняшнем выпуске мы разберем две интересные фичи современного поколения malware: обфускацию кода вредоноса при помощи шифрования и внедрение шелл-кода (англ. shellcode) после инфицирования — чтобы, например, выполнить какой-нибудь эксплоит или получить командную оболочку ОС.

 Data Encoding, или шифрование как искусство  Теоретическая часть

Современные антивирусные движки и эвристические анализаторы с высокой долей вероятности позволяют обнаруживать еще неизвестные или малоизученные вирусы. Для того чтобы «расколоть» вредонос, антивирусное ПО сначала прогоняет по сигнатурной базе, затем, если не удается ничего обнаружить, выполняет код программы в собственной песочнице и, наконец, запускает поведенческий анализатор, рассматривая под лупой каждое действие вредоноса, будь то обращение к реестру, системным файлам, сторонним приложениям или проявление сетевой активности. Поэтому для скрытия присутствия вредоноса в системе применяются различные техники и методы, к примеру использование rootkits или bootkits, которые мы рассматривали в прошлой статье.

Другая задача состоит в том, чтобы максимально усложнить вирусному аналитику ручной анализ образца малвари, когда он уже попал в антивирусную лабораторию. Это, в свою очередь, позволит оттянуть время до того, как сигнатуру малвари добавят в антивирусные базы или будет выпущена тулза для лечения инфекции.

Один из вариантов — шифрование собственного кода малвари (англ. encoding), часто также называемое обфускацией. «Запутывать» код возможно на уровне алгоритма, заложенного во вредонос, исходника (source code) и/или ассемблерного текста. Для создания запутанного ассемблерного кода (того, который мы видим в IDA Pro) могут применяться и специализированные компиляторы, использующие неочевидные или недокументированные возможности. Отдельная песня — класс специальных программ, выполняющих обфускацию (обфускаторов). В качестве примера такого софта для программ на платформе .NET приведу вот эту софтину, для Java — эту. Будет полезна и старая добрая статья Криса Касперски «Обфускация и ее преодоление». Вот тут еще одна неплохая статья с теорией. Подробный рассказ про использование LLVM в качестве обфускатора. И обязательно прочитай статью «Учимся распознавать полиморфизм и обфускацию кода на примере известного вируса» в одном из прошлых выпусков нашего журнала.

Для тех же, кому лень разбираться в премудростях обфускаторов и писать свой запутанный код, есть готовые программы, которые работают по принципу «загрузил — выбрал опции — зашифровал». Найти их можно в кладовке легендарного VX Heaven. Однако помни, что все эти тулзы давно уже изучены современными антивирусами и внесены в сигнатурные базы, так что халявы не будет.


РАССЫЛКА ПОСЛЕДНИХ НОВОСТЕЙ