LoginSignup
4
4

【Go言語】Katana使ってみた

Last updated at Posted at 2024-02-07

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をつける。

domains.txt
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&amp
https://zine.qiita.com/event/202401-pingcap/?utm_source=qiita&amp
https://blog.qiita.com/github-sponsors/?utm_source=qiita&amp
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/&amp
https://business.qiita.com/?utm_source=qiita&amp
https://zine.qiita.com/event/202401-pingcap/&amp
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が有名らしい。

日本語の記事 : ペネトレーションツールの紹介 ~nuclei~: NECセキュリティブログ | NEC

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4