katanaとは
Project Discovery社が開発したOSINTのWebクローラーツール。
OSINTとは、Open Source Intelligenceの略で、公開されている情報を収集・分析する手法の1つ。意図しない情報が公開されていた場合、サイバー攻撃に用いられる可能性がある。
Katanaでなにができる?
- 高速かつ完全に構成可能な Web クローリング
- 標準モードとヘッドレスモードのサポート
- JavaScriptの解析・クローリング
- カスタマイズ可能な自動フォーム入力
- スコープ制御(正規表現などによるフィルタリング)
- JSON形式やファイル形式の出力
- STDIN、URL、複数URLのリストによる入力
インストール
以下コマンドでインストールする。
go install github.com/projectdiscovery/katana/cmd/katana@latest
使い方
-h
をつけるとオプションの説明が出てくる。
$ katana -h
Katana is a fast crawler focused on execution in automation
pipelines offering both headless and non-headless crawling.
Usage:
katana [flags]
Flags:
INPUT:
-u, -list string[] target url / list to crawl
-resume string resume scan using resume.cfg
・・・・
シンプルなURLのクローリング
-u
をつけると指定したドメインのurlのリストを出力する
$ katana -u https://qiita.com
__ __
/ /_____ _/ /____ ____ ___ _
/ '_/ _ / __/ _ / _ \/ _ /
/_/\_\\_,_/\__/\_,_/_//_/\_,_/
projectdiscovery.io
[INF] Current katana version v1.0.5 (latest)
[INF] Started standard crawling for => https://qiita.com
https://qiita.com
https://qiita.com/opensearch.xml
https://qiita.com/manifest.json
https://corp.qiita.com/company/
https://qiita.com/advent-calendar/2023
https://qiita.com/release-notes
https://corp.qiita.com/jobs/
https://zine.qiita.com?utm_source=qiita&utm_medium=referral&utm_content=footer
https://corp.qiita.com/wp-content/themes/increments-co-jp-site-theme/js/skip-link-focus-fix.js?ver=20151215
https://jobs.qiita.com?utm_source=qiita&utm_medium=referral&utm_content=footer
https://help.qiita.com/ja/articles/others-brand-guideline
https://help.qiita.com
https://zine.qiita.com/wp-content/themes/zero_tcd055/js/footer-bar.js?ver=1.0
https://help.qiita.com/javascripts/application.js
https://business.qiita.com/?utm_source=qiita&utm_medium=referral&utm_content=footer
https://help.qiita.com/ja/articles/qiita-team
https://zine.qiita.com/wp-content/themes/zero_tcd055/js/comment.js?ver=1.0
https://help.qiita.com/ja/categories/qiita-team/others/
https://blog.qiita.com
・・・・
複数ドメインの入力
複数ドメインの場合は-list
をつける。
https://google.com
https://qiita.com
https://github.com
上記のように複数のドメインが書かれたtxtファイルを読み込む場合は以下のようにする。
katana -list domains.txt
拡張子の指定
-em
をつけると拡張子でフィルタリングできる
katana -u https://google.com -em js
-ef
をつけると除外できる。また、複数の拡張子を指定する際はカンマで区切る。
katana -u https://google.com -ef js,css
正規表現
正規表現でフィルタリングする場合は-mr
を使う。除外する場合は-fr
を使う。
katana -u google.com -mr .*aaa*
json出力
-j
で結果をjson形式で出力する。
katana -u google.com -j
JavaScript エンドポイントの解析
-jc
をつけると
$ katana -u https://qiita.com -jc
__ __
/ /_____ _/ /____ ____ ___ _
/ '_/ _ / __/ _ / _ \/ _ /
/_/\_\\_,_/\__/\_,_/_//_/\_,_/
projectdiscovery.io
[INF] Current katana version v1.0.5 (latest)
[INF] Started standard crawling for => https://qiita.com
https://qiita.com
https://oauth.qiita.com/auth/twitter?callback_action=login_or_signup\u0026realm=qiita\u0026redirect_to=%2F
https://oauth.qiita.com/auth/github?callback_action=login_or_signup\u0026realm=qiita\u0026redirect_to=%2F
https://oauth.qiita.com/auth/google?callback_action=login_or_signup\u0026realm=qiita\u0026redirect_to=%2F
https://qiita.com/383564218/p_qiita_300x250_anonymous_feed_sidebar-top
mailto:support@qiita.com
https://zine.qiita.com/interview/202401-wealthnavi/?utm_source=qiita&
https://zine.qiita.com/event/202401-pingcap/?utm_source=qiita&
https://blog.qiita.com/github-sponsors/?utm_source=qiita&
https://blog.qiita.com/github-sponsors/
https://zine.qiita.com/interview/202401-wealthnavi/
https://zine.qiita.com/event/202401-pingcap/
https://blog.qiita.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fblog.qiita.com%2Fgithub-sponsors%2F&
https://zine.qiita.com/interview/202401-wealthnavi/&
https://business.qiita.com/?utm_source=qiita&
https://zine.qiita.com/event/202401-pingcap/&
https://zine.qiita.com/interview/202312-wealthnavi-02/
https://zine.qiita.com/event/202011-iij-2/
https://qiita.com
https://zine.qiita.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fzine.qiita.com%2Fevent%2F202401-pingcap%2F&
https://zine.qiita.com/interview/202202-arm/
https://zine.qiita.com/event/202104-soracom/
https://business.qiita.com/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-image-cdn/dist/image-cdn.js
https://business.qiita.com/?rest_route=/sng/v1/page-count
https://business.qiita.com/.pardot.com/pd.js
https://zine.qiita.com/topics/202010-wvd-6/
https://zine.qiita.com/interview/202012-signate/
https://cdn.qiita.com/assets/public/v3-home-bundle-56185c43edeaecb5.min.js
https://business.qiita.com/%5C/business.qiita.com%5C/wp-includes%5C/js%5C/wp-emoji-release.min.js
https://business.qiita.com/gtm.js
クローラーの設定
クローリングの深さの指定
-d 数字
とすると深さを指定できる。デフォルトは 3。
$ katana -u https://qiita.com -d 5
より詳細が知りたい場合は値を増やし、作業を高速化したい場合は値を減らす。
自動フォーム入力
-aff
をつけると自動でフォーム入力を行う。
フィールドの値は$HOME/.config/katana/form-config.yaml
を編集することでカスタマイズできる。
katana -u https://tesla.com -aff
known filesの設定
-kf
を使うと、作業を高速化し、結果の数を増やすために、サイトの構造を説明する既知のファイルへのリンクを追加できる。
デフォルトでは無効。
katana -u https://tesla.com -kf robotstxt,sitemapxml
認証情報の追加
header, cookieの追加
-H
もしくは-header
をつけるとheaderやcookieを追加できる。
katana -u https://tesla.com -H 'Cookie: usrsess=AmljNrESo'
プロキシの設定
-proxy
をつけるとプロキシが設定できる。
リクエストが増えると IP がブロックされる場合は、1 つ以上のプロキシサーバを使用することでこの問題を解決できる。
おわりに
今回、ユニークな名前だったので、たまたまこのツールを見つけたのだが、OSINTについて触れたことがなかったのでいい機会となった。今後、機会があれば他のツールも使ってみたいと思う。
同じ会社のペネストレーションツールのnucleiが有名らしい。