Всех участников, и мы не исключение, привлекает возможность получения опыта работы со SCADA, управляющей моделями промышленных объектов. Нам показался интересным стенд компании ИнфоТеКС — «Атака на топливный склад», который нам в итоге удалось покорить. Ниже приведена последовательность взлома, кому это интересно.
Условия конкурса «Атака на топливный склад»
Исходные данные: атака состоит из двух этапов.
1. Этап: Необходимо в «Цифровом баре» найти подсказку для начала первого этапа атаки. В результате 1 этапа атаки требуется овладеть неким «секретом» для перехода к этапу №2. Первый этап считается успешно пройденным в случае, если действия нарушителя не были замечены межсетевым экраном.
2. Этап: Получив «секрет», атакующий переходит ко второй стадии атаки. Задача – подача не авторизованной команды на розлив пунша.
Цель: Осуществить несанкционированный слив топлива объемом 50 или 100 литров.
Разрешается: Использование собственного ноутбука, с любым необходимым программным обеспечением.
Запрещается: Любое физическое воздействие на макет топливного склада. Нарушитель будет сразу отстраняется от участия в конкурсе.
Итак, этап 1.
Известно:
WiFi
SSID: step_default
PASS: 00000000
FTP
login: user
pass:Zb1HjJ9I
Подключившись к сети по DHCP получаем IP 50.50.50.12. и сканируем доступную сеть.
sudo netdiscover -i wlan0 результат дает нам несколько IP, каждый из которых сканируем на открытые порты через nmap.
nmap -Pn — из всего списка самым интересным оказался IP:50.50.50.3, с открытыми портами 22(SSH), 21(FTP), 80(HTTP) и 7777 (не известный сервис). Сразу вспомнилось, что у нас есть логин и пароль к FTP серверу. После авторизации на FTP обнаруживается файл 7777.zip. Скачиваем и пробуем распаковать, но не тут-то было, архив запаролен. Вводим все, что нам известно из условий задания и найденного по пути. Ничего не помогло. Приняли решение отложить вопрос и идти дальше. Через браузер открываем 50.50.50.3 и видим следующее:
Казалось бы, обычная картинка, но, опыт прохождения HackQuest'ов не прошел бесследно. Скачиваем картинку и изучаем содержимое.
Используя cat обнаруживаем некоторое значение в конце файла «TnpjM056bzNPVFU0TWpRMk5nbz0K». Поразмыслив пришли к выводу, что это Base64 и выполнили следующую команду:
echo TnpjM056bzNPVFU0TWpRMk5nbz0K | base64 -d
получили ответ – Nzc3Nzo3OTU4MjQ2Ngo=
проделываем этот трюк еще раз, на этот раз с полученным результатом
echo Nzc3Nzo3OTU4MjQ2Ngo= | base64 -d
в ответ – 7777:79582466
Итак, теперь у нас есть новые значения, остается вопрос: «Куда их девать!?». Попытки авторизоваться с этими данными через FTP и SSH, а также использования в качестве пароля к *.zip архиву результата не дали. Вспомнили, что на удаленной машине так же открыт порт 7777. Соединяемся через telnet и получаем сообщение «Tell me your ID». Так как первая часть ответа является указанием на порт (7777), предположили, что вторая запрашиваемый ID.
Все сделано правильно! Результатом работы стал еще один ФЛАГ (Ffl42Nm5b4#445). Не отходя от кассы вспоминаем, что у нас так же есть файл с именем 7777.zip. Вводим в качестве пароля полученные данные и вуаля, архив распакован. Внутри архива файл johny, посмотрев на содержание которого наш сисадмин, без тени сомнений озвучил приговор «Это SSH ключ» и сделал следующее:
Используя SSH ключ и имя файла в качестве имени учетной записи (johny) мы подключились к серверу 50.50.50.3 и получили в ответ новые данные
IG10: YourPassPhrese987
IG10 оказалась еще одной Wi-Fi точкой доступа. Подключившись к IG10, мы начали все сначала.
sudo netdiscover -i wlan0
на этот раз внимание привлекло то, что в сети было два адресных пространства – 192.168.2.1/24 и 192.168.20.1/24
Примечательно, что gateway (192.168.1.1 & 192.168.20.1) имели один и тот же MAC, а это значит — в сети всего один роутер. Для доступа к обеим подсетям прописали маршрут.
sudo route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.20.1
Далее взялись за спуфинг. Для подачи топлива на роботе, подключенного к WiFi сети IG10, подавалась команда, которая, в свою очередь, обрабатывалась на сервере и выдавала команду на сброс топлива. К сожалению, файл *.pcap, с данными собранными через спуфинг, мы не сохранили, поэтому придется объяснять на пальцах.
Мы обнаружили, что при нажатии кнопки сброса топлива с IP 192.168.20.7 (предположительно робот), по протоколу modbus, в сторону IP 192.168.2.2 (предположительно управляющий сервер) передается пакет на порт 502. Таким образом, мы определили роли устройств. Осталось только воспроизвести повторную отправку пакета, вся необходимая для этого информация у нас уже имелась. Однако, повторно воспроизвести отправку пакета своими силами у нас не вышло из-за сложности отправки сформированного пакета. На помощь пришел github, скачав необходимую либу и немного ее модифицировав под свои цели, получилось воспроизвести данные отправляемые роботом – команду на сброс топлива.
Комментарии (4)
demshyn
01.06.2016 13:22«Я пишу программы для ПЛК с 2004 года. Дать возможность в программе PLC выставить ножи заземления под нагрузкой, это каким кретином нужно быть. Это базовая релейная защита объектов электроснабжения. За такие программы уголовная статья предусмотрена. Менеджмент РАКУРС-а был бледный, когда Саяно-Шушенская ГЭС „стрельнула“. Предлагаю устроить батл — АСУТП-шники и автоматчики vs. хакеров и аналитиков по IT безопасности. Готов предоставить стенд с PLC Mitsubishi Q-series подключённый к СКАДА Wоnderware InTouch 9.0, которая будет в свою очередь подключена к сети. Суть таже — опустить ножи заземления у транса подстанции. Я даже готов предоставить схемы и листинг программы PLC. Если кому удастся, то даю слово, что буду использовать Ваши услуги на объектах которые обслуживаю и планирую к вводу в эксплуатацию.»
Комментарий взят отсюда www.computerra.ru/149759/phdays-vi-hacking-atmosphere
HeffHeffalump
03.06.2016 10:21Молодцы!
Это, конечно, игра. Но это серьезная игра.
Первый раз мы предложили эту игру на прошлом ZN. Там лучшая команда остановилась в шаге до результата. Справедливости ради должен отметить, что на ZN был тайминг и только проводное подключение.
К PHD мы исправили собственные ошибки в организации задачи и чуть-чуть упростили условия.
И теперь у нас есть основания поднять планку сложности.
А это значит, что мы развиваемся, и результаты нашей совместной деятельности смогут сделать этот мир чуть-чуть безопаснее.
До следующих квестов и встреч!
av0000
Забавно.
Но почему-то ожидалась атака на «настоящие» СКАДА системы, а не игра в хакеров из фильма и банальная отдача команд «железу»…
Klukonin
Да, после подстанции такие квесты уже не особо серьезными кажутся.