День 4. Использование Python и анализ целевых машин
Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в ознакомительных целях. Все действия происходят на виртуальных машинах и внутри локальной сети автора. Спасибо!
Вчера начал разбираться с 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 на Хабре.
Настало время переходить к следующему крупному разделу.
Основой любого успешного теста на проникновение является хорошая разведка. В этом разделе обещают осветить следующие методы сбора информации: сканирование портов, охота на 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 в роли посредника. Результат тоже успешный, поэтому пока сомневаюсь то ли делаю. На данный момент не хватает знаний, чтобы определить, с какой машины ведется сканирования (с точки зрения целевой машины).
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 и начал изучать раздел по сбору информации для атаки не «вслепую».
Ссылки дня:
- Про DLL: https://habr.com/ru/post/499152/
- Книга по Nmap: https://nmap.org/book/