web-dev-qa-db-ja.com

関連ソフトウェアを使用してのみPLCと通信できますか?

これが適切なフォーラムではない場合はお詫びしますが、私はSCADAネットワークアーキテクチャ、特にStuxnetウイルスがPLCの制御ロジックを変更する方法を理解しようとしています。 PLCに接続されたコンピューターで実行されているSTEP 7ソフトウェアを使用してロジックを更新し、同時にSTEP 7ソフトウェアのDLLルーチンを変更して、PLCのロジックをクエリするユーザーが元のロジックを参照してください。PLCでロジックを読み取るには、STEP 7ソフトウェアがメモリブロックを読み取って「コードを逆コンパイル」できなければなりません。PLCはアセンブリコード(またはそれなど、PLCのマシンコードとの1-1マッピングがあります。これまでのところ、これで問題ないですか?

私の主な質問は、SCADAネットワーク経由でコマンドを送信するだけで、プログラミングソフトウェアを使用せずにPLCのロジックを変更できるかどうか、また、そのソフトウェアを使用せずにPLCメモリを読み取ることができるかどうかです。シーメンスS7-400 PLCのドキュメントには、ロジックを変更するために物理的なハードウェアの相互作用が必要であることが示唆されているようです(PLCのノブを回す必要があります)。これにより、StuxnetはSiemens STEP 7プログラミングソフトウェアの脆弱性を悪用してこれを回避しました、またはこの機能はおそらく追加のセキュリティ対策としてStuxnetの後にのみ導入されたのでしょうか?

この質問は、シーメンスだけでなく、他のPLCにも当てはまります。

どうもありがとう。

3
Stuxnewt

本、露出した産業用制御システムのハッキング:ICSおよびSCADA Security Secrets&Solutions)は、PLCの検出、スキャン、変更、侵入、マルウェアなどを非常によくカバーしています。

特に、TCP/IPベースのModbusまたはStep7通信に接続するPLCの場合、この書籍では、ベンダー提供のアプリを使用せずにネットワーク経由でPLCを制御する多くの方法について言及しています。

たとえば、Modbus TCPでは、 modbus-cli を使用して、メモリ(コイル、レジスタなど)の読み取りまたは変更を含むPLCを制御できます。 Modbus TCPデバイスを検出したい場合は、Nmap NSEスクリプト、 modbus-discover を使用して、パケットを実行することができますレベルの操作では、キャプチャにWireshark(またはtshark)を使用し、中間者攻撃に modbus-vcr を使用します。

plcscan などの他のツールは、Modbus TCPおよびStep7(s7comm)デバイスを検出します。 s7-info Nmap NSEスクリプトは、見つかったs7commデバイスに関する詳細情報を提供します。

Symantecのw32-Stuxnet Dossier および S7 PLC Exploitation に関するDillon BeresfordによるBlackHat 2011トークなど、他の多くの論文へのリンクを含む、さまざまな深さのStuxnetについても公開しています。 。本が要約する基本はここにあります:

Stuxnetの全体的な構成は、1つのワームと2つのペイロードの3つのモジュールで構成されていました。 Stuxnetは、伝統的にUSBフラッシュドライブまたは外部ハードドライブを介して環境に導入されました。感染したメディアを挿入するとすぐに、Stuxnetのワーム機能は、Siemens Step7ソフトウェアが実行されているシステムを横方向から探しました。 Stuxnetは、ピアツーピアRPC( https://en.wikipedia.org/wiki/Peer-to-peer )などの手法を使用してこの検索を実行し、システムが存在しない可能性を回避しました。インターネットに接続されています。横方向に接続されたシステムでStep7が見つからなかった場合、Stuxnetは、環境を再スキャンする前に、しばらく休止しました。 Step7が特定された場合、一方または両方のペイロードの組み合わせが実行されました。

Stuxnetに含まれる2つのペイロードのうち、1つは、主にイランの遠心分離機を制御する高周波ドライブで使用されていたSiemens S7-315-2 PLCを攻撃しました。あまり知られていないもう1つのペイロードは、PLC内で中間者攻撃(MiTM)を実行しました。ペイロードは、PLCのI/Oモジュールへの入力を受け取り、それらを偽装して、PLC内のロジックが正しくないロジックで機能するようにしました。次に、ペイロードはPLCがシステム自体のロジックをリッスンするのではなく、PLCに何をすべきかを伝えました。既知のマルウェアが変更されたPLCコードを隠したのはこれが初めてで、Stuxnetが最初の「PLCルートキット」になりました。

そしてシーメンスS7commsで:

S7comms(ステップ7通信)は、ISOプロトコルに実装されたSiemensプロトコルであり、オープンではなく、非常に厳密な制御が行われます。 PLCの200/300ファミリの場合、部分的にしか実装されていないWiresharkディセクタを介してプロトコルに関するいくつかの基本情報を見つけることができます。

wiresharkで動作しているS7のパケットトレースを含める: s7comm in Wireshark

この本は、私がここで提供した他の多くのリソースを、追加の参考のために他のリソースとともに提供します-

3
atdre

短い答えはノーです、あなたは必ずしも公式のソフトウェアを必要としません。

特定のベンダー向けに、コミュニティはPLCと直接対話するためのツールを開発しています。

シーメンスには、オープンソースのS7(Step7が使用する独自のエンジニアリングプロトコル)通信ライブラリである snap7 があります。 pythonラッパーも存在します( python-snap7 )。

その後、CPUの起動/停止、ロジックのダウンロード/アップロードなどを行うことができます。

Snap7で操作するプログラムは、mc7と呼ばれるバイトコードの形式のプログラミングブロックです。読み取りはできませんが、ステップ7で取り上げたプログラミング言語の1つであるアセンブリのような言語STL(ステートメントリスト)へのマッピングがあります。

1
J.C Doe