-
08/10/2013
-
401
-
989 bài viết
Công cụ khai thác lỗ hổng giao thức MODBUS
Giao thức MODBUS là một giao thức mở hoạt động theo cơ chế master-slave. Đây là một giao thức được sử dụng rộng rãi trong nhiều lĩnh vực như tự động hóa, công nghiệp, điện lực,.....Tuy nhiên do không có cơ chế xác thực nên giao thức này có thể bị khai thác dẫn tới những hậu quả khó lường cho hệ thống điều khiển công nghiệp.
Cơ chế hoạt động của modbus được minh họa theo hình 1. Master gửi bản tin request tới địa chỉ của một slave (căn cứ theo ID) để yêu cầu slave trả về một giá trị thông tin đang lưu tại thanh ghi của slave hoặc master có thể gửi lệnh ghi thông tin vào thanh ghi trên slave. Như ở hình dưới, các MODBUS slave được đấu nối với các thiết bị công nghiệp (khung màu đỏ). Slave ghi nhận thông tin trạng thái của các thiết bị này vào thanh ghi và gửi về cho MODBUS master (thường là một máy tính chạy phần mềm ứng dụng). Tùy thuộc vào giá trị thu về mà master có thể ra các lệnh điều khiển khác nhau, như đóng cắt điện, tắt mở máy bơm nước.
SCADA Shutdown Tool
SCADA Shutdown Tool (SST) là một công cụ những kẻ tấn công kiểm tra và liệt kê các bộ slave và hệ thống bảo mật SCADA, đọc các giá trị thanh ghi của bộ slave hoặc ghi đè dữ liệu của thanh ghi. SST cũng có thể cho phép kẻ tấn công liệt kê tất cả các loại thanh ghi của bộ slave.
Hình 2. giao diện công cụ SST
Hình ảnh trên là giao diện công cụ SST, có thể vận hành trên ba chế độ, cụ thể là:
Do giao thức modbus không có cơ chế xác thực khi truyền thông giữa Master và Slave nên những kẻ tấn công có thể khai thác lỗ hổng này để tạo và gửi các gói tin request đến các slave để truy cập và sửa đổi các thanh ghi của slave. Những kẻ tấn công chỉ có thể thực hiện cuộc tấn công này nếu có thể gửi các gói tin modbus giả mạo đến slave. Các công cụ hack như Metasploit được dùng để thực hiện các cuộc tấn công slave khác nhau:
Quét Modbus Slaves:
Kẻ tấn công sử dụng Auxiliary/Scanner/Scada/Modbus_fidunitid là một mô đun trong metasploit để quét và phát hiện các slaves.
Hình 3. Dò quét ID của slaveỞ hình trên, sau khi phát hiện có thiết bị slave với IP là 192.168.1.104, msf được chạy để quét các ID của thiết bị. Dựa vào kết quả trả về, thấy có 2 thiết bị slave với stationID=2 và 4 phản hồi, các thiết bị có stationID=(1,3,5,6) có trạng thái không khả dụng (not in use).
Kẻ tấn công sử dụng Auxiliary/Scanner/Scada/Modbusclient Metasploit module để thực hiện đọc thông tin lưu ở 5 thanh ghi khác nhau của slave có ID=2, mỗi thanh ghi bắt đầu từ địa chỉ số 0. Kết quả thu về được các giá trị đang lưu hiện thời trên 5 thanh ghi (11,22,33,0,0).
Hình 4. Đọc giá trị thanh ghiGiá trị trên các thanh ghi này thường được thu thập và gửi tới một ứng dụng SCADA, để từ đó biết được trạng thái hoạt động của hệ thống. Căn cứ vào giá trị thu được, hệ thống SCADA có thể tự động kích hoạt các lệnh điều khiển nếu thấy giá trị bất thường (ví dụ: khi hệ thống điện quá áp hoặc sụt áp thì hệ thống sẽ cảnh báo hoặc thậm chí tự động cắt điện nếu thấy giá trị thanh ghi vượt 1 ngưỡng cho trước).
Biết được nguyên lý này, kẻ gian thay đổi giá trị thanh ghi bằng cách sử dụng modun tấn công ghi đè giá trị mới lên thanh ghi. Ví dụ ở hình dưới, kẻ gian ghi đè giá trị 101010101010 lên 10 thanh ghi tại slaveID=4. Việc này có thể gây ra một sự bất thường trên hệ thống SCADA và kích hoạt một lệnh điều khiển nào đó làm ngưng trệ hoạt động của hệ thống.
Hình. Ghi đè giá trị thanh ghi
Để phòng tránh dạng tấn công này, giải pháp chính đó là cách ly hoặc khoanh vùng phạm vi của hệ thống điều khiển. Bên cạnh đó cần có cơ chế xác thực bên thứ 3 (có thể là người vận hành) trước khi cho phép một hành động điều khiển quan trọng trên hệ thống.
-------------------
Tham khảo
Internet
CEHv11
Cơ chế hoạt động của modbus được minh họa theo hình 1. Master gửi bản tin request tới địa chỉ của một slave (căn cứ theo ID) để yêu cầu slave trả về một giá trị thông tin đang lưu tại thanh ghi của slave hoặc master có thể gửi lệnh ghi thông tin vào thanh ghi trên slave. Như ở hình dưới, các MODBUS slave được đấu nối với các thiết bị công nghiệp (khung màu đỏ). Slave ghi nhận thông tin trạng thái của các thiết bị này vào thanh ghi và gửi về cho MODBUS master (thường là một máy tính chạy phần mềm ứng dụng). Tùy thuộc vào giá trị thu về mà master có thể ra các lệnh điều khiển khác nhau, như đóng cắt điện, tắt mở máy bơm nước.
Hình 1. Hệ thống công nghiệp sử dụng giao thức MODBUS
SCADA Shutdown Tool
SCADA Shutdown Tool (SST) là một công cụ những kẻ tấn công kiểm tra và liệt kê các bộ slave và hệ thống bảo mật SCADA, đọc các giá trị thanh ghi của bộ slave hoặc ghi đè dữ liệu của thanh ghi. SST cũng có thể cho phép kẻ tấn công liệt kê tất cả các loại thanh ghi của bộ slave.
Hình 2. giao diện công cụ SST
Hình ảnh trên là giao diện công cụ SST, có thể vận hành trên ba chế độ, cụ thể là:
- Chế độ Safe-mode: chỉ đọc giá trị dữ liệu non-zero (#0) trên các thanh ghi
- Chế độ Real-mode: ghi đè giá trị non-zero(#0)
- Aggressive: ghi đè tất cả các thanh ghi. Chế độ này sẽ phá hoại hoạt động của slave.
Do giao thức modbus không có cơ chế xác thực khi truyền thông giữa Master và Slave nên những kẻ tấn công có thể khai thác lỗ hổng này để tạo và gửi các gói tin request đến các slave để truy cập và sửa đổi các thanh ghi của slave. Những kẻ tấn công chỉ có thể thực hiện cuộc tấn công này nếu có thể gửi các gói tin modbus giả mạo đến slave. Các công cụ hack như Metasploit được dùng để thực hiện các cuộc tấn công slave khác nhau:
Quét Modbus Slaves:
Kẻ tấn công sử dụng Auxiliary/Scanner/Scada/Modbus_fidunitid là một mô đun trong metasploit để quét và phát hiện các slaves.
Hình 3. Dò quét ID của slave
Kẻ tấn công sử dụng Auxiliary/Scanner/Scada/Modbusclient Metasploit module để thực hiện đọc thông tin lưu ở 5 thanh ghi khác nhau của slave có ID=2, mỗi thanh ghi bắt đầu từ địa chỉ số 0. Kết quả thu về được các giá trị đang lưu hiện thời trên 5 thanh ghi (11,22,33,0,0).
Hình 4. Đọc giá trị thanh ghi
Biết được nguyên lý này, kẻ gian thay đổi giá trị thanh ghi bằng cách sử dụng modun tấn công ghi đè giá trị mới lên thanh ghi. Ví dụ ở hình dưới, kẻ gian ghi đè giá trị 101010101010 lên 10 thanh ghi tại slaveID=4. Việc này có thể gây ra một sự bất thường trên hệ thống SCADA và kích hoạt một lệnh điều khiển nào đó làm ngưng trệ hoạt động của hệ thống.
Hình. Ghi đè giá trị thanh ghi
Để phòng tránh dạng tấn công này, giải pháp chính đó là cách ly hoặc khoanh vùng phạm vi của hệ thống điều khiển. Bên cạnh đó cần có cơ chế xác thực bên thứ 3 (có thể là người vận hành) trước khi cho phép một hành động điều khiển quan trọng trên hệ thống.
-------------------
Tham khảo
Internet
CEHv11
Chỉnh sửa lần cuối: