Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Redpoint — ICS/SCADAの検出と列挙のためのNmap NSEスクリプト—BACnet、EtherNet/IP、CoDeSys、Fox、Modicon、Omron、S7—セキュリティ評価のためのプロトコルクエリを使用します。 | Kitploit
ツール/GitHubGitHub/digitalbond/redpoint
偵察SCADA/ICSセキュリティ情報収集ネットワークセキュリティペネトレーションテスト
GitHubdigitalbond/redpoint

Redpoint

ICS/SCADAの検出と列挙のためのNmap NSEスクリプト—BACnet、EtherNet/IP、CoDeSys、Fox、Modicon、Omron、S7—セキュリティ評価のためのプロトコルクエリを使用します。

リポジトリを見る
4691506年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

#Redpoint

###Digital Bond の ICS 列挙ツール

Redpoint は、ICS アプリケーションとデバイスを列挙するための Digital Bond の研究プロジェクトです。

私たちは評価の際に Redpoint ツールを使用して ICS デバイスを発見し、二次テストに役立つ情報を取得します。これらのツールの一部は、このリポジトリで Nmap NSE スクリプトとして公開されます。

Redpoint ツールは、正規のプロトコルまたはアプリケーションコマンドを使用して、デバイスとアプリケーションを発見・列挙します。何かを悪用したりクラッシュさせたりするものではありません。ただし、多くの ICS デバイスとアプリケーションは脆弱であり、予期しないトラフィックによってクラッシュしたり、予期しない応答を返したりする可能性があるため、注意して使用してください。

各スクリプトは以下に説明されており、このリポジトリ内の .nse ファイルとして入手できます。

  • BACnet-discover-enumerate.nse - BACnet デバイスの識別と列挙

  • codesys-v2-discover.nse - CoDeSys V2 コントローラの識別と列挙

  • enip-enumerate.nse - Rockwell Automation およびその他のベンダーの EtherNet/IP デバイスの識別と列挙

  • fox-info.nse - Niagara Fox デバイスの識別と列挙

  • modicon-info.nse - Schneider Electric Modicon PLC の識別と列挙

  • omron-info.nse - Omron PLC の識別と列挙

  • pcworx-info.nse - PC Worx プロトコル対応 PLC の識別と列挙

  • proconos-info.nse - ProConOS 対応 PLC の識別と列挙

  • s7-enumerate.nse - Siemens SIMATIC S7 PLC の識別と列挙

==

###BACnet-discover-enumerate.nse

![BACnet-discover-enumerate サンプル出力] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/03/BACnet-nse.png)

####著者

Stephen Hilt と Michael Toecker
Digital Bond, Inc

####目的と説明

BACnet-discover-enumerate.nse の目的は、IP 接続されたデバイスが BACnet を実行しているかどうかを最初に識別することです。これは、事前に生成された BACnet メッセージをデバイスに問い合わせることで機能します。新しいバージョンの BACnet プロトコルは確認応答を返し、古いバージョンは BACnet エラーメッセージを返します。確認応答またはエラーのいずれかが存在すれば、対象の IP アドレスに BACnet 対応デバイスが存在することが証明されます。

次に、確認応答を受信した場合、このスクリプトは応答する BACnet デバイス上のいくつかの BACnet プロパティの列挙も試みます。ここでも、デバイスには事前に生成された BACnet メッセージが問い合わせられます。列挙の成功には特別に細工されたリクエストを使用します。BACnet デバイスがそのプロパティをサポートしていない場合、列挙は成功しません。

このスクリプトが照会する BACnet プロパティは次のとおりです。

  1. ベンダー ID - 登録済み BACnet ベンダーに対応する番号。スクリプトは関連するベンダー名も返します。

  2. ベンダー番号 - デバイスに設定されているベンダー名を表す文字列。ベンダー ID は ASHARE に登録された番号であるため、ベンダー ID とは異なる場合があります。

  3. オブジェクト識別子 - デバイスを一意に識別する番号。オブジェクト識別子が分かれば、BACnet クライアントソフトウェアを使用して、値、プログラム、スケジュール、その他の運用情報を変更するコマンドを BACnet デバイスに送信できます。これはすべての BACnet デバイスに必須のプロパティです。

  4. ファームウェアリビジョン - BACnet デバイスのファームウェアのリビジョン番号。

  5. アプリケーションソフトウェアリビジョン - BACnet 通信に使用されているソフトウェアのリビジョン番号。

  6. オブジェクト名 - BACnet デバイスに名前を割り当てるユーザー定義の文字列で、通常は試運転時に技術者が入力します。これはすべての BACnet デバイスに必須のプロパティです。

  7. モデル名 - BACnet デバイスのモデル

  8. 説明 - デバイスを説明するためのユーザー定義の文字列で、通常は試運転時に技術者が入力します

  9. 場所 - デバイスの物理的な場所を記録するためのユーザー定義の文字列で、通常は試運転時に技術者が入力します

  10. ブロードキャスト配布テーブル (BDT) - BACnet ネットワーク内の BACnet ブロードキャスト管理デバイス (BBMD) のリスト。これにより、BACnet ネットワークの一部であるすべてのサブネットが識別されます。

  11. 外部デバイステーブル (FDT) - BACnet デバイスに登録されている外部デバイスのリスト。外部デバイスとは、BACnet ネットワークの一部であるサブネット上になく、BDT にも含まれていないデバイスのことです。外部デバイスは多くの場合、外部ネットワーク上に存在し、攻撃者の IP アドレスである可能性があります。

BDT と FDT は大きなリストになる可能性があり、大規模な Nmap スキャンでは望ましくない場合があります。基本スクリプトは BDT と FDT を取得しません。BDT と FDT を取得するには、--script-args full=yes を指定してコマンドを実行してください。Usage セクションを参照してください。

![BACnet-discover-enumerate BDT および FDT 付きサンプル出力] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/08/screenshot_bacnet-1.png)

このスクリプトは、BACnet 仕様に 2004 年に追加された機能を使用して、外部デバイスとして BACnet ネットワークに参加することなく、単一のリクエストでデバイスのオブジェクト識別子を取得します。(詳細については、ANSI/ASHRAE Standard 135-2001 の ANSI/ASHRAE Addendum a を参照してください)

####歴史と背景

BACnet に関する Wikipedia の記事 (http://en.wikipedia.org/wiki/BACnet) より:

BACnet は、ビル自動化および制御ネットワークのための通信プロトコルです。これは ASHRAE、ANSI、ISO 標準[1] プロトコルです。BACnet トラフィックのデフォルトポートは UDP/47808 です。

BACnet は、暖房、換気、空調制御、照明制御、アクセス制御、火災検知システムおよびその関連機器などのアプリケーション向けのビル自動化および制御システムで使用されます。BACnet プロトコルは、コンピュータ化されたビル自動化デバイスが、実行する特定のビルサービスに関係なく情報を交換するためのメカニズムを提供します。

####インストール

このスクリプトを実行するには nmap が必要です。Nmap をお持ちでない場合は、Nmap の手順に従って Nmap をダウンロードしてインストールしてください。 http://nmap.org/download.html

#####Windows

bacnet-discover.nse をダウンロードしたら、NSE スクリプトディレクトリに移動する必要があります。これは管理者として行う必要があります。[スタート] -> [プログラム] -> [アクセサリ] に移動し、[コマンドプロンプト] を右クリックして、[管理者として実行] を選択します。

root@kitploit:~
move BACnet-discover-enumerate.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

BACnet-discover-enumerate.nse をダウンロードしたら、NSE スクリプトディレクトリに移動する必要があります。これは sudo/root として行う必要があります。

root@kitploit:~
sudo mv BACnet-discover-enumerate.nse /usr/share/nmap/scripts
	

####使用方法

ターミナルウィンドウまたはコマンドプロンプトで、host を BACnet をスキャンしたいターゲットに置き換えて、以下のコマンドのいずれかを使用します。出力に BDT と FDT を含めたい場合は、--script-args full=yes を使用します。

root@kitploit:~
Windows: nmap -sU -p 47808 --script BACnet-discover-enumerate <host>
Windows: nmap -sU -p 47808 --script BACnet-discover-enumerate --script-args full=yes <host>

Linux: sudo nmap -sU -p 47808 --script BACnet-discover-enumerate <host> 
Linux: sudo nmap -sU -p 47808 --script BACnet-discover-enumerate --script-args full=yes <host>

スキャン中に DNS ルックアップを実行せずに結果を高速化するには -n オプションを使用し、デバイスの起動確認のための ping を無効にするには -Pn オプションを使用して完全な結果を得ることもできます。

root@kitploit:~
nmap -sU -Pn -p 47808 -n --script BACnet-discover-enumerate <host>

	

####注記

このスクリプトの公式バージョンは、https://github.com/digitalbond/Redpoint/blob/master/BACnet-discover-enumerate.nse で保守されています。

このスクリプトは、標準の BACnet 送信元および宛先ポートである UDP 47808 を使用します。

新しい (2004 年 2 月 25 日以降の) BACnet デバイスは、仕様により、独自の有効なインスタンス番号を持つ「キャッチオール」オブジェクト識別子を使用する特定のリクエストに応答する必要があります (ANSI/ASHRAE Standard 135-2001 の ANSI/ASHRAE Addendum a を参照)。古いバージョンの BACnet デバイスはこのキャッチオールに応答しない場合があり、代わりに BACnet エラーパケットを返します。

このスクリプトは外部デバイスとして BACnet ネットワークに参加しようとはしません。IP アドレス指定可能なデバイスに BACnet リクエストを直接送信するだけです。

== ###codesys-v2-discover.nse ![codesys-v2-discover サンプル出力] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2016/03/codesys-v2-discover-win.png)

####著者

Stephen Hilt, Reid Wightman

####目的と説明

codesys-v2-discover.nse スクリプトは、3S-Software GmbH 製のバージョン 2 ラダーロジックランタイムを実行している PLC を識別します。これらのコントローラは、新しいラダーロジックのインストールや実行中のラダーロジックのデバッグのための独自のバイナリプロトコルを使用します。このプロトコルは認証を必要とする場合があります。実際には、この動作をサポートするデバイスはほとんどありません。このスクリプトは認証をテストしません。

このスクリプトは、識別用の簡単なリクエストをデバイスに送信します。応答メッセージには、PLC 上で実行されている CoDeSys のオペレーティングシステムと特定のポイントリリースが含まれる場合があります。

####歴史と背景

Digital Bond は、2012 年 4 月に CoDeSys ランタイムシステムが設計上安全ではないという詳細を公開しました。このプロトコルは通常、制御ポートとして TCP/1200 または TCP/2455 を使用します。制御プロトコルには、コントローラからファイルをアップロードおよびダウンロードする機能が含まれています。また、このプロトコルは、追加機能を提供するコマンドシェルを提供する場合もあります。シェル機能には通常、現在実行中のラダーロジックを開始および停止する機能と、コントローラからデバッグ情報を取得する機能が含まれます。

最初のアドバイザリはランタイムのバージョン 2 にのみ適用されました。Digital Bond はまた、HD Moore が彼のインターネットスキャンプロジェクトの一環として元々作成した概念実証用の Nmap スクリプトも公開しました。

このバージョンのプロトコル用に Nessus スクリプトも作成されましたが、Nessus スクリプトにはエラーが含まれており、ビッグエンディアン CPU を搭載したコントローラを適切にチェックしません。

####インストール

このスクリプトを実行するには Nmap が必要です。Nmap をお持ちでない場合は、Nmap の手順に従って Nmap をダウンロードしてインストールしてください。 http://nmap.org/download.html

#####Windows

enip-enumerate.nse をダウンロードしたら、NSE スクリプトディレクトリに移動する必要があります。これは管理者として行う必要があります。[スタート] -> [プログラム] -> [アクセサリ] に移動し、[コマンドプロンプト] を右クリックして、[管理者として実行] を選択します。

root@kitploit:~
    move codesys-v2-discover.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

enip-enumerate.nse をダウンロードしたら、NSE スクリプトディレクトリに移動する必要があります。これは sudo/root として行う必要があります。

root@kitploit:~
    sudo mv codesys-v2-discover.nse /usr/share/nmap/scripts

####使用方法

ターミナルウィンドウまたはコマンドプロンプトで、 を EtherNet/IP をスキャンしたいターゲットに置き換えて、以下のコマンドのいずれかを使用します。

root@kitploit:~
    Windows: nmap -p 1200,2455 --script codesys-v2-discover <host>

    Linux: sudo nmap -p 1200,2455 --script codesys-v2-discover <host>

####注記

このスクリプトの公式バージョンは、https://github.com/digitalbond/Redpoint/codesys-v2-discover.nse で保守されています。

このスクリプトは、開いている任意のポートで CoDeSys リクエストの送信を試みます。ほとんどのコントローラは標準ポートの 1200 または 2455 を使用しますが、一部のコントローラは 1201、1217、その他の代替ポートを使用します。

== ###enip-enumerate.nse ![enip-enumerate サンプル出力] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/04/enip.png)

####著者

Stephen Hilt
Digital Bond, Inc

####目的と説明

enip-enumerate.nse の目的は、EtherNet/IP デバイスを識別および列挙することです。Rockwell Automation / Allen Bradley がこのプロトコルを開発し、これらのデバイス (例: ControlLogix や MicroLogix) の主要メーカーです。ただし、これはオープン標準であり、多くのベンダーが EtherNet/IP インターフェイスカードまたはソリューションを提供しています。

EtherNet/IP デバイスは、TCP/44818 に対して List Identities メッセージ (0x63) を送信することで確実に識別されます。応答メッセージによって EtherNet/IP デバイスであるかどうかが判断され、デバイスを列挙するための情報が解析されます。

EtherNet/IP の List Identities リクエストは、デバイスの「電子キー」として知られるデバイスに関する基本情報を取得します。情報には、ベンダー、製品名、シリアル番号、デバイスタイプ、製品コード、リビジョン番号が含まれます。また、このスクリプトは、パケットの EtherNet/IP フレーム内のソケットアドレスフィールドからデバイスの設定済み IP アドレスを解析します。

このスクリプトが解析する EtherNet/IP プロパティは次のとおりです。

  1. ベンダー - ベンダー名の検索に使用される 2 バイトの整数

  2. 製品名 - 製品/製品ファミリーの簡単な説明を表す文字列。最大長は 32 文字です

  3. シリアル番号 - リトルエンディアンで格納される 6 バイトの 16 進数

  4. デバイスタイプ - デバイスタイプの検索に使用される 2 バイトの整数。このフィールドは使用されず 0 に設定されることがよくあります。

  5. 製品コード - ベンダーが割り当てた製品コードは、デバイスタイプ内の特定の製品を識別します。スクリプトはベンダーの製品コードテーブルにアクセスできないため、番号が表示されます。

  6. リビジョン - デバイスのメジャーリビジョン番号とマイナーリビジョン番号をリストする 2 つの 1 バイト整数

  7. デバイス IP - デバイスの設定済み IP アドレスを表す 4 つの 1 バイト整数。このアドレスは、スクリプトによってスキャンされた IP アドレスとは異なることがよくあります。

####歴史と背景

EtherNet/IP に関する Wikipedia の記事 (http://en.wikipedia.org/wiki/EtherNet/IP) より

EtherNet/IP は、1990 年代後半に Rockwell Automation によって、Rockwell の産業用イーサネットネットワーキングソリューションの一部として開発されました。Rockwell は EtherNet/IP という名前を付け、ODVA に委譲しました。ODVA は現在このプロトコルを管理し、今日このプロトコルを利用する新製品が開発される際には常に確立された標準への準拠を要求することにより、マルチベンダーシステムの相互運用性を保証しています。

EtherNet/IP は、水処理プラント、製造施設、公益事業などの産業オートメーション制御システムで最も一般的に使用されています。複数の制御システムベンダーが、EtherNet/IP を介して通信できるプログラマブルオートメーションコントローラと I/O を開発しています。

####インストール

このスクリプトを実行するには Nmap が必要です。Nmap をお持ちでない場合は、Nmap の手順に従って Nmap をダウンロードしてインストールしてください。 http://nmap.org/download.html

#####Windows

enip-enumerate.nse をダウンロードしたら、NSE スクリプトディレクトリに移動する必要があります。これは管理者として行う必要があります。[スタート] -> [プログラム] -> [アクセサリ] に移動し、[コマンドプロンプト] を右クリックして、[管理者として実行] を選択します。

root@kitploit:~
move enip-enumerate.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

enip-enumerate.nse をダウンロードしたら、NSE スクリプトディレクトリに移動する必要があります。これは sudo/root として行う必要があります。

root@kitploit:~
sudo mv enip-enumerate.nse /usr/share/nmap/scripts
	

####使用方法

ターミナルウィンドウまたはコマンドプロンプトで、 を EtherNet/IP をスキャンしたいターゲットに置き換えて、以下のコマンドのいずれかを使用します。

root@kitploit:~
Windows: nmap -p 44818 --script enip-enumerate <host>

Linux: sudo nmap -p 44818 --script enip-enumerate <host> 

	

####注記

このスクリプトの公式バージョンは、https://github.com/digitalbond/Redpoint/enip-enumerate.nse で保守されています。

このスクリプトは、標準の Ethernet/IP 宛先ポートである TCP 44818 を使用します。

==

###fox-info.nse ![fox-info サンプル出力] (http://www.digitalbond.com/wp-content/uploads/2014/10/fox-example.png)

####著者

Stephen Hilt
Digital Bond, Inc

####目的と説明

fox-info.nse の目的は、Niagara Fox プロトコルを実行しているデバイスを最初に識別することです。このスクリプトは、Billy Rios と Terry McCorkle が提供した作業と例に基づいています。

Niagara Fox デバイスへの接続が成功すると、スクリプトはデバイスから送信された応答を解析し、列挙した情報を表示します。

このスクリプトが照会する Niagara Fox プロパティは次のとおりです。

  1. Fox バージョン - デバイス上で現在実行されている Fox プロトコルのバージョン。

  2. ホスト名 - デバイスのホスト名。通常はリモートデバイスのワークステーション名です。

  3. ホストアドレス - デバイスに設定されている IP アドレス。これはスキャンされた IP アドレス、またはデバイスがネットワークアドレス変換 (NAT) を実行する何かの背後にある場合はプライベートアドレスになる可能性があります。

  4. アプリケーション名 - リモートデバイス上で実行されているアプリケーション名。通常は「Workbench」または「Station」のいずれかです。

  5. アプリケーションバージョン - 先ほど列挙したアプリケーション名のバージョン番号。

  6. VM 名 - アプリケーションを実行している Java 仮想マシンの名前。

  7. VM バージョン - リモートデバイス上で実行されている VM のバージョン番号。これはおそらく Java HotSpot のバージョン番号です。

  8. OS 名 - デバイス上で Fox プロトコルを実行している OS の名前 (例: QNX または Windows XP)。

  9. タイムゾーン - デバイスに設定されているローカルタイムゾーン。

  10. ホスト ID - デバイスを識別するために使用される一意の ID。

  11. VM UUID - Java VM の Universally Unique Identifier (UUID)。

  12. ブランド ID - ライセンスされたすべてのステーションとツールにはブランド識別子があります。このフィールドには、OEM が製品ラインの識別子として選択したテキスト記述子が保持されます。各ステーションまたはツールは、BrandID エントリを 1 つだけ持つことができます。

####歴史と背景

Fox は、Tridium ビル自動化ソリューションの Niagara Framework において、ステーション間およびワークベンチとステーション間の通信に使用される独自の TCP/IP プロトコルです。Tridium は Honeywell の完全子会社です。

####インストール

このスクリプトを実行するには Nmap が必要です。Nmap をお持ちでない場合は、Nmap をダウンロードしてインストールしてください。次を参照してください: http://nmap.org/download.html

#####Windows

fox-info.nse をダウンロードしたら、NSE スクリプトディレクトリに移動します。この移動は管理者として行う必要があります。[スタート] -> [プログラム] -> [アクセサリ] に移動し、[コマンドプロンプト] を右クリックして、[管理者として実行] を選択します。

root@kitploit:~
move fox-info.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

fox-info.nse をダウンロードしたら、NSE スクリプトディレクトリに移動します。これは sudo/root として行う必要があります。

root@kitploit:~
sudo mv fox-info.nse /usr/share/nmap/scripts
	

####使用方法

ターミナルウィンドウまたはコマンドプロンプトで、host を Niagara Fox プロトコルをサポートするデバイスをスキャンしたいターゲットに置き換えて、以下のコマンドのいずれかを使用します。

root@kitploit:~
Windows: nmap -p 1911 --script fox-info <host>
	
Linux: sudo nmap -p 1911 --script fox-info <host> 

####注記

このスクリプトの公式バージョンは、https://github.com/digitalbond/Redpoint/blob/master/fox-info.nse で保守されています。

このスクリプトは、標準の Niagara Fox 送信元および宛先ポートである TCP 1911 を使用します。

==

###modicon-info.nse ![modicon-info サンプル出力] (http://www.digitalbond.com/wp-content/uploads/2014/09/Modicon.png)

####著者

Stephen Hilt
Digital Bond, Inc

####目的と説明

modicon-info.nse の目的は、Schneider Electric 製の Modicon PLC を最初に識別および列挙することです。

このスクリプトは、IP 接続されたデバイスが Modbus ファンクションコード 43 リクエストを送信しているかどうかを最初に識別します。この応答は、ファンクションコード 43 をサポートしていない場合でも Modbus デバイスを識別するのに十分です。応答のベンダー名に "Schneider" という文字列が含まれている場合、スクリプトは Schneider Electric 独自の Modbus ファンクションコード 90 を使用してデバイスを列挙します。

スクリプト出力に含まれる Modbus ファンクションコード 43 およびファンクションコード 90 のプロパティは次のとおりです。

  1. ベンダー名 - このスクリプトは "Schneider" を含まないすべてのデバイスを無視します。2) ネットワークモジュール - Modicon PLC のイーサネット通信モジュール。

  2. CPUモジュール - Modicon PLC のCPUモジュール。

  3. ファームウェア - Modicon PLC のCPUモジュールのファームウェアバージョン。

  4. メモリカード - CPUモジュール内のメモリカードの型番。

  5. プロジェクト情報 - プロジェクト名、設定に使用された Unity Pro のバージョン、PLC をプログラムしたワークステーション名など、プロジェクトに関する各種情報。一部のデバイスでは、デバイスを設定したワークステーション上の .stu ファイルの場所も提供されます。

  6. プロジェクトリビジョン - PLC 上で動作しているプロジェクトのリビジョン。プロジェクトリビジョン番号は、プロジェクトがビルドされ PLC に転送されるたびに 1 ずつ増加します。

  7. プロジェクト最終更新日時 - 技術者によって PLC が最後に変更された日時を保存するタイムスタンプ。

####歴史と背景

プログラマブルロジックコントローラに関する Wikipedia の記事より http://en.wikipedia.org/wiki/Programmable_logic_controller#History:

1968年、GM ハイドラマチック(ゼネラルモーターズの自動変速機部門)は、エンジニアの Edward R. Clark が執筆したホワイトペーパーに基づき、配線固定式リレーシステムに代わる電子機器の提案依頼書を発行しました。最優秀提案は、マサチューセッツ州ベッドフォードの Bedford Associates からもたらされました。最初の PLC は、Bedford Associates の84番目のプロジェクトであったことから 084 と命名され、その成果として誕生しました。[2] Bedford Associates は、この新製品の開発、製造、販売、保守に特化した新会社を設立しました。それが Modicon(MOdular DIgital CONtroller の略)です。このプロジェクトに携わった人物の一人に Dick Morley がおり、彼は PLC の「父」とみなされています。[3] Modicon ブランドは1977年に Gould Electronics に売却され、その後ドイツの企業 AEG に買収され、さらに現在の所有者であるフランスの Schneider Electric に買収されました。

####インストール

このスクリプトの実行には Nmap が必要です。Nmap をインストールしていない場合は、Nmap をダウンロードしてインストールしてください。

root@kitploit:~
http://nmap.org/download.html

#####Windows

modicon-info.nse をダウンロードしたら、NSE Scripts ディレクトリに移動します。これには管理者権限が必要です。スタート -> プログラム -> アクセサリ の順に移動し、「コマンドプロンプト」を右クリックします。「管理者として実行」を選択します。

root@kitploit:~
move modicon-info.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

modicon-info.nse をダウンロードしたら、NSE Scripts ディレクトリに移動します。これは sudo/root で行う必要があります。

root@kitploit:~
sudo mv modicon-info.nse /usr/share/nmap/scripts
	

####使用方法

ターミナルウィンドウまたはコマンドプロンプトで、以下のいずれかのコマンドを使用します。 は Modicon PLC をスキャンしたいターゲットです。

root@kitploit:~
Windows: nmap -p 502 --script modicon-info.nse -sV <host>

Linux: sudo nmap -p 502 --script modicon-info.nse -sV <host> 

	

####注意事項

このスクリプトの公式バージョンは、https://github.com/digitalbond/Redpoint/modicon-info.nse で保守されています。

このスクリプトは、標準の Modbus 宛先ポートである TCP 502 を使用します。

== ###omrontcp-info.nse & omronudp-info.nse ![omrontcp/udp-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/Region.png)

####作者

Stephen Hilt
Digital Bond, Inc

####目的と説明

omrontcp-info および omronudp-info の目的は、OMRON FINS デバイスを識別し列挙することです。Omron はこのプロトコルを開発し、このプロトコルをサポートするデバイスの主要メーカーです。

OMRON FINS デバイスは、Read Controller Status (0x0501) を使用して TCP/9600 または UDP 9600 にクエリを送信することで確実に識別されます。応答メッセージによって OMRON FINS デバイスかどうかが判断され、デバイスを列挙するための情報が解析されます。

OMRON FINS の Read Controller Status は、コントローラモデル、コントローラバージョン、プログラムエリアサイズ、IOM サイズ、DM ワード数、タイマ/カウンタサイズ、拡張 DMZ サイズ、ステップ/トランジション数、メモリカードの種類、メモリカードサイズなどの基本情報を取得します。

このスクリプトが解析する OMRON FINS プロパティは次のとおりです。

  1. Controller Model - コントローラモデルを表す 20 バイト以下の文字列

  2. Controller Version - 20 バイト以下のバージョン番号を表す文字列

  3. For System Use - システム用に予約されています。このフィールドに何か興味深い情報がないか確認するために情報を収集します。

  4. Program area size - PC セットアップとプログラムエリアのサイズ。

  5. IOM size - ビット/ワードコマンドを使用できるエリアのサイズ。

  6. No. of DM words - DM エリア内の合計ワード数。

  7. Timer/counter size - 利用可能なタイマ/カウンタの最大数。

  8. Expansion DM size - 拡張 DM エリア内のバンク数

  9. No. of steps/transitions - 利用可能なステップ/トランジションの最大数

  10. Kind of memory card - 00: メモリカードなし 01: SPRAM 02: EPROM 03: EEPROM

  11. Memory card size - メモリカードのサイズ(Kb 単位)

####歴史と背景

FINS(Factory Intelligent Network Services)は、コマンドを利用して PLC と通信するプロトコルです。このプロトコルは UDP 版と TCP 版の両方をサポートしています。この 2 つのプロトコルにはいくつかの違いがあるため、TCP と UDP の両方のサービスをスキャンできるように 2 つのスクリプトが作成されています。

OMRON FINS は、水処理プラント、製造施設、ユーティリティなどの産業用自動化制御システムで使用されています。

####インストール

このスクリプトの実行には Nmap が必要です。Nmap をインストールしていない場合は、Nmap の指示に従って Nmap をダウンロードしてインストールしてください。 http://nmap.org/download.html

#####Windows

enip-enumerate.nse をダウンロードしたら、NSE Scripts ディレクトリに移動する必要があります。これは管理者として行う必要があります。スタート -> プログラム -> アクセサリ の順に移動し、「コマンドプロンプト」を右クリックします。「管理者として実行」を選択します。

root@kitploit:~
move omron*.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

enip-enumerate.nse をダウンロードしたら、NSE Scripts ディレクトリに移動する必要があります。これは sudo/root として行う必要があります。

root@kitploit:~
sudo mv omron*.nse /usr/share/nmap/scripts
	

####使用方法

ターミナルウィンドウまたはコマンドプロンプトで、以下のいずれかのコマンドを使用します。 は OMRON FINS をスキャンしたいターゲットです。

root@kitploit:~
Windows: nmap -p 9600 --script omrontcp-info <host> 
Windows: nmap -sU -p 9600 --script omronudp-info <host>

Linux: nmap -p 9600 --script omrontcp-info <host> 
Linux: sudo nmap -sU -p 9600 --script omronudp-info <host>

	

####注意事項

このスクリプトの公式 TCP 版は、https://github.com/digitalbond/Redpoint/omrontcp-info.nse で保守されています。

このスクリプトの公式 UDP 版は、https://github.com/digitalbond/Redpoint/omronudp-info.nse で保守されています。

これらのスクリプトは、標準の FINS および TCP/FINS 宛先ポートである UDP 9600 と TCP 9600 を使用します。

== ###pcworx-info.nse ![pcworx-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/pcworx.png)

####作者

Stephen Hilt
Digital Bond, Inc

####目的と説明

pcworx-info.nse の目的は、PC Worx プロトコルを介して Phoenix Contact ILC PLC を識別し列挙することです。PLC は、事前に生成されたリクエストで TCP/1962 にクエリを送信することで確実に識別されます。応答メッセージによって PC Worx 対応 PLC かどうかが判断され、追加の列挙につながります。

このスクリプトでは、通信を確立して PLC から情報を要求するために、合計 3 つのパケットが PLC に送信されます。

このスクリプトが解析する PC Worx プロパティは次のとおりです。

  1. PLC Type - ILC PLC タイプを表す文字列。

  2. Model Number - 2737193 などの PLC のモデルを表す ASCII 数字の文字列。

  3. Firmware Version - PLC で動作しているファームウェアのバージョンを表す文字列。

  4. Firmware Date - PLC で動作しているファームウェアのビルド日を表す文字列。

  5. Firmware Time - PLC で動作しているファームウェアのビルド時刻を表す文字列。

####歴史と背景

Phoenix Contact 製品 Web ページ リンク より

PC Worx は、Phoenix Contact のすべてのコントローラ向けの一貫したエンジニアリングソフトウェアです。IEC 61131 に準拠したプログラミング、フィールドバス設定、システム診断を単一のソフトウェアソリューションで統合します。これにより、ハードウェアとソフトウェアの最適な連携が実現します。PC Worx を使用して、複雑な自動化コンセプトを実装できます。サポートする I/O の数に応じて、PC WORX BASIC と PC WORX PRO の 2 つのバージョンから選択できます。

####インストール

このスクリプトの実行には Nmap が必要です。Nmap をインストールしていない場合は、Nmap の指示に従って Nmap をダウンロードしてインストールしてください。 http://nmap.org/download.html

#####Windows

pcworx-info.nse をダウンロードしたら、NSE Scripts ディレクトリに移動する必要があります。これは管理者として行う必要があります。スタート -> プログラム -> アクセサリ の順に移動し、「コマンドプロンプト」を右クリックします。「管理者として実行」を選択します。

root@kitploit:~
move pcworx-info.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

pcworx-info.nse をダウンロードしたら、NSE Scripts ディレクトリに移動する必要があります。これは sudo/root として行う必要があります。

root@kitploit:~
sudo mv pcworx-info.nse /usr/share/nmap/scripts
	

####使用方法

ターミナルウィンドウまたはコマンドプロンプトで、以下のいずれかのコマンドを使用します。 は Phoenix Contact PLC をスキャンしたいターゲットです。

root@kitploit:~
Windows: nmap -p 1962 --script pcworx-info -sV <host>

Linux: nmap -p 1962 --script pcworx-info -sV <host> 

	

####注意事項

このスクリプトの公式バージョンは、https://github.com/digitalbond/Redpoint/pcworx-info.nse で保守されています。

このスクリプトは、標準の PC Worx 宛先ポートである TCP 1962 を使用します。

==

###proconos-info.nse ![proconos-info Sample Output] (http://www.digitalbond.com/wp-content/uploads/2015/02/pcworx.png)

####作者

Stephen Hilt
Digital Bond, Inc

####目的と説明

proconos-info.nse の目的は、ProConOS/MultiProg プロトコルを介して PLC を識別し列挙することです。PLC は、事前に生成されたリクエストで TCP/20547 にクエリを送信することで確実に識別されます。応答メッセージによって ProConOS/MultiProg 対応 PLC かどうかが判断され、追加の列挙につながります。

この情報を PLC から取得するために必要なリクエストは 1 つだけです。

このスクリプトが解析する ProConOS/MultiProg プロパティは次のとおりです。

  1. Ladder Logic Runtime - ランタイム名、バージョン、ビルド日を表示する文字列。

  2. PLC Type - PLC のタイプとファームウェアバージョンを表す文字列

  3. Project Name - 現在 PLC 上で実行されているプロジェクト名を表す文字列。

  4. Boot Project - PLC で起動するように設定されているプロジェクト名を表す文字列。

  5. Project Source Code - プロジェクトのソースコードが利用可能かどうかを表す文字列。

####インストール

このスクリプトの実行には Nmap が必要です。Nmap をインストールしていない場合は、Nmap の指示に従って Nmap をダウンロードしてインストールしてください。 http://nmap.org/download.html

#####Windows

proconos-info.nse をダウンロードしたら、NSE Scripts ディレクトリに移動する必要があります。これは管理者として行う必要があります。スタート -> プログラム -> アクセサリ の順に移動し、「コマンドプロンプト」を右クリックします。「管理者として実行」を選択します。

root@kitploit:~
move proconos-info.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

proconos-info.nse をダウンロードしたら、NSE Scripts ディレクトリに移動する必要があります。これは sudo/root として行う必要があります。

root@kitploit:~
sudo mv proconos-info.nse /usr/share/nmap/scripts
	

####使用方法

ターミナルウィンドウまたはコマンドプロンプトで、以下のいずれかのコマンドを使用します。 は ProConOS/MultiProg PLC をスキャンしたいターゲットです。

root@kitploit:~
Windows: nmap -p 20547 --script proconos-info -sV <host>

Linux: nmap -p 20547 --script proconos-info -sV <host> 

	

####注意事項

このスクリプトの公式バージョンは、https://github.com/digitalbond/Redpoint/proconos-info.nse で保守されています。

このスクリプトは、標準の ProConOS/MultiProg 宛先ポートである TCP 20547 を使用します。

==

###s7-enumerate.nse ![s7-enumerate Sample Output] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/04/S7screenshot.png)

####作者

Stephen Hilt
Digital Bond, Inc

注:このスクリプトは、Nmap 内で PLCScan と同じ機能を提供することを目的としています。PLCScan によって収集される情報の一部はこの NSE に移植されていませんが、この情報は受信したパケットから解析できます。

PLCScan を作成してくれた Positive Research と Dmitry Efanov に感謝します。

####目的と説明

s7-enumerate.nse の目的は、Siemens SIMATIC S7 PLC を識別し列挙することです。S7 は、事前に生成された COTP および S7COMM メッセージで TCP/102 にクエリを送信することで確実に識別されます。応答メッセージによって S7 PLC かどうかが判断され、追加の列挙につながります。注:TCP/102 は複数のアプリケーションで使用されており、その 1 つが S7COMM です。

S7 通信が正常に確立された後、2 つの S7 リクエストが送信されます。

これらのリクエストは、基本ハードウェア、ファームウェア情報、およびプラント識別やシステム名などのいくつかの記述情報を取得します。この情報は Nmap に返され、Nmap がサポートする標準出力形式で表示されます。

このスクリプトが解析する S7 プロパティは次のとおりです。

  1. Module - クエリ対象のモジュールの識別情報を表す文字列。S7 モデル(例:315、412、1200 など)を識別します。

  2. Basic Hardware - クエリ対象の基本ハードウェアの識別情報を表す文字列。

  3. Version - 基本ハードウェアのバージョンの識別情報を表す文字列。

  4. System Name - デバイスに付けられたシステム名を表す文字列。資産所有者が構造化された命名規則を実装していた場合、これにより有用な情報が得られる可能性があります。

  5. Module Type - 挿入されたモジュールのモジュールタイプ名である文字列。

  6. Serial Number - モジュールのシリアル番号である文字列。これは主に在庫管理目的で重要です。

  7. Copyright - 著作権情報である文字列。通常は「Original Siemens Equipment」と表示されますが、S7 プロトコルスタックのサードパーティ実装が追加情報を提供する可能性もあります。

  8. Plant Identification - デバイスに設定されているプラント識別を表す文字列。この文字列はこれまでのスキャンではほとんど見られませんでしたが、有用な情報を提供する可能性があります。

####歴史と背景

SIMATIC に関する Wikipedia の記事より http://simple.wikipedia.org/wiki/SIMATIC:

SIMATIC は、ドイツの企業 Siemens によって開発された自動化システムの名称です。この自動化システムは、工業生産に使用される機械を制御します。このシステムにより、機械を自動的に稼働させることが可能になります。

####インストール

このスクリプトの実行には Nmap が必要です。Nmap をインストールしていない場合は、Nmap の指示に従って Nmap をダウンロードしてインストールしてください。 http://nmap.org/download.html

#####Windows

s7-enumerate.nse をダウンロードしたら、NSE Scripts ディレクトリに移動する必要があります。これは管理者として行う必要があります。スタート -> プログラム -> アクセサリ の順に移動し、「コマンドプロンプト」を右クリックします。「管理者として実行」を選択します。

root@kitploit:~
move s7-enumerate.nse C:\Program Files (x86)\Nmap\scripts

#####Linux

s7-enumerate.nse をダウンロードしたら、NSE Scripts ディレクトリに移動する必要があります。これは sudo/root として行う必要があります。

root@kitploit:~
sudo mv s7-enumerate.nse /usr/share/nmap/scripts
	

####使用方法

ターミナルウィンドウまたはコマンドプロンプトで、以下のいずれかのコマンドを使用します。 は S7 PLC をスキャンしたいターゲットです。

root@kitploit:~
Windows: nmap -p 102 --script s7-enumerate -sV <host>

Linux: sudo nmap -p 102 --script s7-enumerate -sV <host> 

	

####注意事項

このスクリプトの公式バージョンは、https://github.com/digitalbond/Redpoint/s7-enumerate.nse で保守されています。

このスクリプトは、標準の S7COMMS 宛先ポートである TCP 102 を使用します。

ツールをダウンロード