العمليات والتقصيخبير95mL80

بروتوكولات ICS / SCADA — Modbus, DNP3, IEC-104

تحليل بروتوكولات التحكم الصناعي، فحصها واستغلالها بأمان

#ICS#SCADA#Modbus#DNP3#OT

عالم لا يشبه IT — لماذا ICS مختلف؟

تشبيه — شرح مبسط
IT يعمل بمنطق "secure first, fast second". OT (Operational Technology) عكس ذلك تماماً: محطة كهرباء تتحمل ثوانٍ من التأخر، وثانية واحدة من توقف الإنذار قد تعني انفجار. هندسة OT بُنيت على أن "متى" أهم من "ما"، والكثير من بروتوكولاتها لا تحتوي authentication أصلاً لأن التواصل بين PLC و sensor كان يفترض أن يتم في شبكة معزولة.

الواقع اليوم: تلك الشبكات لم تعد معزولة. Stuxnet، Industroyer، Pipedream، CHIRP — كل حملة كبرى ضد بنية تحتية حرجة استغلت بروتوكولات صُممت بلا حماية. هذا الدرس يغطي Modbus، DNP3، IEC-104 — الأكثر انتشاراً في الكهرباء، الماء، النقل.

معمارية ICS — Purdue Model

text
Level 5 — Internet / cloud
Level 4 — Enterprise IT (ERP, email)
Level 3.5 — DMZ (jump servers, historians)
─── الحدود الكلاسيكية ───
Level 3 — Operations management (SCADA HMIs)
Level 2 — Process supervisory (HMI, alarms)
Level 1 — Basic control (PLC, RTU, IED)
Level 0 — Physical (sensors, actuators, valves)

Modbus / DNP3 / IEC-104 تعمل في Level 1-2. هدف المهاجم: عبور Level 3.5 (المخترق غالباً عبر phishing على IT) إلى Level 1 لإصدار أوامر فعلية للعتاد.

Modbus — البروتوكول الأكثر انتشاراً

01
ما هو؟
Modbus TCP (port 502) من 1979. يعمل على master-slave: master يطلب، slave يرد. لا authentication، لا encryption. ASCII واضح.
02
بنية الـ frame
text
Modbus TCP Frame:
+--------+--------+--------+--------+--------+--------+
| Trans  | Proto  | Length | UnitID | FCode  | Data   |
| 2 byte | 2 byte | 2 byte | 1 byte | 1 byte | n byte |
+--------+--------+--------+--------+--------+--------+

Function Codes:
01 = Read Coils          (digital outputs)
02 = Read Discrete Input (digital inputs)
03 = Read Holding Reg    (analog values)
04 = Read Input Reg
05 = Write Single Coil   ← XX خطر: قلب valve
06 = Write Single Reg    ← XX خطر: تغيير setpoint
15 = Write Multiple Coils
16 = Write Multiple Regs
03
الفحص بأمان
bash
# READ ONLY على lab IP — لا تنفذ هذا على شبكة حية أبداً
# nmap NSE
nmap -p 502 --script modbus-discover 192.168.50.10

# python pymodbus
python3 -c "
from pymodbus.client import ModbusTcpClient
c = ModbusTcpClient('192.168.50.10', port=502)
c.connect()
r = c.read_holding_registers(0, 10, slave=1)
print(r.registers)"

DNP3 — أكثر تطوراً، نفس المشاكل

DNP3 يدعم unsolicited reporting (PLC يرسل alert تلقائياً)، event timestamps، و reliable delivery. لكن النسخة الأساسية بدون مصادقة. DNP3-SA (Secure Authentication) أُضيفت في 2007، لكن انتشارها بطيء.

text
DNP3 على TCP port 20000

Application Layer Function Codes:
0x01 = Read           — قراءة data points
0x02 = Write          — تحديث قيم
0x05 = Direct Operate — تنفيذ control فوري ←  خطر
0x06 = Direct Op No Ack
0x0D = Cold Restart   — إعادة تشغيل PLC ← خطر
Stuxnet لمساً
Stuxnet (2010) لم يستخدم DNP3 لكنه يعمل بنفس الفلسفة: حقن أوامر إلى PLC مع إخفاء التغييرات عن HMI. المهاجم كان يحاكي قراءات طبيعية بينما رفع تردد centrifuges فعلياً.

IEC-104 — معيار الكهرباء الأوروبي

IEC 60870-5-104 هو الـ standard المهيمن في شبكات الكهرباء الأوروبية والآسيوية. Industroyer (2016 هجوم Ukraine) و Industroyer2 (2022) كلاهما استهدفه.

text
IEC-104 على TCP port 2404

ASDU Type IDs المثيرة للقلق:
M_SP_NA_1 (1)   — Single point information
C_SC_NA_1 (45)  — Single command   ← يقلب breakers
C_DC_NA_1 (46)  — Double command   ← يفتح/يغلق switches
C_RC_NA_1 (47)  — Regulating step
C_SE_NA_1 (48)  — Setpoint command ← يغير threshold relays

هجوم نمطي على ICS — ما يبدو عليه

01
Initial Access (Level 4)
Spear phishing على مهندس IT في الشركة، أو exploitation لـ VPN قديم. لا أحد يهاجم PLC مباشرة من الإنترنت.
02
Pivoting إلى DMZ (Level 3.5)
غالباً عبر historian server، jump host، أو laptop مهندس صيانة بصلاحيات مزدوجة.
03
Discovery (Level 2-3)
bash
# أدوات مثل GRASSMARLIN، ICSpector، Bandolier
nmap -p 502,20000,2404,44818,47808 10.10.10.0/24 --script default
# CIP/EtherNet/IP = 44818
# BACnet = 47808 (HVAC, building automation)
04
Lateral Movement to OT
عبر engineering workstation التي تعمل بـ Studio 5000، Step7، TIA Portal — تطبيقات تحمل cleartext credentials للـ PLCs.
05
Effect (Impact على Level 0-1)
إصدار write commands. Triton/Trisis (2017) استهدف Schneider Triconex SIS — جعل المحطة عمياء عن ظروف خطر بينما تستمر العملية.
تحذير صارم
الفحص الفعّال (active scanning) على شبكة OT حية قد يتسبب في انفجار، تعطل خط إنتاج، أو خسائر بمليارات. كل العمل الـ ICS الحقيقي يبدأ بـ passive monitoring فقط (port mirror، Zeek، Claroty). أي فحص فعّال يحتاج maintenance window مع مهندس OT حاضر. فيدرالياً، اختبار ICS غير مصرّح به قد يقع تحت قانون PIPDA أو CIRCIA reporting.
الدفاع — الفروقات المهمة
  • Network segmentation: data diodes (one-way) بين IT و OT، ليس firewalls فقط
  • Passive monitoring: Claroty، Nozomi، Dragos — لا يولد packets جديدة
  • Asset inventory: لا يمكن حماية ما لا تعرف وجوده — كثير من ICS shops لا يعرفون عدد PLCs لديهم
  • Engineering workstations: تعامل معها كـ Tier 0، لا يمكن استخدامها للبريد أو الويب
  • Backup configurations للـ PLCs offline — قد تكون فقدت حياة عند هجوم wiper
  • Adopt المعيار IEC 62443 + NIST SP 800-82

مصادر

  • Robert M. Lee — SANS ICS courses (ICS410, ICS515)
  • Dragos — Threat Intelligence Reports
  • CISA — ICS Advisories Database
  • MITRE ATT&CK for ICS — مصفوفة منفصلة عن enterprise
  • Andrew Ginter — books on OT security architecture