Tsunami
現在のステータスは α リリースとのこと
スキャン概要については下記に記載がある
https://github.com/google/tsunami-security-scanner/blob/master/docs/orchestration.md
Tsunami のインストール
利用準備
以下のツールが必要とのこと
ネットワークスキャナーとしてはもはや定番
しかし私の環境は Windows なので docker コンテナを立ててその上で検証しよう
以下のような DcokerFile を用意し
FROM centos:centos8
適当に建てる。OSは好み
コンテナを起動してログイン
> docker build .
> docker run -d -it <conntener_id> /bin/bash
> docker exec -it <conntener_id> /bin/bash
必要なライブラリをインストールする
# yum install epel-release
# yum install -y nmap ncrack java java-devel git
導入スクリプトで Java のインストールを JAVA_HOME 変数で判断しているため
JAVA_HOME 環境変数の設定
# export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el8_2.x86_64/jre/
クイックスタートスクリプトの実行
QuickStart 用の導入スクリプトを実行する
# bash -c "$(curl -sfL https://raw.githubusercontent.com/google/tsunami-security-scanner/master/quick_start.sh)"
BUILD SUCCESSFUL in 2m 1s
14 actionable tasks: 14 executed
Build successful, execute the following command to scan 127.0.0.1:
cd /root/tsunami && \
java -cp "tsunami-main-0.0.2-SNAPSHOT-cli.jar:/root/tsunami/plugins/*" \
-Dtsunami-config.location=/root/tsunami/tsunami.yaml \
com.google.tsunami.main.cli.TsunamiCli \
--ip-v4-target=127.0.0.1 \
--scan-results-local-output-format=JSON \
--scan-results-local-output-filename=/tmp/tsunami-output.json
中身を見ると Git でソースをクローンしてビルドしている感じだった
スキャンの実行
ビルド時の最後にスキャンコマンドの例がでてくる
が、対象はサンプルアプリがある docker image になっているので少し修正が必要
またクイックスタート用に最初からインストールされているプラグインは下記のようになっていた
# ls -l tsunami/plugins/
total 340
-rw-r--r-- 1 root root 7154 Aug 11 08:57 exposed_hadoop_yarn_api-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 6192 Aug 11 08:57 exposed_jenkins_ui-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 5897 Aug 11 08:57 exposed_jupyter_notebook-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 41575 Aug 11 08:57 ncrack_weak_credential_detector-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 267555 Aug 11 08:57 nmap_port_scanner-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 6247 Aug 11 08:57 wordpress_exposed_installation_page-0.0.1-SNAPSHOT.jar
よくあるアプリケーション用のプラグインと nmap みたい
ドメインを対象にできるオプションがあるか分からないが、サンプルでは IPv4 に対してスキャンできるようなので、
スキャンをかけても問題ないサイト等を対象に実施してみる
java -cp "tsunami-main-0.0.2-SNAPSHOT-cli.jar:/root/tsunami/plugins/*" \
-Dtsunami-config.location=/root/tsunami/tsunami.yaml \
com.google.tsunami.main.cli.TsunamiCli \
--ip-v4-target=***.***.***.*** \
--scan-results-local-output-format=JSON \
--scan-results-local-output-filename=/tmp/tsunami-output.json
Aug 11, 2020 9:16:57 AM com.google.tsunami.main.cli.TsunamiCli run
INFO: Tsunami scan finished, saving results.
Aug 11, 2020 9:16:57 AM com.google.tsunami.common.io.archiving.RawFileArchiver archive
INFO: Archiving data to file system with filename '/tmp/tsunami-output.json'.
Aug 11, 2020 9:16:57 AM com.google.tsunami.main.cli.TsunamiCli run
INFO: TsunamiCli finished...
Aug 11, 2020 9:16:57 AM com.google.tsunami.main.cli.TsunamiCli main
INFO: Full Tsunami scan took 55.12 s.
スキャンレポート用の json が出来たようなので中身を見てみると
{
"scanStatus": "SUCCEEDED",
"scanStartTimestamp": "2020-08-11T09:16:06.595Z",
"scanDuration": "50.667s",
"fullDetectionReports": {
}
まぁ今回は完全に静的なサイトを対象にしたからね・・・
スキャン中のログを見てると下記のように nmap で何してるかだったり
Executing the following command: '/usr/bin/nmap --unprivileged -Pn -n -sT -sV --version-intensity 5 -T4 --script banner ***.***.***.*** -oX /tmp/nmap5491139303090523058.report'
どういう URL に対してリクエストを投げているかなんかも出ている
現時点ではまだスキャンツールとして利用できる!という感じでは無い
CDNや冗長化が普通のWebシステムにおいてドメインで診断できないのは辛いし(ネットワークスキャナーなのでしょうが無いかな?)
処理フローのドキュメントにあるように、 nmap でスキャンして HTTP/HTTPS の穴があったらアプリのスキャンもついでにするよ
という感じなので今後に期待しつつも基本はネットワークスキャンベースかなぁという現状
Gooleの脆弱性診断ソフトには昔からある skipfish があるので
その辺といい感じに棲み分けか、統合してくれると使い勝手があるかなという印象