Xmas スキャン

Xmas スキャン

Xmasスキャンでは
TCP パケットの
FIN
URG
PUSH
の3つのフラグを設定し送信する

今回は
Metasploitable の
FTPポート21番に対して実行

nmap -sX -p 21 192.168.1.137

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-25 06:06 JST
Nmap scan report for 192.168.1.137
Host is up (0.00022s latency).

PORT   STATE         SERVICE
21/tcp open|filtered ftp
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.45 seconds

となり

Wireshark で
statictics > Flow Graph
で表示

Flow type を
TCP Flows にして確認すると
FIN PSH URG に対し
応答がないことがわかる

FIN
のときと同じく
パケットを送信して
ポートが開いているなら応答がない

次に閉じている24番ポートに実行

nmap -sX -p 24 192.168.1.137

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-25 06:11 JST
Nmap scan report for 192.168.1.137
Host is up (0.00040s latency).

PORT   STATE  SERVICE
24/tcp closed priv-mail
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds

となり

Wireshark でみてみると
FIN PSH URG パケットを送ると
TCPパケットのRSTと ACK が返ってくるのがわかる

このようにTCPパケットが返ってくるなら
ポートが閉じていると判断できる

Nullスキャン

Nullスキャン

Null スキャンでは
なんのフラグも設定しないTCPパケットを送信する

今回はFTPポート21番に実行

nmap -sN -p 21 192.168.1.137

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-28 05:25 JST
Nmap scan report for 192.168.1.137
Host is up (0.00041s latency).

PORT   STATE         SERVICE
21/tcp open|filtered ftp
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.44 seconds

となる

wireshark でフロー図をみるときに
tcp で絞り込み

statictics > Flow Graph
で表示

なお
Flow type を
TCP Flows にして確認すると wireshark が落ちるので注意

応答がないときには
ポートが開いている
もしくは
フィルタリングがされてると判断

次に閉じているポートで実践

nmap -sN -p 24 192.168.1.137

とする

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-28 05:29 JST
Nmap scan report for 192.168.1.137
Host is up (0.00042s latency).

PORT   STATE  SERVICE
24/tcp closed priv-mail
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds

となる

wireshark でフロー図をみるときに
tcp で絞り込み

statictics > Flow Graph
で表示

RST、ACKパケットが返ってきたら
ポートが閉じていると判断できる

FIN スキャン

FIN スキャン

FIN スキャンでは
FINパケットという
FINフラグを設定したTCPパケットを送信する

FINパケットは
通信終了要求に使われるが
通信前にFINパケットを送信し端末の様子を待つ

今回は
Metasploitable の21ポートのFTPに対して
FINスキャンを行う

nmap -sF -p 21 192.168.1.137

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-25 04:44 JST
Nmap scan report for 192.168.1.137
Host is up (0.00030s latency).

PORT   STATE         SERVICE
21/tcp open|filtered ftp
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.63 seconds

となり

Wireshark で
statictics > Flow Graph
で表示

Flow type を
TCP Flows にして確認すると
応答がないことがわかる

FINパケットを送信して
ポートが開いているなら応答がない

また
フィルタリングされていても応答がない

なお Windows 系OSだと Fin スキャンに反応しないので
WindowsOSであるか判別するのにも使える

次に閉じているポートに実行

nmap -sF -p 24 192.168.1.137

結果は

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-25 04:50 JST
Nmap scan report for 192.168.1.137
Host is up (0.00047s latency).

PORT   STATE  SERVICE
24/tcp closed priv-mail
MAC Address: 08:00:27:55:20:B9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.43 seconds

となり

Wireshark でみてみると
FINパケットを送ると
TCPパケットのRSTと ACK が返ってくるのがわかる

このようにTCPパケットが返ってくるなら
ポートが閉じていると判断できる

Ping スキャン

Ping スキャン

nmap で ping スキャンをするには
-sP オプションを使う

なお対象ネットワークのIPアドレスを
総当りでping することを ping スイープという

まずは windows10 へ ping スキャン

nmap -sP 192.168.1.166

次に wireshark でフローをみてみる

Wiresharkで特定のプロトコルだけを表示させる

を参考に
ARP のみに絞り込むので
arp
として絞り込む

statictics > Flow Graph
で表示

Limit to display filter
にチェックを入れるとARP のみに絞り込んで表示できる

nmap の仕様では
LAN内端末ならARP要求が使われる

WANの端末を対象にするなら
nmap で –send-ip オプションを使う

試しに Metasploitable に対して実行

nmap -sP 192.168.1.137 --send-ip

statictics > Flow Graph
で表示

すると
ICMP Echo
443 ポートへの SYN
80 ポートへの ACK
ICMP Timestamp
が送られているのがわかる

これに対して
TCP パケットや ICMP の返答があれば稼働していると判断できる

次に稼働していない端末へのPing の実行

nmap -sP 192.168.1.150 --send-ip

statictics > Flow Graph
で表示

Limit to display filter
にチェックを入れるとARP のみに絞り込んで表示

これで
nmap が3回 ARP 要求を存在しない端末に対し実行するが
返答がないため稼働していないと判断できる

Linux の ping は ICMP だけ送信するが
namp で
-sP オプションと
–send-ip オプションをつければ
ファイアウォールで ICMP が帰ってこなくても
TCPによる応答を調べることができるので
nmap を使うことで
より高い精度で対象の稼働を調べることができる

UDP スキャン

UDP スキャン

よく使われるUDPサービスは
DNS の53ポート
SMNP の161/162 ポート
DHCP の 67/68 ポート

今回は Metasploitable の 111 ポートのスキャン

nmap -sU -p 111 192.168.1.137

を KaliLInux で実行

wireshark では
ip.addr==192.168.1.137
としてパケットを絞り込んでおく

Staticstics > Flow Graph

フロー図を表示

ARPが表示されると見えにくいので
Limit to display filter にチェックをいれる

Flow type は
All Flows のままでOK

これで2つ目までの通信で応答があることで
ポートが開いているのがわかる

次に windows10 のフィルタリングされている53ポートに
UDPスキャンを実行

nmap -sU -p 53 192.168.1.166

を KaliLInux で実行

wireshark では
ip.addr==192.168.1.166
としてパケットを絞り込んでおく

Staticstics > Flow Graph

フロー図を表示

ARPが表示されると見えにくいので
Limit to display filter にチェックをいれる

この場合応答はないけど
UDPサービスによっては応答はないけど
サービスが開いていることがあるので

Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-19 07:15 JST
Nmap scan report for DESKTOP-GGEV0LD (192.168.1.166)
Host is up (0.00029s latency).

PORT   STATE         SERVICE
53/udp open|filtered domain
MAC Address: 08:00:27:AB:0B:84 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 0.38 seconds

というように
open/filltered
という結果が
nmap で表示される

次に閉じている2050番ポートへのスキャン
今回は Metasploitable へ行う

nmap -sU -p 2050 192.168.1.166

を KaliLInux で実行

wireshark では
ip.addr==192.168.1.166
としてパケットを絞り込んでおく

Staticstics > Flow Graph

フロー図を表示

ARPが表示されると見えにくいので
Limit to display filter にチェックをいれる

すると
ICMPポート到達不能エラーが帰ってくるので
この場合
ポートが閉じていると判断できる

なおUDPはTCPと違って
パケットの到達を保証しないのでスキャン結果には信頼性に欠ける

TCP SYN スキャン

TCP SYN スキャン

今回は
KaliLinux
metasploitable
Windows10
の3つの仮想マシンを
VirtualBox で起動

今回はTCP SYNスキャンを行う

この3つを起動したら
KaliLinux で

wireshark &


バックグラウンドでwireshark を起動

キャプチャ対象は eth0

次に KaliLinux から Windows10 に対して
445ポートをスキャン

まずは開いているポートに対して実行

nmap -sS -p 445 192.168.1.166

を実行

次に
wireshark のパケットを Windows10 のみにするので絞り込み

ip.addr==192.168.1.166

さらに見やすくするために
フロー図を表示する

Statistics > Flow Graph
でフロー図を表示

すると3回のやりとりがあるのがわかる

2回めの
SYN ACKまでは
TCPフルコネクトスキャンと同じだけど

RSTパケットを3回めで送ることで
通信を途中で止めている

次に閉じているポートに対して実行

今回は Metaspliitable に対して実行

nmap -sS -p 24 192.168.1.137

を実行

次に
wireshark のパケットを Metasploitable のみにするので絞り込み

ip.addr==192.168.1.137

さらに見やすくするために
フロー図を表示する

Statistics > Flow Graph
でフロー図を表示

すると今回は
2回のやりとりになる

TCP SYN スキャンは
ポートが開いていても通信を確立しているせず
RSTパケットを送り途中で通信をやめるので
サービスログに残らない

このためステルススキャンとも言われている

なおTCP SYNスキャンには root 権限が必要

nmap でスキャンの種類を指定しないと
TCP SYN スキャンで行うようになっている