はじめに
業務でセキュリティ診断やっててNessus使ってますが、誤検知が多いんです。
加速度的に発見されていく脆弱性を非破壊検査で日々検査項目に追加しなければいけないので仕方ないところもあります。
その誤検知の多い脆弱性の中の一つICMP Timestamp Request Remote Date Disclosureの確認方法について解説します。
どんな脆弱性か?
CVE(CVE-1999-0524)
Refarecesに記載の他のサイトも確認するとこんな感じでしょうか
・ICMPtype13に応答すると機器の内部時刻を知ることができ、それによって暗号生成時の乱数を予測できて、暗号解読されるかもしれない。
・ICMPtype17に応答するとサブネットマスクを知ることができシステム内部の構成を把握されて攻撃に利用されるかもしれない。
古い脆弱性なので大抵の製品は対応されてるはず・・・・
Nessusの動作
Nessusの各Plugin(検査プログラム)の動作はnaslという言語で書かれたスクリプトでインストールしたPCの下記フォルダもしくはVulnersというサイトで確認できます。
C:\ProgramData\Tenable\Nessus\nessus\plugins
本件のはicmp_timestamp.naslですが、ざっくりとしか読めない・・・
とりあえず何となくわかるのは
①ICMPtype13の応答以外にもいろいろ見てそう
②ICMPtype17の応答は検査してない
ってところで、①が誤検知につながってるのかもしれませんね。
naslの言語解説は[Nessus Attack Scripting Languageリファレンスガイド]#(http://www.puni.net/~mimori/nessus/nasl-ja.html)を見てください。
確認方法
自分でICMPtype13打てばいうんですがどうやって標準のWindowsクライアントではできません。
仮想のkalilinuxを使う(使えるとは言ってない)
Kalilinuxにhping3というツールがあってICMPtypeを選択して送信することが可能です。(要管理者権限)
VM上のKalilinux(NAT接続)でやってみました。
hping3 -C 13 <IP_ADDRESS>
ところが応答してくるはずの対象にやっても応答返ってこない・・・
wiresharkで確認するとVMの仮想ネットワークからホストに転送されているもののホストPCからは全く転送されてないことがわかりました。ホストPCのfirewallは全部無効なのに
どうもOSで転送できないみたいになってるらしいです。(ソース行方不明)
なのでホストPCから直接やる方法を考えます。
Nmapを使う
-PPを使えばtype13を送信できるみたいです。
Nmap -sn -PP <IP_ADDRESS>
-sn
オプションは必ずつけてください、でないとポートスキャンを実施してしまいます。
もともとNmapはポートスキャン用のツールですが、許可なくポートスキャンを行うと、不正アクセス禁止法違反などの法的リスクがあります。かつ倫理的にも問題があり、信用を損ねる恐れがあります。
host up
と出れば応答あり
割愛しますが、あとPythonとかWSLとかですかね・・・
応答した対象は脆弱なのか?
上の項目で述べた通り、この脆弱性は暗号解読される可能性があるもので、じゃあ応答したパケットの情報から解読できるか否かは内部時計を乱数生成に使ってるのかどうかという点を抑える必要があります。
以下はAkamaiのナレッジです。
Akamai(TCP & ICMP Timestamp)(解答見るには無料でアカウント作ってログインする必要があります)
要するに該当脆弱性の影響は受けないけどICMPtype13本来の目的のために応答してるよって事ですね。