×
Главная   »   Заметки   »   День 4. Использование Python и анализ целевых машин
День 4. Использование Python и анализ целевых машин
Метки:      ,   ,   ,   ,   ,   ,   ,   ,   

Научился использовать Python в Meterpreter и начал изучать раздел по сбору информации для атаки не «вслепую».

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

Вчера начал разбираться с Meterpreter. Перехожу к разделу «PYTHON EXTENSION». Этот модуль может дополнительно расширяться при помощи языка Python. Это дополнение дает возможность запускать код Python в исходном виде на целевой машине без установки интерпретатора.

Снова юзаем exploit/windows/smb/psexec. Чтобы работать с Python, необходимо в meterpreter его загрузить (после успешной эксплуатации):

meterpreter > load python

Если ввести help, то можно увидеть доступные команды. Например, для запуска указанной строки Python используется команда python_execute. Если необходимо сохранить результат в переменной Python, переменная должна быть передана с использованием параметра -r. Посмотрим хелп для команды python_import.

При помощи команды python_import можно загрузить файл с кодом на Python с диска в память. Для этого используется ключ -f.

Последняя команда python_reset, которая сбрасывает (отключает) интерпретатор Python.

Перейдем к разделу «PYTHON EXTENSION EXAMPLES» чтобы это попробовать на практике. Определим текущий каталог, в котором будет выполняться код и сохраним результат в переменную:

meterpreter > python_execute "import os; cd = os.getcwd()" -r cd

Теперь проверим, сохранился ли результат:

meterpreter > python_execute "print(cd)"

Непривычно как-то использовать в питоне точку с запятой. Вероятнее всего, для сбора информации уже будут заготовки, чтобы не прописывать все это в одну строку прямо в meterpreter, поэтому нужно попробовать загрузить готовый скрипт с атакующей машины. Создал питоновский файл с кодом, который предложен на сайте (для поиска на диске C:\ любого файла с именем readme.txt). Разумеется, пример простой, но это только показывает направление, в котором можно двигаться. По сути, возможность  использовать Python открывает безграничные возможности.

meterpreter > python_import -f /root/msfu/check.py

В результате были найдены все readme файлы. Таким образом, если знать, что искать, можно найти полезную информацию. В данном случае был найден readme файл WordPress. Значит можно поискать wp-config.php. В данном случае там указаны данные по умолчанию, а на реальном сервере можно найти, как минимум, действующие логин и пароль.

Следующий пример показывает, как применять библиотеку ctypes. Она предоставляет типы данных, совместимые с Си и позволяет вызывать функции в библиотеках DLL. То есть можно обернуть эти библиотеки в чистый Python. Следующий код успешно запустился (который они почему-то не приводят):

from ctypes import *
print(windll.kernel32)

Запуск диалогового окна на целевой машине не получился. Пока оставим это направление. Про DLL и Python на Хабре.

Настало время переходить к следующему крупному разделу.

Раздел «INFORMATION GATHERING IN METASPLOIT» (Сбор информации в Metasploit)

Основой любого успешного теста на проникновение является хорошая разведка. В этом разделе обещают осветить следующие методы сбора информации: сканирование портов, охота на MSSQL, Service Identification, перехват пароля и SNMP sweeping. В переводе некоторых я пока не уверен. Как доберусь до них, станет понятнее.

Раздел «PORT SCANNING» (Сканирование портов)

Большинство сканеров используют опцию RHOSTS, вместо RHOST. RHOSTS может принимать диапазоны IP-адресов или список хостов из файла. По умолчанию для всех модулей сканера значение THREADS установлено на 1, то есть по умолчанию сканирование запускается в одном потоке. Казалось бы, почему не выставить максимальное значение. Это не рекомендуется, а советуют для Win32 использовать менее 16 и не более 256 для Unix-подобных операционных систем.

Можно использовать команду db_nmap для запуска Nmap в отношении наших целей, после чего результаты сканирования будут сохранены в базе данных. Попробуем просканировать подсеть:

msf6 > nmap -v -sV 192.168.56.0/24 -oA subnet_1

В этой подсети только два компьютера (кроме атакующего) на XP и Metasploitable 3. Nmap не единственный сканер. Можно найти и другие:

msf6 > search portscan

Да, кстати, результат работы Nmap был сохранен в рабочую директорию с именем subnet_1 (то, которое было задано). Далее найдем все машины, у которых открыт порт 80 (разумеется, это Metasploitable):

msf6 > cat subnet_1.gnmap | grep 80/open | awk '{print $2}'

Теперь попробуем использовать сканер auxiliary/scanner/portscan/tcp. Чтобы быстро заполнить поле RHOSTS воспользуемся командой hosts с ключом -R.

msf6 > use auxiliary/scanner/portscan/tcp
msf6 auxiliary(scanner/portscan/tcp) > hosts -R
msf6 auxiliary(scanner/portscan/tcp) > run

Итак, у меня получилось определить доступные в сети хосты. Теперь попробуем определить операционные системы, на которых они работают. Это поможет сузить атаки до конкретной системы и не будет потрачено время на неподходящие эксплойты. На наших целях открыты порты 445, поэтому будем использовать модуль scanner/smb/version. Ранее я уже пробовал его использовать, оказывается, случайно забежал вперед.

msf6 > use auxiliary/scanner/smb/smb_version
msf6 auxiliary(scanner/smb/smb_version) > hosts -R

Теперь, если ввести команду hosts, то можно увидеть больше информации о целевых машинах.

Далее рассматривается сканирование IPID в режиме простоя Nmap (как-то плохо переводится). В общем, сейчас буду сканировать цель, при этом подделывая IP-адрес. Чтобы этот тип сканирования работал, необходимо найти хост, который простаивает в сети и использует IPID последовательности с инкрементным, либо сломанным прямым порядком байтов. Не знаю о чем речь, но есть сканер, чтобы это найти: scanner/ip/ipidseq.

Более подробно предлагается почитать в книге по Nmap (https://nmap.org/book/idlescan.html). Оставим это на потом.

В моем случае «зомби» не был найден (хотя я надеялся на Metasploitable). Тема на мой взгляд очень важная, надо обязательно с ней разобраться (вот еще одна статья: https://linuxhint.com/nmap_idle_scan_tutorial/).

Несмотря на то, что модуль ipidseq не вывел информацию о наличии требуемой инкрементированной последовательности в Metasploitable, все же попробовал использовать nmap (с ключом -sI), чтобы использовать Metasploitable как посредника:

msf6 auxiliary(scanner/ip/ipidseq) > nmap -Pn -sI 192.168.56.104 192.168.56.102

Позднее попробовал использовать целевую машину на XP в роли посредника. Результат тоже успешный, поэтому пока сомневаюсь то ли делаю. На данный момент не хватает знаний, чтобы определить, с какой машины ведется сканирования (с точки зрения целевой машины).

Раздел «HUNTING FOR MSSQL» (Поиск MSSQL)

MSSQL это система управления реляционными базами данных, разработанная Майкрософтом. С ней не знаком, но MySQL знаю. Смысл тот же.

Поиск и обнаружение MSSQL во внутренней сети может быть достигнут с помощью UDP-отпечатков. MSSQL по умолчанию работает на порте 1433. Именно к нему подключаются клиенты, или консоль SQL Server Management Studio (SSMS).

Теперь заюзаем модуль mssql_ping. Хотя нет. Незачем. Лучше введу команду services:

msf6 > services -c name,port,info 192.168.56.104

Как оказалось, порт 1433 закрыт (не используется), поэтому дальнейшие манипуляции бессмысленны.

Подведем итог за день. Научился использовать Python в Meterpreter и начал изучать раздел по сбору информации для атаки не «вслепую».

Ссылки дня:

  1. Про DLL: https://habr.com/ru/post/499152/
  2. Книга по Nmap: https://nmap.org/book/
831 просмотр
14.03.2022
Автор