ホストを検出するためにnmap
でネットワークの範囲をスキャンしたいのですが、スキャンによっては、OT(Operational Technology)デバイス、産業用デバイスの整合性に影響を与える可能性があることを知っていますPLC(プログラマブルロジックコントローラー)などのデバイス。
これには、次のコマンドを使用します。
nmap -sn -n --scan-delay 1s <ip range>
このコマンドで、これらが目的の出力を提供するパラメーターであるかどうかはわかりません。
それを改善する方法はありますか?
運用技術、産業用制御システム(ICSおよびSCADA)、医療機器、組み込み機器、および特殊な通信システムは、特にそれらに与えられる信頼度と、それらがダウンしたときに発生する深刻な結果を考えると、非常に壊れやすい場合があります。 Nmapおよびその他の非標準のネットワークソフトウェアは、TCP/IPのRFC標準のEdgeケースで動作することもあれば、次のような方法で手を差し伸べたり触れたりするように設計されているため、問題を引き起こす可能性があります。システム設計者は考慮していません。
これらのシステムとのあらゆるやり取りにはある程度のリスクが伴うことを理解した上で、混乱を引き起こす可能性が最も高いおよび最も可能性の低いNmapオプションについてのガイドラインを以下に示します スキャンフェーズ で整理。
見過ごされがちなこのフェーズでは、ターゲットアドレスが選択されます。通常、これらはコマンドラインで直接指定されますが、ターゲットをテキストファイルに入れ、-iL
を使用してNmapに渡す方が安全です。これは、アドレスがファットフィンガーされる可能性を排除するため、ターゲットが他の誰かによって提供されている場合に特に役立ちます。 --excludefile
オプションを使用して、既知の範囲外のアドレスをスキャンから除外することもできます。
Nmapは 数種類のプローブ を送信して、ターゲットが待機しているかどうかを判断します。これらのほとんどは無害ですが、機密性の高いシステムをスキャンするときは、-P*
オプションを使用してホスト検出方法を明示的に選択するのが最善の場合があります。特に:
--data-length
を追加するとこれを軽減できますが、他のすべてのパケットに影響し、TCP SYN with dataのような異常なケースが発生します。-PA
)は許可されていません。ここで心配する必要はありません。リバースDNSはNmapと構成済みDNSサーバーの間で実行され、トラフィックがターゲットIPに直接送信されることはありません。 -n
を指定すると、このステップはスキップされ、速度が少し上がりますが、ターゲットには影響しません。
ポートスキャンに問題があります。明示的にRFCを乱用するより難解なスキャンオプション(-sA/W/M/N/F/X
)は別にして、生のSYNスキャンを実行するだけで、決して発生しない着信TCP接続にリソースを割り当てるターゲットをダウンさせることができます。これはSYNフラッドとして知られています。 TCP自体はハーフオープン接続をリセットする必要がないため、スキャン元のシステムが非請求ACKに応答してNmap RSTパケットを送信することを常に確認してください。 Nmapの巧妙に細工されたTCPパケットは、ターゲットが異常動作するほど異常なため、場合によってはこれでも十分ではありません。
TCP接続スキャン(-sT
)は、OSのネイティブソケット操作を使用して接続を開こうとします。この少し遅い方法では、スキャンの異常をいくらか減らすことができますが、開いている各ポートへの完全なTCP接続を完了し、すぐにそれを閉じるという代償があります。 Rob Grahamの注釈 一部の古いUnixライクなシステムは、ポート上のサービスをクラッシュさせる可能性がある方法でリセット接続を処理します。したがって、ターゲットのどの部分がより壊れやすいかを検討してください。OSまたはTCPスタックの場合は、-sT
を使用します。サービスまたはアプリケーションの場合は、-sS
を使用します。
あなたの質問では、ポートスキャンをオフにする-sn
オプションを使用しています。これはもちろん、最も安全なオプションですが、ポートスキャンデータを提供しません(duh)。
ここにモンスターがあります。バージョン検出は、大量の未承諾データをターゲットサービスに送信して、一意の応答を引き出します。 OS検出は、TCP/IPスタックに対して同じことを行います。 NSEスクリプトはどちらかを行うことができ、より創造的で複雑で強力な方法で実行できます。これらはNmapの最も面白くて興味深い機能の一部ですが、運用環境で壊れやすい可能性のあるターゲットでこれらを使用しないことを強くお勧めします。
--traceroute
オプションは、ホスト検出またはポートスキャンがまだ送信していない種類のプローブを送信しないという理由だけで、おそらくかなり安全です。例外は次のとおりです。
-sT
)を実行した場合、TCPフィールドを手動でデクリメントする必要があるため、tracerouteは未加工のTTLパケットを送信する場合があります。ただし、SYNフラッディングに関して前に説明した問題を減らすために、閉じたポートにパケットを送信することを好みます。イニゴモントーヤ:しかし、私はあなたが頂点に達するまであなたを殺さないと約束します。
黒人の男:それはとても心地よいですが、あなたは待つ必要があるだけだと思います。
モントーヤのイニゴ:私は待つのが嫌いです。
ターゲットを無反応にするために数えることができることが1つある場合、それはトラフィックが多すぎます。 Nmapは、パケットのドロップを検出すると速度が低下するため、この点で多くのスキャナーよりも優れている傾向がありますが、それでも十分でない場合があります。これらの場合は、-T2
(2.5パケット/秒)または-T1
(4パケット/分)オプションを使用すると便利です。また、--scan-delay
および--max-rate
を使用して手動で値を調整することもできます。いずれの場合も、速度を落として待機する準備をしてください。
私は定期的にTwitterでNmapクラッシュするデバイスの言及を検索します。これを #KilledByNmapハッシュタグ でリツイートします。 SANSの何人かの人々によって開始された Network Scanning Watch List と呼ばれる壊れやすいデバイスのリストが少し維持されています。
幸運を!