Реверсинг малвари для начинающих. Внедрение shellcode и шифрование malware-кода
Содержание статьи- Четыре предыдущих урока
- Data Encoding, или шифрование как искусство
- Теоретическая часть
- Специализированный инструментарий
- Внедрение shellcode, или как получить удаленный доступ к командному шеллу
- Теоретическая часть
- Обнаружение шелл-кода на взломанной машине
- Анализ семпла malware01
- Анализ семпла malware02
- Заключение
Ну что, ты готов попробовать свои силы и ринуться в бой? Тогда смело приступаем к делу!
Четыре предыдущих урокаПеред прочтением этой статьи рекомендуем освежить в памяти предыдущие материалы: нулевой, первый, второй, третий.
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи. Если ты что-то делаешь — будь уверен и понимай, что ты делаешь!
В нашем сегодняшнем выпуске мы разберем две интересные фичи современного поколения malware: обфускацию кода вредоноса при помощи шифрования и внедрение шелл-кода (англ. shellcode) после инфицирования — чтобы, например, выполнить какой-нибудь эксплоит или получить командную оболочку ОС.
Data Encoding, или шифрование как искусство Теоретическая частьСовременные антивирусные движки и эвристические анализаторы с высокой долей вероятности позволяют обнаруживать еще неизвестные или малоизученные вирусы. Для того чтобы «расколоть» вредонос, антивирусное ПО сначала прогоняет по сигнатурной базе, затем, если не удается ничего обнаружить, выполняет код программы в собственной песочнице и, наконец, запускает поведенческий анализатор, рассматривая под лупой каждое действие вредоноса, будь то обращение к реестру, системным файлам, сторонним приложениям или проявление сетевой активности. Поэтому для скрытия присутствия вредоноса в системе применяются различные техники и методы, к примеру использование rootkits или bootkits, которые мы рассматривали в прошлой статье.
Другая задача состоит в том, чтобы максимально усложнить вирусному аналитику ручной анализ образца малвари, когда он уже попал в антивирусную лабораторию. Это, в свою очередь, позволит оттянуть время до того, как сигнатуру малвари добавят в антивирусные базы или будет выпущена тулза для лечения инфекции.
Один из вариантов — шифрование собственного кода малвари (англ. encoding), часто также называемое обфускацией. «Запутывать» код возможно на уровне алгоритма, заложенного во вредонос, исходника (source code) и/или ассемблерного текста. Для создания запутанного ассемблерного кода (того, который мы видим в IDA Pro) могут применяться и специализированные компиляторы, использующие неочевидные или недокументированные возможности. Отдельная песня — класс специальных программ, выполняющих обфускацию (обфускаторов). В качестве примера такого софта для программ на платформе .NET приведу вот эту софтину, для Java — эту. Будет полезна и старая добрая статья Криса Касперски «Обфускация и ее преодоление». Вот тут еще одна неплохая статья с теорией. Подробный рассказ про использование LLVM в качестве обфускатора. И обязательно прочитай статью «Учимся распознавать полиморфизм и обфускацию кода на примере известного вируса» в одном из прошлых выпусков нашего журнала.
Для тех же, кому лень разбираться в премудростях обфускаторов и писать свой запутанный код, есть готовые программы, которые работают по принципу «загрузил — выбрал опции — зашифровал». Найти их можно в кладовке легендарного VX Heaven. Однако помни, что все эти тулзы давно уже изучены современными антивирусами и внесены в сигнатурные базы, так что халявы не будет.