ポートスキャンの説明とやり方

サイバー攻撃の偵察段階で用いられるポートスキャンについて

ポートスキャンとは?

ポートスキャンとは、対象のサーバーのポートに対してどのサービスが稼働しているのかを調べることです。ポートスキャン自体は違法にはなりません。

ポートは、0〜65535番まであり、この中の0〜1023番は予約されたポートとしてウェルノウンポートと呼ばれています。HTTPなら80番、HTTPSなら443番、SSHなら22番というようにあらかじめ決まっています。

1024~49151番は登録されたポートとして独自に作成されたアプリケーションに割り当てられます。SQL Serverなら1443番などです。

49152~65535番はダイナミックポートとしてクライアントのアプリケーションに動的に割り当てられます。(自由に利用できる)

この0~65536番までのポートの範囲はIANA (Internet Assigned Number Authority)によって管理されています。

何故、攻撃者がポートスキャンを行うのかと言いますと稼働しているサービスのOS、バージョン、ファイヤーウォール、空いているポートなどを特定するために行います。

サービスのバージョンを特定することが出来れば、そのサービスのバージョンに脆弱性が存在するのかを確認することが出来るからです。

ポートスキャンの種類

この記事ではTCPスキャン、SYNスキャン、UDPスキャンについて紹介していきます。他にもNULLスキャン、クリスマスツリースキャンなどがあります。

TCPスキャン

3ウェイハンドシェイクを行うことでポートの状態を確認する。通信を確立するため、サーバーのログに記録されます。

SYNスキャン(TCPハーフスキャン)

完全な3ウェイハンドシェイクを行わないことでポートの状態を確認する。通信を確立しないため、サーバーにログが記録されない。ステルススキャンの一種。

UDPスキャン

UDPパケットを送信して相手からの応答が何もない場合は「ポートが開いている」、応答があれば「ポートが閉じている」と判断する。

ポートスキャンをしてみる

実際に、ポートスキャンを行っていきます。ポートスキャナーのNmapを使います。

今回は内部IPの端末に対してポートスキャンを行います。

Nmapを使ってどのポートが開いているのかを確認します。

Nmapを使うと、このように表示されてポート、状態、サービスが分かります。

どのようなWebサーバーが使われているのか、特定したいので80番ポートを調べます。

Nmapのオプション

https://nmap.org/man/ja/man-briefoptions.html

OSの検知とそのバージョン: -A
対象ポートを指定: p80

Ubuntu上のApache(2.2.8)で稼働していることが判明しました。

次は、WAF(Web Application Firewall)が存在するのかを確認します。

NmapのNSC(Nmap Script Engine)を使うことで数百とあるスクリプトを使用することが出来ます。

https://nmap.org/nsedoc/index.html

スクリプト使用: –script
WAFの有無、その種類とバージョン: http-waf-fingerprint

WAFは存在しませんでした。

このようにポートスキャンを行うと対象サーバーについてより深く知ることが出来るので攻撃者の偵察段階に用いられるわけです。

不要なポートは閉じるなどのセキュリティ対策をするようにしてください。

以上でポートスキャンについては終わりです。