【入門編】 Modbus TCPプロトコル(ポート502)を用いたICS/SCADA環境へのランサムウェア侵入手法 – サイバーセキュリティとプライバシー保護実践ガイド

こんにちは!ネットワークやインフラの世界へようこそ。
日々のインフラ運用、本当にお疲れ様です。

私たちが普段何気なく使っているインターネットやWebサイトの裏側には、無数の「ルール(プロトコル)」が存在していますよね。HTTPやTCP/IPといった言葉は、ITエンジニアなら一度は耳にしたことがあるでしょう。

しかし、オフィスビルや工場、発電所、水道施設といった「リアルな物理世界」を動かしている制御システムの世界を覗いたことはありますか?

今回は、産業用制御システム(ICS/SCADA)の現場で今も現役でバリバリ使われている、いわば「工場の共通語」である Modbus TCP(ポート502) をテーマに、そこを狙うランサムウェアの恐怖と、私たちがどうやってインフラを守るべきかについて、優しく、そして泥臭く紐解いていきたいと思います。

難しい専門用語が出てきても「一歩ずつ理解していきましょう!」と手をとってエスコートしますので、ぜひ最後までリラックスして読んでいってくださいね。

—

1. 工場を動かす「Modbus TCP」とは? 身近な例えで理解する

まずは、今回主役となる Modbus TCP がどんなものか、私たちの身近な世界に置き換えて考えてみましょう。

皆さんのご自宅に、エアコンやテレビのリモコンはありますか? ボタンを押すと、赤外線という目に見えない電波が飛んで、エアコンが「冷房・26度」に設定されますよね。

産業界(工場やプラントなど)でも全く同じことが行われています。ただし、相手は家庭用エアコンではなく、巨大なモーター、バルブ、温度調整装置などです。これらをコントロールしている頭脳が PLC(プログラマブルロジックコントローラー) と呼ばれる産業用のタフなコンピューターです。

そして、そのPLCに対して「今すぐモーターを止めろ!」「バルブを全開にしろ!」と命令を伝えるための「共通言語(プロトコル)」の一つが Modbus なのです。
さらに、それを昔ながらの専用ケーブルではなく、私たちが普段使っている会社やオフィスのLAN(EthernetやTCP/IP)に乗せて喋るようにしたのが Modbus TCP(ポート番号: 502) というわけですね。

郵便配達に例えるとどうなる?

Modbus TCPの仕組みを、もっと直感的に「郵便配達」で例えてみましょう。

1. 宛先(IPアドレス)と窓口(ポート番号)

  • 郵便物を送るとき、宛先の住所(IPアドレス)を書きますよね。
  • そして、工場のどの部署に届けるか。Modbus TCPの場合は、決まって ポート502番 という「産業用命令専用の郵便受け」に配達されるルールになっています。

2. 手紙の中身(コマンド)

  • 封筒の中には、「モーターを回せ」「温度を測れ」といったシンプルな命令書が入っています。

ここで、セキュリティ上の最大のポイント、そして最も恐ろしい落とし穴があります。
実はこのModbus TCPというプロトコル、「手紙の差出人を確認する仕組み(認証)」も「手紙の文字を隠す仕組み(暗号化)」も、最初から一切用意されていないのです。

つまり、現実世界に置き換えるなら、「誰が書いたか分からない、封もされていないハガキ」が、工場のど真ん中で誰でも読める状態で飛び交っている状態だと言えます。想像しただけで、背筋が凍るようなセキュリティリスクですよね。

—

2. なぜ危ない? Modbus TCPを狙ったランサムウェア侵入の仕組み

「でも、工場内のネットワーク(OTネットワーク)は外部のインターネットから切り離されているから安全なんでしょ?」
――そう信じられていた時代が、残念ながら長きにありました。これを「エアギャップ(物理的隔離)神話」と呼びます。

しかし、現代のサイバー攻撃者は非常に狡猾です。
彼らはオフィス側のネットワーク(ITネットワーク)の脆弱性を突いて侵入し、そこからじわじわと工場の内部(OTネットワーク)へと足を伸ばしてきます。

攻撃のシナリオ:不正なコマンドインジェクション

攻撃者がITネットワークを踏み台にして、工場のPLCが待ち受ける 502 番ポート(Modbus TCP)に到達したとしましょう。先ほどお話しした通り、このプロトコルには「認証」がありません。

つまり、攻撃者は以下のようなステップで悪事を働けてしまいます。

1. 偵察フェーズ

  • 工場内のネットワークをスキャンし、ポート 502 を開いているPLCを片っ端から探し出します。「あそこに重要そうなモーターの制御盤があるぞ」と特定します。

2. コマンドインジェクション(不正な命令の流し込み)

  • 攻撃者は、本物の管理者のフリをして、PLCに「緊急停止命令」や「予期せぬ高負荷運転命令」を書き込むパケットを送りつけます。

3. ランサムウェアのペイロード転送

  • さらに悪質なケースでは、PLC自体のファームウェア(頭脳のプログラム)を書き換えてしまうような不正なコード(ペイロード)をModbusの通信に乗せて送り込み、PLCそのものを人質(ランサムウェア)に取ってしまうのです。

「身代金を支払わないと、工場のラインを爆発させる、あるいはデータを完全に破壊する」――これは映画のフィクションではなく、実際に世界中のインフラ施設が直面しているリアルな脅威なのです。

—

3. 実務で役立つ防御策:Modbus TCPを守り抜くネットワーク設計

では、認証も暗号化もない、セキュリティの隙だらけなModbus TCPを、私たちはどうやって守ればよいのでしょうか?
「プロトコル自体が古いなら、全部買い替えるしかないのか…」と諦める必要はありません。ネットワークエンジニアとしての腕の見せ所は、「境界防御とゼロトラストの思想」を組み合わせた多層防御を構築することにあります。

実務のインフラ構築でそのまま参考にしていただける、具体的な防御アプローチと設定例を見ていきましょう。

防御策1: ファイアウォールによる厳格なポート制限(セグメンテーション)

まずは基本中の基本です。オフィスネットワークから工場ネットワークへのアクセスは、原則としてすべてシャットダウンします。その上で、業務上どうしても必要な通信(例:特定の監視サーバーからPLCへのアクセス)だけを、ファイアウォールで厳しく許可します。

以下は、Linuxの iptables を用いた、ポート 502 (Modbus TCP)へのアクセスを特定の監視サーバー(例: 192.168.100.50)からのみに制限する設定例です。

# 【ファイアウォール設定例】
# 1. 念のため、既存のルールをクリアして初期化します
iptables -F

# 2. デフォルトのポリシーとして、すべての流入パケットを拒否(DROP)に設定します
iptables -P INPUT DROP
iptables -P FORWARD DROP

# 3. すでに確立されている通信や、自分から開始した通信の応答は許可します
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 4. 【重要】管理用監視サーバー(192.168.100.50)からのModbus TCP(ポート502)のみ許可します
iptables -A INPUT -p tcp -s 192.168.100.50 --dport 502 -m conntrack --ctstate NEW -j ACCEPT

# 5. 上記以外の不審なIPからのポート502へのアクセスはすべてログに残しつつブロックします
iptables -A INPUT -p tcp --dport 502 -j LOG --log-prefix "MODBUS-ATTACK-ALERT: "
iptables -A INPUT -p tcp --dport 502 -j DROP

このように、誰でも自由にポート 502 に触れる状態を物理的・論理的に排除することが、第一歩となります。

防御策2: 産業用IDS/IPSによる異常検知(パケットの中身を見る)

ファイアウォールで「誰がアクセスするか」を絞ったら、次は「中身がまともか」を監視します。
SnortやSuricataといったIDS/IPS(侵入検知・防御システム)を導入し、Modbus TCPのパケットの中身をリアルタイムで検査します。

例えば、通常はあり得ないような危険なコマンドコード(例:メモリの強制書き換えなど)が流れてきた瞬間に、アラートを飛ばしたり通信を遮断したりするルールを設定します。

以下は、オープンソースのIDSであるSnort向けのカスタムルールのサンプルです。

# 【Snort 異常検知ルール例】
# Modbus TCPのパケット内で、危険なファンクションコード(例: メモリ強制書き換え等)を検知した場合にアラートを出力
alert tcp any any -> any 502 (msg:"[SECURITY] Unauthorized Modbus Command Injection Detected!"; content:"|00 00 00 00 00 06|"; depth:6; sid:1000001; rev:1;)

こうしたツールをネットワークの要所に配置することで、万が一侵入を許した場合でも、ランサムウェアがPLCに到達する前に検知・ブロックすることが可能になります。

—

4. おわりに:ゼロトラストの精神でインフラを守る

今回は、Modbus TCP(ポート502)という特定のプロトコルを切り口に、ICS/SCADA環境が抱える脆弱性と、それに対するネットワークレベルでの防御策を解説しました。

「工場の中だから安全」という古い常識は、もはや通用しません。
ITとOTがシームレスにつながる現代において、私たちが持つべき心構えは、「ネットワークの内側であっても、誰も、どの機器も信用しない(ゼロトラスト)」という強い意志です。

  • 認証がないなら、ファイアウォールとセグメンテーションで囲い込む。
  • 暗号化されていないなら、通信の中身を監視して異常をいち早く察知する。

日々の地道なインフラ運用の積み重ねこそが、私たちの社会インフラや工場の安全を支える最強の盾となります。
一歩ずつ、確実に、セキュアな環境を一緒に作っていきましょう!

それでは、また次回の技術解説でお会いしましょう。ネットワークの旅路に、良きパケットの導きがあらんことを!

コメント

タイトルとURLをコピーしました