Mục tiêu

Quá trình kiểm tra xâm nhập với ICS và SCADA không giống với kiểm tra xâm nhập IT thông thường. Với ICS/SCADA, kiểm tra xâm nhập phải xác định mức độ tấn công bề mặt lớn mà không cần xâm nhập vào mục tiêu, và do đó, các hệ thống OT. Quá trình kiểm tra xâm nhập các hệ thống ICS và SCADA phải tuân theo như sau.

Với loại kiểm tra này, những người kiểm tra xâm nhập phải đảm bảo rằng họ có bản kiểm kê tài sản chính xác và hiểu rõ về các thiết bị đang được kiểm tra. Đối với ICS và SCADA, do bản chất nhạy cảm của chúng, việc thu thập thông tin tình báo nên được giới hạn ở việc kiểm tra tài liệu hoặc môi trường phát triển. Mọi kiểm tra xâm nhập vào các hệ thống OT/SCADA hoạt động nên được thực hiện một cách thụ động để tránh làm gián đoạn hoạt động của hệ thống.

Kịch bản

Các giao thức công nghiệp đã phát triển qua thời gian từ các mạng đơn giản thu thập thông tin từ các thiết bị từ xa đến các mạng phức tạp được điều khiển bởi các hệ thống được tích hợp sẵn trong các ứng dụng.

Trong nhiều năm, đã có nhiều nỗ lực trong việc chuẩn hóa giao thức giữa các thiết bị trong hệ thống điều khiển công nghiệp, cụ thể là IEC, ISO, và ANSI. Do nguồn gốc của các giao thức công nghiệp, hầu hết các giao thức này đều tập trung vào các hệ thống cụ thể. Do đó, các nhà cung cấp phải điều chỉnh phần mềm và phần cứng của mình để tạo ra các hệ thống tập trung vào nhà cung cấp. Điều này trở thành một vấn đề đáng kể liên quan đến bảo mật, vì nhiều giao thức công nghiệp, bao gồm Modbus, đều dựa trên giao thức nối tiếp. Vì vậy, chúng không được thiết kế với bảo mật trong tâm trí. Việc hiểu các cơ chế điều khiển bảo mật trong môi trường ICS và cách chúng bị khai thác là rất quan trọng đối với việc kiểm tra xâm nhập và mô hình hóa mối đe dọa trong các hệ thống điều khiển công nghiệp.

Bài tập 1: Phân tích Giao thức Modbus – I

Mục tiêu

  • Khám phá giao thức Modbus ở cấp độ gói tin.

Thời lượng bài tập: 15 phút

  1. Nhấp vào SCADA Master và nhấp vào Alt+Delete.
  2. Nhấp vào Pa w0rd∗∗hoặcnhập∗∗Paw0rd∗∗hoặcnhập∗∗Pa w0rd và nhấn Enter.
  3. Màn hình Networks xuất hiện, nhấp vào Yes.
  4. Trong bài tập này, bạn sẽ xem xét lưu lượng mạng của giao tiếp giữa các thiết bị trên mạng sử dụng giao thức Modbus.
  5. Nhấp đúp vào tập tin SCADAPEN-1.pcap trên Desktop.
  6. Tập tin SCADAPEN-1.pcap sẽ mở trong cửa sổ Wireshark như được hiển thị trong ảnh chụp màn hình. Để xem lại, giao thức này chủ yếu là kiểu giao tiếp chủ-tớ. Như đã lưu ý trong bài giảng, giao thức này ở dạng văn bản rõ và không yêu cầu xác thực. Do đó, giao thức này rất dễ bị tấn công man-in-the-middle.

Nếu cửa sổ bật lên Software Update for Wireshark xuất hiện, nhấp vào Skip this version hoặc Remind me later.

  1. Bạn chỉ có thể có một chủ trong mạng Modbus, và tối đa 247 tớ, mỗi tớ có ID tớ duy nhất. Tớ không nối tiếp với nhau theo kiểu daisy-chain.
  2. Trong Giao thức Điều khiển Truyền dẫn/Truyền thông Internet (TCP/IP), chúng ta thường gọi chủ là máy khách và tớ là máy chủ. Do đó, chúng ta sẽ sử dụng và tham chiếu giao thức Modbus chạy trên TCP chứ không phải phiên bản nối tiếp.
  3. Như được hiển thị trong ảnh chụp màn hình trên, có giao tiếp giữa chủtớ sử dụng Modbus với các thanh ghi. Bạn sẽ thấy giao tiếp thực tế này trong ví dụ sau.
  4. Trong phân tích giao thức, bạn sẽ thực hiện quy trình và phương pháp sau:
    • Tổng quan
    • Cổng đáng ngờ
    • Cổng mở
    • Xem xét dữ liệu
    • Xem xét các phiên hoặc sự xâm nhập
  5. Từ tập tin .pcap, chúng ta hãy xem xét dữ liệu. Trong trường bộ lọc, nhập bộ lọc cho dữ liệu và sau đó xem xét kết quả. Trong trường bộ lọc, xóa bộ lọc hiện tại và nhập tcp.flags.syn == 1 and tcp.flags.ack == 1 và nhấn Enter. Bộ lọc này sẽ hiển thị tất cả các cổng đã mở được tìm thấy trong tệp chụp.
  6. Kết quả cho thấy không có cổng nào với các handshake TCP đã được lược bỏ hoặc được thể hiện trong tập tin. Ngoài ra, tệp chụp có thể bao gồm lưu lượng Giao thức Dữ liệu Người dùng (UDP).
  7. Chúng ta hãy xem xét dữ liệu. Trong trường bộ lọc, nhập bộ lọc cho dữ liệu, và sau đó xem xét kết quả. Trong trường bộ lọc, xóa bộ lọc hiện tại và nhập tcp.flags.push == 1 và nhấn Enter. Mọi gói tin có dữ liệu trong cờ Push sẽ được đặt.
  8. Trong trường hợp của tệp chụp gói tin này, bạn chỉ có dữ liệu. Chọn gói tin số 9. Ví dụ về phần Modbus/TCP của gói tin được hiển thị trong ảnh chụp màn hình.
  9. Bạn có ví dụ về giao thức Modbus located trong gói tin TCP. Xem xét phần Định danh Đơn vị, vì bạn có thể sử dụng nó để suy ra dữ liệu được chứa trong giao thức và các khu vực của mạng có thể bị tin tặc nhắm mục tiêu. Hãy nhớ rằng giao thức này được tạo ra khi mạng được coi là đáng tin cậy.
  10. Liên quan đến địa chỉ đơn vị được sử dụng trong Modbus, hầu hết các thiết bị chỉ có địa chỉ ID đơn vị là 1. Trong một số trường hợp, bạn sẽ thấy nhiều thiết bị được kết nối với cùng một địa chỉ IP. Điều này xảy ra khi sử dụng cầu nối. Trong ví dụ này, bạn có thể thiết lập ID đơn vị là 8.
  11. ID đơn vị 0 được đặt aside. Trong trường hợp máy khách cần gửi tin nhắn tới tất cả thiết bị trong mạng, một địa chỉ phát sóng được sử dụng. Địa chỉ phát sóng này là 255. Tiếp theo, khám phá dữ liệu cho Modbus được encapsulate trong các gói tin TCP Modbus.
  12. Bây giờ hãy chọn gói tin số 10 và quan sát nút Modbus ở phần giữa. Vì hình ảnh là một phản hồi, dữ liệu bao gồm thông tin trong thanh ghi. Có hai loại vị trí lưu trữ thông tin: cuộn dây và thanh ghi. Mỗi loại kho dữ liệu này có hai loại khác nhau: loại đọc/ghi và loại chỉ đọc. Mỗi loại kho dữ liệu này, đến lượt nó, là một tham chiếu đến một địa chỉ bộ nhớ.
  13. Đây là quy trình xem xét các chuỗi giao tiếp của giao thức Modbus được sử dụng để lưu trữ các giá trị boolean đơn giản (1 bit) trong các thanh ghi. Tiếp theo, hãy khám phá các cuộn dây.

Đơn giản là, cuộn dây được sử dụng cho các giá trị boolean. Loại dữ liệu là ‘write’ và bắt đầu từ 0000-0999 và đầu ra được lưu trữ dưới dạng boolean (1 bit) và bắt đầu từ 1000-1999 trong thanh ghi đầu vào. Đối với các giá trị dài hơn, starting từ 30001 đến 39999, một giá trị được đọc trong các thanh ghi holding (16 bit) và các giá trị starting từ 40001 đến 49999.

Lưu ý: Trước khi tiếp tục với triển khai phần cứng, hãy xem lại thêm thông tin về các thanh ghi bắt đầu từ 1. Ảnh chụp màn hình hiển thị một ví dụ về các mã chức năng khác nhau.

Mã chức năngLoại Thanh ghi
1Đọc Đầu vào Kỹ thuật số
2Đọc Cuộn dây
3Đọc Thanh ghi Holding
4Đọc Thanh ghi Đầu vào
5Ghi Cuộn dây Đơn
6Ghi Thanh ghi Holding Đơn
15Ghi Nhiều Cuộn dây
16Ghi Nhiều Thanh ghi Holding
  1. Khi một Modbus tớ nhận một gói tin nhưng xác định rằng có lỗi trong yêu cầu, nó sẽ trả về một ngoại lệ thay vì phản hồi dữ liệu bình thường. Ngoại lệ phản hồi bao gồm mã chức năng của tớ, có MSB được đặt thành 1, và mã ngoại lệ. Mã ngoại lệ phản hồi sẽ bao gồm mã chức năng của tớ với MSB được đặt và một mã ngoại lệ. Mã ngoại lệ phản hồi trong tệp pcap sẽ là một trong các mã sau:
Mô tả
1Chức năng Không hợp lệ: Chức năng được yêu cầu trong yêu cầu không được tớ nhận ra hoặc không được phép bởi tớ.
2Địa chỉ Dữ liệu Không hợp lệ: Địa chỉ dữ liệu (địa chỉ thanh ghi) được yêu cầu trong yêu cầu không tồn tại trong tớ.
3Giá trị Dữ liệu Không hợp lệ: Giá trị được chứa trong trường dữ liệu của yêu cầu không nằm trong giới hạn cho phép cho tớ.
4Lỗi Thiết bị Tớ: Đang cố gắng thực hiện thao tác được yêu cầu trong khi tớ đang cố gắng thực hiện một hành động khác.
6Tớ Bận: Tớ hiện đang bận xử lý yêu cầu và chủ nên thử lại sau.
10Đường dẫn Gateway Không khả dụng: Được sử dụng kết hợp với gateway; thường có nghĩa là gateway được cấu hình sai hoặc quá tải.
11Gateway Mục tiêu Không khả dụng: Được sử dụng kết hợp với gateway; cho biết không có phản hồi từ thiết bị được đánh địa chỉ gián tiếp.
  1. Một giao diện backend Modbus có thể được cung cấp, cho phép truy cập gián tiếp vào các đối tượng ứng dụng. Bốn khu vực cấu thành giao diện này: đầu vào rời rạc, đầu ra rời rạc (cuộn dây), đầu vào thanh ghi và đầu ra thanh ghi. Thực hiện ánh xạ trước giữa giao diện này và dữ liệu ứng dụng của người dùng (vấn đề cục bộ).
Bảng chínhLoại Đối tượngLoạiNhận xét
Đầu vào Rời rạcĐơnChỉ đọcLoại dữ liệu này có thể được cung cấp bởi hệ thống I/O.
Cuộn dâyĐơnĐọc/GhiLoại dữ liệu này có thể được cung cấp bởi một ứng dụng.
Đầu vào Thanh ghi16-bit wordChỉ đọcLoại dữ liệu này có thể được cung cấp bởi hệ thống I/O.
Thanh ghi Holding16-bit wordĐọc/GhiLoại dữ liệu này có thể được cung cấp bởi một ứng dụng.

[Hình ảnh minh họa]

  1. Điều hướng đến Desktop và nhấp đúp vào SCADAPEN-2.pcap để mở tệp trong Wireshark.
  2. Tập tin SCADAPEN-2.pcap mở trong cửa sổ Wireshark. Bây giờ có nhiều lưu lượng Modbus hơn. Như đã thực hiện trước đó, hãy thực hiện phương pháp phân tích một lần nữa. Bước đầu tiên của việc đáng ngờ không cần thiết, vì tệp chụp mạng này là lưu lượng bình thường. Chuyển sang bước tiếp theo của cổng. Trong trường bộ lọc, nhập tcp.flags.syn == 1 and tcp.flags.ack == 1 và nhấn Enter.
  3. Như ảnh chụp màn hình cho thấy, cổng 502 là cổng Modbus, vì vậy đây là cổng duy nhất trong quá trình của lưu lượng TCP. Tiếp theo, hãy khám phá dữ liệu. Trong trường bộ lọc, nhập tcp.flags.push == 1 và nhấn Enter.
  4. Có dữ liệu có sẵn. Bước tiếp theo là xem xét các phiên và xem xét kỹ lưỡng dữ liệu. Trong trường hợp này, hãy chọn gói tin số 4. Dữ liệu quá lớn, vì vậy phương pháp tốt hơn là mở rộng dữ liệu nằm trong cửa sổ giữa. Ví dụ về phản hồi của yêu cầu đọc được hiển thị trong ảnh chụp màn hình.
  5. Bạn đã truy vấn 11 thanh ghi và trích xuất dữ liệu của chúng. Nếu bạn chọn thanh ghi, thì dữ liệu sẽ được hiển thị.
  6. Vì tệp chụp là lưu lượng bình thường, đây là vị trí tốt để thực hành phân tích lưu lượng mạng Modbus. Nhấp vào Thống kê để xem xét nhiều chi tiết. Chọn Đoạn hội thoại. Chi tiết của tất cả các đoạn hội thoại trong lưu lượng mạng sẽ xuất hiện.
  7. Tiếp theo, khám phá Chi tiết IP; nhấp vào tab IPv4.
  8. Hai đoạn hội thoại được hiển thị trong các ô đại diện cho phần chính của lưu lượng mạng. Quy trình này sẽ là chọn PPP và sau đó nhấp vào Áp dụng để lọc lưu lượng được hiển thị. Bạn có thể sử dụng quy trình tương tự để phân lập lưu lượng cụ thể. Thực hành quy trình này với các địa chỉ IP và cổng khác nhau từ quá trình, và liệt kê các địa chỉ IP và cổng đó. Mở các địa chỉ IP khác nhau này và các cổng được liệt kê trong cơ sở dữ liệu mục tiêu của bạn, để bạn có thể xác định và ưu tiên các mục tiêu.
  9. Quá trình áp dụng bộ lọc này làm giảm lượng gói tin để thực hiện quy trình một lần nữa. Quan sát góc dưới bên phải của cửa sổ. Các gói tin đã giảm từ 35.439 xuống 11, đây là một cải tiến. Bằng cách này, bạn có thể làm cho các đoạn hội thoại này dễ hiểu hơn để phân tích.
  10. Bạn đã giảm số lượng gói tin một lần nữa; điều này đại diện cho đoạn hội thoại khác có chứa phần lớn lưu lượng mạng. Trích xuất phiên này và lưu nó vào tệp riêng của nó. Nhấp vào Tệp | Xuất Gói tin Được chỉ định.
  11. Nhập tên conv1 cho tên tệp, và sau đó chọn các tùy chọn cho đầu ra. Bây giờ bạn đã có các gói tin cụ thể nằm trong tệp. Đóng Wireshark và mở tệp một lần nữa để xác minh điều này và xóa bộ lọc.
  12. Bạn đã trích xuất thành công các gói tin quan tâm cụ thể. Tiếp theo, tập trung vào các đoạn hội thoại cụ thể và gửi chúng cho các nhóm khác nhau. Chọn gói tin số 48 và xem xét thông tin tại đây. Đây là ‘Ghi’ vào thanh ghi, như được hiển thị trong ảnh chụp màn hình.
  13. Bạn có yêu cầu được ghi giá trị 001e vào thanh ghi. Bạn sẽ không thấy phản hồi, vì khi chụp các gói tin cụ thể này, bạn chỉ khám phá một hướng. Bạn có thể truy xuất phiên bằng cách đặt tên tệp khi bạn ghi dữ liệu cho cả hai hướng của đoạn hội thoại. Khi bạn quay lại tệp gốc, bạn có thể xem xét đoạn hội thoại để kiểm tra xem nó có thành công hay không.
  14. Tại gói tin số 29, bắt tay ba chiều cho TCP tới cổng 502 diễn ra, theo sau là dữ liệu push. Dữ liệu này dành cho ‘ghi’ vào thanh ghi đơn. Trong trường hợp này, dữ liệu đang được ghi vào 11 thanh ghi.

Dữ liệu: [1 byte]
Độ dài: [1 byte]
Dữ liệu: [1 byte]
Độ dài: [1 byte]
Dữ liệu: [1e]

  1. Như ảnh chụp màn hình hiển thị, bạn có giá trị dữ liệu là 001e được ghi vào các thanh ghi. Bạn hiện đã xem xét các quy trình khác nhau và phương pháp phân tích lưu lượng mạng Modbus. Đóng tất cả các cửa sổ và xóa màn hình.

Bài tập 2: Phân tích Giao thức Modbus – II

Mục tiêu

  • Trong bài tập này, bạn sẽ khám phá các nguồn lực trên internet để trích xuất thông tin về các mạng SCADA.
  • Tạo một mô phỏng giao tiếp Modbus chủ-tớ và khám phá nó ở cấp độ gói tin.

Thời lượng bài tập: 30 phút

  1. Nhấp vào SCADA Master và nhấp vào Ctrl+Alt+Delete.

Nếu bạn đã đăng nhập, hãy bỏ qua bước 4.

  1. Nhấp vào Pa w0rd∗∗hoặcnhập∗∗Paw0rd∗∗hoặcnhập∗∗Pa w0rd và nhấn Enter.
  2. Màn hình Networks xuất hiện, nhấp vào Yes.
  3. Khởi chạy trình duyệt. Trong Bài tập này, chúng ta đang sử dụng trình duyệt Google Chrome. Đặt con trỏ chuột của bạn vào thanh địa chỉ và nhấp vào liên kết https://whois.com/ và nhấn Enter để duyệt trang.

Nếu bạn sử dụng trình duyệt khác, ảnh chụp màn hình sẽ khác.

  1. Trang chính của Whois.com xuất hiện. Trong trường tìm kiếm, nhập Schneider và nhấn Enter.
  2. Ảnh chụp màn hình hiển thị các máy chủ tên, điều này sẽ giúp bạn bắt đầu xây dựng dấu vết cho cả tấn công hoặc phòng thủ.
  3. Công ty này trước đây là Modicon, công ty đã phát minh ra giao thức Modbus. Điều quan trọng là phải làm quen với điều này cũng như theo dõi các thông báo. Tiếp theo, xem xét Cơ sở dữ liệu Khai thác của Google. Đặt con trỏ chuột của bạn vào thanh địa chỉ và nhấp vào liên kết https://exploit-db.com/google-hacking-database/ và nhấn Enter.
  4. Trang Cơ sở dữ liệu Khai thác của Google xuất hiện, như được hiển thị trong ảnh chụp màn hình. Đọc kỹ các truy vấn khác nhau. Bạn cũng có thể tìm thấy thông tin liên quan đến SCADA. Trong trường tìm kiếm, nhập ‘Schneider’ để kiểm tra xem truy vấn có trả về kết quả nào không.
  5. Trong kết quả tìm kiếm, nhấp chuột phải vào ‘Đăng nhập’, ‘tiêu đề: scada login’ và nhấp vào Sao chép như trong ảnh chụp màn hình.
  6. Tiếp theo, khám phá kết quả truy vấn trong Tìm kiếm của Google. Mở một tab mới và duyệt google.com. Trong cửa sổ bật lên của Google, dán nội dung đã sao chép và tìm kiếm kết quả, như được hiển thị trong ảnh chụp màn hình.

Nếu cửa sổ bật lên Trước khi bạn tiếp tục tìm kiếm của Google xuất hiện, nhấp vào Tôi đồng ý.

  1. Với bất kỳ kết quả truy vấn nào, một số thông tin sẽ không được quan tâm. Bạn phải chấp nhận và trích xuất dữ liệu có liên quan. Lưu ý rằng mục cuối cùng trong hình ảnh có thông tin đăng nhập. Nhấp vào kết quả này.
  2. Đây là một kết quả tuyệt vời. Lưu ý trong bài kiểm tra xâm nhập rằng việc đăng nhập sử dụng giao thức HTTP. Bạn có thể thực hiện tấn công brute-force hoặc thả một MITM để lấy thông tin đăng nhập. Trong quá trình kiểm tra, điều quan trọng là phải khám phá những yếu tố này.
  3. Tiếp theo, xem xét Wayback Machine. Trong trình duyệt, nhập https://archive.org/. Trong biểu mẫu Wayback Machine, nhập Schneider. Xem xét trang web của công ty và xem bạn có thể quay lại bao xa để trích xuất thông tin. Ví dụ về số lần trang đã được lưu trữ được hiển thị trong ảnh chụp màn hình. Có rất nhiều thời điểm trang web đã được lưu trữ. Xem xét các trang web khác nhau và kiểm tra xem bạn có thể trích xuất thông tin nào.

Nếu tùy chọn ‘iCan You Chip It?’ xuất hiện, nhấp vào X (biểu tượng đóng).

  1. Tiếp theo, xem xét Shodan, một công cụ tìm kiếm mạnh mẽ. Trong trình duyệt, nhập https://shodan.io.
  2. Bạn sẽ có kết quả tốt nhất nếu bạn tạo một tài khoản, mặc dù bạn vẫn có thể trích xuất một số dữ liệu. Tiếp theo, đến cửa sổ tìm kiếm. Nhấp vào Khám phá trong menu.
  3. Cuộn xuống và nhấp vào Modbus. Điều này có thể dẫn đến lỗi, vì bạn chưa đăng nhập. Ảnh chụp màn hình sau đây hiển thị kết quả nếu bạn đã đăng nhập.
  4. Như được hiển thị, đây là một điểm nóng nghi ngờ. Tuy nhiên, bạn sẽ phải khám phá thêm để xác định xem đây có phải là một điểm nóng nghi ngờ hay không, hoặc có phải là một tin tặc độc hại hay không. Ví dụ về một trong các trang web từ kết quả tìm kiếm được hiển thị trong ảnh chụp màn hình.
  5. Việc trích xuất ID Đơn vị là một điểm rò rỉ có thể kiểm tra được. Chỉ có một cổng đang mở, cổng 502, là cổng cho giao thức Modbus. Ngoài ra, khi bạn xem xét dữ liệu, đây là thông tin từ các thanh ghi và thông tin ID thiết bị.
  6. Chuyển sang máy UbuntuWeb. Nhấp vào Student và nhập mật khẩu trong trường Mật khẩu và nhấn Enter.
  7. Trong khung Metasploit, có một mô-đun dành cho Shodan. Sau khi bạn đăng nhập, mở cửa sổ terminal và nhập sudo service postgresql start và nhấn Enter. Nhập mật khẩu và nhấn Enter để có quyền root. Tiếp theo, nhập sudo msfconsole và nhấn Enter để khởi động khung Metasploit.
  8. Mô-đun có thể được tìm thấy bằng cách nhập search shodan. Kết quả tìm kiếm sẽ hiển thị mô-đun quét phụ trợ cho công cụ, nhưng bạn sẽ cần tải API cho công cụ. Ví dụ về truy vấn mà bạn có thể xây dựng sau khi có API key được hiển thị trong ảnh
  1. Tiếp theo, hãy đặt tùy chọn QUERY. Ví dụ: ở đây, sử dụng truy vấn cho các hệ thống Rockwell và sau đó nhập run và nhấn Enter như được hiển thị trong ảnh chụp màn hình. Để sử dụng mô-đun, hãy đăng ký API với Shodan, mặc dù bạn có thể muốn xem xét điều này cho các hoạt động kiểm tra của mình. Đóng msfconsole.
  2. Bây giờ, nhấp chuột phải vào biểu tượng Terminal từ thanh Yêu thích và nhấp vào Terminal Mới.
  3. Nmap cũng có các tập lệnh engine cho SCADA. Nhập cd /usr/share/nmap/scripts và nhấn Enter. Khi bạn ở trong thư mục, nhập lệnh như được hiển thị trong ảnh chụp màn hình và nhấn Enter.
  4. Mở tập lệnh modbus trong trình chỉnh sửa bạn chọn và xem xét nó. Một ví dụ về nội dung của tập lệnh được hiển thị trong ảnh chụp màn hình.
  5. Xem xét kỹ cách hoạt động của tập lệnh; bạn cũng có thể tạo tập lệnh này cho tập lệnh kiểm tra của riêng mình. Các tập lệnh này thường được ghi chép đầy đủ, vì vậy bạn có thể xem xét và hiểu chúng mà không gặp quá nhiều vấn đề. Nằm ở cuối tập lệnh, bạn sẽ thấy các mã hàm mà chúng ta đã hiển thị trước đó. Đóng cửa sổ trình chỉnh sửa văn bản sau khi bạn đã xem xét tệp.
  6. Vì bạn đã có tập lệnh, hãy bắt đầu kiểm tra nó. Điều này yêu cầu giao tiếp với giao thức Modbus, hai SCADA Master và SCADA Slave.
  7. Chuyển sang SCADA Master và đăng nhập vào máy bằng Mật khẩu là Pa w0rd. Nhấp đúp vào thư mục qModMaster trên Desktop. Trong thư mục qModMaster, nhấp đúp vào qModMaster.exe để khởi chạy ứng dụng. Cửa sổ chính QModMaster xuất hiện như được hiển thị trong ảnh chụp màn hình.
  8. Chuyển sang SCADA Slave và đăng nhập vào máy bằng Mật khẩu là Pa w0rd. Nhấp đúp vào tệp ModBus-Pal.jar trên màn hình. Cửa sổ chính Modbus-Pal xuất hiện như được hiển thị trong ảnh chụp màn hình.
  9. Tiếp theo, điền vào trình giả lập với các giá trị dữ liệu. Để bắt đầu, hãy định cấu hình các trình giả lập này để chạy ở chế độ TCP. Modbus ban đầu được thiết kế để chạy qua kết nối nối tiếp và trình giả lập này có khả năng sử dụng TCP hoặc nối tiếp. Đảm bảo rằng cả hai đều hoạt động trên cổng 502. Chuyển sang SCADA Master. Trong cửa sổ QModMaster, nhấp vào tab Tùy chọn. Trong menu thả xuống, chọn Modbus TCP ….
  10. Một cửa sổ bật lên xuất hiện, sẽ giúp bạn định cấu hình IP Slave và Cổng TCP. Thay đổi địa chỉ IP thành địa chỉ của máy SCADA Slave. Địa chỉ IP của máy SCADA Slave là 192.168.177.81. Để Cổng TCP mặc định, tức là 502 và nhấp vào OK.
  11. Chuyển sang máy SCADA Slave. Sau đó, thêm các slave trong phần slave Modbus. Đối với minh họa này, hãy thêm 8 slave. Nhấp vào nút Thêm và cuộn xuống; chọn số 8 và nhập tên slave8, sau đó nhấp vào Thêm.
  12. Tiếp theo, nhấp vào biểu tượng con mắt.
  13. Thao tác này sẽ hiển thị menu để đặt các cuộn dây và thêm các giá trị vào các thanh ghi. Nhấp vào tab Cuộn dây, sau đó nhấp vào Thêm. Nhập Từ: 1 đến: và nhập 8 cuộn dây, như được hiển thị trong ảnh chụp màn hình.
  14. Sau khi các Cuộn dây được thêm vào, hãy thay đổi các giá trị như được hiển thị trong ảnh chụp màn hình. Sau khi bạn đã nhập các giá trị, hãy đóng cửa sổ.
  15. Nhấp vào Chạy trên cửa sổ ModbusPal. Nếu bạn nhận được lời nhắc tường lửa, hãy cho phép truy cập. Cân nhắc tắt tường lửa nếu bạn gặp bất kỳ sự cố nào với bài tập.
  16. Để xác minh rằng slave đã được khởi động, hãy mở Dấu nhắc lệnh và nhập netstat -an | findstr 502 và Enter; cổng sẽ được lắng nghe, như được hiển thị trong ảnh chụp màn hình. Đóng cửa sổ Dấu nhắc lệnh.
  17. Chuyển sang SCADA Master và chọn TCP trong Chế độ Modbus và đặt ID Đơn vị thành 8. Đặt Số Cuộn dây thành 8 như được hiển thị trong ảnh chụp màn hình.
  18. Cuối cùng, nhấp vào biểu tượng Kết nối hoặc chọn tùy chọn Kết nối từ menu Lệnh ở bên trái của menu trên cùng.
  19. Tiếp theo, bạn phải đọc các cuộn dây. Nhấp vào biểu tượng Đọc / Ghi bên cạnh biểu tượng Kết nối.
  20. Chuyển sang máy SCADA Slave, nhấp vào Chạy để dừng ModbusPal, sau đó nhấp vào biểu tượng con mắt trong phần slave Modbus.
  21. Chỉnh sửa các giá trị của slave8 như được hiển thị trong ảnh chụp màn hình và sau đó đóng cửa sổ.
  22. Nhấp vào Chạy để bắt đầu ModbusPal.
  23. Chuyển sang SCADA Master. Nhấp vào biểu tượng Kết nối để Ngắt kết nối và sau đó nhấp vào biểu tượng Kết nối để kết nối lại. Nhấp vào biểu tượng Đọc / Ghi bên cạnh biểu tượng Kết nối. Master sẽ được cập nhật với các giá trị mới, như được hiển thị trong ảnh chụp màn hình.
  24. Lưu ý rằng master đọc từ 0, mặc dù thanh ghi bắt đầu từ 1. Trong master, địa chỉ 0 đầu tiên sẽ không hiển thị. Điều này khá phổ biến. Bây giờ bạn đã có kết nối Modbus Master và Slave hoạt động. Trình giả lập ModBus này thể hiện các khái niệm cơ bản về giao tiếp giữa master và slave ModBus. Mặc dù bạn chỉ sử dụng một số hàm, trình giả lập này có khả năng thực hiện gần như tất cả các hàm ModBus. Do đó, bạn nên khám phá nó trong trường hợp bạn thêm các bước bổ sung vào phương pháp kiểm tra xâm nhập của mình.
  25. Chuyển sang máy UbuntuWeb, khởi chạy terminal từ thanh Yêu thích và trong terminal, nhập sudo nmap -sS 192.168.177.0/24 -p 502 và nhấn Enter, nhập mật khẩu và nhấn Enter để có quyền root.

Nếu máy bị khóa, hãy di chuyển con trỏ chuột của bạn theo hướng lên trên và sau đó đăng nhập.

  1. Sau khi bạn đã xác minh máy, hãy sử dụng tập lệnh engine tập lệnh Nmap để chống lại nó. Nhập sudo nmap –script modbus-discover.nse 192.168.177.81 -p 502 -Pn. 192.168.177.81 là địa chỉ IP của máy SCADA Slave.
  2. Khám phá các mô-đun trong Metasploit tiếp theo. Trong terminal, nhập sudo service postgresql start và nhấn Enter, sau đó nhập sudo msfconsole và nhấn Enter.
  3. Trong msfconsole, nhập search modbus và nhấn Enter.
  4. Bạn đã phát hiện ModBus bằng cách sử dụng engine tập lệnh Nmap. Đây là một trong những mô-đun mà bạn sẽ thường xuyên sử dụng trong quá trình kiểm tra của mình. Bạn phải sử dụng nó ở đây để so sánh với Nmap.
  5. Nhập use auxiliary/scanner/scada/modbusdetect và nhấn Enter. Khi bạn ở trong mô-đun, nhập info và nhấn Enter.
  6. Đầu ra cho thấy tùy chọn duy nhất bạn cần và không có là tùy chọn RHOSTS. Nhập set RHOSTS 192.168.177.81 và nhấn Enter.
  7. Mở một terminal Mới từ thanh Yêu thích và nhập sudo wireshark và nhấn Enter, nhập mật khẩu và nhấn Enter để có quyền root. Thao tác này sẽ khởi chạy ứng dụng Wireshark. Nhấp đúp vào eth0 để bắt đầu chụp và sau đó thu nhỏ cửa sổ Wireshark.
  8. Chuyển sang msfconsole và nhập run và nhấn Enter.
  9. Tuy nhiên, Wireshark không tiết lộ lý do. Xác định điều gì đang xảy ra khi bạn gửi truy vấn. Không có phản hồi cho biết bạn không có Đơn vị Định danh chính xác. Vì bạn đã tạo cái này, chúng tôi biết đó là 8 (Một mô-đun khác sẽ giải thích giải pháp khi thông tin này không có sẵn).
  10. Nhập use auxiliary/scanner/scada/modbus_findunitid và nhấn Enter.
  11. Nhập info và nhấn Enter để xem thông tin của mô-đun.
  12. Như đã lưu ý, bạn sẽ cần Unit_ID. Nhập set RHOSTS 192.168.177.81 và nhấn Enter. Khởi động lại quá trình chụp trong Wireshark và sau đó nhập run và nhấn Enter.
  13. Với UNIT-ID đã được xác định, hãy quay lại Wireshark; chụp và xem xét dữ liệu ở cấp độ gói tin. Tìm kiếm khi ID được phát hiện chính xác. Dừng chụp để xem xét.
  14. Khởi động lại quá trình chụp của bạn trong Wireshark. Trong msfconsole, nhấn Ctrl+C để dừng, sau đó quay lại mô-đun modbusdetect bằng cách nhập use auxiliary/scanner/scada/modbusdetect và nhấn Enter và nhập set UNIT_ID 8 và nhấn Enter. Nhập run và nhấn Enter để thực hiện khai thác.
  15. Bây giờ bạn đã xác định rằng đó là giao thức ModBus. Chuyển sang Wireshark và xem xét dữ liệu. Đóng tất cả các cửa sổ khi cần thiết. Bài tập trong phòng thí nghiệm này kết thúc tại đây.

Bình luận về bài viết này

Thịnh hành