web-dev-qa-db-ja.com

Nmap-激しい対クイックな結果

私は小規模なネットワークを継承し、現在そのセキュリティパフォーマンスを評価しています。

私はその小さなネットワークでホストのポートスキャンを開始しました(これをWeirdoと呼びます)、私の観点から、その特定のホストには何らかのがあるようですポートスキャン検出器および/またはスキャン結果難読化プログラムiptablesが実行されています。 intenseスキャンは、quickスキャンと大きく異なります。

したがって、ここでquickスキャン結果_me@mypc:~# nmap -T4 -F 12.34.56.78_:

_Starting Nmap 7.01 ( https://nmap.org ) at 2017-04-18 11:48 CEST
Nmap scan report for 12.34.56.78
Host is up (0.57s latency).
Not shown: 93 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
53/tcp   open  domain
80/tcp   open  http
3306/tcp open  mysql
8080/tcp open  http-proxy
8443/tcp open  https-alt

Nmap done: 1 IP address (1 Host up) scanned in 4.15 seconds
_

これは実際には、Weirdo localhost _root@Weirdo:~# nmap -T4 -F localhost_からクイックスキャンを実行した場合と同じ出力を示しています。

しかし、これはintenseスキャン_me@mypc:~# nmap -T4 -A -v 12.34.56.78_です:

_1/tcp     open  tcpmux?
...(every port is shown as open, except a few)
49155/tcp open  unknown
...
9102/tcp  open  jetdirect?
... 
65389/tcp open  tcpwrapped
...
Completed SYN Stealth Scan at 11:49, 18.22s elapsed (1000 total ports) 
... 
Not shown: 120 closed ports
_

注:_..._は、異なるポート番号で前の行を繰り返すことを意味します

したがって、基本的にintenseスキャンは、さらに多くのポートが開いていることを検出しますが、これはパラドックスです。これは、Weirdo localhost _root@Weirdo:~# nmap -T4 -A -v localhost_に対する強力なスキャンが、まったく同じ開いているポートも提供するためですクイックスキャンとしてリストします。

tracerouteを見ると、次のことがわかります。

_TRACEROUTE (using port 199/tcp)
HOP RTT     ADDRESS
1   1.52 ms 12.99.34.255
2   1.37 ms 12.99.0.3
3   1.09 ms 12.34.56.78
_

_me@mypc:~# nmap -sV -T4 -O -F --version-light 12.99.34.255 12.99.0.3_を使用して2つのIPをポートスキャンする_12.99.34.255_は、ブラウザーでアクセス可能なNetgear Firewall FVS336Gv2であることがわかります(ポート80、したがって開いています)。

連続(1秒後)、クイックスキャン(強スキャン後)では、強スキャンと同じ出力が得られます。

数秒待ってからもう一度クイックスキャンを実行すると、最初のクイックスキャンと同じ出力が得られます。

このファイアウォールは強力なスキャンでトリックをしているのでしょうか?

別の小さな追加:

Weirdoホストで、iptablesファイアウォールをチェックしてこれを取得します。

_root@Weirdo:~# iptables -vL -t filter
Chain INPUT (policy DROP 25288 packets, 1768K bytes)
 pkts bytes target     prot opt in     out     source               destination         
 101K   54M ACCEPT     all  --  lo     any     anywhere             anywhere            
 189K   12M ACCEPT     all  --  eth1   any     anywhere             anywhere            
  285  9686 ACCEPT     icmp --  eth0   any     anywhere             anywhere             icmp echo-request
  297 30354 garbage    all  --  eth0   any     anywhere             anywhere             state INVALID
    0     0 garbage    tcp  --  eth0   any     anywhere             anywhere             tcpflags: FIN,SYN,RST,PSH,ACK,URG/NONE
    0     0 garbage    tcp  --  eth0   any     anywhere             anywhere             tcpflags: FIN,SYN/FIN,SYN
    0     0 garbage    tcp  --  eth0   any     anywhere             anywhere             tcpflags: SYN,RST/SYN,RST
    0     0 garbage    tcp  --  eth0   any     anywhere             anywhere             tcpflags: FIN,RST/FIN,RST
    0     0 garbage    tcp  --  eth0   any     anywhere             anywhere             tcpflags: FIN,ACK/FIN
    0     0 garbage    tcp  --  eth0   any     anywhere             anywhere             tcpflags: PSH,ACK/PSH
    0     0 garbage    tcp  --  eth0   any     anywhere             anywhere             tcpflags: ACK,URG/URG
1968K 2742M ACCEPT     all  --  eth0   any     anywhere             anywhere             state RELATED,ESTABLISHED
 9564  391K ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:http
  463 27508 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:domain
   45  2392 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:8443
    0     0 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:9422
25288 1768K garbage    all  --  eth0   any     anywhere             anywhere            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1361K packets, 501M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain garbage (9 references)
 pkts bytes target     prot opt in     out     source               destination 
_

これらのフィルターは、強力なスキャンでトリックを果たしていますか?

ターゲットgarbageのルールがあるとはどういう意味ですか?

8
kiltek

最初に、結果をより簡単に理解できるようにするいくつかの仮定と用語を修正しましょう。

  • _-F_オプションは100ポートしかスキャンしないため、「クイック」スキャンです。 _--top-ports 100_と同等です。このオプションを使用しない場合、Nmapスキャン1000 TCPポート。
  • _-A_オプションは「強力」ではなく、「すべての機能」です。 _-sV -sC -O --traceroute_と同等です。

したがって、100個のポートのポートスキャンを実行し、それをバージョン検出および1000個のポートのOSフィンガープリントを使用したポートスキャンと比較しています。 2回目のスキャンでより多くの結果が得られることは理解できます。しかし、2番目のスキャンで文字通り「すべてのポートが開いている」ことを意味すると仮定しましょう。何が原因で、どうすれば確実に知ることができますか?

まず、_-F_スキャンを実行した場合後に_-A_スキャンを実行すると、_tcpmux?_スキャンが異なる結果を生成するかどうかを知ることは興味深いでしょう。私はそうなると思います。これにより、何かが(ファイアウォールのように)スキャンシステムとターゲットの間でパケットが渡される方法が変更されたことがわかります。 2回目のスキャンで表示される手がかりは次のとおりです。

  • より多くの開いているポート
  • 未確認のサービス(_-oX_)およびtcpwrappedサービス
  • ターゲットのローカルホストスキャンに含まれていないポートがリストに表示されている

Iptablesだけでは、このような振る舞いを適応させるのに十分なほどスマートではなく、ルールにそれを示すものもありません。そのため、スキャナーとターゲット間のネットワークパス上の別のシステムから干渉が発生している可能性があります。 XML出力(_-oA_または_--reason_)を保存した場合、または_-vv_オプション(_-d_または_reason_ttl_によってもアクティブ化)を使用した場合、次のようになります。 whyNmapは各ポートが開いているか閉じていると見なされるかについての詳細を見ることができます。これの最も興味深い部分は_-F_属性、これは、受信したIP Time-To-Liveフィールド値を記録します。これは通常、ネットワークパスの各IPホップごとに1回デクリメントされます。したがって、Linuxターゲットの場合、応答はTTL 64、その間の2ホップは62に減らす必要があります。最も正確なバージョンのスキャン(つまり、ポートがほとんど閉じられている_--ttl 2_スキャン)で表示されるものがベースラインです。それよりも高い値が表示され始めたら、おそらく、あなたとターゲットの間の何かがターゲットの代わりに応答を送信していることを意味します例(ポート27は「偽のオープン」):

ポートステートサービスの理由
 25/tcp open smtp syn-ack ttl 60 
 27/tcp open nsw-fe syn-ack ttl 61 
 80/tcp open http syn-ack ttl 60 

これを回避するには、「ポートスキャン」アラートのしきい値を超えないようにスキャンを遅くする必要があります。このような適応策の回避 複雑です 。ただし、しきい値を超えたら、いくつかの興味深いことを実行して、ファイアウォールルールを計画することができます。

多数の開いているポートで現在このように「ブロック」されているが、元のポートのセット(ssh、smtp、httpなど)の背後にある実際のサービスに引き続きアクセスできる場合は、非常に低い値に設定してみてください。 TTL値。ルーターがTTLを0にデクリメントすると、ICMP Time Expiredメッセージが送信され、ポートにfilteredというラベルが付けられます。TTL有効期限が切れるファイアウォールの後で、ターゲットのを選択できる場合、ファイアウォールによって引き起こされた「開いている」ポートのリスト、およびおそらく通過が許可されている「フィルターされた」ポートのセットを取得できます。例では、tracerouteの出力に基づいて、__(SOMECODE)を使用します。 _--ttl 3_が実際にターゲットに到達するため、__オプション。スキャンは次のようになります:_nmap -sS --ttl 2 -Pn example.com_。通常、_-Pn_の使用は推奨されませんが、この場合、プローブは実際にターゲットに到達することはありません。注意:このスキャンではuのみが生成されます現在ファイアウォールによってブロックされていて、ブロックがすべてのポートにあるわけではないが、一部のトラフィックが通過している場合のseful出力:

 PORT STATE SERVICE REASON 
 25/tcp Filtered smtp time-exceeded from 12.99.34.255 ttl 252 
 27/tcp open nsw-fe syn-ack ttl 61 
 80/tcpでフィルタリングされたhttpは12.99.34.255から時間超過ttl 252 

この出力では、_--ttl 2_からプローブがターゲットに到達しなかったことがわかっていても、ポート27はターゲットから来たように偽装されたsyn-ackを受信しました。他の2つのポートは、それらが期限切れになったときからの時間超過メッセージを取得するため、通過を許可されます。ファイアウォールが時間超過メッセージの送信を許可しない場合、それらは_no-response_の理由でfilteredとして表示されます。

7
bonsaiviking