Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/mfmokbel/crawlector
OSINT (オープンソースインテリジェンス)脆弱性スキャナー脅威フィードとアグリゲーター情報収集ウェブセキュリティマルウェア分析脅威インテリジェンスクローラー
GitHubmfmokbel/crawlector

Crawlector

Crawlectorは、悪意のあるオブジェクトをスキャンするために設計された脅威ハンティングフレームワークです。

リポジトリを見る
12310169ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

Crawlector

Crawlector(名前CrawlectorはCrawler(クローラー)と Detector(検出器)を組み合わせたものです)は、Webサイトを悪意のあるオブジェクトについてスキャンするために設計された脅威ハンティングフレームワークです。

注1: このフレームワークは、2022年10月22日にイタリア・ベルガモで開催されたNo Hatカンファレンスで初めて発表されました(スライド、YouTube録画)。また、2022年12月2日にシンガポールで開催されたAVARカンファレンスでも2回目の発表が行われました。

注2: トークで言及された関連ツールEKFiddle2Yara(EKFiddleルールを取得し、Yaraルールに変換するツール)も両カンファレンスでリリースされました。

注3: バージョン2.0(Photoidビルド:180923)は、マイルストーンリリースとして2023年9月18日にリリースされました。

注4: バージョン2.1(Universe-647ビルド:031023)は2023年10月3日にリリースされました。主な追加機能はSlackアラート通知機能です。

注5: バージョン2.2(Hallstattビルド:051123)は2023年11月5日にリリースされました。主な追加機能はSlackリモートコントロール機能です。

注6: バージョン2.3(Munichビルド:241123)は2023年11月24日にリリースされました。主な追加機能はDNSネームサーバー機能です。

注6: バージョン2.3.1(Neroビルド:131225)は2025年12月13日にリリースされました。これはメンテナンスリリースです。

機能

  • 追加のスキャンリンクを見つけるためのWebサイトのスパイダリングをサポート(最大2レベルまで)
  • ルールスキャンのバックエンドエンジンとしてYaraを統合
  • オンラインおよびオフラインスキャンをサポート
  • ドメイン/サイトのデジタル証明書のクロールをサポート
  • URLhausへのクエリによるページ上の悪意のあるURLの発見をサポート
  • Deep Object Extraction(DOE)
  • Slackアラート通知
  • HTTPリダイレクトのパラメータ化されたサポート
  • Whois情報の取得
  • TLSH(Trend Micro Locality Sensitive Hash)およびその他の標準的な暗号ハッシュ関数(md5、sha1、sha256、ripemd128など)によるページコンテンツのハッシュ化をサポート
    • TLSHは、ページサイズが50バイト未満の場合、またはデータに十分なランダム性がない場合、値を返しません。
  • すべてのURLのレーティングとカテゴリのクエリをサポート
  • 同じドメインの利用可能なすべてのTLDやサブドメインを見つけることによる、特定のサイトの拡張をサポート
    • この機能はOmnisint Labs API(2023年3月10日現在ダウン中)およびRapidAPI APIを使用します
    • TLD拡張の実装はネイティブです
    • この機能は、レーティングとカテゴリ化とともに、元のドメインに対する詐欺/フィッシング/悪意のあるドメインを見つける機能を提供します
  • ドメイン解決(IPv4およびIPv6)をサポート
  • スキャンしたWebサイトページを後でスキャンするために保存(zip圧縮可)
  • フレームワークのすべての設定は、単一のカスタマイズ可能な設定ファイルで制御されます
  • すべてのスキャンセッションは、スキャン対象のWebサイトに関する豊富な情報と、トリガーされたYaraルールに関する情報を含む、適切に構造化されたCSVファイルに保存されます
  • その他多数の機能...
  • すべてのHTTP(S)通信はプロキシ対応
  • 単一の実行可能ファイル
  • C++で記述

URLHausスキャンとAPI統合

これは、スキャンされるすべてのページに対して悪意のあるURLをチェックするためのものです。フレームワークは、URLHausサーバーから悪意のあるURLのリストをクエリするか(設定: url_list_web)、ディスク上のファイルからクエリするか(設定: url_list_file)を使用します。後者が指定された場合は、前者よりも優先されます。

これは、各ページのコンテンツをurl_list_webまたはurl_list_file内のすべてのURLエントリに対して検索し、すべての出現をチェックすることで機能します。さらに、一致した場合、設定オプションcheck_url_apiがtrueに設定されていると、Crawlectorは設定オプションurl_apiで設定されたAPI URLにPOSTリクエストを送信し、一致したURLに関する追加情報を含むJSONオブジェクトを返します。その情報には、urlh_status(例:online、offline、unknown)、urlh_threat(例:malware_download)、urlh_tags(例:elf、Mozi)、urlh_reference(例:https://urlhaus.abuse.ch/url/1116455/)が含まれます。この情報は、check_url_apiがtrueに設定されている場合にのみ、ログファイルcl_mlog_<current_date><current_time><(pm|am)>.csv(以下を参照)に含まれます。それ以外の場合、ログファイルには、check_urlがtrueに設定されている場合に限り、列urlh_url(一致した悪意のあるURLのリスト)とurlh_hit(一致した悪意のあるURLごとの出現回数)が含まれます。

URLHaus機能は、設定オプションcheck_urlをfalseに設定することで完全に無効にできます。

この機能はスキャンを遅くする可能性があることに注意してください。これは、チェックする必要がある悪意のあるURLの膨大な数(執筆時点で約1億3000万エントリ)と、URLHausサーバーから追加情報を取得するのにかかる時間(オプションcheck_url_apiがtrueに設定されている場合)によるものです。

ファイルとフォルダの構造

  1. \cl_sites
    • 訪問またはクロールするサイトのリストが保存される場所です。
    • 複数のファイルとディレクトリをサポートします。
  2. \crawled
    • クロール/スパイダリングされたすべてのURLがテキストファイルに保存される場所です。
  3. \certs
    • すべてのドメイン/サイトのデジタル証明書が保存される場所です(.der形式)。
  4. \results
    • 訪問したWebサイトが保存される場所です。これはオプションresults_dirで設定可能です。
  5. \pg_cache
    • スパイダー機能の一部ではないサイトのプログラムキャッシュ。これはオプションcache_dir、セクション**[default]**で設定可能です。
  6. \cl_cache
    • スパイダー機能の一部であるサイトのクローラキャッシュ。これはオプションcache_dir、セクション**[spider]**で設定可能です。
  7. \yara_rules
    • すべてのYaraルールが保存される場所です。このディレクトリに存在するすべてのルールは、実行前にエンジンによってロード、解析、検証、評価されます。
  8. cl_config.ini
    • このファイルには、フレームワークの動作に影響を与えるために調整可能なすべての設定パラメータが含まれています。
  9. cl_mlog_<current_date><current_time><(pm|am)>.csv
    • 訪問したWebサイトに関する豊富な情報を含むログファイル
    • 日付、時刻、Yaraスキャンのステータス、トリガーされたYaraルールのリスト(各マッチのオフセットと長さを含む)、ID、URL、HTTPステータスコード、接続ステータス、HTTPヘッダー、ページサイズ、ディスク上の保存されたページへのパス、およびURLHausの結果に関連するその他の列。
    • ファイル名はセッションごとに一意です。
  10. cl_offl_mlog_<current_date><current_time><(pm|am)>.csv
    • オフラインでスキャンされたファイルに関する情報を含むログファイル。
    • トリガーされたYaraルールのリスト(マッチのオフセットと長さを含む)、およびディスク上の保存されたページへのパス。
    • ファイル名はセッションごとに一意です。
  11. cl_certs_<current_date><current_time><(pm|am)>.csv
    • 見つかったデジタル証明書に関する豊富な情報を含むログファイル
  12. \expanded\exp_subdomain_<pm|am>.txt
    • 発見されたサブドメインを含みます([site]セクションの一部)
  13. \expanded\exp_tld_<pm|am>.txt
    • 発見されたドメインを含みます([site]セクションの一部)

設定ファイル (cl_config.ini)

セッションを実行する前に、設定ファイルcl_config.iniをよく理解しておく必要があります。すべてのセクションとパラメータは設定ファイル自体に文書化されています。

Yaraオフラインスキャン機能はスタンドアロンのオプションです。つまり、有効にすると、Crawlectorは他の有効な機能に関係なく、この機能のみを実行します。また、ドメイン/サイトのデジタル証明書のクロール機能も同様です。いずれにせよ、設定ファイルで未使用の機能をすべて無効にすることをお勧めします。

  • 設定(log_to_fileまたはlog_to_cons)に応じて、Yaraルールがモジュールの属性(例:PE、ELF、Hashなど)のみを参照している場合、Crawlectorはマッチ時にルール名のみを表示し、オフセットと長さのデータは除外します。

注意: パスを取るオプションについては、常に絶対パスを指定してください。

サイト形式パターン

Webサイトにアクセス/スキャンするには、URLのリストをテキストファイルに保存し、ディレクトリ「cl_sites」に配置する必要があります。

Crawlectorは3種類のURLを受け入れます。

  1. タイプ1: 1行に1つのURL
    • Crawlectorは各URLに、URLのホスト名から派生した一意の名前を割り当てます。
  2. タイプ2: 1行に1つのURL、一意の名前付き [a-zA-Z0-9_-]{1,128} = <url>
  3. タイプ3: スパイダー機能の場合、一意の形式が使用されます。1行に1つのURLは次のようになります:

<id>[depth:<0|1>-><\d+>,total:<\d+>,sleep:<\d+>] = <url>

例えば、

mfmokbel[depth:1->3,total:10,sleep:0] = https://www.mfmokbel.com

これは以下と同等です: mfmokbel[d:1->3,t:10,s:0] = https://www.mfmokbel.com

ここで、<id> := [a-zA-Z0-9_-]{1,128}

depth、total、sleepは、それぞれ短縮版のd、t、sに置き換えることもできます。

  • depth: スパイダーは追加のURLを見つけるために2レベル深くまで進むことをサポートしています(これは設計上の決定です)。
  • 値0はレベル1の深さを示し、「->」の後の値は無視されます。
  • レベル1の深さはtotalパラメータによって制御されます。したがって、最初にスパイダーは指定されたURLから可能な限り多くの追加URLを見つけようとします。
  • 「->」の後の値は、totalパラメータの値に従って見つかった各URLについてスパイダーする最大URL数を表します。
  • 値1はレベル2の深さを示し、「->」の後の値は、totalパラメータごとに見つかったすべてのURLについて見つける最大URL数を表します。明確にするために、上記の例に示されているように、最初にスパイダーは10個のURL(totalパラメータで指定)を探し、次にそれら見つかった各URLは最大3個のURLまでスパイダーされます。したがって、最良のシナリオでは、40 (10 + (10*3))個のURLになります。
  • sleepパラメータは、各HTTPリクエストの間にスリープするミリ秒数を表す整数値を取ります。

注1: タイプ3のURLは、設定ファイルのスパイダーセクションで設定パラメータlive_crawlerをfalseに設定することで、タイプ1のURLに変換できます。

注2: 空行および「;」、「#」または「//」で始まる行は無視されます。

スパイダー機能

スパイダー機能は、Crawlectorにターゲットページ上の追加リンクを見つける機能を提供します。スパイダーは以下の機能をサポートします。

  • スパイダー機能が動作するには、ドメインがType 3である必要があります
  • exclude_url設定オプションを使用して、一致するURLのスパイダリングを防ぐためのワイルドカードパターンのリスト(パイプ区切り)を指定できます。例: *.zip|*.exe|*.rar|*.zip|*.7z|*.pdf|.*bat|*.db
  • include_url設定オプションを使用して、パターンに一致するURLのみをスパイダーするためのワイルドカードパターンのリスト(パイプ区切り)を指定できます。例: */checkout/*|*/products/*
  • 設定オプションexclude_httpsを使用して、HTTPS URLを除外できます
  • 設定オプションadd_ext_linksを使用して、メインページのみについて外部リンクも考慮できます。この機能はexclude_urlおよびinclude_url設定オプションを尊重します。
  • 設定オプションext_links_onlyを使用して、他のすべてのURLを除外し、メインページの外部リンクのみを考慮できます。この機能はexclude_urlおよびinclude_url設定オプションを尊重します。

IDタイプ

リリース2.0では、IDには次のタイプのいずれかをID自体に追加することで、タイプが明示的に割り当てられます。

各IDがそのタイプを保持することで、結果の参照とフィルタリングが容易になります。さらに、これは内部で様々な理由で使用されます。

サイトランキング機能

  • Webサイトのランキングをチェックするためのものです
  • ランキング付きのWebサイトのリストを含むファイルをCSVファイル形式で指定します
  • Webサイトのランキングリストを提供するサービスには、Alexa top-1m(2022年5月に廃止)、Cisco Umbrella、Majestic、Quantcast、Farsight、Trancoなどがあります。
  • CSVファイル形式(2列のみ):最初の列はランキングを保持し、2番目の列はドメイン名を保持します
  • セルに引用符で囲まれたデータが含まれている場合、自動的に引用符が解除されます
  • 引用符で囲まれたテキスト内での改行は許可されていません
  • 読み取られたセルから先頭と末尾のスペースは削除されます
  • 空行とコメント行はスキップされます
  • 設定ファイルのセクションsite_rankingには、CSVファイルの読み取り方法を変更するためのいくつかのオプションが用意されています
  • このクエリのパフォーマンスは、CSVファイル内のレコード数に依存します
  • Crawlectorは、CSVファイル内のすべてのエントリを調査対象のドメインと比較し、その逆ではありません
  • 登録/ペイレベルドメインのみが比較されます

TLDとサブドメインの検索 - [site]セクション

  • siteセクションは、同じドメインに対して利用可能なすべてのトップレベルドメイン(TLD)やサブドメインを見つけようとすることで、特定のサイトを拡張する機能を提供します。見つかった場合、新しいTLD/サブドメインは他のドメインと同様にチェックされます。
  • この機能は、Omnisint Labs(https://omnisint.io/)およびRapidAPI APIsを使用します。
  • Omnisint Labs APIはサブドメインとTLDを返しますが、RapidAPIはサブドメインのみを返します(Omnisint Labs APIは2023年3月10日現在ダウンしていますが、サイトが復旧した場合に備えて実装は引き続き利用可能です)。
  • RapidAPIの場合、RapidAPIからリクエストできる有効な「Domains records」APIキーが必要で、それを設定ファイルのキーrapid_api_keyにプラグインします。
  • find_tldsが有効な場合、Omnisint Labs APIのtlds結果に加えて、フレームワークはtlds_fileまたはtlds_url内のすべてのtldエントリをチェックすることで、他のアクティブ/登録済みドメインを見つけようとします。
  • tlds_urlが設定されている場合、TLDをホストするURL(各行に1つのTLD)を指す必要があります(「;」、「#」、または「//」のいずれかの文字で始まる行は無視されます)。
  • tlds_fileは、TLDのリストを含むファイル名を保持します(tlds_urlと同じ;TLDのみが存在し、「.」は除外されます。例:「com」、「org」)。
  • tlds_fileが設定されている場合、tlds_urlよりも優先されます。
  • tld_dl_time_outは、問題のドメインが解決するかどうかをチェックする際のdnslookup機能の最大タイムアウトを設定するためのものです。

リダイレクション機能

以前のリリースのURLリダイレクト機能は壊れていました。このリリースでは、その操作を制御するための高度なパラメータ化を備えた、リダイレクト機能の完全な書き直しが提供されています。リリースバージョン2.0では、リダイレクトには設定ファイルに専用のセクション**[redirect]があります。リダイレクト機能全体は、セクション[default]のオプションfollow_redir**でオン/オフを切り替えることができます。

リダイレクト関数は、HTTP応答ステータスコード301、302、303、307、308をチェックします。一致した場合、CrawlectorはLocationヘッダーを解析してリダイレクト先のURLを取得し、絶対URLと相対URLの両方に対応します。Crawlectorのリダイレクト機能は、パフォーマンスと機敏性を考慮して設計されています。**[redirect]**セクションでは、次のオプションが提供されています。

[redirect]

  • depth = all ; (t: string)
  • max_redirect = 200 ; (t: uint16_t)
  • visit = true ; (t: bool)
  • skip_similar = true ; (t: bool)

depthオプションは、値lastまたはallのいずれかを取ります。これは、visitオプションが有効かどうかに応じて、見つかったどのリダイレクトURLにアクセスするかを制御します。allは、見つかったすべてのリダイレクトURLにアクセスするためのものです。lastは、最後のリダイレクトURLにアクセスするためのものです。これらのURLへのアクセスは、同じ/現在のセッションで行われます。depthの値に関係なく、Crawlectorは見つかったすべてのリダイレクト先URLのリストを絶対形式で記録し、総数も記録することに注意してください。これらはcl_mlog CSVファイルの列_redirect_urls_および_redirect_total_に書き込まれます。

オプションmax_redirectは、発見するURLリダイレクトの総数の上限を設定します。

オプションskip_similarは、次の例で最もよく説明されます。

Crawlectorにクロールするために与えられた元のURLが「https://www.mfa.gov.law」で、見つかったredirect_urlsの1つが「https://mfa.gov.law/」であると仮定します。ご覧のとおり、唯一の違いはURLの末尾にあるスラッシュです。これら2つのURLは同じであり、サーバーは同じページで応答します。オプション**visit**がtrueに設定されている場合、Crawlectorは両方のURLをクロールし、リソースを無駄にして同じタスクを2回実行することになります。これは1つか2つのURLでは問題にならないかもしれませんが、クロールするURLが数千あり、オプション**visit**が有効な場合、その半数以上がそのような発見されたURLを持つ可能性が非常に高くなります。その場合、これは対処すべき重大な問題になります。したがって、オプション**skip_similar**をtrueに設定すると、類似したURLへのアクセスをスキップすることで、この問題の解決に役立ちます。forward_slashシナリオに加えて、**skip_similar**オプションは次の2つのシナリオも考慮します:リダイレクトURLがプレフィックス「https://」および「www.」のいずれかまたは両方によってのみ異なる場合。

Deep Object Extraction (DOE)

リリース2.0の主要な追加機能の1つは、ページからさまざまなタイプのオブジェクトを抽出し、ディスクに保存し、YaraおよびURLHausでスキャンし、結果をCSVファイルに保存する機能です。この機能を有効にするには、セクション**[page]のオプションextract_obj**をtrueに設定します。オブジェクト深層抽出機能の実装は、WebページからMHT Webアーカイブファイルを作成し、外部スクリプト、画像、CSSファイルを含めることで機能します。埋め込まれたすべてのファイルは、オプション obj_dir で指定されたパス(パス: obj_dir/objects/)に抽出され、各ファイルがスキャンされます。この実装は、ヘッドレスブラウザ機能と混同しないでください。DOEは異なり、動的にクエリされたすべてのURLを取得するためにページをロードする必要はありません。したがって、制限があります。

抽出されたすべてのオブジェクトは、そのメタデータの一部がCSVファイルに書き込まれます。CSVファイルを読み取る際に注意すべき点:抽出されたオブジェクトを含むドメインのIDは、次のような一意の形式を持ちます。<domain_id>_<type>_p_obj_<counter> (例: _mfa_gov_cef40bc5-ba6a-41_t1_p_obj_0_) 。また、URLは次の形式になります。<url>__<object_filename> (例: _https://www.mfa.gov.law\_\_bilmur.min.js_)。

オプション delete_obj が true に設定されている場合、Yara によって検出されなかった抽出オブジェクトはすべてディスクから削除されます。 オプション log_all_objs が true に設定されている場合、抽出されたすべてのオブジェクトのメタデータが同じ cl_mlog CSV ファイルに記録されます。 [page] セクションのオプション check_urlhaus が true に設定されている場合、抽出されたすべてのオブジェクトが URLHaus でスキャンされます。このオプションの設定は [urlhaus] セクションから継承されることに注意してください。

注: クロール対象のドメインが別のドメインにリダイレクトする場合、DOE が機能するには最後のリダイレクト先の URL を渡す必要があります。さらに、DOE が機能するには、ドメインが "HTTP(S)://" で始まる必要があります。

Slackアラート通知

場合によっては、たとえば Alexa 上位 100 万サイトをクロールするなど、完了までに数日かかる Crawlector セッションを実行したいことがあります。そのようなシナリオでは、フレームワークの動作と進捗をリモートで監視する方法が必要です。そのため、リリース2.1では、Yara のアラート、std::exit() イベント、プロセスの警告やエラーを任意の Slack チャンネルに送信することで、Crawlector の実行をリアルタイムで監視するメカニズムを提供する Slack アラート通知機能を追加しました。さらに、Crawlector はコンソールハンドラーをインストールし、ctrl_c、ctrl_close、ctrl_break、ctrl_logoff、ctrl_shutdown などの特定のイベントタイプを監視しようとします。重要なのは、Crawlector はデフォルトのハンドラーの動作を変更/改変しないことです。リストされたイベントのいずれかを受信したことを Slack チャンネルに報告するだけです。これは将来、他のタイプのイベントに対応するために拡張される可能性があります。

この機能は Slack REST API を使用し、サーバーとの認証には OAuth 2.0 を使用します。使用するには Slack API トークンと、適切な権限で設定されたチャンネルが必要です。この機能は Slack チャンネルにメッセージを投稿するだけで、受信メッセージを受信したり処理したりしません。

[slack_alert] セクションでは、次のオプションリストが提供されます。

[slack_alert]

  • alert = true ; (t: bool)
  • api_token = ; (t: string)
  • channel = ; (t: string)
  • sleep = ; (t: uint32_t) ミリ秒単位

この機能を無効または有効にするには、オプション alert を true または false に設定するだけです。さらに、api_token と channel 名を指定する必要があります。

注-1: Crawlector の初期化フェーズでは、提供された認証トークンが有効かどうか、またはチャンネルが設定されているかどうかをテストし、失敗した場合、この機能は自動的に無効になります。

Slack チャンネルに報告されるすべてのアラートは、ユーザー名 Crawlector v<バージョン番号> で報告されます。例: Crawlector v2.1。ユーザーのアイコンはクモの巣です。さらに、すべてのアラートはスレッド化されており、最初の開始メッセージ以降のすべてのアラートは返信として投稿されます。これは設計上の決定であり、同じチャンネルに報告する複数のセッションを同時に実行している場合に役立ちます。一部のアラートは、書式設定にマークダウンマークアップ言語を使用しています。

プロセスが正常に終了し、終了しようとしているときは、次のメッセージを投稿します。

Crawlector は正常に終了し、シャットダウンしています

注-2: Slack の投稿メッセージ API のレート制限は、1秒あたり1メッセージで、多少のバーストは許容されます。Crawlector は、1秒あたりの投稿数を増やすためにメッセージをキューイングしません。これは、必要に応じて将来変更される可能性があります。ただし、オプション sleep により、メッセージが正常に投稿されるたびに、指定された時間だけプロセスをスリープさせることができます。

Slackリモートコントロール

リリース2.2(コードネーム Hallstatt)では、特別に設計された一連の制御コマンドを介して Crawlector をリモート制御する機能を導入しています。この機能を導入した理由は、数時間または数日間実行されるセッションの特定の動作を監視および制御するためです。たとえば、Slack アラート機能のオン/オフ、Crawlector の終了、設定ファイルのアップロードなどが可能です。

この機能は Slack REST API を使用し、サーバーとの認証には OAuth 2.0 を使用します。使用するには Slack API トークンと、適切な権限で設定されたチャンネルが必要です。API トークンは [slack_alert] セクションのオプション api_token で使用されるものと同じです。

[slack_alert] セクションでは、リモートコントロール機能のために次の追加オプションリストが提供されます。

[slack_alert] (コントロールオプション)

  • control = true ; (t: bool)
  • ctrl_channel = ; (t: string) チャンネル名ではなくチャンネルIDである必要があります
  • ctrl_sleep = ; (t: uint32_t) ミリ秒単位

この機能を無効または有効にするには、オプション control を true または false に設定するだけです。ctrl_channel 名はチャンネル名ではなくチャンネルID名である必要があります。これは、チャンネル名を右クリック -> チャンネル詳細を表示 -> ウィンドウの下部までスクロールすると、チャンネルID: <channel_id> フィールドが表示されます。

オプション ctrl_sleep は、制御コマンドを取得するために ctrl_channel オプションで指定された制御チャンネルに呼び出す頻度を決定します。このオプションは、制御コマンド cl_update_delay <時間_ミリ秒> を介して更新することもできます。

サポートされている制御コマンドのリストは次のとおりです。

注-1: Crawlector の初期化フェーズでは、提供された認証トークンが有効かどうか、またはチャンネルが設定されているかどうかをテストし、失敗した場合、この機能は自動的に無効になります。

この機能が有効になり、API トークンの検証に合格すると、Crawlector は指定された ctrl_channel にメッセージ「Crawlector は制御コマンドを受信する準備ができています。サポートされている制御コマンドのリストについては、コマンド cl_help を入力してください。」を送信します。

特定の制御コマンドへの応答はすべてスレッド化されます。さらに、制御コマンドはセッションごとに、セッションが開始された時点から読み取られます。

注-2: Slack の取得(会話履歴)メッセージ API のレート制限は、1秒あたり1リクエストで、多少のバーストは許容されます。そのため、ctrl_sleep オプションが1秒未満または1秒超に設定されている場合、Crawlector は1秒あたりの制御コマンドを増やすためにメッセージをキューイングし、受信した順に実行します。

DNSネームサーバー

リリース2.3(コードネーム Munich)では、Crawlector が試行するすべての DNS クエリおよび DNS から IP への解決に対して、DNS ネームサーバーのリストを高い制御レベルで指定する機能が導入されました。これは、ブロックされた Web サイトや悪意のある Web サイトをクロールする場合に重要です。この機能は、Crawlector 内で DNS クエリまたは DNS から IP への要求が行われるすべての関数に適用されます。さらに重要なことに、それをサポートするすべてのネームサーバーに対して DNS over TLS を実行する機能を提供します。

[dns_ns] セクションでは、この機能を管理するための次のオプションリストが提供されます。

[dns_ns]

  • enable = false ; (t: bool)
  • name_servers = 8.8.8.8(e_tls),12.13.14.15(d_tls) ; (t: string)
  • dns_tls = yes ; (t: string) (yes, no or force)
  • keep_default = false ; (t: bool)
  • conn_time_out = 3000 ; (t: uint32_t) ミリ秒単位(0 は無期限待機)

オプション name_servers は、カンマ区切りで使用する DNS ネームサーバーのパラメータ化されたリストを受け取ります。このオプションの値は形式 <IPv4_address>(<tls_option>) で、<tls_option> は値 "d_tls" または "e_tls" のいずれかです。オプション "d_tls" または "e_tls" は、対象のネームサーバーが DNS over TLS をサポートしているかどうかをそれぞれ示します。このオプションは、オプション dns_tls に設定された値に応じて適用されます。たとえば、エントリ 8.8.8.8(e_tls) は Google DNS サーバー 8.8.8.8 を TLS サポート付きで使用することを示し、エントリ 12.13.14.15(d_tls) は DNS サーバー 12.13.14.15 を TLS サポートなしで使用することを示します。

オプション dns_tls は、必要な TLS 適用レベルを指定します。このオプションは "yes" "no" または "force" のいずれかの値を取ります。

  • yes
    • TLS サポートのある DNS ネームサーバーが最初に試行され、TLS サポートのある NS が見つからない場合は、代わりに UDP/TCP 解決が試行されます。
  • no
    • TLS サポートなし(TLS サポートのある DNS ネームサーバーを使用しない)
  • force
    • TLS サポートのある DNS ネームサーバーのみが使用され、Crawlector によって開始されたすべての DNS クエリは DoT(DNS over TLS)を使用します。

オプション keep_default は、デフォルトのネームサーバーをネームサーバーのリストに追加するかどうかを指定します。デフォルトのネームサーバーは TLS をサポートしていないと見なされます。

オプション conn_time_out は、DNS クエリの応答を待機する時間をミリ秒単位で指定します。

オプション enable は、この機能のオン/オフを切り替えます。

バージョン2.0のその他の改善点

  • コマンドラインオプション "-v" と "-c" を追加しました。オプション "-v" はバージョン情報をコンソールに出力します。オプション "-c" は、デフォルトの "cl_config.ini" 以外の設定ファイルを読み取ります。
  • さまざまなコードの最適化と軽微な改善
  • 読み取られたドメイン(サブドメインなし)ごとに、Crawlector は既に存在しない場合は、読み取られたすべてのサイトエントリの前に "www." を追加します。たとえば、RapidAPI のサブドメイン列挙クエリの場合、クエリ対象のドメインは "www." で始まる必要があります。
  • [default] セクションにオプション clear_dns と upg_2_https を追加しました。前者はホスト名から IP への DNS キャッシュをクリアし、後者はすべてのサイトの前に "https://" を追加して HTTPS にアップグレードします。同様に、[site] セクションにオプション tld_upgrd_2_https が追加され、さまざまな TLD を持つアクティブなドメインを https にアップグレードします。
  • [site] セクションにオプション rapid_api_weeks と rapid_api_limit を追加し、RapidAPI への API リクエストを設定できるようにしました。両方のオプションはオプションです。前者は DB からクエリする週数を指定し、後者はサイトごとに返すサブドメインの数を指定します。
  • リリース2.0では、オプション cache_dir を介して、[spider] セクションと [default] セクションに異なるキャッシュディレクトリを指定できます。
  • リリース2.0では、page セクションに多くのオプションが追加されました。以下を含みます。
  • whois_info オプションは、レジストラ、registered_on、expires_on、updated_on を含む whois ドメイン情報を取得します。このデータは https://www.whois.com/whois/ から取得されます。データは cl_mlog CSV ファイルに保存されます。
  • page_title オプションは、ページタイトルを cl_mlog CSV ファイルに保存します。
  • オプション results_dir が追加され、ページを別のパスに保存する機能が提供されました。設定されていない場合、Crawlector と同じディレクトリにフォルダ "results" が作成されます。
  • Yara エンジンを 4.3.2 にアップグレード

設計上の考慮事項

  • URL ページは、サーバーに GET リクエストを送信し、サーバーの応答本文を読み取り、それを Yara エンジンに渡して検出することで取得されます。
  • GET リクエストの一部の属性は、設定ファイルの [default] セクションで定義されます。これには、User-Agent ヘッダー、Referer ヘッダー、接続タイムアウトなどのオプションが含まれます。
  • Crawlector はセッションのデータを CSV ファイルに記録しますが、データのパフォーマンス、操作、および取得を向上させるために、SQL ファイルに変換することをお勧めします。これは、何千ものドメインをクロールする場合に重要になります。
  • cl_sites 内のドメイン/URL の重複は許可されています。

制限事項

  • シングルスレッド
  • 静的検出(特定のページコンテンツの動的評価はなし)。代わりに DOE 機能を確認してください。
  • ヘッドレスブラウザのサポートはまだありません。

使用しているサードパーティライブラリ

  • Chilkat: Webサイトスパイダリング、HTTP通信、ハッシュ、JSON解析、ファイル圧縮(ZIP)などのライブラリ
  • Yara: ルールスキャン用(v4.5.4)
  • CrossGuid: GUID/UUID生成用
  • Inih: 設定ファイル解析用
  • Rapidcsv: CSVファイル解析用
  • Color Console: コンソールの色付け用
  • TLSH (Trend Micro Locality Sensitive Hash) (v4.8.2)

貢献

プルリクエストとイシューは歓迎します。コメントや提案は大変ありがたく受け付けています。

著者

Mohamad Mokbel (@MFMokbel)

ツールをダウンロード
id_postfix (タイプ)説明
_t1_pIDなしのプレーンタイプ1
_sdサブドメイン用のサブタイプ
_tldTLD用のサブタイプ
_t2_pID付きのプレーンタイプ2
_t3_sスパイダリングされたドメインのタイプ3
_t3_sc子ノードを持つスパイダリングされたドメインのタイプ3
_t3_ssタイプ3(_t3_s)URLがタイプ1URLに変換された場合のタイプ3
_t3_s_eタイプ3スパイダリングされたドメインの外部リンク
_obj_深層スキャンとオブジェクト抽出用
_t4_ruリダイレクトURL用(全タイプ)
  • tld_use_connectは、オプションtlds_connect_portsで定義されたポートリストに対して問題のドメインに接続する機能を有効にします。
  • オプションtlds_connect_portsは、カンマ区切りのポートリスト、または範囲のリスト(例:25-40,90-100,80,443,8443(範囲の開始と終了を含む))を受け入れます。
    • tld_con_time_outは、接続機能の最大タイムアウトを設定するためのものです。
  • tld_con_use_sslは、ドメインに接続しようとする際のSSLの使用を有効/無効にします。
  • save_to_file_subdがtrueに設定されている場合、発見されたサブドメインは「\expanded\exp_subdomain_<pm|am>.txt」に保存されます。
  • save_to_file_tldがtrueに設定されている場合、発見されたドメインは「\expanded\exp_tld_<pm|am>.txt」に保存されます。
  • exit_hereがtrueに設定されている場合、Crawlectorはこの[site]機能を実行した後に終了し、他の有効なオプションは無視されます。つまり、見つかったサイトはクロール/スパイダリングされません。
  • 制御コマンド説明
    cl_get_dateCrawlector が開始された日時と現在の日時を取得します。
    cl_pingメッセージ「Pong...」を返信します。C&C チャンネルが機能していることを確認するためです。
    cl_get_config現在使用中の設定ファイル(例: cl_config.ini)をテキストファイルとしてアップロードします。
    cl_update_delay <整数_ミリ秒>制御コマンドのプルリクエスト間のチェックイン時間を更新します。

    - 現在のセッションのみの値(ctrl_sleep)を変更します。

    cl_turn_off_slack_alert現在アクティブなセッションの Slack アラート機能を_オフ_にします。
    cl_turn_on_slack_alert現在アクティブなセッションの Slack アラート機能を_オン_にします。
    cl_helpこのヘルプメッセージを表示します。
    cl_exitCrawlector を強制終了します。