Nmapのタイミングテンプレート
Nmapの基礎解説の2回目は「タイミングテンプレート」についてお話したいと思います。
スキャン速度について
脆弱性診断でポートスキャンをNmapで行う際に「スキャン速度」に注意が必要な場面に遭遇することがあります。例えば、サービス提供先の顧客がネットワークへの負荷を非常に気にしている場合や、NIDS/NIPSなどのセキュリティ機器が一定期間の通信量を閾値と判断し、ポートスキャンを阻害する場合などです。
そのような状況に応じてスキャン速度を調整できるようにNmapでは複数のオプションを用意しています。機能別に分類されたオプションの一覧は、こちらに公式ドキュメントで確認できます。また各オプションの詳細は、こちらでさらに詳しく確認することが可能です。
ポートへの検査同時実行数(--min-parallelism, --max-parallelismなど)、タイムアウト時間(--max-rtt-timeoutなど)、各タスク間の待ち時間(--scan-delayなど)といった設定値を調整することで、スキャン速度を変化させることができます。
スキャン速度を調整することは、前述の状況に対応するためだけでなく、限られた時間の中で必要な情報を効率よく収集するためにも必要となりますので、使いこなせるようになることを推奨します。
タイミングテンプレートについて
一方で、これらのスキャン速度に関するオプションを細かく設定するのは手間がかかるという欠点があります。そこでNmapではスキャン速度のオプションをシンプルに設定できるように、事前にオプションの設定値をまとめたものを用意してくれています。それがタイミングテンプレート(Timing Templates)です。
タイミングテンプレートは全部で6つ用意されています。Tの数字が大きいほどスキャン速度は上がります。※日本語は意訳です。
- T0 (Paranoid:心配性)
- T1 (Sneaky:こそこそ)
- T2 (Polite:礼儀正しい)
- T3 (Normal:普通)
- T4 (Aggressive:積極的)
- T5 (Insane:狂気)
指定方法は以下のようになります
基本形1:nmap -T${番号} ${ターゲットIP・ホスト名}
基本形2:nmap -T ${テンプレート名} ${ターゲットIP・ホスト名}
具体例1:nmap -T3 10.129.255.112
具体例1:nmap -T Nomal 10.129.255.112
Nmapコマンドにタイミングテンプレートを明示的に指定しない場合は、デフォルトではT3が使用されます。各タイミングテンプレートの設定値の詳細はこちらの公式ドキュメントをご確認ください。
タイミングテンプレートによってどのくらいポートスキャンの時間はが変わるのか?
では、ここで実験を行ってみましょう。T3からT5のタイミングテンプレートを指定した場合、ポートスキャンにかかる時間がどの程度変化するのかを比較します。
検証方法はシンプルです。あるターゲットに対してフルポートスキャンを実施し、その際のスキャン時間を比較します。
T3 | T4 | T5 | |
スキャン時間(s) | 602.24 | 441.89 | 384.24 |
T3のスキャン時間との比較 | 100% | 73% | 64% |
T3と比べるとT4は約3割、T5は約4割スキャン時間が短い結果となりました。もちろん対象のサーバー性能やネットワークの質といった条件によって結果が異なりますので、一概に同じようになるとは限りません。サーバー性能が高くない、ネットワークの質が良くないとなればなるほど、この時間差は大きくなっていきます。
どのタイミングテンプレートを使えば良いか
実は公式ドキュメントではこのような記述があります。
I recommend using -T4 when scanning reasonably modern and reliable networks.
(それなりに最新で信頼性の高いネットワークをスキャンする場合は、-T4を使うことをお勧めする。)
If you are on a decent broadband or ethernet connection, I would recommend always using -T4.
(まともなブロードバンドやイーサネット接続であれば、常に-T4を使うことをお勧めする。)
デフォルトはT3にもかかわらず、ネットワークが信頼できるのであればT4の使用を推奨しています。なので、あくまで一意見ですが、実際の脆弱性診断や本番環境に対するポートスキャンなどの、ネットワークの負荷を考慮した方が良いと考えられる場面以外は、T4を設定しても問題無いと思います
まとめ
今回は、Nmapでポートスキャンを行う際のスキャン速度を調整するためのタイミングテンプレートについて解説しました。学習目的でテスト環境をスキャンする際にはあまり意識しないスキャン速度ですが、実務では予想以上にその考慮が必要となる場面が多くあります。そのような場面で、個々のオプションを細かく設定することも重要ですが、タイミングテンプレートを活用することで手間を大幅に省略することも可能です
ぜひ、この便利な機能を使いこなしてみてください。