
IEC 60870-5-104およびOPC-UAノードを備えた現実的な仮想SCADA/ICSテストベッドを展開し、攻撃シミュレーション、正規パケット生成、レッドチームセキュリティ演習を可能にします。
監視制御データ取得(SCADA)ネットワークを再現する複数の仮想マシンをローカル(またはリモート)に自動的にデプロイするためのスケーラブルなフレームワークが提案されています。これには、センサーとアクチュエータをエミュレートする複数の仮想ホストと、それらのホストを制御するヒューマンマシンインターフェース(HMI)が含まれます。 本フレームワークには、リモートターミナルユニット(RTU)、HMI、またはデータヒストリアンのいずれかとして動作するように事前設定された、可変数の仮想マシンを構築およびデプロイする自動化スクリプト群が含まれています。本成果には、IEC 60870-5-104(IEC104)およびOPC Unified Architecture(OPC-UA)の標準準拠の実装が含まれており、Modbus-TCP(Modbus)やIEC61850などの他のプロトコルをサポートする機能も備えています。 これにより、研究者はSCADAネットワークの実世界での導入を再現するように構成できるテストベッドを構築できます。本フレームワークはオープンソースライブラリ上に構築されており、Free Software Foundationによって承認されたライセンスであるGNU General Public License version 3の下で公開されています。
パケット生成: 最初のユースケースの目的は、多数のデバイスからネットワークトラフィックを生成することであり、高いドメイン忠実度を備え、理想的にはプロセス情報がトラフィックに含まれることです。先に強調したように、稼働中のシステムからデータセットを作成することは常に可能であるとは限りません。労力がかかり、適切なタップポイントを見つけてプラント運転者の承認を得る必要があります。これはプラントの運用やポリシーによって制限される可能性があります。稼働中のネットワークへの干渉は予期しない事態を引き起こし、識別可能な情報を漏えいさせる可能性があるためです。パケット生成は、SCADAネットワークへの変更案を稼働中のシステムに導入する前にテストするために使用できます。また、正当なパケットに見えるものを使用してデバイスのストレステストを実行することもできます。興味深い研究ユースケースには、ICSネットワークに適用されていないICNやIPv6などの異なるネットワークパラダイムの実験が含まれます。
攻撃シミュレーション: このケースでは、SCADAシステムに対する複雑な攻撃のシミュレーションを検討し、稼働中のシステムに悪影響を与えることなく、複製されたICSネットワークのリスク分析を実行することを目的としています。テストベッドは、レッドチームがテストベッドノードの侵害を試みる際に使用でき、その結果を分析し、完全なパケットキャプチャ分析を得ることができます。成功した場合、追加の対策を講じた状態でプロセスを再実行でき、セキュリティの観点とサイトプロセスへの影響の両方で新しい対策をテストできます。レッドチーム演習のネットワークキャプチャは、IDSを検証するためのオープンデータセットとして公開でき、他の研究者が結果を再現および確認できます。
エージェントベンチマーキング: このユースケースの目的は、エージェントホストベースシステムのベンチマーキングをサポートすることです。これは通常、ベンダー制限により稼働中のシステムでは実行されません。エージェントがベンダーに信頼されない限り、契約違反のリスクがあるため、デプロイが禁止されることがよくあります。実際の産業サイトを正確に再現するテストベッドを使用することで、中断を引き起こすことなくエージェントベースのソフトウェアの使用を監視することが可能です。テストベッドが自由に変更可能で、機能的に正確で、物理ハードウェアと統合できる場合、エージェントのベンチマークを実行することが可能です。
限られたハードウェアの拡張: 最後のケースは、既存の物理テストベッドを拡張して、既存のハードウェアでは不可能だった通信プロトコルと構成を含めることです。これには、ネットワーク機器を拡張するためのネットワークエミュレータと、プロセス制御機器を拡張するためのプロセスシミュレータの使用が必要になる場合があります。仮想ハードウェアと物理ハードウェアを組み合わせることで、複数のプロトコルとデバイスを組み合わせた大規模なデプロイメントの作成と分析を可能にする、複雑で非常に現実的なテストベッドを作成することが可能です。このユースケースは、他のユースケースと併用して結果を強化できます。
リポジトリをクローンし、必要な依存関係をインストールします:
git clone --recurse-submodules [email protected]:PMaynard/ICS-TestBed-Framework.git
sudo apt install openjdk-8-jdk maven
ビルド:
mvn clean package
mvn package -DskipTests # Skip tests.
RTUを起動:
java -jar node/target/node-1.0.jar
shell> rtu
shell> rtu-iec104port 2404
shell> rtu-listen 127.0.0.1
shell> run
HMIを起動:
java -jar node/target/node-1.0.jar
shell> hmi
shell> hmi-interval 1000
shell> remote-hosts 127.0.0.1
shell> run
デフォルトの構成プロファイルは、1つのHMIと4つのRTUをデプロイします。HMIはIEC104およびOPC-UAを使用してRTUを統合します。RTUはランダムなプロセスデータを返すように構成されています。
これらのスクリプトは最新バージョンのVagrantの機能を使用するため、ビルド済み/配布パッケージではなく最新バージョンのVagrantを使用してください。Ubuntu 18.04.1 LTSを使用している場合は問題ないはずです。
git clone https://github.com/mitchellh/vagrant.git /opt/vagrant
cd /opt/vagrant
bundle install
bundle --binstubs exec
ln -sf /opt/vagrant/exec/vagrant /usr/local/bin/vagrant
これはオプションの開発ステップです。テストベッドノードを実行するように事前構成された仮想マシンイメージをビルドします。最新バージョンを作成したくない場合、デフォルトのオプションは、masterブランチと歩調を合わせるVagrantのイメージリポジトリから安定版イメージを取得することです。
Packerは、VirtualBoxおよびVagrantに適した仮想マシンイメージを作成するために使用されます:
cd vagrant_image
packer build vagrant-node.json
vagrant box add testbed-node vagrant.box
警告 少なくとも4GBの空きRAMが必要です。
静的IPアドレスやRAM使用量など、追加情報をVagrantfileに更新してください。
デフォルトのIP設定は10.50.50.*です。.200はHMIに使用され、101-105はRTUに使用されます。VMごとに割り当てられるデフォルトのRAMは512MBです。
vagrant up
vagrant ssh hmi
vagrant ssh rtu-1 # 1-5
vagrant halt
vagrant destroy
デフォルトのデプロイ構成を使用して、データセットの例が作成されました。PCAPはここからダウンロードできます。IEC104 MITMは、ここにあるettercapプラグインを使用して実行されました。
[Host-SCAN 13:45]: Nmapを使用したネットワーク全体の 基本的なネットワーク偵察スキャン。CMD: 'nmap -sn 10.50.50.*'
[Host-SCAN 13:47]: アクセス可能な[IEC104]{acronym-label="IEC104" acronym-form="singular+short"}サーバーを探す基本的なネットワーク偵察。CMD: 'nmap 10.50.50.* -p 2404'
[Host-SCAN 13:47]: 特定された [RTUs]{acronym-label="RTU" acronym-form="plural+short"}ノードの全ポートスキャン。CMD: 'nmap 10.50.50.101-105 -A'
[Host-SCAN 13:49]: アクティブな[IEC104]{acronym-label="IEC104" acronym-form="singular+short"}スキャン。これは、 [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} プロトコルを使用してノードをプローブします[^1]。CMD: 'nmap -Pn -n -d --script iec-identify.nse --script-args='iec-identify.timeout=500' -p 2404 10.50.50.101-105'
[Host-MITM 14:19]: RTU-1とHMIに対して[MITM]{acronym-label="MITM" acronym-form="singular+short"}を実行します。CMD: 'ettercap -i enp0s8 -T -M arp -P spoof_104 /10.50.50.101/ /10.50.50.150/'
データセットの数値内訳を以下に示します:
本フレームワークを引用する際は、次の形式を使用してください:
@conference{
author = "Peter Maynard and Kieran McLaughlin and Sakir Sezer",
title = "An Open Framework for Deploying Experimental SCADA Testbed Networks",
journal = "5th International Symposium for ICS & SCADA Cyber Security Research",
year = "2018"
}
データセットはDOIを使用して引用できます:10.6084/m9.figshare.6133457.v1
完全な論文は以下で見つかります:https://petermaynard.co.uk/publication/an-open-framework-for-deploying-experimental-scada-testbed-networks/
| ホスト | IP | IEC104 | OPC-UA | その他 | 合計 |
|---|
| HMI | 10.50.50.150 | 26,158 | 0 | 17,688 | 43,846 |
| Historian | 10.50.50.151 | 0 | 14,695 | 14,927 | 29,622 |
| RTU-1 | 10.50.50.101 | 3,592 | 2,940 | 5,543 | 12,075 |
| RTU-2 | 10.50.50.102 | 3,665 | 2,941 | 5,876 | 12,482 |
| RTU-3 | 10.50.50.103 | 3,668 | 2,940 | 5,793 | 12,404 |
| RTU-4 | 10.50.50.104 | 3,690 | 2,940 | 5,771 | 12,404 |
| RTU-5 | 10.50.50.105 | 3,576 | 930 | 7,933 | 12,442 |
| MITM | 10.50.50.99 | 2,390 | 0 | 3,449 | 5,839 |
| SCAN | 10.50.50.3 | 15 | 0 | 28,351 | 28,366 |