Nmap:セキュリティ専門家のための”ハッカーツール”
Justin Hutchensによる
“倫理的なハッカー”の概念は常に皮肉なものでした。 倫理的なハッキングと攻撃的なセキュリティの発展傾向は、情報セキュリティ業界を世界で最も自己永続的な産業の一つに変えました。
脆弱な情報資産を保護するために使用されるソフトウェアとツールは、それらを悪用するために使用できるツールと同じです。 おそらくそれは逆の方法です。 おそらく、情報資産を悪用する唯一の目的のために作成されたツールは、現在、それらを保護するために使用されています。 私はこれが永遠に続くことができる議論であり、実際には”何が最初に来たのか…鶏か卵か?”
このエッセイの目的は、意図の哲学的な問題を議論することではありません。 私の意図はより控えめです。 私は、一貫して悪意のあるハッキングソフトウェアとしてラベル付けされているツールの重要性を正当化しようとしています。 私が言及しているツールは、Network Mapper、または略してnmapです。 あなたが世界革命を扇動する狂った不正なエージェントであろうと、ネットワークセキュリティの専門家であろうと(前者ではなく後者であろうと)、nmap おそらく、非常に機能的なネットワーキングツールで批判を投げつけるのではなく、私たちは個人に彼らの行動に責任を負わせ、よく知られているベンジャミンパーカーの警告を反映させるべきです…”大きな力で、大きな責任が伴います。「反対の主張があるにもかかわらず、nmapは悪意のあるソフトウェアではありません。 そして、私はそれがしばしばそのようにラベル付けされている唯一の理由は、その非常に印象的な機能のリストのためだと思います。 害を及ぼす可能性があるにもかかわらず、nmapは確かに専門的な環境内のネットワークインフラストラクチャを確保する上で重要な役割を果た
Nmapは、単純なスキャンユーティリティから本格的な侵入テストプラットフォームへと着実に進化してきました。 これは、ネットワーク検出、ポートスキャン、サービス列挙、脆弱性マッピング、さらには悪用を含む、セキュリティ監査プロセスのすべてのステップで使用 この記事では、侵入テストプロセスの各ステップに関連するnmapの機能について説明します。
インストールと準備
明らかに、nmapを使用する前に、使用しているシステムに機能バージョンをインストールすることが重要です。 デフォルトでは、nmapはkali-Linux、Backtrack、DEFT、Node-Zero、Security Onion、NSTなどのほとんどの侵入テストおよびネットワークセキュリティオペレーティングシステムに既にインストールされて 但し、それはまたあなたの選択のほぼあらゆるプラットホームに荷を積むことができます。 Nmapは、Windows、Linux、OSXを含む一般的に使用されるすべてのオペレーティングシステムに簡単にインストールできます。 また、BSD、Solaris、AIX、AmigaOSなど、より曖昧なプラットフォームにインストールするためのドキュメントもあります。 これらのシステムでのインストールパッケージとインストールの実行方法については、http://nmap.org/book/install.htmlを参照してください。
Zenmap–Graphical Interface
nmapの従来のコマンドラインインターフェイスに加えて、zenmapと呼ばれるグラフィカルフロントエンドインターフェイスもあります。 Zenmapは、以前に説明したさまざまな侵入テストプラットフォームの多くにも統合されています。 ただし、Kali-Linux(このチュートリアルで使用するプラットフォーム)にはデフォルトではインストールされていません。 幸いなことに、それはインストールリポジトリにあり、単一のコマンドで簡単にインストールすることができます:
apt-get install zenmap
Zenmapのポイントアンドクリッ これは、後で変更および/または使用するために一般的に使用されるスキャン構成を保存するために”プロファイ 図1で提供されているZenmapインターフェイスのイメージを見て、各コンポーネントについて簡単に説明します。
図1. Zenmapグラフィカルインターフェイス
最初のコンポーネントはターゲットフィールドです(図1. A)。 このフィールドでは、スキャンを実行するリモートシステムを指定できます。 単一のIPアドレス(例:192.168.1.1)を入力したり、一連のIPアドレス(例:192.168.1)を入力したりすることができます。0-255)または、CIDR表記を使用して目的のサブネットを指定することができます(例:192.168.1.0/24)。 2番目のコンポーネントはプロファイルフィールドです(図1. B)。 このフィールドの右側にあるドロップダウン矢印をクリックすると、スキャン用にいくつかの事前設定されたプロファイルが表示されます。 プロファイルを使用すると、将来の使用のために一般的に使用されるスキャン構成を保存できます。 また、あなた自身のプロファイルを作成することができ、彼らは(私たちは、この記事の後半でこれを行う方法を説明します)、このリストに表示されま 3番目のコンポーネントはコマンドフィールドです(図1. C)。 このフィールドは、バックエンドに送信されるコマンドを示します。 このフィールドに表示されるコマンドを起動するには、単にスキャンボタンをクリックします。 このフィールドの値は直接変更できますが、ターゲットフィールドと選択したプロファイルの値に基づいて自動的に設定されます。 Nmapを初めて使用する場合は、適切な構文とさまざまなnmapコマンドの使用をよりよく理解するため、このフィールドに細心の注意を払う必要があります。 4番目のコンポーネントは、ホスト/サービスリストです(図1. D)。 スキャンを実行すると、このリストに情報が入力されます。 ホストボタンが選択されている場合は、検出されたすべてのホストIPアドレスが一覧表示されます。 また、[サービス]ボタンを選択している場合は、検出されたすべてのネットワークサービスが一覧表示されます。 最終的なコンポーネント(図1. E)は、実行したすべてのスキャンによって生成されたすべての情報を並べ替えることができます。 Nmap出力タブには、コマンドがコマンドラインインターフェイスから入力された場合に提供される正確な出力が表示されます。 [ポート/ホスト]タブの内容は、リストで[ホスト]または[サービス]ボタンが選択されているかどうかによって異なります。 Hostsボタンが選択されている場合、Ports/Hostsタブの下の情報には、リスト内のアクティブに強調表示されたIPアドレスで識別されたサービスが反映されます。 それ以外の場合、サービスボタンが選択されている場合、ポート/ホストタブの下の情報は、リストで強調表示されている特定のサービスを持つことが判明したすべてのホストを識別します。 トポロジタブには、ネットワークの論理トポロジをグラフィカルに表示し、スキャンによって検出されたすべてのホストを含めることができます。 返されたTTL(Time-To-Live)値を使用して、ホストの論理的な向きを相互に相対的に表示します。 ホストの詳細タブでは、選択したホストについて検出された情報の大部分を見つけることができます。 この情報には、MACアドレス、IPアドレス、オープンポート、識別されたサービス、オペレーティングシステム情報、および収集された追加情報が含まれます。 最後に、[スキャン]タブには、セッション中に実行されたスキャンの履歴が表示されます。
画面の上部には、スキャン、ツール、プロファイル、ヘルプを含むいくつかの異なるドロップダウンメニューが表示されます。 ヘルプメニューは一目瞭然です。 スキャンメニューには、新しいスキャンを作成したり、スキャンを保存したり、以前に保存したスキャンを開くためのオプションが含まれています。 ツールメニューには、スキャン中に収集された情報を並べ替えたり整理したりするために使用できる追加機能がいくつかあります。 また、プロファイルメニューには、新しいスキャンプロファイルを作成したり、既存のプロフ
ここで、新しいプロファイルを作成し、そのプロファイルを使用してスキャンを開始する方法について簡単に説明します。 開始するには、プロファイルドロップダウンメニューを選択し、”新規プロファイルまたはコマンド”を選択します。”これにより、図2に示すプロファイル構成インターフェイスが開きます。
図2. Zenmapプロファイルエディタ
最初のタブ(プロファイルタブ)では、プロファイルの一意の名前と説明を作成できます。 他のすべてのタブは、スキャンで使用されるさまざまな構成を指定する場所です。 図2に表示されているスキャンタブでわかるように、スキャンプロファイルの作成は、有効にするオプションのチェックボックスをオンにしたり、 ここでの機能やオプションの適切な使用方法がわからない場合は、マウスでその上にマウスを置くと、画面の右側にあるヘルプ列に、特定のオプショ スキャン設定を微調整するたびに、上部のコマンドフィールドがそれに応じて調整されます。 この機能により、Zenmapはnmapコマンドを正しく使用する方法を学習する上で非常に効果的なツールになります。 あなたの好みに合わせてスキャンオプションを設定したら、単一の使用のために画面の右上にあるスキャンボタンを選択するか、右下にある変更を保 変更を保存ボタンは、最初のタブ設定で指定された名前でプロファイルを保存し、メインZenmapインターフェイスのプロファイルドロップダウンメニューから Zenmapは非常に強力ですが、nmapのコマンドライン機能を学ぶことを妨げる松葉杖になることを許可するべきではありません。 Zenmapは同じ機能の多くを実行できますが、それでも制限があり、nmapほど強力ではありません。 Nmapを効果的に使用し、その可能性を最大限に活用するには、コマンドラインインターフェイスにも同様に精通することが重要です。
ネットワーク検出
今後議論するペネトレーション-テストプロセスの最初のステップはネットワーク検出です。 ネットワーク上の情報システムのセキュリティを評価する前に、まず何を評価しているのかを特定する必要があります。 Nmapを使用してネットワーク上のホストを検出するには、さまざまな方法があります。 このセクションでは、nmapを使用してosiモデルのレイヤ2、3、および4でホスト検出を実行する方法について説明し、それぞれの長所と短所についても説 レイヤ2検出を実行するコマンドの例はここに見ることができます:
nmap-PR-sn192.168.1.0-255
-PR
スイッチはARP pingを指定します。 これは、レイヤ2ARP(Address Resolution Protocol)パケットを使用して、指定された範囲内のライブホストを識別します。 これは、識別されたIPアドレスごとにARPブロードキャスト要求を送信することによって行われます。 これらのIPアドレスのいずれかを持つライブホストがネットワーク上にある場合、そのホストは、IPアドレスと対応するレイヤ2MACアドレスを持つARP応答をスキャンシステムに送信します。 Nmapはすべてのライブホストからの応答を収集し、検出されたホストのリストを返します。 -sn
スイッチは、nmapにポートスキャンを実行しないように要求するために使用されます。 これにより、レイヤ2ホスト検出スイープを実行するために必要なものを超えて、追加のトラフィックの送信が防止されます。 レイヤ2検出は、3つのオプションの中で最も高速であるため、効果的です。 ただし、スキャンを実行するシステムと同じローカルエリアネットワーク上にあるホストに対してのみ実行できるという事実によって制限されます。
リモートホストの場合、レイヤ3またはレイヤ4検出のいずれかを使用する必要があります。 レイヤ3検出を実行するために使用できるコマンドの例は次のとおりです。
nmap-PE-sn109.74.11.0-255
このコマンドは、リスト内の各レイヤ3IPアドレ Nmapは、受信されたすべてのICMPエコー応答を収集し、すべてのライブホストのリストを返します。 この検出スキャンは、ARP pingを実行するよりも遅くなりますが、リモートネットワーク上のホストの結果が返されます。
最後に、すべての着信ICMPトラフィックをドロップするファイアウォールの背後にあるリモートシステム(レイヤ2を使用できない)を検出しようとしていると仮定します(レイヤ3を使用できません)。 この問題に対処するには、トランスポート層(レイヤー4)で検出を実行する必要があります。 レイヤ4スキャンを使用して検出を実行するには、いくつかの方法があります。 効果的な方法の1つは、UDP pingを使用することです。 UDP pingコマンドの例は次のとおりです:Nmap-PU53-sn109.74.11.0-255nmap-PU53-sn109.74.11.0-255nmap-PU53-sn109.74.11.0-255nmap-PU53-sn109.74.11.0-255NMAP-PU53-sn109.74.11.0-255NMAP-PU53-SN 一連のDNSクエリ応答がライブホストから受信され、nmapはこれらの結果を返します。 DNSはUDPポート53で一般的に使用されるサービスであるため、ICMPトラフィックに応答しないように設定されている可能性のあるこの手法を使用して、追 ICMP pingスイープに代わるもう1つの有効なレイヤ4の代替手段は、TCP ACK pingを使用することです。 これの例を以下に示します:Nmap-PA80-sn109.74.11.0-255NMAP-PA80-sn109.74.11.0-255NMAP-PA80-sn109.74.11.0-255NMAP-PA80-sn109.74.11.0-255NMAP-PA80-sn109.74.11.0-255NMAP-PA80-sn109.74.11.0-255NMAP-PA80- これらのACKパケットは確立された通信回線のコンテキスト外であったため、ライブホストはTCP RSTパケットで応答して、通信を中止する必要があるこ Nmapは、ライブホストの指示としてこれらの応答を収集し、それらのリストを返します。
ポートスキャンとサービス列挙
侵入テストを実行しているネットワーク上のアクティブなIPアドレスが検出されたので、次に各システム上の開いているポートとそれらのポート上で実行されているサービスを識別する必要があります。 リモートシステム上のTCPポートのスキャンは、nmapの最も基本的な機能です。 ターゲットシステムのTCPスキャンを実行するには、basicコマンドを使用します。
nmap109.74.11.34
他のnmapコマンドと同様に、これはシーケンシャルシリーズ(192.168.1-255)またはCIDR表記(192.168.1.0/24)。 この標準のnmapコマンドは、一般的に使用される1000個のTCPポートでスキャンを実行します。 または、スキャンするポート番号の後に-pスイッチを使用して、スキャンする単一のポートを指定できます。
nmap109.74.11.34-p21
上記のコマンドは、指定されたシステム上のTCPポート21をスキャンします。 また、-pスイッチを使用して一連のポートをスキャンし、目的のポートをカンマで区切って一覧表示することもできます。
nmap109.74.11.34-p80,443
このコマンドは、ターゲットシステム上のポート80と443をスキャンします。 連続した範囲のポートをスキャンするには、-p
スイッチを使用し、その後に範囲の最初の値、ダッシュ、および範囲の最後の値を続けます。
nmap109.74.11.34-p0-100
上記のコマンドは、最初の100個のポートをスキャンします。 ターゲット上の65,536個のTCPポートすべてをスキャンするには、次のコマンドを使用します。
nmap109.74.11.34-p0-65535
TCP ACKスキャンを使用して、フィルタリングされ これを行うには、-sAスイッチを使用します。 その後、ポートまたは一連のポートを指定できます。 ポート仕様は、標準の1,000ポートをスキャンしません。 これにより、フィルタリングされたポートのリストが返されます。 このコマンドの例を以下に示します。
nmap109.74.11.34-sA
侵入テスト担当者やセキュリティ担当者は、ターゲットシステム上の開いているTCPポートのみをスキャ UDPサービスを見落とすと、簡単に侵害につながる可能性のある明白な脆弱性を完全に見落とす可能性があります。 ターゲットシステム上のUDPサービスをスキャンするには、次のコマンドを使用します。
nmap109.74.11。34-sU
UDPサービスはTCPサービスと同じように接続指向ではないため、通常のTCPスキャンよりも時間がかかります。 UDPスキャンを完了するのに必要な時間は、特定のポートをスキャンすることによって短縮できます。 TCPスキャンと同じ方法でポートを指定できます。NMAP109.74.11.34-sU-p69NMAP109.74.11.34-sU-p69NMAP109.74.11.34-sU-p69nmap109.74.11.34-sU-p69nmap109.74.11.34-sU-p69nmap109.74.11.34-sU-p69nmap109.74.11.34-sU-p69 また、特定のサービスごとにバージョンとバージョン番号を識別することもできます。 これを行うには、-sVスイッチを使用します。
nmap109.74.11.34-sV
このコマンドは、バナーグラビングとプローブ応答分析の組み合わせを使用して、スキャンされた各ポートのサービスとそのサービスのバー 同様の手法を使用して、nmapがターゲット上で実行されているオペレーティングシステムを決定しようとすることもできます。 これを行うには、-O
スイッチを使用します。
nmap109.74.11.34-O
完了すると、オペレーティングシステムの肯定的な識別を返すか、最良の推測と他の可能なオペレーティングシステムのリストを返します。
高度なスキャン技術
中規模から大規模のエンタープライズネットワークに対して侵入テストを実行するときに頻繁に発生する一般的な問題があ ほとんどの企業や組織は、これらの日は、より多くのセキュリティ志向となっており、おそらくあなたとあなたがスキャンしようとしているシステ このようなシステムをスキャンするには、いくつかのより高度なスキャン技術を採用する必要があります。 ファイアウォールおよび/または侵入検知システムを潜在的にバイパスする1つの方法は、nmapに統合されているいくつかの伝統的なステルススキャン技術を使用することです。 使用することができる一つの方法は、より遅いタイミングテンプレートを使用することである。 タイミングテンプレートの範囲は、-T0
(paranoid scan)から-T5
(Insane scan)までです。 タイミングテンプレートの値が低いほど、スキャンの実行速度が遅くなります。 遅いスキャンは、侵入検知システムによってフラグが設定される可能性が低くなります。 被害妄想スキャンの例は次のとおりです。
nmap109.74.11.0-255-T0
スキャンをマスクするために使用できる別の手法は、-D
スイッチを使用してネットワー この関数を使用すると、トラフィックをスプーフィングする複数のアドレスを指定するか、rndオプションを使用してランダムなアドレスからトラフィッ
nmap109.74.11.0-255-D RND:5
ターゲットシステムの従来のTCPポートスキャンを実行することに加えて、上記のコマンドは、実際のスキャントラフィックを難読化するために5つのランダムなアドレスからトラフィックをスプーフィングします。 使用できる別の手法は、送信された要求のパケット長を変更することです。 一部の侵入検知システムとファイアウォールでは、署名パケットの長さに基づいてパケットがドロップされます。 これを防ぐには、--data-length
スイッチを使用してデータ長を指定し、その後にパケットサイズをバイト数で指定します。
nmap109.74.11.0-255–data-length15
このコマンドは、すべてのスキャントラフィックを15バイトの長さのパケットで送信します。 これは、いくつかの署名ベースの侵入検知システムを回避するのに役立ちますが、異常な指定されたパケット長のパケットを一貫して送信すると、変 ネットワーク侵入検知システムは、指定されたネットワーク範囲内のシステムに順次接続を開始すると、トラフィックにフラグを設定します。 スキャンを順番に実行しないようにするには、--randomize-hosts
スイッチを使用します。
nmap109.74.11.0-255–randomize-hosts
上記のコマンドは、順番に実行するのではなく、範囲内の各ホストをランダムにスキャンします(109.74.11.0、109.74.11.1、109.74.11.2など)。 IPアドレスを偽装することはできませんが(開いているポートを決定するために必要な応答を受信しないため)、MACアドレスを偽装することができます。 これを行うには、–spoof-macスイッチを使用し、その後にベンダー ID、特定のMACアドレス、または0を指定します。
nmap109.74.11.0-255–spoof-mac0
引数として0を使用すると、スキャントラフィックにランダムなMACアドレスが適用されます。 最後に言及する価値のある技術の1つは、パケットをフラグメント化するために-fスイッチを使用することです。
nmap109.74.11.0-255-f
パケットを断片化すると、スキャントラフィックのデータペイロードが複数のパケットに分離され、コンテンツ検査侵入検知システ これらの手法はすべて、ファイアウォールの背後にある公開アクセス可能なサーバーをスキャンする場合に有効ですが、通常は内部ネットワーク上のホス 特定の公開アクセス可能なサーバーはスキャンに使用できますが、内部インフラストラクチャの多くはネットワーク内で深くなり、それほど簡単にアクセ 図3の図を考えてみましょう。 これは、エンタープライズネットワークの一般的な構成の簡単な例です。
図3. 共通のネットワーク構成
ここで発生する問題は、内部ネットワークが内部ファイアウォールの背後にあることです。 この内部ファイアウォールは、web上のリモートアドレスからの受信トラフィックをブロックしている可能性がありますが、DMZ内のシステムが内部システ これらの内部システムをスキャンできるようにするには、DMZのシステムを私たちに代わって動作させる必要があります。 これを行うには、プロキシスキャン、ゾンビスキャン、FTPバウンススキャンを含むいくつかの異なる方法について説明します。
おそらく、内部システムをスキャンする最も簡単な方法は、プロキシチェーンを使用することです。 オープンアクセスプロキシサービスを見つけること、hydraを使用してプロキシサービスを強制的に強制すること、またはすでに侵害されたマシンにプロキ そのプロキシを介してトラフィックをルーティングするようにシステムを構成したら、完全接続スキャン(-sT
)を使用してnmapスキャンを実行できます。
nmap10.1.1.0-255-sT
使用可能なプロキシサービスがない場合、DMZ内のマシンを利用して内部システムでスキャン結果を取得する巧妙な方法がいくつかあ これを行う1つの方法は、アイドルスキャンとも呼ばれるゾンビスキャンを使用することです。 内部LAN上のシステムに対してゾンビスキャンを実行するには、DMZ内で実行可能なゾンビホストを見つける必要があります。 ゾンビホストは、増分IPIDシーケンスを使用する比較的アイドル状態のシステムです。 ゾンビホストを見つけるために、NMAPスクリプトを使用してDMZをスキャンして、この説明に合ったシステムを見つけることができます。
nmap–script ipidseq109.74.11.0-255
このスクリプトは、各ホストに一連のパケットを送信し、受信したすべての応答のIPID番号を追跡します。 次に、これらのIPID番号を分析して、各システムをランダムシーケンス、すべてゼロ、または増分のいずれかとして分類します。 インクリメンタルシステムの出力の例については、図4を参照してください。
図4. IPID Sequence Script
ゾンビシステムのIPアドレスを取得したら、ゾンビスキャンを試みる準備が整いました。 スキャンを実行する方法に対処する前に、私は簡単にスキャンがどのように動作するかを説明します。 開いているポートに対してゾンビスキャンが実行されたときの動作の図については、図5を参照してください。
図5. オープンポート
に対するゾンビスキャンまず、nmapスキャナは、未承諾のSYN/ACKパケットを送信することによって、ゾンビシステムの現在のIPID値を決定します。 接続を確立するためにzombieシステムによって最初にSYNパケットが送信されなかったため、zombieは最初のパケットでスキャナに応答します。 スキャンシステムは、最初のパケットのIPIDを基準点として使用します。 その後、私たちのスキャンシステムは、ゾンビシステムのソースIPアドレスを使用してターゲットシステムに送信されたスプーフィングされたSYNパケ 送信元IPアドレスはDMZ内のアドレスであるため、この接続要求はファイアウォールを通過できる可能性が高くなります。 ターゲットがパケットを受信し、宛先ポートが開いている場合、ターゲットはSYN/ACKパケットをゾンビシステムに返します(元のSYNパケットを送信したと考え このSYN/ACKパケットはコンテキスト外で受信されるため、ゾンビシステムはRSTパケットでターゲットシステムに応答し、IPID値を1ずつインクリメントします。 最後に、スキャナは最後のSYN/ACKパケットをゾンビシステムに送信します。 ゾンビからの後続の最初の応答は、IPIDをもう一度インクリメントします。 したがって、リモートシステム上の対象ポートが開いている場合、返される最終的なIPID値は元の値よりも高い2つの数値になります。 あるいは、図6は、ターゲット-システムのポートが閉じられたときに何が起こるかを示しています。
図6. Zombie scan against closed port
ターゲットシステム上のポートが閉じられている場合、ゾンビシステムはターゲットからの未承諾の応答を受信しないため、ターゲットにRSTパケ したがって、最終的なRST応答のIPID値が1だけ増加した場合、RST応答を扇動するためにSYN/ACK応答がゾンビシステムに送信されなかったため、ポートが閉じ そうでなければ、最終的なIPID値が元の値から二つずつ増加した場合、ゾンビシステムのIPID値を増加させた応答を扇動したゾンビに応答したに違いないので、ターゲットシステム上のポートが開かれていなければならないと推論することができます。
これは非常に複雑に聞こえるかもしれませんが; nmapはあなたのためにほぼすべての作業を行うので、説明に脅かされないようにしてください。 実際にゾンビスキャンを実行するには、単純なコマンドを入力するだけです。
nmap-sI192.168.199.132-Pn192.168.199.130
-sI
スイッチは、次のIPアドレスをゾンビホスト(192.168.199.132)として使用してゾンビスキャンを実行するようにnmapに指示します。 -Pn
スイッチは、nmapがスキャンを試行する前にターゲットシステムで初期ICMP pingを実行するのを防ぎます。 そのため、コマンドの最終的なIPアドレスはターゲットシステムを識別します。 このコマンドの出力は、図7に示されています。
図7. 閉じたポートに対するゾンビスキャン
このゾンビスキャンを実証するために使用したIP範囲は、内部ネットワーク上のプライベート範囲であることに注 元のシナリオで説明されているように、リモートネットワークに対して効果的に機能するには、DMZと内部ネットワークの両方のシステムがパブリックにルー 内部ネットワークがNAT(Network Address Translation)サーバーの背後にあるプライベート範囲に設定されている場合、nmapスキャナは、偽装されたSYNパケットをリモートの場所から内部アド
DMZ内のシステムを使用して内部ネットワーク上のホストをスキャンしようとする別の方法は、FTPバウンスを使用することです。 従来のFTPサーバーの中には、サードパーティのシステムにファイルを送信する機能をサポートしているものもあります。 DMZで匿名ログインを許可するFTPサーバを発見した場合、またはhydraを強制的に使用した場合は、FTPサーバをテストして、FTPバウンスをサポートしているかどうかを判断することができます。 これを行うには、ftp-bounceスクリプトを使用します。
nmap–script ftp-bounce–script-args
ftp-bounce.username=anonymous,
このコマンドは、FTPサーバーに対してusername引数とpassword引数を指定してnmapスクリプトを使用します。 完了すると、このスキャンはFTPバウンスが可能かどうかを示します。 スクリプトでFTPバウンスが機能していることが示されている場合は、FTPサーバーを使用して、ネットワーク上の他のシステムに対してポートスキャンを実 図8は、この動作を示しています。
図8. FTPバウンススキャン
スキャナは、FTPバウンス機能を介して、指定されたポートのターゲットシステムにバイナリデータを送信しようとします。 データが送信されると、FTPサーバーはこれをスキャナに報告し、ターゲットシステムのポートが開いていることを示します。 FTPバウンススキャンを実行するには、-b
スイッチを使用します。
nmap-b ftpuser::21 10.1.1.128-255
このコマンドでは、-b
関数を使用して、TCPポート21でホストされている192.168.11.201のFTPサーバーに対して、ユーザー名”ftpuser”とパスワードPassW0rd
を使用してftpバウンススキャン 上の図で説明したアクションは、10.1.1.128から10.1.1.255までの各ターゲットホスト上の共通の1000sポートに対して実行されます。
Nseによる脆弱性のマッピングと悪用
ターゲットネットワーク上のライブホストを検出し、それらのホスト上で開いているポートや実行中のサービスを列挙したら、脆弱性のテストと悪用を開始することができます。 新しく統合されたNSE(Nmap Scripting Engine)には、標準のnmapインストールに付属しているプリロードされたスクリプトが多数あります。 これらのスクリプトには、基本的な情報収集(既に説明した2つのような)、脆弱性マッピング、ブルートフォーシング、サービス拒否、さらにはリモートの悪用など、 これらのスクリプトはすべて、nmapのインストールディレクトリにあります。 Kali-Linuxでは、/usr/share/nmap/scripts/
にあります。 これらのスクリプトを参照して作業を開始するには、次のコマンドを使用します:
cd/usr/share/nmap/scripts/
ls
cd
コマンドはディレクトリをNSEスクリプトの場所に変更し、ls
コマンドはディレクトリの内容を表示します。 その後、cat
コマンドの後に表示するスクリプトの名前を付けて、任意のスクリプトを表示できます。 このデモの目的のために、ftp-vuln-cve2010-4221.nse
を使用します。 このスクリプトの内容を表示するには、次のコマンドを使用します。
cat ftp-vuln-cve2010-4221。nse
図9. NSEスクリプトの内容
図9に、このスクリプトの内容を示します。 スクリプトの内容の先頭を参照すると、スクリプトの説明、参照用の追加リソースのリスト、スクリプトの適切な使用と構文を含めるための有用な情報 ただし、ディレクトリ内のこれらのスクリプトを並べ替えたり、特定の機能を実行するスクリプトを見つけたりするのは非常に面倒です。 私の意見では、これはZenmap(私たちが以前に議論したグラフィカルインターフェイス)が本当に輝く場所です。 NSEスクリプトを操作するときにZenmapインターフェイスがどのように役立つかを示すには、コマンドラインから
zenmap
次のコマンドを使用して再度開きま”プロファイルエディタが開いたら、画面の上部にあるスクリプトタブを選択します。 図10に、Zenmapスクリプティングインターフェイスのイメージを示します。
図10. Zenmapスクリプティングインターフェイス
利用可能なすべてのnmapスクリプトのリストは、画面の左側にあります。 これらのいずれかを選択して、nmapコマンドに含めることができます。 一部のスクリプトは、正しく実行できるようにするために引数を必要とします。 Post認証スクリプトでは、多くの場合、特定のネットワークサービスのユーザー名とパスワードが必要になります。 図10の例では、MySQLサービスに対して実行されるブルートフォース攻撃を構成するための引数を指定できます。 また、引数ウィンドウに値を入力することで、スクリプト引数を簡単に渡すこともできます。 これらの引数は、生成されたnmapコマンドに自動的に入力されます。 上部中央のウィンドウには、選択したスクリプトの説明、適切な使用法と構文、さらにはスクリプトの機能を説明するカテゴリが表示されます。 これらのカテゴリは、脆弱性分析などの特定の種類のタスクを実行しようとしている場合に特に役立ちます。 Nmapコマンドを使用してNSEスクリプトを起動すると、標準のnmap出力に結果が表示されます。 ブルートフォーススクリプトの場合、出力にはブルートフォース攻撃が成功したかどうかが表示され、成功した場合は検出されたユーザー名とパスワードが表示さ 脆弱性スクリプトの場合、出力は脆弱性がターゲットシステムに存在するかどうかを示します。 また、悪用スクリプトの場合、出力はその後ターゲットシステムに配信されたペイロードに関する情報を提供します。
Nmapを使用したスクリプト
独自の統合されたスクリプトエンジンに加えて、nmapは出力分析を実行するための従来のスクリプト言語を簡単に使 スクリプトに役立つ2つの出力形式には、greppable出力(-oG
)とXML出力(-oX
)があります。 XMLは、XML解析のためにインポートできるモジュールを持つ高レベルのスクリプト言語に効果的であり、greppable出力をbashシェルスクリプトと組み合わせて使用してnmap結果の分析を合理化することができます。 この出力機能をスクリプトと組み合わせて使用する方法を示すために、図11に示す簡単な4行のbashシェルスクリプトを確認して、nmapスキャンの結果
図11. Nmap Result Analysis Bash Script
非常に大規模なネットワークに対してnmapスキャンが既に実行され、スキャンの出力がgreppable形式でnetworkscanに保存されるシナリオを考えてみましょう。txtファイル。 また、hydraを使用してネットワーク上のすべてのFTPサービスに対してブルートフォース攻撃を実行するとしますが、ネットワーク全体のポート21を再度スキャンす この単純なスクリプトは、指定されたポートが開いているすべてのシステムを抽出します。 最初の行は、ユーザーにポート番号の入力を求めます。 次に、2行目はユーザー入力の値を’port’変数に代入します。 3行目は、そのポートが開いているすべてのシステムが一覧表示されることをユーザーに示します。 最後に、最後のコマンドは、nmap greppable出力の結果をgrepする場所です。 このスクリプトは、grepコマンドを使用して、指定されたポートを参照するすべての行を出力ファイルから抽出します。 これには、ポートが開いている、閉じている、またはフィルタリングされている各インスタンスを列挙する行が含まれます。 次に、その出力を、指定されたポートが開いているインスタンスのみを抽出する別のgrep関数にパイプします。 この出力は、区切り文字としてスペース文字を指定し、2番目のフィールドを出力するcut関数にパイプ処理されます。 これにより、スクリプトは、指定されたポートが開いている各システムのIPアドレスを出力します。 図12に、スクリプトの出力を示します。
図12. Nmap Result Analysis Script Output
これは非常に単純なスクリプトですが、greppable出力形式から情報を抽出するのがいかに簡単かを示しています。 一度取得すると、この収集された情報は、さらなるスクリプト作成に簡単に使用できます。 これは、特定のポートが開いていることが特定された各システムに対して他の後続のタスクを実行するための出発点として使用できます。
オールインワンの侵入テストツール
その異なる機能を組み合わせることにより、nmapだけで簡単に完全な侵入テストを行うことができます。 機能と機能の印象的なリストを持つnmapが本当に強力なツールであることは否定できません。 そして、年が進むにつれて、より多くの人々がこのプロジェクトに貢献し続けるにつれて、それはさらに強力になるでしょう。 彼の父の銃を持つ子供のように、nmapは間違った手の中に危険なツールになることができます。 しかし、正しく使用すれば、ネットワークインフラストラクチャのセキュリティを確保するための非常に貴重な資産になります。 だから、常に賢明にそれを使用し、それをよく使用することを忘れないでください。
著者について
Justin Hutchensは現在、33,000以上のネットワークシステムを持つ大規模なエンタープライズネットワークのネットワーク脆弱性分析、侵入検知、デジタルフォレンジック ネットワーク設計、システム開発、データベース管理、ネットワークセキュリティなど、情報技術分野で多くの異なる役割を果たしています。 彼はまた、現在、BacktrackとKali-Linuxオペレーティングシステムでの侵入テストに関するコースを教えています。 彼は現在、情報技術の学士号とCISSP(認定情報システムセキュリティプロフェッショナル)、CEH(認定倫理ハッカー)、ECSA(EC-Council認定セキュリティアナリスト)とCHFI(コンピ