hping3による匿名ポートスキャン

実装するには、TCP / IPの強力な知識と理解する意欲が必要です。 その結果、リモートマシンをスキャンして、次のスキーム(nmapのマニュアルからの写真)に従って他の誰かのアドレスからポートを開くことができます。



画像



理論的紹介


Wikipedia見ることができるように 、送信された各IPパケットには番号が割り当てられますが(断片化されたパケットには1つの番号があります)、特別な16ビットフィールドに格納されます。 フィールドがいっぱいになると、カウントはゼロから始まります。 ネットワークパケット番号を2回測定すると、監視対象コンピューターのネットワークアクティビティを判断できます。

TCP接続は、「トリプルハンドシェイク」スキームに従ってセットアップされます。 クライアントは、SYNフラグが設定されたパケットをサーバーに送信し、接続を作成する提案を通知します。 サーバーが接続用のソケットを作成できた場合、カウンターSYNとACK確認要求を含むパケットでクライアントに応答します(ここで、クライアントはACKフラグを含むパケットを使用してTCP接続を作成することを確認します)。 サーバーが接続を拒否すると、クライアントはRSTフラグ付きのパケットの形式で拒否を送信します。クライアントはこれに黙って黙っています。 この違いに基づいて、他の誰かに代わって開いているポートのスキャンを作成します。



練習する


尊敬されるvanafで述べられているように、この方法は、スキャンされたホストとスキャンホストが同じサブネット上にある場合、または異なるスキャンホストと偽のホストが同じサブネット上になければならない場合に機能します。

実装には、コンピューターセキュリティスペシャリストhping3の主要ツールの1つを使用します。 3台の車がスキームに参加し、条件付きで攻撃、標的、偽物と名付けられ、その代わりにスキャンを実施します。 ダミー車の役割では、最小量のトラフィックを生成する(理想的にはまったく生成しない)ものを選択する必要があります。 このシェルマシンの詳細を調べるために、シェルマシンと通信し、パッケージ番号の変化を観察します。 理想的には、彼女との各通信のパケット数は1つずつ増加する必要があります。つまり、この期間中に彼女はこれ以上通信を行わなかったということです。 これを行うには、次のようにhpingを実行します。



root@Atom:~# hping3 -r 192.168.2.140

HPING 192.168.2.140 (eth0 192.168.2.140): NO FLAGS are set, 40 headers + 0 data bytes

len=46 ip=192.168.2.140 ttl=128 id=25378 sport=0 flags=RA seq=0 win=0 rtt=0.2 ms

len=46 ip=192.168.2.140 ttl=128 id=+1 sport=0 flags=RA seq=1 win=0 rtt=0.3 ms

len=46 ip=192.168.2.140 ttl=128 id=+1 sport=0 flags=RA seq=2 win=0 rtt=0.2 ms

len=46 ip=192.168.2.140 ttl=128 id=+1 sport=0 flags=RA seq=3 win=0 rtt=0.2 ms

len=46 ip=192.168.2.140 ttl=128 id=+1 sport=0 flags=RA seq=4 win=0 rtt=0.2 ms

^C

--- 192.168.2.140 hping statistic ---

5 packets transmitted, 5 packets received, 0% packet loss

round-trip min/avg/max = 0.2/0.2/0.3 ms









-rスイッチは、パケット番号の増分を表示するようにhping3に指示します。 ご覧のとおり、各通信で1ずつ増加します。つまり、不要な通信はありません。 このプロセスを無限の「ping」に設定して、パケットIDの変化を監視します。

次に、ターゲットマシンへのTCP接続を確立するためのプロポーザルを送信する必要があります。プロポーザルは、特定の方法で構成されます。パケットソースフィールドで、回答が送信される偽のマシンのアドレスを設定します。 ターゲットマシンの指定されたポートが閉じられている場合、フロントエンドマシンに障害(RST)が送信されますが、フロントエンドマシンはそれを無視します。 ポートが開いている場合。 次に、ターゲットマシンは、カウンターオファーを送信して接続を確立し(SYN + ACK)、フロントマシンはそれを拒否するように強制されます。つまり、フラグ付きのパケット(RST)です。 ここで、以前に休んでいた車が、彼女に代わって参加の申し出を送信したまさにその瞬間に誰かに何かを言ったことがわかります。 事故を避けるために、実験が繰り返されます。

次のように、他の人の名前から接続要求を送信できます。



root@Atom:~# hping3 -c 1 -S -a 192.168.2.140 192.168.2.1 -p 5222

HPING 192.168.2.1 (eth0 192.168.2.1): S set, 40 headers + 0 data bytes



--- 192.168.2.1 hping statistic ---

1 packets transmitted, 0 packets received, 100% packet loss







-c 1は、1つのパケットのみを送信することを意味します。

-S SYNフラグを設定

-a 192.168.2.140パケットのソースとして、アドレス192.168.2.140を設定します(この例ではシェルマシンのアドレス)

ターゲットマシンの192.168.2.1アドレス

-p 5222ターゲットTCPポート



パッケージはフロントマシンに送信されたため、おそらくパッケージを拒否することを余儀なくされたため、パッケージに対する応答は受信しませんでした。

ポートが開いている場合、次の図が表示されます。



len=46 ip=192.168.2.140 ttl=128 id=+1 sport=0 flags=RA seq=4 win=0 rtt=0.2 ms

len=46 ip=192.168.2.140 ttl=128 id=+1 sport=0 flags=RA seq=5 win=0 rtt=0.2 ms

len=46 ip=192.168.2.140 ttl=128 id=+2 sport=0 flags=RA seq=6 win=0 rtt=0.2 ms

len=46 ip=192.168.2.140 ttl=128 id=+1 sport=0 flags=RA seq=7 win=0 rtt=0.2 ms

len=46 ip=192.168.2.140 ttl=128 id=+1 sport=0 flags=RA seq=8 win=0 rtt=0.2 ms








3行目では、その瞬間の前の車が他の誰かと通信できたことがわかりますか? ほとんどの場合、これは相反性(SYN + ACK)の提供に対する拒否(RST)であるため、フロントマシンは実際にSYNを送信しませんでした。 忠実のために、実験が繰り返されます。

便宜上、-iスイッチを使用して時間間隔を設定し、-p ++を使用して各パケットでポートを1つずつ増やすことができます。



おわりに


同じ方法を使用して、ターゲットが侵入検知システムである場合、疑いを持たないシェルマシンを禁止できます。

これは、多くの印象的なhping3アプリケーションの1つにすぎません。 icmpが無効になっているときにpingを実行できます(デフォルトではTCPを介してポート0にパケットを送信します)。 また、厳密に構成されたファイアウォール(少なくともping経由)でもファイルを転送するために使用でき、icmpだけでなくUDPおよびTCPに基づいたtracerouteとして機能し、リモートOSの判別に役立ち、非常に特殊なトロイの木馬などになります。 彼をもっとよく知ることを強くお勧めします。 彼には良いHOW-TOがあります;)

あなたがそれを好きなら、私は感謝を受け入れます。



UPD:

nmapを使用して同様のトリックを実行できるという情報を提供してくれたjcmvbkbcに感謝しますnmap.org/book/idlescan.html



All Articles