概要
ポートスキャンについて調べてまとめてみた。
ポートスキャンとは
ネットワークに繋がっているポートのうちどれが通信可能になっているかを見つけることである。
ポートとは
データがネットワークからパソコンに入るときのドア。
機器の接続口。
ポートは0~65535番まで存在する。
ウェルノウンポート番号
0~1023番をウェルノウンポート番号といい、IANAによって管理されている。すでに振り分けられている。
レジスタードポート番号
1024~49151番はレジスタードポート番号といい、これもIANAで管理されている。IANAが登録を受け付けている。
その他のポート番号
ユーザが自由に使用できるのは49152~65535番
有名なポート番号
こちらによくまとまっている。
http://e-words.jp/p/r-wellknownports.html
ポートスキャンの種類
TCPスキャン(Vanilla Scan)
3ウェイハンドシェイクを確立することで、ポートの状態を確認する。
コネクションが確立するため、ターゲットサーバのログに記録される。

SYNスキャン
コネクションを確立しないでポートの稼働状態を確認する方法。
ステルススキャン、ハーフオープンスキャンともいう。ターゲットホストのログには記録されない。応答結果がSYN/ACKのときは、アクティブ状態で、RST/ACKの時は非アクティブ状態であると判断する。

FINスキャン
FINパケットを送り、RSTパケットを受信したらアクティブ、何も受信しなかったら非アクティブと判断する。
クリスマスツリースキャン(XMAS scan)
FIN,PSH,URG(緊急確認)のフラグを全てONにしたパケットを送信し、RSTを受信したら非アクティブ、何も受信しなかったらアクティブとする。
NULLスキャン
全てのフラグをOFFにしたパケットを送信し、RSTパケットを受信したら非アクティブ、何も受信しなかったらアクティブとする。
UDPスキャン
ターゲットにUDPパケットを送信し、応答なしならアクティブ、ICMP port unreachableを受信すると非アクティブと判断する。

FTP Bounce Scan
FTPサーバを中継して指定のホストへアタックやポートスキャンを実施する手法。現状ではほぼ利用不可能。
実際にしてみる
MACのネットワークユーティリティでポートスキャン
今回はnmapを使わずに、macのネットワークユーティリティでポートスキャンしてみます。
ローカルアドレス127.0.0.1を入力し、scanを押す。

次にLINEとSkypeを開けて再度ポートスキャンしてみる。

10400ポートが開いたので、ターミナルを分かる起動し、lsof
コマンドで調べてみる。
% lsof -i:10400
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
LINE 19523 Tomoki 11u IPv4 0xa2dbb30cec7973c1 0t0 TCP localhost:10400 (LISTEN)
10400ポートをLINEが使っているということが分かる。
kill <PID>
と入力すると対象のプロセスが入力する。
% kill 19523
LINEが終了した。
ポートスキャンの対策
予防、防止
- 不要なサービスを停止し、ポートを閉じる。
- OS、アプリケーションを最新化し、パッチを適用する。
- 脆弱性検査を実施し、セキュリティホールが塞がれているかを確認する。
- ファイアウォールなどで不要なポートへのアクセスを遮断する。
検知,追跡
1ポートごとにある程度の時間を空け、ポート番号をランダムに選択して行われると検知は非常に困難。
- ネットワーク監視型IDS,ホスト監視型IDS,IPSの利用
- ファイアウォールのログから検知する。
- ホストのログから検知する。