AIを駆使したサイバー攻撃:インテリジェントな脅威を検知、予防、防御する方法

今すぐ読む
サイト翻訳には人工知能を利用しており、正確性を追求しておりますが、必ずしも100%正確とは限りません。ご了承ください。

リモート攻撃からOTシステムを守る:MetaDefender OT Security™がCVE-2021-22659からMicrologix™ 1400コントローラを保護する方法

By OPSWAT
この記事を共有する
OPSWAT フェローシップ・プログラム参加者

特に、CVE-2017-14469や今回のCVE-2021-22659のような脆弱性は、ロックウェル・オートメーションで広く使用されているMicrologix 1400コントローラを標的としています。OPSWAT フェローシップ・プログラムの学生は、制御された環境でこの脆弱性をテストし、セキュリティの必要性を強調しました。 

このブログでは、攻撃者がこの脆弱性を悪用してシステムをクラッシュさせる方法や、適切な入力検証の欠如を利用してPLCの操作を妨害する方法を、学生たちがどのように実演したかを紹介する。 

PLCとは?ロックウェル・オートメーションのMicrologix 1400の説明

PLC (プログラマブル・ロジック・コントローラ) は、機械やその他の産業作業を制御してプロセスを自動化するために設計された産業用コンピュータです。過酷な環境でも動作し、センサ入力に基づいて特定のタスクを実行するようにプログラムされています。ロックウェル・オートメーションのMicroLogix 1400コントローラは、中小規模のアプリケーションで一般的に使用されるコンパクトなモジュール式PLCです。コスト効率と柔軟性で知られ、さまざまな通信プロトコルをサポートし、デバイスとのインターフェイス用にデジタルおよびアナログI/Oオプションを提供します。

産業用制御システムの監視に使用されるOPSWAT 装置のイメージ図

プログラミングは通常、ラダーロジッ クを使用してロックウェル・オートメーションのソ フトウェアを使用し、制御シーケンスを作成 できます。MicroLogix 1400は汎用性が高く、マシン制御やプロセスオートメーションなどのタスクに適しています。モジュール式であるため、ユーザは特定のアプリケーション要件に基づいてシステムを拡張し、カスタマイズすることができます。

CVE-2021-22659の紹介

2021年1月、ロックウェル・オートメーションは、インドのVeermata Jijabai Technological Institute(VJTI)COE-CNDSのParul Sindhwad氏とFaruk Kazi博士から、MicroLogix™ 1400コントローラの脆弱性に関する報告を受けました。彼らは、バージョン 21.6 以前のセキュリティ上の欠陥を特定し、リモートの認証されていない攻撃者が特別に細工した Modbus パケットを送信することで、攻撃者がレジスタ内のランダムな値を取得または変更できる可能性があることを明らかにしました。悪用された場合、バッファオーバーフローが発生し、サービス拒否状態に陥る可能性があります。FAULT LED が赤色に点滅し、通信が切断される。サービス拒否状態からの回復には、ユーザーがフォルトをクリアする必要がある。 

NVD はこのセキュリティ脆弱性を「深刻度が高い」と評価した。 

NISTのNVDで8.6という高い重大度スコアを示したCVSS 3.xメトリクス

攻撃フェイズ

PLC MicroLogix サイバー攻撃のフェーズを示す図

脆弱な MicroLogix 1400 PLC にネットワークアクセスできるリモートの認証されていない攻撃者が、特別に細工したパケットを送信してレジスタの値を変更する可能性があります。これにより、デバイスにサービス拒否状態が発生し、システムが破壊されてダウンタイムが発生する可能性があります。このようなインシデントが発生すると、組織の製造オペレーションやその他のビジネス活動に大きな支障をきたす可能性があります。

Modbusプロトコル

1979年にModicon社によって開発されたModbusプロトコルは、インテリジェント機器間のクライアント-サーバ通信を確立するために設計されたメッセージング構造です。元々はModiconのPLCで使用するために設計されましたが、その後、産業用電子機器間の通信のための標準通信プロトコルとなりました。 

Modbusプロトコルにはイーサネット用(Modbus TCP)とシリアル回線用(Modbus RTUとModbus ASCII)があります。Modbus RTU(RemoteTerminal Unit)はシリアル通信を通して直接バイナリ形式でデータを送信し、Modbus TCP(TransmissionControl Protocol)はTCP/IPネットワーク上で送信するためにModbusプロトコルデータをTCPパケットに埋め込みます。 

Modbusスタックと通信プロトコルのOSIレイヤー比較表

Modbus メッセージ構造

Modbusは、クライアントがModbusデバイスにリクエストを送信し、デバイスがレスポンスを提供するリクエスト・レスポンス・プロトコルです。

クライアントとサーバー間のModbusトランザクション通信を示す図

プライマリからセカンダリに送信されるModbusメッセージは、セカンダリのアドレス、"コマンド"("リード・レジスタ "や "ライト・レジスタ "など)、データ、チェック・サム(LRCまたはCRC)を含みます。

ヘッダーとファンクションコードによるModbus RTUメッセージの構造

データ・アドレスはデータを読み込んだり変更したりする際にModbusのクエリ・メッセージで使用されます。Modbus は 4 つのデータタイプを定義しています:コイル、入力ステータス、入力レジスタ、保持レジスタです。そのうち2つはコイルとディスクリート入力と呼ばれるオン・オフ(1ビット)の値を格納し、2つはレジスタと呼ばれる16ビット・ワードとして数値を格納します。それぞれ読み出し専用または読み出し/書き込みが可能です。

データタイプアクセス説明
コイル読み書きシングルビット出力。
ディスクリート入力読み取り専用シングルビット入力。
入力レジスタ読み取り専用16ビット入力レジスタ。
ホールディング・レジスタ読み書き16ビット出力レジスタ。

Modbusファンクションコードには3つのカテゴリーがあります:

  • パブリック・ファンクション・コード - ユーザー定義コードを除き、1~127まで。 
  • ユーザー定義ファンクションコード - 65~72と100~110の2種類。 
  • Reserved Function Codes(リザーブド・ファンクション・コード) - 一部の企業がレガシー製品に使用しており、一般には利用できない。
機能タイプ機能名機能コード
データ・アクセスビットアクセス物理ディスクリート入力ディスクリート入力を読む2
内部ビットまたは物理コイル

コイルを読む

シングルコイルの書き込み

複数のコイルを書き込む

1

5

15

16ビットアクセス物理入力レジスタ入力レジスタの読み出し4
内部レジスタまたは物理出力レジスタ

複数の保持レジスタの読み出し

単一保持レジスタの書き込み

複数の保持レジスタを書き込む

複数のレジスタの読み書き

マスク書き込みレジスタ

読み取りFIFOキュー

3

6

16

23

22

24

ファイル・レコード・アクセス

ファイルレコードの読み込み

ファイルレコードの書き込み

20

21

診断

例外ステータスを読む

診断

コムイベントカウンター取得 

イベントログ取得 

レポート・スレーブID 

デバイス識別情報の読み取り 

7

8

11

12

17

43

その他カプセル化インターフェース・トランスポート43
機能タイプデータ・アクセス
サブタイプ:ビット・アクセスビットアクセス
カテゴリ物理ディスクリート入力
関数名:Read Discrete Inputsリード・ディスクリート入力
関数コード:2
機能タイプデータ・アクセス
サブタイプ:ビット・アクセスビットアクセス
カテゴリ内部ビットまたは物理コイル
関数名:Read CoilsRead Coils
関数コード:1
機能タイプデータ・アクセス
サブタイプ:ビット・アクセスビットアクセス
カテゴリ内部ビットまたは物理コイル
関数名:Write Single Coil
関数コード:5
機能タイプデータ・アクセス
サブタイプ:ビット・アクセスビットアクセス
カテゴリ内部ビットまたは物理コイル
関数名:Write Multiple Coils
関数コード:1515
機能タイプデータ・アクセス
サブタイプ:16ビットアクセス
カテゴリ物理入力レジスタ
関数名Read Input Registers
関数コード:4
機能タイプデータ・アクセス
サブタイプ:16ビットアクセス
カテゴリ内部レジスタまたは物理出力レジスタ
関数名:Read Multiple Holding Registers複数保持レジスタの読み出し
関数コード:3
機能タイプデータ・アクセス
サブタイプ:16ビットアクセス
カテゴリ内部レジスタまたは物理出力レジスタ
関数名:Write Single Holding Register
関数コード:66
機能タイプデータ・アクセス
サブタイプ:16ビットアクセス
カテゴリ内部レジスタまたは物理出力レジスタ
関数名:Write Multiple Holding Registers
関数コード:16
機能タイプデータ・アクセス
サブタイプ:16ビットアクセス
カテゴリ内部レジスタまたは物理出力レジスタ
関数名:Read/Write Multiple RegistersRead/Write Multiple Registers
関数コード:23
機能タイプデータ・アクセス
サブタイプ:16ビットアクセス
カテゴリ内部レジスタまたは物理出力レジスタ
ファンクション名:マスクライトレジスタ
ファンクションコード:2222
機能タイプデータ・アクセス
サブタイプ:16ビットアクセス
カテゴリ内部レジスタまたは物理出力レジスタ
関数名:Read FIFO QueueリードFIFOキュー
関数コード:24
機能タイプデータアクセス
サブタイプ:ファイルレコードアクセス
関数名Read File Record
関数コード:20
機能タイプデータアクセス
サブタイプ:File Record Access
関数名:Write File Record
関数コード:2121
機能タイプDiagnostics
関数名:Read Exception Status
関数コード:7
機能タイプDiagnostics
機能名:Diagnostic
機能コード:8
関数の種類Diagnostics
関数名:Get Com Event Counter
関数コード:11
関数の種類Diagnostics
関数名:Get Com Event Log
関数コード:12
機能タイプDiagnostics
機能名:Report Slave ID
機能コード:17
機能タイプDiagnostics
機能名:Read Device Identification
ファンクションコード:43
機能タイプ:その他
機能名:Encapsulated Interface Transport
機能コード:43

搾取

脆弱性分析

OPSWAT Graduate Fellowsは分析を通じて、Modbus TCP通信中に、プロトコルに送信パケットの認証と暗号化が欠けていることを発見しました。さらに、MicroLogix 1400 PLC の入力検証は適切に実装されていません。その結果、リモートの攻撃者はパケットスニッフィングによって Modbus TCP パケットを解析し、Modbus TCP プロトコルを介して認証なしで PLC に任意のリクエストを送信できます。MicroLogix 1400 PLC デバイスには入力検証機能がないため、リモートの認証済み攻撃者がランダムな値のパケットを大量に送信し、PLC をクラッシュさせる可能性があります。

レジスタの上書き

最初に、PLC のレジスタの読み書きで使用される Modbus TCP パケットをキャプチャしようとしました。このため、MicroLogix 1400 PLC のレジスタの読み書きを容易にする Modbus Poll というアプリケーションによって生成されたパケットを調べました。

シングル・レジスタ書き込み用Modbus Pollツール・インターフェースを示すスクリーンショット

Wiresharkを使ってネットワーク・インターフェースからのすべてのパケットをキャプチャすることで、1つのレジスタを書き込むためのModbus TCPパケットを特定することができました:

Modbusトランザクションを示すパケット・キャプチャーとシングル・レジスタを書き込むファンクション・コード
トランザクションとプロトコル識別子を含むModbus TCPペイロードの詳細な内訳

スニッフィングしたパケットの構造に基づいて、ターゲット PLC のレジスタの書き込みを要求する TCP パケットを送信する簡単な Python スクリプトを開発した。このシナリオでは、PLC の IP アドレスは192.168.93.89 である。

Modbus TCP接続を開始し、ペイロードを送信するPythonコード例

悪意のある未認証パケットを受信した後、PLC のレジスタが変更された。 

Modbus/TCPプロトコルを示すパケット・キャプチャ、複数のレジスタを書き込むファンクション・コード
ソース値を追加するためのADDファンクション・ブロックがあるラダー・ロジック・ダイアグラムのスクリーンショット

Micro Logix 1400 では、ほとんどの数学命令は 3 つのパラメータを使用します:ソースA、ソースB、デスティネーション

ソースAとソースBの値は、N13:3とN13:4という2つの16ビット・レジスタから得ることができる。さらに、N13:3とN13:4のようなこれらの16ビット・レジスタの値は、-32,768から+32,767の範囲内に制約されている。N13:3 および N13:4 の値が大きいと、マッチ命令の結果がデータ型の最大範囲を超えてしまい、 PLC がクラッシュする可能性がある。したがって、PLC をクラッシュさせるには、N13:3 と N13:4 を含むすべてのレジスタに大きなランダム値を書き込む必要がある。これを実現するために、Python スクリプトを以下のように変更しました: 

複数のレジスタを書き込むためのModbus TCPペイロードの作成を示すPythonスクリプト

攻撃のシミュレーション

実際の攻撃をシミュレートするため、OPSWAT フェローは、攻撃者と PLC が同じネットワーク上にあり、互いに通信できるという前提で、OPSWAT CIP ラボにある MicroLogix 1400 PLC のクラッシュを誘発しようとしました。 

OPSWAT Labs の MicroLogix 1400 PLC の通常の動作状態では、PLC が REMOTE RUN モードのとき、すべてのレジスタ値が有効で、そのデータ タイプの指定範囲内にあり、ユーザプログラムが正しく機能していることを示しています。 

N13データ値を10進数で表示したRSLogix 500データファイルのスクリーンショット

Pythonスクリプトを実行すると、多数のModbus TCPパケットがPLCに送信され、認証なしですべてのレジスタに大きなランダム値の書き込みが要求されます:

繰り返されるModbus TCPの複数レジスタ書き込み要求を示すパケットキャプチャ

これらの悪意のあるパケット要求を受信した後、N13:3とN13:4を含む全てのレジスタの値が16,990に設定される。N13:3およびN13:4レジスタに対するADD演算の結果は、16ビットレジスタの有効範囲を超える。この問題によって整数のオーバーフローが発生し、FAULTED 状態で示されるように、フォルトが発生して PLC の動作が中断される。

フォルト状態とN13 アドレスのデータ値を示すRSLogix 500

OPSWAT フェローが、CVE-2021-22659 を悪用して MicroLogix 1400 PLC をクラッシュさせることに成功しました。

修復

ロックウェル・オートメーションの MicroLogix の CVE の詳細と重大な脆弱性を示す PLC 脆弱性ダッシュボードのスクリーンショット

CVE-2021-22659のような脆弱性に直面した場合、OTおよびサイバーフィジカルシステムを保護するためには、包括的な修復が極めて重要である。以下に、攻撃の拡散を防ぐために採用できる主な戦略を示します:

  1. 既知のCVEの検出:CVE-2021-22659のような脆弱性がないか、定期的にネットワークをスキャンする。
  2. 異常動作の監視Micrologix 1400 PLCへの通信頻度が異常に増加した場合、不正なデータ転送が行われている可能性があります。
  3. 新しいデバイス接続の識別:システムは、新しいデバイスが PLC に接続されたことを検出する必要があります。 
  4. ネットワークのセグメンテーション:影響を受けるデバイスを隔離することで、攻撃の横方向への拡散を防ぎ、影響を最小限に抑えることができる。

OPSWAT MetaDefender OT Security 、CVEを検出し、異常な動作のためにネットワークを継続的に監視し、不正な接続を識別することによって、これらのニーズに対応します。AIを使用して、通常のトラフィックパターンを学習し、ベースラインの動作を確立し、異常を警告するポリシーを実装します。これにより、潜在的な脅威に対して即座に情報に基づいた対応が可能になります。 

CVE-2021-22659を悪用した攻撃の場合、MetaDefender OT Security MetaDefender Industrial Firewall 統合し、設定されたルールに基づいて不審な通信をブロックします。ファイアウォールはAIを使って通常のトラフィックパターンを学習し、不正な接続を防ぐためのポリシーを実施します。 

これらの検知、アラート、ネットワークセグメンテーション機能を組み合わせることで、MetaDefender OT Security 産業環境の理想的な防御メカニズムとなり、運用技術環境におけるサイバー脅威のリスクと影響を大幅に低減します。

OPSWAT深層防御型サイバーセキュリティ・プラットフォームがどのように貴社の態勢を強化し、成熟させることができるかをご覧ください。無料デモをご希望の方は、今すぐエキスパートにご相談ください。

OPSWATで最新情報をお届けします!

今すぐご登録ください、 ストーリー、イベント情報などをお届けします。