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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
spraycharles — 低速かつ長期にわたるパスワードスプレー攻撃ツール。長期間にわたって間隔を開けて攻撃するように設計されています。 | Kitploit
ツール/GitHubGitHub/tw1sm/spraycharles
パスワードクラッキングパスワード攻撃ウェブセキュリティペネトレーションテスト認証
GitHubtw1sm/spraycharles

spraycharles

低速かつ長期にわたるパスワードスプレー攻撃ツール。長期間にわたって間隔を開けて攻撃するように設計されています。

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

Spraycharles

やあ、俺はスプレー・チャールズみたいな気分だ - Chiddy Bang

Python PyPi

低くゆっくりとしたパスワードスプレー攻撃ツール。長期間にわたって間隔を置いてスプレーするように設計されています。

以下のスプレー用プラグインを含みます: Office365, OWA, EWS, Okta, ADFS, Cisco SSL VPN, Citrix Netscaler, Sonciwall, NTLM over HTTP, SMB。

関連ブログ記事: NTLM over HTTP、Exchange Web Services、Spraycharlesについての記事 by @sprocket_ed

このツールは何ですか?

Spraycharlesは比較的シンプルなパスワードスプレー攻撃ツールで、ペネトレーションテスト中にパスワードスプレーを手動以外のプロセスとして実行できる公開ツールがほとんどなかった時代に設計されました。Spraycharlesの最も優れた機能は、-a/--attemptsと-i/--intervalを使用して長時間実行のスプレーを設定し、数日間にわたって実行しながら定期的に確認できることです。一度きりのサービスやユニークなスプレー対象がある場合でも、新しいモジュールをテンプレート化してスプレーを開始するのは非常に簡単です。

このツールは何ではないのですか?

Spraycharlesは当初、最新の認証/クラウドプロバイダーを念頭に置いて設計されたわけではありません。より高度な機能をお探しの場合は、CredMasterやTeamFiltrationなどのツールをご確認ください。Spraycharlesは_高速_であることを目的として設計されていません。シングルスレッドであり、ボリューム/時間のアプローチを重視しています。

インストール

Spraycharlesはpip3 install spraycharlesで、またはこのリポジトリをクローンしてpip3 install .を実行することでインストールできます。

[!TIP] これにより、spraycharlesおよび短縮形のscエイリアスがパスに登録されます。ログおよび出力ファイルは~/.spraycharlesに保存されます。別の出力場所はCLIフラグで指定できます。

Dockerを使用する

以下のコマンドを実行してSpraycharles Dockerコンテナをビルドします:

root@kitploit:~
git clone https://github.com/Tw1sm/spraycharles
cd spraycharles/extras
docker build . -t spraycharles

以下のコマンドを実行してSpraycharles Dockerコンテナを使用します:

root@kitploit:~
docker run -it -v ~/.spraycharles:/root/.spraycharles spraycharles -h

ユーザー名とパスワードリストが保存されている場所に応じて、追加のボリュームを指定する必要がある場合があります。

NixOS

NixまたはNixOSユーザー向けにパッケージが用意されています。最新リリースはunstableチャンネルにしか存在しない場合があることに注意してください。

root@kitploit:~
nix-env -iA nixos.spraycharles

使い方

sprayサブコマンド:

root@kitploit:~
 Usage: spraycharles spray [OPTIONS] COMMAND [ARGS]...

 Low and slow password spraying

╭─ Options ─────────────────────────────────────────────────────────────────────────────╮
│ --debug                 Enable debug logging (overrides --quiet)                      │
│ --config          TEXT  Configuration file.                                           │
│ --help    -h            Show this message and exit.                                   │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ User/Pass Config ────────────────────────────────────────────────────────────────────╮
│ *  --usernames  -u      TEXT  Filepath of the usernames list [default: None]          │
│                               [required]                                              │
│ *  --passwords  -p      TEXT  Single password to spray or filepath of the passwords   │
│                               list                                                    │
│                               [default: None]                                         │
│                               [required]                                              │
│    --equal      -e            Does 1 spray for each user where password = username    │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Spray Target ────────────────────────────────────────────────────────────────────────╮
│    --host      -H      TEXT                           Host to password spray (ip or   │
│                                                       hostname). Can by anything when │
│                                                       using Office365 module - only   │
│                                                       used for logfile name           │
│                                                       [default: None]                 │
│ *  --module    -m      [ADFS|CiscoSSLVPN|Citrix|NTLM  Module corresponding to target  │
│                        |Office365|Okta|OWA|SMB|Sonic  host                            │
│                        wall]                          [default: None]                 │
│                                                       [required]                      │
│    --path              TEXT                           NTLM authentication endpoint    │
│                                                       (i.e., rpc or ews)              │
│                                                       [default: None]                 │
│    --port      -P      INTEGER                        Port to connect to on the       │
│                                                       specified host                  │
│                                                       [default: 443]                  │
│    --fireprox  -f      TEXT                           URL of desired fireprox         │
│                                                       interface                       │
│                                                       [default: None]                 │
│    --domain    -d      TEXT                           HTTP - Prepend DOMAIN\ to       │
│                                                       usernames; SMB - Supply domain  │
│                                                       for smb connection              │
│                                                       [default: None]                 │
│    --no-ssl                                           Use HTTP instead of HTTPS       │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Output ──────────────────────────────────────────────────────────────────────────────╮
│ --output   -o      TEXT  Name and path of result output file [default: None]          │
│ --quiet                  Will not log each login attempt to the console               │
│ --analyze                Run the results analyzer after each spray interval (Early    │
│                          false positives are more likely)                             │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Spray Behavior ──────────────────────────────────────────────────────────────────────╮
│ --attempts    -a      INTEGER  Number of logins submissions per interval (for each    │
│                                user)                                                  │
│                                [default: None]                                        │
│ --interval    -i      INTEGER  Minutes inbetween login intervals [default: None]      │
│ --timeout     -t      INTEGER  Web request timeout threshold [default: 5]             │
│ --jitter              INTEGER  Jitter time between requests in seconds                │
│                                [default: None]                                        │
│ --jitter-min          INTEGER  Minimum time between requests in seconds               │
│                                [default: None]                                        │
│ --pause                        Pause the spray between intervals if a new potentially │
│                                successful login was found                             │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Notifications ───────────────────────────────────────────────────────────────────────╮
│ --notify   -n      [Slack|Teams|Discord]  Enable notifications for Slack, Teams or    │
│                                           Discord                                     │
│                                           [default: None]                             │
│ --webhook  -w      TEXT                   Webhook used for specified notification     │
│                                           module                                      │
│                                           [default: None]                             │
╰───────────────────────────────────────────────────────────────────────────────────────╯

設定ファイル

頻繁に使用されるCLIフラグの量が多いため、--configフラグを使用してYAMLファイルからコマンドラインパラメータを設定する方法もあります。さらに、Spraycharlesを使用するたびに、CLIオプションが現在のディレクトリのYAMLファイル(last-config.yaml)に書き込まれ、簡単に変更や再利用ができます。

通知

Spraycharlesは、潜在的に成功したログイン試行後にDiscord、Slack、Microsoft Teamsに通知を発行する機能があります。この通知プロバイダのリストは、utils/notify.pyスクリプトを使用して拡張できます。通知エージェントごとに、その名前とwebhook URLを指定する必要があります。

設定ファイルを使用してこれらを指定し、コマンドを短く保つことができます:

root@kitploit:~
notify: Slack
webhook: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

いずれかのプロバイダに送信される通知には、スプレージョブに関連付けられた対象ホスト名が含まれます。これは、複数のターゲットを同時にスプレーする場合に特に便利です。

ユーザー名/パスワードファイルの更新

スプレー実行中に、提供されたユーザー名ファイルとパスワードファイルを変更できます。リストへの追加または削除は、次のパスワードローテーションで有効になります。

[!NOTE] リストに新しいパスワードを挿入する場合、スプレーされるためには現在スプレー中のパスワード_より後_に配置する必要があります(Spraycharlesは内部ループカウンタを保持しており、更新されたリスト内の対応する位置から次のパスワードを取得するためのインデックスとして使用します)。

ユーティリティ

Spraycharlesには、スプレー作業を支援する追加のユーティリティが含まれています。Spraycharlesモジュールの完全なリスト:

root@kitploit:~
 Usage: spraycharles [OPTIONS] COMMAND [ARGS]...

╭─ Options ─────────────────────────────────────────────────────────────────────────────╮
│ --help  -h        Show this message and exit.                                         │
╰───────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────────────────────╮
│ analyze   Analyze Spraycharles output files for potential spray hits                  │
│ gen       Generate custom password lists from JSON file                               │
│ modules   List spraying modules                                                       │
│ parse     Parse NTLM over HTTP and SMB endpoints to collect domain information        │
│ spray     Low and slow password spraying                                              │
╰───────────────────────────────────────────────────────────────────────────────────────╯

カスタムスプレーリストの生成

Spraycharlesの "gen" サブコマンドは、extras/list_elements.jsonで提供される仕様に基づいてパスワードリストを生成します。

root@kitploit:~
spraycharles gen extras/list_elements.json custom_passwords.txt

NTLM over HTTP と SMB からドメインを抽出

Spraycharlesの parse サブコマンドは、以下のようなコマンドを使用して、NTLM over HTTPおよびSMBサービスの両方から内部ドメインを抽出します。

root@kitploit:~
spraycharles parse https://example.com/ews
spraycharles parse smb://host.domain.local

結果ファイルの分析

analyzeサブモジュールは、出力JSONオブジェクトを読み取り、統計的に有意な応答長を特定できます。十分なデータがあれば、結果ファイルから成功したログインを抽出できるはずです。これが成功ログインを判断する唯一の方法ではなく、ターゲットサイトによって異なります。何も見逃していないことを確認するために、自分でデータを確認することをお勧めします。SMBの場合、成功を示すNTSTATUSコードを持つエントリを単純に見つけます。

root@kitploit:~
spraycharles analyze myresults.json

免責事項

このツールはペネトレーションテスト中に使用するために設計されています。事前の相互同意なしにターゲットを攻撃するためにこのツールを使用することは違法です。エンドユーザーは、該当するすべての地域、州、連邦法を遵守する責任があります。開発者は一切の責任を負わず、このプログラムの誤用について責任を負いません。

開発

Spraycharlesは依存関係管理にPoetryを使用しています。ソースからインストールし、以下のコマンドで開発環境をセットアップします:

root@kitploit:~
pip3 install poetry
git clone https://github.com/Tw1sm/spraycharles
cd spraycharles
poetry install

クレジット

  • @sprocket_ed: 複数のスプレーモジュール、Spraycharlesを素晴らしいものにする多くの機能、および関連ブログ記事への貢献
  • @b17zr: utilsフォルダに含まれているntlm_challenger.pyスクリプトの提供
ツールをダウンロード