hacktricks/todo/industrial-control-systems-hacking/modbus.md

31 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Modbusプロトコル
## Modbusプロトコルの概要
Modbusプロトコルは産業オートメーションおよび制御システムで広く使用されているプロトコルです。Modbusは、プログラマブルロジックコントローラPLC、センサー、アクチュエータ、およびその他の産業用デバイスなど、さまざまなデバイス間の通信を可能にします。Modbusプロトコルの理解は重要です。なぜなら、これはICSで最も使用されている通信プロトコルであり、PLCにコマンドを注入するための潜在的な攻撃面が多く存在するからです。
ここでは、プロトコルのコンテキストとその動作の性質を提供するポイントごとに述べられています。ICSシステムのセキュリティにおける最大の課題は、実装およびアップグレードのコストです。これらのプロトコルと標準は80年代と90年代初頭に設計され、現在でも広く使用されています。産業界には多くのデバイスと接続があるため、デバイスのアップグレードは非常に困難であり、これによりハッカーは古いプロトコルを扱う優位性を得ることができます。Modbusへの攻撃は実質的に避けられないものであり、アップグレードなしで使用されるため、その動作は産業にとって重要です。
## クライアントサーバーアーキテクチャ
Modbusプロトコルは通常、クライアントサーバーアーキテクチャとして使用されます。ここで、マスターデバイスクライアントが1つ以上のスレーブデバイスサーバーと通信を開始します。これは、電子機器やIoTで広く使用されているMaster-Slaveアーキテクチャとも呼ばれ、SPI、I2Cなどで広く使用されています。
## シリアルおよびイーサネットバージョン
Modbusプロトコルは、シリアル通信およびイーサネット通信の両方を設計されています。シリアル通信はレガシーシステムで広く使用されていますが、現代のデバイスはイーサネットをサポートしており、高いデータレートを提供し、現代の産業ネットワークに適しています。
## データ表現
データはModbusプロトコルでASCIIまたはバイナリとして送信されますが、バイナリ形式が古いデバイスとの互換性があるため使用されています。
## 関数コード
ModBusプロトコルは、PLCやさまざまな制御デバイスを操作するために使用される特定の関数コードの送信で動作します。この部分は重要であり、再生攻撃は関数コードを再送信することで行われる可能性があります。レガシーデバイスはデータ送信に対して暗号化をサポートしておらず、通常、それらを接続する長いワイヤがあり、これらのワイヤの改ざんやデータのキャプチャ/注入が発生します。
## Modbusのアドレッシング
ネットワーク内の各デバイスには通信のために重要な固有のアドレスがあります。Modbus RTU、Modbus TCPなどのプロトコルは、アドレッシングの実装に使用され、データ送信のためのトランスポート層のように機能します。転送されるデータは、メッセージを含むModbusプロトコル形式で行われます。
さらに、Modbusは転送されたデータの整合性を確保するためにエラーチェックも実装しています。しかし、Modbusはオープンスタンダードであり、誰でもデバイスに実装できます。これにより、このプロトコルは世界標準として広まり、産業オートメーション業界で広く使用されています。
大規模な使用とアップグレードの欠如により、Modbusへの攻撃は攻撃面が大きいため、重要な利点を提供します。ICSはデバイス間の通信に高度に依存しており、それらに対する攻撃は産業システムの運用に危険をもたらす可能性があります。再生攻撃、データの注入、データのスニッフィングとリーク、サービス拒否、データの偽造などの攻撃は、攻撃者によって送信媒体が特定された場合に実行される可能性があります。