Hãy tưởng tượng bạn là kỹ sư trực ca. Màn hình HMI trước mặt bạn hiển thị tốc độ động cơ ổn định, không có alarm nào nhấp nháy, đồ thị trend phẳng lì như mọi ngày. Bạn ký sổ giao ca “vận hành bình thường”.

Ngoài kia, thiết bị đang tự phá hủy chính nó.

Đó không phải giả thuyết. Đó là chuyện đã xảy ra tại nhà máy làm giàu uranium Natanz, và nó kéo dài hàng tháng trời trước khi có ai nghi ngờ. Người vận hành không sai. Quy trình không sai. Chỉ có điều màn hình đang nói dối họ.

Stuxnet thường được kể như một câu chuyện an ninh mạng — 4 lỗ hổng zero-day của Windows, chứng chỉ số bị đánh cắp, lây qua USB. Với dân IT thì đó là phần hay. Nhưng với bạn — người viết ladder logic, người cấu hình biến tần, người hiểu OB35 là gì — phần hay nhất nằm ở chỗ khác hoàn toàn. Bài này bỏ qua phần Windows và đi thẳng xuống PLC.

⚠️ Lưu ý: Bài viết phân tích một sự cố lịch sử đã được công bố rộng rãi nhằm mục đích phòng thủ. Mọi kỹ thuật mô tả ở đây chỉ được tái hiện trên thiết bị mô phỏng thuộc sở hữu riêng, trong môi trường lab cách ly hoàn toàn.

1. Bỏ Qua Phần Windows — Nó Chỉ Là Cái Xe Ôm

Toàn bộ phần lây nhiễm Windows của Stuxnet chỉ phục vụ một mục tiêu duy nhất: đi nhờ đến được máy trạm kỹ thuật có cài Siemens STEP 7.

Nhà máy Natanz có air-gap — không nối Internet. Stuxnet giải quyết bằng USB. Nó lây vào laptop của nhà thầu, nhà thầu mang laptop vào nhà máy, xong. Air-gap bị vượt qua bởi một thứ có chân và đi qua cổng bảo vệ.

Điều đáng để bạn ghi nhớ ở đây chỉ có một câu, và nó vẫn đúng nguyên vẹn năm 2026:

Air-gap không phải là một biện pháp bảo mật. Air-gap là một giả định — và giả định đó bị phá vỡ bởi chiếc USB trong túi quần của nhà thầu bảo trì.

Đây chính xác là lý do chúng tôi đã viết riêng một bài về bảo mật USB và thiết bị di động (TCA) trong nhà máy. Nếu nhà máy bạn đang tự tin vì “không nối mạng”, bạn nên đọc lại bài đó trước khi đọc tiếp.

Từ đây trở xuống, chúng ta ở trong lãnh địa của bạn.

2. Điều Stuxnet Làm Bên Trong PLC

Khi đã nằm trên máy có STEP 7, Stuxnet làm ba việc theo trình tự. Đây là phần mà không tài liệu tiếng Việt nào chịu giải thích tử tế.

Bước 1 — Nhận diện mục tiêu chính xác đến từng con biến tần

Stuxnet không phá bừa. Nó kiểm tra rất kỹ trước khi ra tay:

  • CPU có phải Siemens S7-315 hoặc S7-417 không?
  • Cấu hình có đúng số lượng module truyền thông Profibus như kỳ vọng không?
  • Trên mạng có đúng loại biến tần (frequency converter) từ hai nhà sản xuất cụ thể — một của Phần Lan, một của Iran — không?
  • Các biến tần đó có đang chạy trong dải tần 807 Hz đến 1210 Hz không?

Nếu bất kỳ điều kiện nào không khớp, Stuxnet nằm im và không làm gì cả. Nó đã lây ra hàng trăm nghìn máy tính trên thế giới và với gần như tất cả trong số đó, nó vô hại tuyệt đối.

Dải 807–1210 Hz là chi tiết đắt giá nhất của toàn bộ câu chuyện. Không có động cơ băng chuyền, bơm hay quạt công nghiệp thông thường nào chạy ở tần số đó. Đó là dải tần của máy ly tâm tốc độ cao. Người viết Stuxnet không chỉ biết mục tiêu là nhà máy nào — họ biết P&ID.

Bước 2 — Chèn code vào chu kỳ quét

Stuxnet thay thế file s7otbxdx.dll — đây là thư viện mà phần mềm STEP 7 dùng để nói chuyện với PLC. Mọi lệnh đọc/ghi block đều đi qua file này. Chiếm được nó, bạn đứng giữa kỹ sư và PLC.

Sau đó nó chèn code độc vào:

  • OB1 — khối chương trình chính, chạy mỗi chu kỳ quét
  • OB35 — khối ngắt theo chu kỳ (cyclic interrupt), thường được cấu hình chạy mỗi 100ms
    Kỹ sư mở STEP 7, bấm "Upload from PLC"
                  │
                  ▼
        ┌───────────────────────┐
        │   s7otbxdx.dll        │  ◄── Stuxnet đứng ở đây
        │   (đã bị thay thế)    │      Lọc bỏ code độc trước khi
        └───────────────────────┘      trả kết quả cho kỹ sư
                  │
                  ▼
        ┌───────────────────────┐
        │   PLC S7-315          │
        │   OB1 + OB35 + code   │
        │   độc                 │
        └───────────────────────┘

Kết quả: kỹ sư upload chương trình từ PLC về để kiểm tra, và nhìn thấy đúng chương trình gốc sạch sẽ mà mình đã viết. Code độc bị lọc đi trên đường về. Đây là rootkit — nhưng là rootkit cho PLC, thứ mà năm 2010 chưa ai tưởng tượng nổi.

Bước 3 — Phá hoại chậm, và nói dối

Đây là phần thiên tài, và cũng là phần bạn cần nhớ nhất.

Stuxnet không cho máy ly tâm chạy 2.000 Hz cho nổ tung. Làm vậy thì bị phát hiện trong 5 phút và bị quy cho lỗi thiết bị. Thay vào đó, nó chờ. Có thể hàng tuần. Rồi:

  • Đẩy tần số vọt lên khoảng 1.410 Hz trong ít phút — vượt giới hạn cơ khí, gây rung và nứt vi mô ở rotor
  • Trả về bình thường, chờ tiếp vài tuần
  • Kéo tần số tụt xuống khoảng 2 Hz — đi qua vùng cộng hưởng, tiếp tục gây hư hại
  • Lặp lại

Và trong suốt thời gian ra tay, Stuxnet làm việc quan trọng nhất: nó phát lại dữ liệu đã ghi từ trước cho HMI. Trước khi tấn công, nó âm thầm ghi lại khoảng 21 giây giá trị process bình thường. Khi tấn công, nó bơm đoạn ghi âm đó lên màn hình.

Người vận hành nhìn thấy:

  • Tốc độ: bình thường
  • Rung: bình thường
  • Không alarm
  • Trend: phẳng

Kết quả thực tế: máy ly tâm hỏng lác đác, không theo quy luật, tỉ lệ hỏng cao bất thường nhưng không đủ để thành một sự kiện. Kỹ sư Iran đi tìm lỗi ở nhà cung cấp vật liệu, ở quy trình lắp đặt, ở tay nghề công nhân. Họ tìm ở khắp nơi trừ chỗ đúng, vì hệ thống giám sát của họ đã bị mua chuộc.

3. Bài Học Thật Sự — Và Nó Không Phải “Hãy Cấm USB”

Nếu bạn chỉ rút ra được “phải quản lý USB” thì bạn đã bỏ lỡ 90% giá trị của Stuxnet. Đây mới là ba bài học thật:

Một: Dữ liệu trên HMI của bạn không phải là sự thật. Nó là thứ ai đó cho phép bạn nhìn thấy.

Toàn bộ nhận thức tình huống của bạn về nhà máy đi qua một chuỗi phần mềm — driver, OPC server, HMI. Bất kỳ mắt xích nào bị chiếm, bạn mù mà không biết mình mù. Đây là lý do vì sao giám sát thụ động, độc lập ở tầng mạng lại quan trọng đến thế: nó không tin HMI, nó nhìn trực tiếp vào gói tin trên dây. Chúng tôi đã hướng dẫn chi tiết trong bài thiết lập giám sát thụ động (Passive Monitoring) an toàn.

Hai: PLC không có khái niệm “ai đang ghi vào tôi”.

Giao thức S7comm ở thời điểm đó — và Modbus cho đến tận hôm nay — không xác thực người gửi lệnh. PLC nhận lệnh ghi thì ghi. Nó không hỏi bạn là ai. Đây không phải lỗi cài đặt, đây là thiết kế gốc của các giao thức công nghiệp, vốn ra đời trong thời kỳ mạng nhà máy là một sợi cáp khép kín trong phòng khóa cửa. Xem thêm: lỗ hổng bảo mật phổ biến trong giao thức ICS/SCADA: Modbus, S7comm và BACnet.

Ba: Kẻ tấn công OT giỏi là kỹ sư, không phải hacker.

Không một chuyên gia bảo mật thuần túy nào biết máy ly tâm cộng hưởng ở tần số nào. Muốn viết được Stuxnet, bạn cần người hiểu quy trình công nghệ ở mức thiết kế. Điều này có một hệ quả rất tích cực cho bạn: nếu bạn là kỹ sư tự động hóa, bạn đang nắm nửa khó của nghề OT Security. Nửa còn lại — mạng, giao thức, phân tích gói tin — học được. Chiều ngược lại khó hơn nhiều.

4. Điều Này Trông Ra Sao Trong Lab Của Chúng Tôi

Bạn không cần máy ly tâm uranium để hiểu Stuxnet. Bạn chỉ cần chứng kiến một lần cảnh HMI nói dối mình — sau đó bạn sẽ không bao giờ nhìn màn hình SCADA với ánh mắt cũ nữa.

Đây là bài Lab 0-A trong bộ lab miễn phí của chúng tôi, chạy hoàn toàn bằng Docker trên laptop, không cần thiết bị:

Thành phầnVai trò
OpenPLCĐóng vai PLC điều khiển một bồn nước ảo
ScadaBRĐóng vai HMI, hiển thị mực nước và trạng thái bơm
pymodbus (script)Đóng vai “Stuxnet mini”

Kịch bản, mất khoảng 45 phút:

  1. Chạy bình thường. Bạn mở HMI, thấy mực nước dao động trong ngưỡng, bơm đóng/mở đúng logic. Mọi thứ đẹp đẽ.
  2. Ghi âm. Script chạy nền, đọc và lưu lại 30 giây giá trị holding register bình thường.
  3. Ra tay. Script ghi đè giá trị setpoint bơm xuống PLC — bơm chạy sai hoàn toàn, bồn tràn trong mô phỏng.
  4. Nói dối. Đồng thời, script liên tục ghi đè register mà HMI đang đọc, bơm lại đoạn “ghi âm” ở bước 2.
  5. Nhìn màn hình. HMI vẫn xanh. Vẫn phẳng. Vẫn không alarm.

Khoảnh khắc học viên nhận ra mình đã nhìn chằm chằm vào một màn hình bình thường trong khi bồn nước ảo tràn từ ba phút trước — đó là khoảnh khắc họ thật sự hiểu OT Security. Không slide nào làm được việc đó.

Bước tiếp theo (Lab 1-C, có hướng dẫn): lặp lại kịch bản trên nền LabShock — một môi trường OT hoàn chỉnh gồm PLC, SCADA, máy trạm kỹ thuật, IDS và firewall — nơi bạn không chỉ thực hiện được cuộc tấn công, mà còn phải tự phát hiện ra nó từ phía phòng thủ khi giảng viên chạy kịch bản mà không báo trước.

5. Checklist: Làm Gì Sáng Mai

  1. Kiểm kê biến tần. Bạn có danh sách đầy đủ model, firmware, dải tần vận hành của mọi biến tần trong nhà máy không? Nếu không, đó là điểm mù đầu tiên.
  2. Đặt câu hỏi khó: nếu ai đó ghi sai giá trị xuống PLC ngay bây giờ, bạn biết bằng cách nào? Nếu câu trả lời duy nhất là “HMI sẽ báo”, bạn đang ở đúng vị trí của Natanz năm 2009.
  3. Kiểm tra access level trên PLC Siemens. Rất nhiều PLC ở Việt Nam đang để mức mặc định “Full access (no protection)”.
  4. Bật logging cho mọi thao tác download chương trình. Ai, lúc nào, từ máy nào. Đây là biện pháp rẻ nhất và bị bỏ qua nhiều nhất.
  5. Đối chiếu chương trình PLC với bản gốc offline định kỳ — bằng file lưu trên máy sạch, không phải bằng lệnh upload từ chính PLC đó. Stuxnet dạy chúng ta rằng PLC có thể nói dối về chính nó.
  6. Rà lại quy trình nhà thầu. Laptop của nhà thầu tự động hóa cắm vào mạng nhà máy bạn tuần trước đã ở những đâu?
  7. Tách kênh giám sát khỏi kênh điều khiển. Nếu cùng một đường dữ liệu vừa điều khiển vừa báo cáo, chiếm một là chiếm cả hai.

Lời Kết

Stuxnet không phải là một con virus. Nó là bằng chứng khái niệm rằng phần mềm có thể phá hủy vật chất — và nó đã 16 tuổi. Mọi thứ nó làm, hôm nay đều dễ hơn: tài liệu công khai, công cụ sẵn có, và nhà máy thì nối mạng nhiều hơn năm 2010 gấp bội.

Điều an ủi duy nhất, và cũng là điều quan trọng nhất: nó cần một người hiểu quy trình công nghệ mới viết được. Đó là bạn. Câu hỏi chỉ là bạn dùng hiểu biết đó để phòng thủ trước, hay để đi tìm nguyên nhân sau khi máy đã hỏng.


🧪 Tự Mình Chứng Kiến HMI Nói Dối — Miễn Phí

Lab 0-A: Bộ mô phỏng “Stuxnet mini” — chạy bằng Docker trên laptop, không cần thiết bị, có hướng dẫn từng bước bằng tiếng Việt. Bạn sẽ tự tay khiến một HMI hiển thị dữ liệu giả trong khi quá trình bên dưới đang hỏng.


🎓 Sẵn Sàng Làm Điều Này Trong Một Nhà Máy Ảo Hoàn Chỉnh?

Tự chạy lab cho bạn hiểu nguyên lý. Có người sửa lỗi cho bạn mới cho bạn nghề. Trong khóa EC-Council ICS/SCADA Cyber Security, bạn thực hành trên môi trường OT mô phỏng đầy đủ — PLC, SCADA, máy trạm kỹ thuật, IDS, firewall — với phần lớn thời lượng là tự tay làm, không phải ngồi nghe slide.

📞 Tư vấn lộ trình & học phí: Zalo 0948432780

🔬 Xem trước phòng lab của chúng tôi: [otsecurity.vn/lab]

BQT OT SECURITY VN

Leave a Reply

Your email address will not be published. Required fields are marked *

Trending