Що таке MODBUS; або — атака на SCADA

Уявіть, що одного дня ви прокидаєтесь від дзвінка, це мер міста, і він має для вас дуже особливе завдання. Хтось має бути відповідальним за те, щоб кожна рослина в місті була належно полита. Але справа не лише в тому, щоб час від часу вмикати спринклери — це робота на повний робочий день.
Якщо ви хочете, щоб ваше місто справді процвітало, вам, ймовірно, знадобляться люди, які перевірятимуть вологість ґрунту, вирішуватимуть, яким рослинам потрібно більше або менше води, контролюватимуть рівень pH, забезпечуватимуть добривами, а також включатимуть та вимикатимуть усе за потребою.
Це здається кошмаром, якщо тільки не існувала б система, яка, з правильною конфігурацією, могла б робити це автоматично...
Ну... така система є, і вона називається SCADA

pic

Що це таке?!

“SCADA (Supervisory Control and Data Acquisition) — це тип архітектури системи управління, яка використовує комп’ютери, мережеві комунікації даних та графічні інтерфейси користувача (GUI) для управління високорівневими процесами. Ці системи критичні для моніторингу та контролю промислових операцій, таких як виробництво, генерація електроенергії, очищення води та транспорт.”

Коротше кажучи — це архітектурна система, яка може автоматично керувати сенсорами та іншими пристроями. Згідно з даними, які вона отримує від сенсорів, вона може приймати "рішення" і вживати заходів, таких як налаштування обладнання або ініціювання процесів для підтримки та оптимізації операцій системи.

Це корисно в багатьох галузях, від атомної енергетики до фінансових систем, І ОТЖЕ важливо бути з цим знайомим. Вона може бути всюди = вона може бути надзвичайно вразливою.

pic

Як це працює

  1. Інтерфейс людина-машина (HMI): Зручний інтерфейс для операторів, щоб взаємодіяти з системою.
  2. Наглядові комп’ютери: Збирають дані від польових пристроїв, обробляють їх і відображають на HMI.
  3. Віддалені термінальні пристрої (RTU): Пристрої, що підключаються до сенсорів на місцях і передають дані на наглядові комп’ютери.
  4. Програмовані логічні контролери (PLC): Промислові комп’ютери, які виконують функції управління.
  5. Інфраструктура зв’язку: Включає протоколи, такі як Modbus, DNP3 або власні системи, для передачі даних між пристроями.

Робочий процес включає збирання даних польовими пристроями, які потім передаються через комунікаційні протоколи на наглядову систему для обробки та прийняття рішень. Команди також можуть передаватись у зворотному напрямку для контролю процесів. (дякую за пояснення, Wikipedia і ChatGPT).

Атака на SCADA

Після того, як ми зрозуміли, як це працює, можна почати думати, як це може бути вразливим. Чому ми повинні про це думати? Ну... просто тому що 🙂

Ось основні вектори:

Небезпечні протоколи

SCADA в основному використовує протоколи, такі як Modbus або DNP3, які не мають шифрування або механізмів аутентифікації, що робить їх очевидно вразливими до перехоплення та маніпуляцій.

Застарілі системи

SCADA системи іноді побудовані на застарілих технологіях, які можуть не мати оновлень безпеки.

Вразливість мережі

Іноді системи SCADA підключені до всесвітньої мережі (або Інтернету), це може бути з різних причин, але це основна вразливість, оскільки так вони піддаються небезпекам зовнішнього світу.

Слабка аутентифікація

Стандартні облікові дані, слабкі політики паролів тощо…

Фізична небезпека(?)

Чесно кажучи, я не зовсім певен у цьому, але сенсори, RTU або PLC можуть бути не дуже фізично захищеними, що може призвести до різних сценаріїв.

pic

Тож як це робиться?

1 — Знайти шлях вхід. 2 — Слабке місце.

Вразливість через інтернет:

Мабуть, найпростіший спосіб потрапити в будь-що (незалежно від того, чи це мережа, вебсайт чи система SCADA) — це соціальна інженерія.
Якщо система якось підключена до Мережі, наприклад через VPN, співробітник може отримати електронний лист, який привітатиме його з виграшем квитків на круїз... Ми всі знаємо, як це зазвичай буває, нудно.

Протоколи:

Modbus — це протокол, що використовується в SCADA для комунікацій. Він працює в формі майстер-раб, де система (SCADA) є майстром, а RTU/PLC — рабами. Майстер надсилає пакети Modbus TCP рабам для зв’язку, а раби відповідають. Раби також можуть ініціювати з’єднання з майстром для передачі інформації.

Одна з основних проблем з протоколом (окрім відсутності шифрування) — відсутність сесій. Modbus працює через короткі транзакції, де майстер надсилає запит до раба, який відповідає на одну дію. Однак через відсутність аутентифікації та слабку генерацію початкових номерів послідовностей TCP (ISN) у багатьох вбудованих пристроях, можливо інжектувати команди без попереднього знання активної сесії. Як ми кажемо — удар і втеча.

Протокол працює на порту 502, тому можна виявити пристрої в мережі SCADA.

Як працює MODBUS —

Запит
Код функції в запиті вказує дію, яку має виконати адресований раб. Поле даних надає всю необхідну інформацію для виконання запитаної задачі.

Відповідь
Раб повторює код функції з запиту. Поле даних містить результати, такі як значення реєстрів або інформацію про статус. Якщо сталася помилка, код функції коригується для вказівки помилки, а поле даних містить код помилки, що описує проблему.

Реєстри
Modbus має реєстри (дії), які можуть варіюватися від 1 до 65,535 і кожен з них має свою мету. Як ми можемо здогадатися, що є що?

Котушки (0xxxx)
Тип: Читання/Запис (бінарні значення)
Використання: Використовуються для керування цифровими виходами (наприклад, увімкнення/вимкнення пристроїв).

Дискретні входи (1xxxx)
Тип: Тільки для читання (бінарні значення)
Використання: Означає стани цифрових входів (наприклад, стан увімкнення/вимкнення датчика).

Вхідні реєстри (3xxxx)
Тип: Тільки для читання (16-бітові значення)
Використання: Містить аналогові вхідні дані, такі як показники температури чи тиску.

Реєстри утримання (4xxxx)
Тип: Читання/Запис (16-бітові значення)
Використання: Зберігає аналогові вихідні дані або параметри конфігурації.

Ну, ми не можемо точно здогадатися, але можемо підслуховувати трафік. Ідентифікуючи, які пристрої відповідають певним реєстрами (наприклад, читаючи дані з датчиків), можна повторно відправляти пакети та викликати дії/отримувати інформацію.

Modbus досить простий у своїй технології (також досить старий), він незалежний від фізичного шару, що означає, що його можна використовувати на різних апаратних конфігураціях — таких як RS232, RS422 чи RS485. Кажучи про це, MODBUS обмежує розмір PDU (певної частини TCP пакету, що містить дані протоколу) до 253 байтів, щоб дозволити пакету бути відправленим по серійному лінії — інтерфейс RS-485.
Modbus додає заголовок MBAP (7 байтів) до PDU перед тим, як відправити його в TCP пакет. Цей заголовок містить важливу інформацію для правильного зв’язку, наприклад, ID транзакції та довжину. Розмір заголовка разом з даними Modbus PDU досягає максимальної величини допустимого пакету Modbus.

Що це означає? — Це означає, що надсилання пакету Modbus понад ліміт може спричинити несподівану поведінку.
Чудово для нас, створений пакет довжиною більше 260 байтів, що надсилається на клієнт або сервер MODBUS, може призвести до переповнення буфера () якщо клієнт або сервер були запрограмовані неправильно.

До речі

NMAP має “— script modbus-discover”, який, очевидно, виявляє modbus.

І є чимало атак metasploit для експлуатації, таких як симулятор майстра або розвідка

pic

pic

Майстер має специфічні команди, які він може надіслати рабові для отримання інформації

До речі, metasploit — це для початківців.

Перекладено з: what the MODBUS; or — attacking SCADA

Leave a Reply

Your email address will not be published. Required fields are marked *