TryHackMe Industrial Intrusion Breach Write-up

Давно хотел поработать со SCADA и данная машина показалась мне очень интересной. Первый write-up был уровень easy, теперь возьмем medium. Сам Industrial Intrusion CTF еще не начался и флаг здесь указывать не буду, потому надеюсь TryHackMe не будут сильно ругаться 🙂

Наша задача следующая — найти способ открыть ворота, минуя систему аутентификации по бейджу. Обращаем внимание на главную подсказку — обязательно проверьте все открытые порты. Начнем.

Быстро сканируем все порты, определяя версии сервисов и применяя скрипты для сбора дополнительной инфы

nmap -sC -sV -p- -T4 10.10.184.80

Видим следующее

PORT      STATE SERVICE       VERSION
22/tcp    open  ssh           OpenSSH 9.6p1 Ubuntu 3ubuntu13.11 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 60:bf:ec:ad:d7:e8:5d:d6:00:35:d7:88:44:62:58:87 (ECDSA)
|_  256 d2:60:eb:70:dc:6f:21:f9:6a:ec:5f:05:2f:3e:68:45 (ED25519)
80/tcp    open  http          Werkzeug httpd 3.1.3 (Python 3.12.3)
|_http-server-header: Werkzeug/3.1.3 Python/3.12.3
102/tcp   open  iso-tsap?
502/tcp   open  mbap?
1880/tcp  open  vsat-control?
8080/tcp  open  http          Werkzeug httpd 2.3.7 (Python 3.12.3)
|_http-server-header: Werkzeug/2.3.7 Python/3.12.3
44818/tcp open  EtherNetIP-2?

Теперь вы понимаете важность подсказки про порты?) Пройдемся по ним

Senior SCADA specialists прошу сильно не ругаться, если я буду в чем-то не прав 🙂

С 22 и 80 думаю все понятно, но что касательно остальных? Воспользовавшись поисковиком делаем короткую сводку
102 — применяется в промышленных системах для передачи данных между контроллерами
502 — стандартный порт для протокола Modbus (промышленные контроллеры, SCADA)
1880 — иногда используется для управления VSAT (спутниковые терминалы) или для Node-RED (IoT)
8080 — еще один http сервер на Python, в дальнейшем посмотрим что на нем
44818 — еще один порт каких-то промышленных контроллеров

Для начала посмотрим на 80 порт.

Видим страницу, которая говорит нам о том, что ворота закрыты

Попробуем зайти через браузер на 8080 и 1880

На порту 8080 видим OpenPLC Webserver — веб-интерфейс для управления и мониторинга программируемого логического контроллера OpenPLC.

В CTF бывает важно уметь отличать нужный вектор от ложного, я поискал разные CVE к нему, попробовал эксплойты, даже немного побрутил, но быстро понял, что стандартные openplc/openplc не подходят, а без них PoC’и не работали.

Идем дальше на 1880 и видим Node-RED — инструмент для визуального программирования, часто используемый для автоматизации и интеграции IoT-устройств. Пробуем залогиниться кредами из гугла, не получается, начинаем смотреть, что здесь вообще есть.


У нас есть Detector и Badge — смотрим на изображение на 80 порту и понимаем, что скорее всего эти штуки нужно как-то отключить, чтобы ворота открылись. Но как?

Просматриваем функции, смотрим разные кнопочки, но судя по всему так как мы не залогинены ничего не получается. Читаем документацию и находим следующее —
node-red-dashboard

Собственно дальше 2 варианта — первый применить что-то по типу gobuster

gobuster dir -u http://10.10.184.80:1880 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt 

Видим вывод

Второй вариант — внимательно прочитать документацию и увидеть вот это

Переходим на страницу

Супер. Теперь как в кино — что отключать? Отключаем все 🙂
Возвращаемся на интерфейс на 1880 порту и видим как Motion Detector и Badge покраснели

Переходим на страницу на 80 порту и видим следующее

Ворота открыты и внизу наш флаг

Поздравляю. Надеюсь было полезно