エンジニアのsu-です。
突然ですが、みなさんは"やられアプリ"とか"やられサーバー"といった言葉を聞いたことはありますか?
これらは、あえて脆弱に作られたアプリ(サーバー)です。
一般的には脆弱性診断の腕試しや、セキュリティ製品の検知テストを目的として用いられることが多いようです。
また、実際にアプリやサーバーがサイバー攻撃の被害を受けた場合にどうなるのか、視覚的にわかることもこれらを使用する非常に大きなメリットの一つだと思います。
ここでふと、私は思いました。
「"やられ工場"って、おもしろいんじゃないか!!!!!?????」
私は普段工場や発電所といった制御システムに対するセキュリティ製品を扱っています。
最近制御システムへのサイバー攻撃への注目度が上がっている中で、実際に攻撃の被害を受けた場合にどうなるか視覚的にわかると、サイバー攻撃の脅威をより具体的に実感できるのではないかと思いました。
思っているだけじゃ世の中何も変わらないということで、早速やられ工場を自作してみることにしました。
前置きが長くなりましたが、このレポートはやられ工場完成までの奮闘記です。
■完成品
まずは完成品から。できたものがこちらです。
ブロックの仕分け装置を作りました。
ブロックがセンサの下を通過すると、押し出し機が動作して色分けされていきます。
実際の動かしているところはこちら!(動画でご覧ください)
タブレット端末には、押し出されたブロック個数の表示機能とベルトコンベアの速度や方向の制御機能を持たせています。
もちろん脆弱なので、攻撃し放題です。
システムに侵入して、ブロックが通過していないのに押し出し機を強制動作させたり、システム全体を停止したりできます。
やられまくりです。
ここからは、完成までの流れを紹介します。
■部材の選定
ある程度どんなものを作るか決めた後に、学生時代に機械工学を専攻していた当時の経験をフル活用しながらブロックの検知センサや押し出し機の選定をしました。
センサの検出距離の確認や、ベルトコンベアを選定しているときは、自分がネットワークエンジニアであることを忘れそうになりました。
危ない危ない。。。
次に、やられ工場の全体のサイズの確認や、選定した部材やPLCをどのように配置するか図面をひいて確認していきます。
今回は3D CADソフトを使用しました。全体の構成を実際に手で動かしながら配置して確認できるので便利です。
完成したのが下の図です。作っているときはプラモデル感覚で楽しかったです。
見ての通りところどころ荒いですが、サイズ感と配置の把握だけならまぁいいかなと思い、次に進みます。
■操作アプリの作成
ベルトコンベアの速度や方向を制御したり、押し出されたブロックの回数を読み取るアプリケーションを作成しました。
↓これです。
具体的には、PLCの制御や制御値の読み取りを実施する、制御システムでよく使用されるmodbusプロトコルを使用したソケット通信を実現するpythonのプログラムを作成しました。
GUI化にはオープンソースのライブラリを使用しています。
初めてタッチパネルからベルトコンベアを動作させることができた時にはもう感動です。
「ちゃ、ちゃんと動く....!!」
■組み立て & 完成!!
部品の組み立てや配線を行い、完成です。ここまで約2か月。長かった、、、
■所感
今回の製作の過程でPLCでラダーを組んだり、制御通信するプログラムを自分で作成したりしたことで、セキュリティ製品によって守られる対象となるシステムに対する理解がより深まりました。
これからもエンジニアとして面白い経験をたくさん積んでいきたいと思います!
関連記事
前へ
3年目社員の海外出張レポ in Las Vegas ~Black Hat USA 2019 Training~
次へ
各分野の業界関連団体での活動