Giao thức IEC-104 và vấn đề bảo mật

 

Nếu như bài viết thứ 2 trong loạt bài viết bảo mật trong môi trường OT đã đi vào vấn đề bảo mật của giao thức Modbus, giao thức lâu đời và phổ biến trong môi trường công nghiệp, thì nội dung bài viết thứ 3 này là vấn đề bảo mật của giao thức IEC 60870-5-104, một giao thức truyền thông sử dụng phổ biến trong ngành điện, ngành sản xuất mà sản phẩm của nó đặc biệt quan trọng trong đời sống, sản xuất, an ninh quốc gia. Về nội dụng bài viết, sau khi giới thiệu cấu trúc và các điểm yếu bảo mật của giao thức IEC 60870-5-104, chúng tôi phân tích cách thức mã độc Industroyer tận dụng các điểm yếu bảo mật của giao thức IEC 60870-5-104 để tấn công vào hệ thống lưới điện của thủ đô Kiev (Ukraina) năm 2016.

 

  1. Giới thiệu chung.

Bộ tiêu chuẩn IEC 60870 xác định các tiêu chuẩn truyền thông sử dụng cho điều khiển tự động hóa. Ban đầu, Ủy ban IEC phát triển giao thức truyền thông IEC 60870-5-101 (dưới đây gọi là IEC-101) chuẩn cho các hệ thống nhà máy điện, các trạm điện, các hệ thống kỹ thuật điện. Giao thức này tương thích với các tiêu chuẩn IEC 60870-5-1 ~ 60870-5-5, sử dụng truyền thông nối tiếp (serial communication). Giao thức truyền thông IEC 60870-5-104 (dưới đây gọi là IEC-104)  là phiên bản mở rộng của IEC-101 sử dụng giao thức TCP/IP với mục đích mở rộng phạm vi kết nối, có thể định tuyến chính xác các gói tin, đơn giản hóa cơ sở hạ tầng kết nối mạng. IEC-104 được sử dụng rộng rãi trong các nhà máy điện, các trạm điện, các hệ thống kỹ thuật điện.

  1. Giao thức IEC-101 và IEC-104

2.1. Cấu trúc giao thức IEC-101

Giao thức truyền thông IEC-101 sử dụng truyền thông nối tiếp theo mô hình cấu trúc EPA (Enhanced Performance Architecture) với 3 lớp: Lớp vật lý, lớp liên kết và lớp ứng dụng, minh họa bởi hình dưới đây.

–         Sự tương quan giữa IEC-101 và OSI model

EPA Model   OSI Model
IEC 60870-5-4 Application Layer

(ASDU, APCI)

Application (Layer 7)
IEC 60870-5-3
  Presentation (Layer 6)
Session (Layer 5)
Transport (Layer 4)
Network (Layer 3)
IEC 60870-5-2 Link Layer Data link (Layer 2)
IEC 60870-5-1
Serial communication port Physical Layer Physical (Layer 1)

APCI: Application Protocol Control Information

ASDU: Application Service Data Unit

APDU: Application Protocol Data Unit

Lớp vật lý: Định nghĩa đặc điểm kỹ thuật phần cứng của giao diện truyền thông và cấu hình mạng (IEC-101 sử dụng truyền thông nối tiếp).

Lớp liên kết dữ liệu: xác định rõ định dạng khung, và quy trình truyền thông của thông tin. Tài liệu tiêu chuẩn IEC tương ứng là IEC 60870-5-1 và IEC 60870-5-2.

Lớp ứng dụng: Cung cấp các phương tiện công cụ để người dùng thu nhận và đưa vào các dữ liệu lên mạng. Tài liệu IEC tương ứng là IEC 60870-5-3 và IEC 60870-5-4.

–   IEC 101 Frame format: Gồm 3 kiểu frame với độ dài và chức năng sử dụng khác nhau.

+  Frame with Variable Length: Chiều dài khung thay đổi. Được sử dụng để truyền nhận dữ liệu giữa trạm điều khiển và trạm được điều khiển. Start Byte = 0x68.

+  Frame with Fixed Length: Chiều dài khung cố định. Được sử dụng cho các dịch vụ ở lớp liên kết (link layer services), đôi khi được sử dụng làm tín hiệu xác nhận (confirmation). Start Byte = 0x10.

+  Single Character Data: Các ký tự đơn được sử dụng để xác nhận lớp liên kết và truyền dữ liệu người dùng. (0xE5: xác nhận tích cực; 0xA2: xác nhận

–   IEC101 Frame format (Variable Length):

IEC 01 Frame format dạng rút gọn như hình dưới

Start L L Start (Repeat) CF LA TI VSQ COT ASDU Information object data 1 Information object data n CS Stop

Kết nối truyền thông giữa hai thiết bị sử dụng truyền thông IEC-101 sẽ có hai dạng truyền thông cân bằng (balanced) và không cân bằng (unbalanced), được quy định tại Control Field octet (8bit), và được giải thích dưới đây.

–   Truyền thông cân bằng (balanced): Kết nối điểm – điểm (point-to-point), thiết bị Master và Slave đều có thể gửi và nhận yêu cầu.

+  DIR=1: Tin nhắn gửi từ Master đến Slave. DIR = 0: tin nhắn gửi từ Slave đến Master.

+  PRM=1: Tin nhắn được gửi từ Master. PRM = 0: tin nhắn được gửi từ Slave.

+  FCB: thay đổi giá trị luân phiên bằng 0 hoặc 1 trên mỗi lần gửi tin từ trạm Master đến cùng một trạm Slave, dùng cho loại bản tin SEND/CONFIRM hoặc REQUEST/RESPOND. Bit này dùng để chống mất mát hoặc trùng lặp thông tin truyền.

+  DFC (Data Folow Control): Điều khiển luồng dữ liệu.

+  Function: Mã chức năng điều khiển.

–   Truyền thông không cân bằng (unbalanced): Kết nối kiểu Master/Slave, trong đó chỉ trạm Master mới có quyền gửi yêu cầu và trạm Slave thực hiện.

+  Bit msb không sử dụng.

+  PRM=1: Tin nhắn được gửi từ Master. PRM = 0: tin nhắn được gửi từ Slave.

+  FCB: Thay đổi giá trị luân phiên bằng 0 hoặc 1 trên mỗi lần gửi tin từ trạm Master đến cùng một trạm Slave, dùng cho loại bản tin SEND/CONFIRM hoặc REQUEST/RESPOND. Bit này dùng để chống mất mát hoặc trùng lặp thông tin truyền.

+  DFC (Data Folow Control): Điều khiển luồng dữ liệu.

+  Function: Mã chức năng điều khiển.

Cấu trúc giao thức IEC-104

Giao thức IEC-104 được phát triển từ giao thức IEC-101 với việc sử dụng truyền thông TCP/IP để gói phần APDU=APCI+ASDU của giao thức IEC-101 vào gói tin TCP/IP. Có nghĩa giao thức IEC-104 đã được thêm vào lớp Network và Transport, lớp vật lý và lớp liên kết cũng được thay đổi để phù hợp với chuẩn truyền thông TCP/IP. Giao thức IEC-104 sử dụng mô hình cấu trúc EPA như hình dưới.

EPA (IEC-104)   OSI
Các ASDU từ IEC-101 Application

(layer 7)

(ASDU, APCI)

  Application (Layer 7)
Application Protocol Control Information

Transport Interface (sử dụng TCP/IP)

  Presentation (Layer 6)
Session (Layer 5)
Chuẩn truyền thông mạng TCP/IP Protocol suite (RFC 2200) Transport (layer4) Transport (Layer 4)
Network (Layer3) Network (Layer 3)
Link (Layer2) Data link (Layer 2)
Physical (layer1) Physical (Layer 1)

IEC-104 là kết quả của việc nhúng (embed) phần APDU của IEC-101 vào khung TCP/IP, đã bỏ đi 1byte Checksum. Sự kết hợp với TCP/IP không xác định nội dung và ý nghĩa của dữ liệu, mà ý nghĩa chính là mở rộng phạm vi kết nối và các thông điệp có thể được định tuyến chính xác.

Giao thức IEC-104 thường được sử dụng ở cấp độ điều khiển hoặc các node mạng trung tâm trở lên, dùng thiết bị chuyên dụng để chuyển đổi từ IEC-101 thành IEC-104, như hình dưới.

  1. Một số điểm yếu bảo mật của giao thức IEC-104

–   Thiếu tính xác thực: Các thành phần trong mạng không được xác thực ở bất kỳ cấp độ nào của giao thức IEC-104. Tất cả các thiết bị không cần xác thực quyền truy cập vào mạng do đó kẻ tấn công có thể thực hiện các hành động sau:

Chèn thiết bị, trạm điều khiển giả mạo vào mạng mà không cần xác thực.

Thu thập và phân tích dữ liệu mạng.

Truy cập không cần xác thực tới Input Module, Output Module

Truy cập không cần xác thực tới Processor

Tấn công Man-In-The_Middle (MITM) vào giữa Input Modules, Output Modules và Processor

Tấn công MITM vào giữa Communication Module và Processor

Tấn công MITM vào giữa CPU và MTU

Tấn công MITM vào giữa CPU và RTU

Tấn công MITM vào giữa MTU và RTU

Tấn công MITM vào giữa CPU và SCADA

–   Địa chỉ thiết bị Slave được cài đặt trên thiết bị Slave. Một kẻ tấn công sau khi thực hiện tấn công Traffic Analysis Attack sẽ phát hiện ra các địa chỉ chưa sử dụng đến trong mạng, sau đó chèn các thiết bị của chúng vào đó để thực hiện các hành động phá hoại.

–   Thiếu tính toàn vẹn: Không kiểm tra được tính toàn vẹn trong giao thức IEC-104 (đã bỏ Checksum bit), từ đấy chúng thực hiện các hành động phá hoại.

–   Độ dài khung bị giới hạn: Mỗi thông điệp IEC-104 có độ dài khung lớn nhất (Maximum Frame Length) là 255 bytes, số đối tượng thông tin lớn nhất là 127 đối tượng. Kẻ tấn công có thể tấn công vào trạm IEC 60870-5-104 master hoặc slave bằng cách đưa vào các thông điệp có độ dài khung vượt quá 255 bytes dẫn đến lỗi tràn bộ đệm (buffer overflow).

–   Thiếu tính bí mật: Nội dung thông điệp không được mã hóa. Kẻ tấn công có thể sử dụng công cụ nghe lén (sniffer) để đánh cắp thông tin được trao đổi.

Trở lại với Control Field octet, nội dung thông điệp không dược mã hóa nên kẻ tấn công thậm chí có thể thay đổi giá trị các bit trong Control Field octet.

+ Thay đổi ADC bit trong Control Field octet: ACD (Access demand) bit chuyển từ Slave đến Master, thông báo cho Master biết Slave có dữ liệu số, sau đó nếu Master muốn đọc thì Master sẽ gửi yêu cầu đọc. Một kẻ tấn công tận dụng sửa đổi bit này, làm cho Master hiểu sai và đưa ra hành động không đúng.

+ Thay đổi DFC bit trong Control Field octet: DFC (data flow control) bit gửi từ Slave đến Master thông báo Slave không thể nhận thêm dữ liệu. Kẻ tấn công sẽ sửa đổi bit này làm cho Master luôn luôn ở trạng thái chờ liên tục, hoặc dữ liệu sẽ được gửi liên tục về Slave gây nên tình trạng buffer overflow.

+ Thay đổi giá trị của một ASDU trong gói IEC-104: Bit địa chỉ chung và địa chỉ liên kết (ASDU và LA) bao gồm địa chỉ trạm và địa chỉ liên kết tương ứng. Bit này thay đổi sẽ dẫn đến hoạt động của RTU không như mong muốn.

Với điểm yếu này kết hợp với việc truy cập cập không cần xác thực và địa chỉ thiết bị Slave cài đặt ngay tại thiết bị Slave, kẻ tấn công có thể thêm vào các thiết bị khác và gửi lên các tin nhắn giả mạo vào mạng truyền thông IEC-104 để thực hiện các hành động phá hoại ví dụ như tấn công từ chối dịch vụ DOS;  Buffer overflow attack; Spoofing; Data modification.

Các điểm yếu sau không chỉ đúng với thiết bị sử dụng IEC-104 mà còn đúng với nhiều giao thức khác trong môi trường công nghiệp.

–   Các thiết bị truyền thông đang sử dụng trong các hệ thống công nhiệp thường không đáng tin cậy về khía cạnh bảo mật thông tin. Các thiết bị điều khiển, thiết bị mạng… thường có thể bị truy cập với tên và mật khẩu mặc định của nhà sản xuất.

–   Đối với truyền thông IEC-104, thời gian time-out để thiết lập kết nối giữa hai thiết bị tối đa 30s, còn time-out để nhận phản hồi tính từ thời điểm gửi yêu cầu sau cùng tối đa 15s. Một kẻ tấn công sau khi đưa được thiết bị vào mạng có thể thay đổi các giá trị này gây ra lỗi vượt quá thời gian xử lý dữ liệu, tín hiệu, từ đó có thể dẫn đến dừng máy, dừng sản xuất.

–   Hệ thống điều khiển tích hợp nhiều giao thức truyền thông khác nhau được kết nối với IEC-104 để truyền nhận dữ liệu phục vụ chức năng điều khiển giám sát thiết bị trường. Một kẻ tấn công có thể thông qua giao thức khác để truy cập vào các thiết bị đang sử dụng dữ liệu và tín hiệu của thiết bị IEC-104, sau đó thực hiện các hành vi phá hoại.

–   Trong các hệ thống ICS, các trạm điều khiển có chức năng giống nhau thường sử dụng chung một thiết kế. Một kẻ tấn công có thể dùng những thông tin đã khai thác được từ trạm điều khiển này để tấn công vào một trạm điều khiển khác có chức năng tương tự.

–         Các phần mềm trong hệ thống điều khiển công nghiệp không thường xuyên được cập nhật, cập nhật chậm hoặc không được đồng bộ hóa. Kẻ tấn công có thể tận dụng điểm yếu của các phiên bản cũ, thâm nhập vào hệ thống để thực hiện các hành vi phá hoại.

  1. Phần mềm độc hại Industroyer

Tháng 12/2016, vụ tấn công của mã độc Industroyer vào hệ thống lưới điện tại thủ đô Kiev (Ukraina) đã làm mất điện ở 30 trạm điện làm ảnh hưởng đến khoảng 225.000 khách hàng. Mã độc Industroyer bao gồm nhiều thành phần dùng để tấn công lợi dụng các giao thức IEC-101, IEC-104, IEC 61850, OPC và DNP3. Các thành phần này được sử dụng để mở các máy cắt (Circuit breaker-thiết bị đóng ngắt nguồn điện) và đưa chúng rơi vào một vòng lặp vô hạn, kết quả các máy cắt luôn mở-ứng với việc ngắt điện-cho tới khi các nhân viên vận hành chuyển sang chế độ vận hành thủ công để đóng chúng lại. Dưới đây chúng tôi phân tích việc mã độc Industroyer khai thác lỗ hổng giao thức IEC-101 và IEC-104 trong vụ việc.

4.1.          Thành phần khai thác lỗ hổng của IEC-101

Giao thức truyền thông IEC-101 được sử dụng trong công nghiệp giữa hệ thống điều khiển và các khối điều khiển thiết bị đầu cuối từ xa (RTU), kết nối truyền thông nối tiếp. Thành phần khai thác lỗ hổng của IEC-101 có khả năng giao tiếp với các thiết bị sử dụng giao thức này và gửi các gói tin độc hại đến nạn nhân.

Một đoạn mã từ thành phần IEC-101, mục đích tiếp cận và điều khiển thiết bị RTU.

StartByte = 0x68:

ControlField

dir = false //Kết nối truyền thông không cân bằng

prm = true // thông điệp điều khiển

fcb = true // dịch vụ SEND/CONFIRM hoặc REQUEST/RESPOND không được lặp lại.

fcv = true //giá trị fcb là hợp lệ

funtionCode = 3 //Dạng Frame Send/ CONFIRM expected, chức năng dữ liệu người dùng

linkAddress = 1 //địa chỉ trạm Station

typeIdentification = C_DC_NA_1 (46) // mã (46): Xử lý thông tin điều khiển

variableStructureQualifierFile

sq=false // Có chứa nhiều đối tượng thông tin

number= 1 // số đối tượng thông tin là 1

causeOfTransmissionField

testBit=False // Không test

P/N = 0 //Xác nhận sườn lên của một yêu cầu kích hoạt

causeOfTransmission = Activation (0x6=6)

Chương trình này được sử dụng lặp đi lặp lại tại tất cả các đối tượng thông tin giúp mã độc có thể kết nối và kiểm soát toàn bộ các thiết bị RTU sử dụng giao thức IEC-101 có trong mạng. Mục đích chính của thành phần IEC-101 là chuyển trạng thái ON/OFF của các các thiết bị đóng ngắt.

4.2.          Thành phần khai thác lỗ hổng của IEC-104

Nhắc lại, giao thức IEC-104 là mở rộng của IEC-101 để truyền thông tin trên nền tảng truyền thông TCP/IP. Thành phần IEC-104 trong mã độc Industroyer có khả năng tùy biến bởi kẻ tấn công, tùy thuộc vào từng cơ sở hạ tầng. Thành phần này cho phép đọc cấu hình hệ thống, cấu hình các Station (trạm điều khiển) kèm theo các thuộc tính của truyền thông IEC-104. Các thuộc tính có thể của cấu hình:

Thuộc tính Giá trị kỳ vọng Mục đích
Target IP Địa chỉ IP Địa chỉ IP cho truyền thông sử dụng giao thức IEC-104
Target_Port Số của Port Xác định số của Port
Logfile filename Xác định filename cho logfile
Stop_comm_service 1 hoặc 0 1: Cho phép kết thúc quá trình.

0: Không cho phép kết thúc quá trình

Change 1 hoặc 0 1: Giá trị Switch của ASDU bị đảo ngược trong các lần lặp lại.

0: Giá trị Switch của ASDU không đảo ngược trong các lần lặp lại.

first_action On hoặc off Giá trị Switch ban đầu trong gói ASDU cho lần lặp đầu tiên.
silence 0 hoặc 1 Cho phép hoặc vô hiệu hóa console output.
uselog 1 hoặc 0 Cho phép hoặc vô hiệu hóa việc ghi vào file.
stop comm service name tên của process Tên của quá trình sẽ bị kết thúc.
command type def; short; long or persist  
operation Range; sequence or shift Chỉ rõ dạng lặp lại cho IOA.
range Dạng của của IOAs (giống như sequence và shift) Xác định rõ range cho IOA.

 

Cấu hình này có thể chứa nhiều trạm. Một khi đọc file cấu hình, thành phần IEC-104 tạo ra liên kết đến mỗi trạm được khai báo trong file cấu hình. Trong mỗi liên kết như vậy chương trình khai thác IEC-104 sẽ cố gắng truyền thông với địa chỉ IP được chỉ định. Trước khi kết nối được thực hiện xong, thành phần IEC-104 cố gắng kết thúc các quy trình một cách hợp lệ. Nó chỉ thực hiện như vậy khi stop_comm_service = 1. Thành phần khai thác IEC-104 kết thúc quy trình có tên trong stop_comm_service_name.

Thành phần khai thác IEC-104 kết nối tới địa chỉ IP đã chỉ định và bắt đầu gửi các gói tin với địa chỉ ASDU đã được khai báo trong file cấu hình. Mục đích của kết nối này là tương tác với IOA. Trong file cấu hình, kẻ tấn công có thể định nghĩa thuộc tính operation để xác định chính xác cách single command type IOAs được tương tác. Kẻ tấn công có thể sử dụng cách thức này để xác định các IOA có thể trong thiết bị mục tiêu.

Các bước có thể thực thi của thành phần IEC-104 như sau:

–    Xác định mục tiêu cụ thể.

–   Liệt kê các IOA trên các mục tiêu.

–   Liên tục đặt thiết bị ở trạng thái mở.

–   Hoặc đặt thiết bị ở trạng thái đóng/mở liên tục.

Các tín hiệu I/O, các dữ liệu điều khiển được gắn với các địa chỉ của bộ nhớ. Các tín hiệu và dữ liệu được định dạng khác nhau tùy thuộc vào chức năng sử dụng. Thành phần IEC-104 có thể thu thập, phân tích và khai thác các thông tin này để thâm nhập vào và thực hiện điều khiển các thiết bị trường.

  1. Kết luận

Giao thức IEC-104 được sử dụng phổ biến trong ngành điện, nhà máy điện, trạm biến áp, phân phối, … Cũng như tuyệt đại đa số giao thức truyền thông công nghiệp khác, IEC-104 chứa nhiều điểm yếu bảo mật. Kẻ tấn công có thể xâm nhập vào các hệ thống công nghiệp để thực hiện các hành vi phá hoại bằng cách tận dụng các điểm yếu bảo mật của IEC-104 mà cuộc tấn công của mã độc Industroyer là một vụ việc điển hình, gây ra hậu quả rất nghiêm trọng. Ngành điện với đặc thù vô cùng nhạy cảm, có tác động to lớn đến mọi mặt cả dân dụng; sản xuất công nghiệp và an ninh quốc gia nên các hành động phá hoại sẽ gây hậu quả khôn lường.

Do đó cần nghiên cứu triển khai các giải pháp quản lý, khắc phục, giảm thiểu các rủi ro an ninh bảo mật liên quan đến giao thức IEC-104 để đảm bảo nguồn điện luôn được cung cấp liên tục phục vụ nhu cầu dân sinh, nhu cầu sản xuất, …

 

Thuật ngữ viết tắt:

IEC: International Electrotechnical Commission, ủy ban kỹ thuật điện quốc tế

ICS: Industrial Control System, hệ thống điều khiển công nghiệp

DCS: Distributed control system, hệ thống điều khiển phân tán

SCADA: Supervisory Control and Data Acquisition, hệ thống điều khiển giám sát và thu thập dữ liệu.

PLC: Programmable logic controller, hộ điều khiển Logic khả trình.

HMI: Human Machine Interface, giao diện người máy.

RTU: Remote Terminal Unit, thiết bị đầu cuối điều khiển được từ xa.

MTU: Master Terminal Unit, thiết bị đầu cuối chính

IED: Intelligent Electronic Device, thiết bị điện tử thông minh, sử dụng các bộ vi xử lý điều khiển các thiết bị điện.

EPA: Enhanced Performance Architecture.

APCI: Application Protocol Control Information

ASDU: Application Service Data Unit

APDU: Application Protocol Data Unit

TCP/IP: Transmission Control Protocol (TCP)/Internet Protocol, giao thức điều khiển truyền nhận, giao thức liên mạng.

OPC: Open Platform Communications, nền tảng truyền thông mở.

I/O: Input/Output.

PCN: Process Control Network.

ACD: Access demand

DFC: Data flow control

IOA: Information Object Address

 

Tài liệu tham khảo:

[1]  International standard IEC 60870-5-104, second edition 2006/06. International Electrotechnical Commission.

[2]  ABB 500NMD and 500NMS family, 2019/06/25, ABB technical manual.

[3]  SCADA Protocols Introduction. Kamjoo Bayat, https://www.pbscontrol.com/pdf/SCADAProtocols.pdf

[4]  SCADA communication protocols: vulnerabilities, attacks and possible mitigations.

[5]  https://www.researchgate.net/publication/257808922_SCADA_communication_protocols_vulnerabilities_attacks_and_possible_mitigations

[6]  Testing and Exploring Vulnerabilities of the Applications Implementing IEC 60870-5-104 Protocol. Zi Bin, Cheah. http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=0513EED48102FDAD1BD940260EF12B11?doi=10.1.1.548.7490&rep=rep1&type=pdf

[7]  Attacking IEC-60870-5-104 SCADA Systems

[8]    https://www.spear2020.eu/cmsMedia/Uploads/ Publications/radoglou2019attacking.pdf