Tiếp theo loạt bài viết về vấn đề bảo mật trong môi trường OT, chúng tôi giới thiệu về giao thức DNP3 – vốn được sử dụng rộng rãi trong ngành điện ở Mỹ (tương đương với việc sử dụng giao thức IEC-101/104 ở châu Âu) – và một số vấn đề bảo mật có liên quan.
- Giới thiệu chung
DNP3 (Distributed Network Protocol, version 3 – Giao thức Mạng Phân tán, phiên bản 3) được GE-Harris Canada (trước đây là Westronic) giới thiệu và sử dụng từ năm 1993, là một giao thức truyền thông giữa các thiết bị trong hệ thống tự động hóa, nhất là trong ngành điện và nước. DNP3 được thiết kế để truyền thông giữa thiết bị thu thập dữ liệu và các phần tử điều khiển được tại hiện trường. DNP3 là một thành phần quan trọng trong hệ thống ICS (Industrial Control System), nơi nó được sử dụng bởi các trạm Master/ Slave Station, RTU (Remote Terminal Units), các IED (Intelligent Electronic Device – thiết bị điện thông minh) và các thiết bị thông minh khác. Hiện nay, giao thức DNP3 được sử dụng chính trong việc truyền thông giữa trạm Master/Slave, các thiết bị RTU, các IED.
Trong ngành điện, giao thức DNP3 được sử dụng phổ biến ở Mỹ và các thiết bị đến từ Mỹ trong khi giao thức IEC-101/104 được sử dụng phổ biến ở Châu Âu và các thiết bị đến từ Châu Âu.
- Cấu trúc giao thức DNP3
2.1. Cấu trúc giao thức DNP3
– Giao thức DNP 3 dựa trên mô hình EPA (Enhanced Performance Architecture).
Figure 1: Mô hình EPA
– Cấu trúc thông điệp DNP3
Hình dưới thể hiện cách mà một thông điệp DNP3 được truyền đi.
Figure 2: Trình tự gửi thông điệp DNP3
Mỗi lớp trong mô hình trên lấy thông tin được truyền từ lớp cao hơn và thêm thông tin về việc kết nối với các dịch vụ được thực hiện bởi lớp đó. Thông tin bổ sung được thêm vào dưới dạng header. Do đó kích thước thông điệp được tăng lên qua từng lớp mà nó đi qua. Quá trình nhận thông điệp DNP3 diễn ra ngược lại, thông điệp đi từ lớp vật lý qua lớp Data link, Pseudo-Transport để đến lớp Application. Khi nhận, thông điệp DNP3 cũng được tách rời, bỏ bớt dần các header trong quá trình ngược lại.
+ Lớp ứng dụng (Application layer)
Lớp ứng dụng chịu trách nhiệm thực hiện các thao tác trên các đối tượng dữ liệu trên thiết bị, bao gồm trả về giá trị thực (chức năng đọc), gán giá trị mới (chức năng ghi) cho thiết bị điều khiển, thiết bị giám sát. Các dịch vụ lớp ứng dụng được sử dụng để gửi các thông điệp đến các thiết bị DNP3 và nhận các thông điệp từ các thiết bị DNP3 khác.
Có thể hiểu lớp ứng dụng như giao diện vận hành (HMI – human machine interface), ứng dụng quản lý nhà máy, quản lý doanh nghiệp. Dữ liệu có thể là dữ liệu cảnh báo (alarm) và sự kiện (event), dữ liệu tín hiệu số (digital) hoặc tương tự (analog), thậm chí là file cấu hình được gửi đi từ trạm Master đến các RTU hoặc các IED. Ban đầu lớp ứng dụng hình thành dữ liệu thành các khối có kích thước có thể quản lý được gọi là ASDU (Application Service Data Unit – đơn vị dữ liệu dịch vụ ứng dụng). Sau đó, lớp ứng dụng tạo APDU (Application Protocol Data Unit – đơn vị dữ liệu giao thức ứng dụng) bằng cách kết hợp tiêu đề (header) với dữ liệu ASDU. Header của ứng dụng được gọi là APCI (Application Protocol Control Information – Thông tin điều khiển giao thức ứng dụng). Tùy thuộc tổng kích thước của dữ liệu được truyền (kích thước của ASDU) mà sẽ có một hay nhiều APDU được tạo ra – trường hợp yêu cầu nhiều APDU gọi là có nhiều đoạn phân mảnh. Kích thước của ASDU không bị giới hạn, kích thước của mỗi phân mảnh được giới hạn tối đa là 2048 byte.
+ Lớp Pseudo-Transport Layer
- Phân mảnh dữ liệu người dùng thành một hoặc nhiều khung liên kết dữ liệu và truyền dữ liệu đến lớp Data link.
- Ghép nối các khung liên kết dữ liệu nhận được từ lớp liên kết dữ liệu vào dữ liệu người dùng
- Kiểm soát tất cả các khía cạnh của liên kết dữ liệu ngoại trừ cấu hình liên kết dữ liệu
- APDU từ lớp ứng dụng có thể được gọi là TSDU (Transport Service Data Unit – đơn vị dữ liệu dịch vụ vận chuyển) trong lớp Pseudo-Transport Layer. Lớp truyền tải chia TSDU thành các đơn vị nhỏ hơn được gọi là TPDU (Transport Protocol Data Unit– đơn vị dữ liệu giao thức vận chuyển ứng dụng). Chúng được hình thành khi kết hợp với 1 byte header, kích thước data lớn nhất cho TPDU là 249 byte. Kích thước tổng thể của mỗi TPDU là 250 byte, vừa một ‘frame’ LPDU ở lớp Data link layer.
+ Lớp liên kết dữ liệu (Data link layer).
Lớp liên kết dữ liệu Data link được thiết kế để hoạt động được với các lớp vật lý.
Chức năng của Data link bao gồm:
- Đóng gói dữ liệu người dùng thành định dạng khung và truyền dữ liệu đến lớp vật lý.
- Giải nén khung liên kết dữ liệu nhận được từ lớp vật lý vào dữ liệu người dùng, kiểm tra và loại bỏ CRC.
- Kiểm soát lớp vật lý.
- Đáp ứng tất cả các khung hợp lệ nhận được từ lớp vật lý.
- Lớp này lấy TPDU từ lớp Pseudo-Transport Layer và thêm một header 10 byte và 32 byte CRC vào mỗi TPDU, thành LPDU
+ Lớp vật lý (Physical layer).
Lớp vật lý đề cập cách kết nối mạng. Với truyền thông nối tiếp có RS232, RS485, có thể có thêm sự chuyển đổi quang điện để sử dụng cáp quang cho khoảng cách truyền xa. DNP3 có thể được đóng gói trong TCP/IP để sử dụng đường truyền Ethernet.
2.2. Phương thức liên kết các trạm
Có các phương thức liên kết giữa các trạm, các thiết bị sử dụng giao thức DNP3 như các hình sau:
Figure 3: Master – Outstation (Slave)
Figure 4: Nhiều Outstation với một Master
Figure 5: Kết nối có nhiều Master và có sự phân cấp
Figure 6: Kết nối nhiều Master và Outstation, có phân cấp với bộ tập trung dữ liệu trung gian
Cấu trúc kết nối với TCP/IP
Figure 7: Kết nối DNP3 TCP/IP
- DNP3-SA
DNP3 Secure Authentication (DNP3-SA) là một lớp giao thức riêng biệt được kết hợp giữa lớp ứng dụng và chức năng vận chuyển của DNP3 như được minh họa trong hình dưới.
Figure 8: Mô hình EPA với sự tích hợp DNP3-SA
DNP3-SA sử dụng mã xác thực tin nhắn (MAC – Message Authentication Codes) để cung cấp các khả năng của một phiên giao tiếp an toàn bao gồm xác thực và kiểm tra tính toàn vẹn của tin nhắn. Vì DNP3-SA hiện là một lớp riêng biệt, nó có thể được sử dụng bởi các giao thức khác ngoài DNP3.
Giao thức Quản lý xác thực (AMP – Authorization Management Protocol) là một giao thức mới được sử dụng cùng với lớp ứng dụng DNP3 và DNP3-SA để quản lý tập trung những thiết bị nào được phép giao tiếp. AMP có thể được sử dụng để thực hiện kiểm soát truy cập dựa trên vai trò (RBAC – Role-Based Access Control). Trong trường hợp đó, nó thông báo cho trạm phát về những vai trò và quyền tương ứng để cấp phép chỉ định cho các thiết bị cụ thể.
Theo tùy chọn, danh sách kiểm soát truy cập (ACL – Access Control Lists) có thể được định cấu hình trên máy trạm để thực thi quyền ở mỗi điểm.
Sơ đồ xác thực như hình vẽ:
Figure 9: Yêu cầu và phản hồi giữa 2 trạm sử dụng DNP3-SA
Như với tất cả các giao tiếp DNP3, giao thức bảo mật DNP3-SA có thể hoạt động trên các liên kết nối tiếp hoặc bộ giao thức Internet.
- Điểm yếu bảo mật của giao thức DNP3
Truyền thông công nghiệp với mục đích ban đầu được thiết kế cho một hệ thống điều khiển công nghiệp độc lập, nên khi kết nối hệ thống OT với IT thì sẽ có rất nhiều các lỗ hổng bảo mật mà một kẻ tấn công có thể lợi dụng để thâm nhập vào hệ thống điều khiển đó và tiến hành các hành động phá hoại. Ta có thể kể ra các điểm yếu bảo mật của giao thức DNP3 như sau:
– DNP3 là một giao thức truyền thông mở, nó cho phép các IED giao tiếp với nhiều giao thức khác nhau như là TCP, UDP, HTTP, … Điều này sẽ dẫn đến việc có nhiều mối đe dọa và lỗ hổng trong hệ thống điều khiển công nghiệp phức tạp, các nhà máy thông minh.
– Thông điệp DNP3 rõ ràng, không mã hóa, hỗ trợ truy cập mạng từ xa cho tất cả các loại dữ liệu trong các IED. Một kẻ tấn công có thể đọc hiểu được các thông điệp DNP3 và tiến hành các hành động phá hoại.
– Hiện tại hệ thống điều khiển công nghiệp sử dụng nhiều thiết bị khác về cả phiên bản lẫn nhãn hiệu dẫn tới các thiết bị này hỗ trợ các phiển bản DNP khác nhau. Một kẻ phá hoại có thể lợi dụng lỗ hổng của phiên bản DNP cũ hơn để tấn công vào hệ thống ICS.
– DNP3 không có bất kỳ cơ chế bảo mật nào cho các IED và biện pháp bảo mật duy nhất để xác thực truy cập từ xa là tên người dùng và mật khẩu chỉ có sẵn cho phiên bản DNP3-SA. Thực tế thì tên và mật khẩu của các IED đều do dưới hiện trường xác lập nên một kẻ tấn công có thể lợi dụng quan hệ xã hội với nhân sự dưới hiện trường để có được thông tin này từ đó có thể thâm nhập vào hệ thống để tiến hành các hoạt động phá hoại.
– Giao thức cho phép các ứng dụng Client từ xa truy cập vào IED để tải xuống tệp định nghĩac cấu hình (Configuration Definition), từ đó tạo ra khả năng tương tác với IED, điều khiển IED từ xa, cấu hình lại IED, khởi động lại IED. Kẻ tấn công có thể tận dụng các Client này để có được tệp Configuration Definition của IED, từ đó có thể thâm nhập vào hệ thống để tiến hành các hành động phá hoại như tắt các IED, cấu hình lại IED với mục đích xấu, hoặc lợi dụng IED này để tải xuống cấu hình của các IED khác, …
– Ngay cả khi hệ thống điều khiển công nghiệp sử dụng phiên bản DNP3-SA (phiên bản có hỗ trợ xác thực truy cập từ xa) thì kẻ tấn công có thể tận dụng các DNP3-SA phiên bản cũ để tấn công vào hệ thống.
Ngoài ra giao thức truyền thông DNP3 có các điểm yếu chung của các giao thức truyền thông công nghiệp như:
– 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 thiết bị.
– 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 DNP3 để 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ị DNP3, 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.
- Tại sao nên dùng thiết bị, phần mềm hỗ trợ phiên bản DNP3-SA
Nên dùng phiên bản DNP3-SA vì những lý do sau:
– DNP3-SA luôn hỗ trợ đồng bộ các thiết bị, mạng điều khiển sử dụng các phiên bản DNP3 cũ.
– Xác thực mật mã từ đầu đến cuối ở lớp ứng dụng vượt ra ngoài VPN hoặc TLS.
– Giao thức hoạt động từ điểm đầu cuối này đến điểm dầu cuối khác không phân biệt là truyền thông TCP/IP, truyền thông nối tiếp hay sóng Radio.
– Đáp ứng tiêu chuẩn bảo mật IEC 62351.
– Hỗ trợ các thiết bị, các mạng truyền thông không mã hóa thông điệp, dữ liệu.
– Mạng truyền thông sử dụng DNP3 IP có hỗ trợ TLS.
– Mỗi hoạt động quan trọng truy cập, thay đổi cấu hình các IED đều phải xác thực. Xác thực có thể được thực hiện theo hai hướng từ trạm Master hoặc trạm Outstation.
– Hỗ trợ nhiều dạng người dùng với các quyền hạn khác nhau (Admin, Engineering, Operator, Only view user). Các chức năng quyền hạn người dùng được thiết lập phù hợp với yêu cầu tổ chức của đơn vị sử dụng.
- Kết luận
Giống như giao thức truyền thông IEC 104, giao thức truyền thông DNP3 cũng là một giao thức truyền thông được sử dụng phổ biến trong ngành điện (Nhà máy điện, trạm điện, hệ thống lưới điện). Trong khi IEC 104 dùng chủ yếu ở Châu Âu và các thiết bị đến từ Châu Âu thì giao thức DNP3 được sử dụng phổ biến ở Mỹ và các thiết bị đến từ Mỹ. Giao thức DNP3 chứa nhiều điểm yếu và lỗ hổng bảo mật mà một kẻ tấn công có thể lợi dụng thâm nhập tấn công vào các hệ thống điều khiển để tiến hành các hành vi phá hoại. Như bài trước đã đề cập ngành điện với đặc thù đặc biệt quan trọng với nhu cầu dân sinh, quốc phòng, an ninh, sản xuất công nông nhiệp nên các hành động phá hoại sẽ gây ra các hậu quả nghiêm trọng. Vì vậy cần nghiên cứu, thử nghiệm, triển khai các giải pháp để quản lý, khắc phục, giảm thiểu các điểm yếu, lỗ hổng bảo mật liên quan đến giao thức truyền thông DNP3.
Tài liệu tham khảo
[1]. Practical modern SCADA protocols, Gordon Clarke CP Eng, BEng, MBA, Western Technical Services, Hobart, Australia; Deon Reynders Pr.Eng, BSc(ElecEng)(Hons), MBA, IDC Technologies, Perth, Australia; Edwin Wright BSc, BE(Hons)(Elec), MIPENZ, IDC Technologies, Perth, Australia.
[2]. ABB DNP3 communication mannual, https://library.e.abb.com/public/27dc10ac4ab57d35c1257d940037f7c8/1MRK511301-UUS_-_en_Communication_protocol_manual__DNP__670_series_2.0.pdf
[3]. https://www.dnp.org
[4]. DNP3-SA Version 6,
[5]. DNP3 Security Notice SN2017-001, CrashOverride/Industroyer Malware,
[6]. An event buffer flooding attack in DNP3 controlled SCADA systems, https://www.informs-sim.org/wsc11papers/235.pdf
[7]. DNP3 Smart Grid, https://www.researchgate.net/publication/289529740_Smart_Grid_DNP3_Vulnerability_Analysis_and_Experimentation
Thuật ngữ viết tắt:
ICS: Industrial Control System, Hệ thống điều khiển công nghiệp.
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, Bộ đ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.
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.
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.
PND3: Distributed Network Protocol, version 3.
DNP3-SA: DNP3-Secure Authentication.
EPA: Enhanced Performance Architecture.
ASDU: Application service data units.
APDU: Application protocol data unit.
APCI: Application protocol control information.
TSDU: Transport service data unit.
TPDU: Transport protocol data unit.
PDU: Protocol Data Unit.
ADU: Application Data Unit.
CRC: Cyclical Redundancy Check.
TLS: Transport Layer Security.