守るだけでは腑に落ちなかった - 制御システム技術者のサイバー修行録(第7回)

攻撃を知り、守りが「自分ごと」になった。

今回は、ペネトレーションテストの現場で実際の制御システムを見る経験が、「自分の手で制御システムを作って確かめたい」という思いへ変わり、模擬工場・鉄道システムの構築へつながっていった時期を描く。

第7回:自分の手で制御システムを作る - 工場、鉄道、そしてオリンピック(2021-2022)

【連載記事】 この記事は全9回の連載です。📚 連載まとめ・目次はこちら


制御システムペネトレーションテストの経験蓄積

前半は、制御システムペネトレーションテストに関する経験蓄積について抜粋して紹介する。

東京オリンピック(2021年)

この年、世界的なスポーツイベントであるオリンピック開催に先立ち、サイバーディフェンス研究所は大会会場の制御システムのペネトレーションテストに関わった。

実際の大会会場で、運営に支障をきたすサイバー攻撃として何があり得るかを考え、それを試行する。現場に入ることで、装置の配置やケーブル配線、物理的な防御の重要性など、構成図やスペック表だけでは見えないことが多くあると改めて感じた。

制御システムは、制御対象とコントローラ、サーバが分散して配置されることも多い。そのため、論理面だけでなく物理面を含めて見なければ実態はつかめない。

こうした経験を重ねるうちに、制御システムを自分の手元で再現し、構造や動きを確かめたいという思いが強くなっていった。


コラム:サーバ、コントローラ、センサー・アクチュエータ

ここで、軽く制御システムの構成要素にふれておく。どのような制御システムであれ、サーバに着目すると、ある規模を超えたものであればOSにLinuxやWindowsを使いネットワークでつながっているというものが一般的であるが、コントローラを見ると制御システムによって様々なものが存在する。コントローラは、制御対象につけられたセンサーから取得した状態データをリアルタイムで処理し、制御対象を物理的に操作するアクチュエータに制御指令を送信するものである。現在は内部のソフトウェアを入れ替えることで動作をカスタマイズできるPLC(Programmable Logic Controller)が使われていることが多い。

サーバとコントローラの通信プロトコルも、業界毎に使われるプロトコルが違ったり、コントローラ販売メーカ独自のプロトコルであったりと千差万別である。


なお、これら制御システムに対するペネトレーションテストから得られた知見が東京五輪会場の制御システムに対するペネトレーションテストから得られた知見を公開しますで公開されている。


ペネトレーションテスト手法の学習再開(2021年秋)

このころ、まとまった時間ができたので、入社時から考えていた「攻撃者の手法を自分で実践できる形で身につける修行」を再開した。

机上の知識ではなく、手を動かして学びたかったため、TryHackMeを使ってWebやペネトレーションテストの基礎を学び直した。集中して取り組む中で、英語の技術文書を読む抵抗も次第に薄れていった。

そして何より、攻撃手法を学べば学ぶほど、攻撃環境もやられ環境も含めて、自分の手で構築して確かめたいという思いが強くなっていった。


コラム:TryHackMe

セキュリティ学習において、座学と実践の溝を埋めてくれたのがTryHackMeでした。ブラウザから仮想環境にアクセスし、実際にハッキングの手順をトレースできるこのプラットフォームは、当時Webからペンテスト基礎までを短期間で叩き込むのに最適な「場」でした。 数十万円の予算を投じてOSCP(専門資格)に挑む前のステップとして、基礎を試す場として当時の田中には価値があるものでした。


独自プロトコル解析トレーニング開催(2021年秋)

この時期、制御システムペネトレーションテストで得た知見を整理し、独自プロトコル解析トレーニングの形にまとめる機会もあった。攻撃手法を教える側に回ることで、模擬環境を自前で持つ重要性もより強く意識するようになった。


制御システムを作る(2022年春)

ここから今回の本題、制御システムを作る話となる。

この年、社内に自前で制御システムを作ろうという機運が高まり、工場制御システムと鉄道制御システムという2つの模擬制御システムを作成した。

田中は、重要インフラの制御システム開発をしていたとはいえ、巨大な制御システムの全ての要素の設計をしてきたわけではない。

主にLinuxなどの汎用的なOSが動くサーバ・クライアント環境のソフトウェアに関わってきていた。自前で制御システムをつくるとなると、制御対象はもちろんのこと、制御対象につけたセンサーが読み取ったデータをリアルタイムに受け取り、データを処理して制御対象を制御するアクチュエータに制御命令を送るコントローラが必要となる。自分が設計したサーバとの通信相手として概要は知ってはいたが、コントローラ内部の仕組みの詳細はよくわかってはいなかった。

この機会に自分でつくってみることにしたが、作るにしてもアテはないため、まずは仮想的なものを作り上げて全体を通した仕組みを学ぶことにした。

これまでは、サーバやクライアント、ネットワーク越しの通信相手として制御システムを見てきた。しかし自分で模擬環境を作ろうとすると、センサーの入力がどうコントローラに届き、どのようなロジックで処理され、最終的にアクチュエータへ返っていくのかを、自分の手でつなぎ直して理解しなければならない。ここで初めて、これまで通信相手として見ていた制御システムの内側が立体的に見えてきた。


Factory I/Oとの出会い

制御対象として何かよい題材はないかと探して見つけたのが、Factory I/Oという3Dシミュレーションソフトウェアだった。センサーやアクチュエータなどの工業用コンポーネントを組み合わせ、自分で工場の動きを作ることができる。

気に入ったのは、単に入出力信号を並べるだけでなく、コンベアが動き、センサーが反応し、アクチュエータが動作する様子を目で見て確認できるところだった。構成図や信号表だけではつかみにくい制御の流れが、3Dで動くことで直感的に理解しやすかった。

制御システムを学ぶ題材として、これは非常に相性がよいと感じた。まずはこの仮想工場を使って、全体を通した制御の仕組みを自分の手で組み上げてみることにした。詳しい様子は、以前公開した記事や動画に残している。

参考:ブログ:リアル感ある制御システムが無料で作れて勉強になった話

参考:Youtube動画


OSSのPLCツール

次にコントローラである。コントローラは、OSSのPLCツールを用い、自分でラダープログラムを書いて制作した。

これまでサーバ側から見ていたときには、PLCは通信相手の一つという感覚が強かった。しかし実際に自分で組み始めると、センサー入力の取り込み、内部ロジックの処理、出力の反映を、限られた前提の中で安定して回す必要があることが見えてきた。

WindowsやLinuxが動く汎用サーバと違い、PLCは高速なリアルタイム制御を前提とする。そのため、保守や作り込みの考え方にも違いがある。自分で手を動かしてみたことで、サーバとコントローラの違いを、知識ではなく実感として捉えられるようになった。


鉄道制御システム

工場制御システム開発と並行して、国内シェアの大きい会社のPLCを使った鉄道模型の制御システム開発も行った。鉄道模型とPLCの設計・製造は、実際に制御盤を制作している会社に担当していただいた。

自分だけで組む仮想環境とは違い、現場を知る方々と一緒に進めることで、実務としてのPLC設計や、実際の製品で使われているプロトコルに触れることができた。模擬環境を自分で作る経験と、現場のプロの作法を見る経験の両方を得られたのは、大きな収穫だった。


業界の空気と「伝える」ことの難しさ

こうした技術修行の最中、自身の発信のあり方について考えさせられる出来事もあった。

自社トレーニングで採用した機材について、外部から「利用機材の重複」を指摘されたのである。一般市場にある機材ではあったが、先行して発表した方の心情への配慮が欠けていた。

制御システムセキュリティの世界は狭く、多くの人々の誇りと信頼で成り立っている。技術的に正しいかどうかだけでなく、業界の空気や人々の感情を汲み取ることの重要性を、この時改めて痛感した。これもまた、修行の一部であったと今は思う。


OT IDS再び(2022年)

こうして作った模擬工場環境は、作って終わりではなかった。2020年から関心を持っていたOT IDSの検証にも使えるようになり、資産管理や振る舞い検知ツールを試す土台になった。

このときの検証と発信は、後に公開するOT IDS比較記事へとつながっていく。

参考:ブログ:OTネットワークセキュリティ監視の資産管理と振る舞い検知が手軽に試せた - 元有償のパッシブ型監視ツールを適用した模擬制御システムを攻撃 -


Windowsハッキング(2022年秋)

この時期は、制御システム単体だけでなく、情報系ネットワークまで含めた現実的な模擬環境を見据え、WindowsのActive Directory環境構築と基礎的なハッキング学習にも時間をかけていた。

Windows環境の構築手順を整理し、代表的な脆弱性の再現検証ができる形を整えていった。これは、制御システムと情報系が接続された現実的な環境全体を、自分の手元で再現して理解するための準備でもあった。


コラム:Active Directory(AD)と制御システム

Windows環境の一元管理を行うADは、ITの世界では標準ですが、かつての制御システム(OT)では「装置ごとのローカル認証」が一般的であり、ADのようなディレクトリサービスが使われることは稀でした。 しかし、システムの近代化に伴い、ITとOTの境界が曖昧になる中で、ADの攻略(ハッキング手法)を知ることは、制御システム全体を守る上での「必須科目」になりつつありました。私がADの学習に時間を割いたのも、この時代の変化を肌で感じていたからです。


次回予告

次回は、2023年から2024年にかけての活動を描きます。

2023年秋、SEECATへの出展。制御プロトコルの通信改ざん・BadUSBでのC2接続によるハッキングデモを実施。

そしてRedTeamペンテスト参画。HAK5製品の検証を通じて見えてきたBadUSB攻撃手法の進化。

2024年2月、制御システムセキュリティカンファレンス2024での講演。ネットワーク通信監視・解析のOSSツールArkimeをOT IDSとして使用する方法を紹介。

OT IDS関係ブログの公開、オリパラブログの好反応。

生成AIの活用開始。ChatGPT4、Claude3 Opusとの出会い。

MITRE ATT&CK MATRIXの活用、OTレンジ構想の始動。

そしてリスクアセスメント、リスク分析の整理へ。

攻撃を知り、検知技術の普及を目指す日々を描きます。


【ご注意】 本記事は教育・啓発を目的としています。登場人物・組織は架空のものであり、記載された技術情報の悪用を推奨するものではありません。


守るだけでは腑に落ちなかった - 制御システム技術者のサイバー修行録【連載まとめ】

© 2016 - 2026 DARK MATTER / Built with Hugo / テーマ StackJimmy によって設計されています。