Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
spraycharles — 저속하고 느린 패스워드 스프레이 도구로, 긴 시간 동안 간격을 두고 스프레이하도록 설계되었습니다. | Kitploit
도구/GitHubGitHub/tw1sm/spraycharles
Password CrackingPassword AttacksWeb SecurityPenetration TestingAuthentication
GitHubtw1sm/spraycharles

spraycharles

저속하고 느린 패스워드 스프레이 도구로, 긴 시간 동안 간격을 두고 스프레이하도록 설계되었습니다.

저장소 보기
2233737개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Spraycharles

hey, yo 내 느낌은 spraycharles 같아 - Chiddy Bang

Python PyPi

느리고 낮은 속도로 비밀번호를 스프레이하는 도구로, 긴 시간 동안 일정 간격으로 스프레이하도록 설계되었습니다.

Office365, OWA, EWS, Okta, ADFS, Cisco SSL VPN, Citrix Netscaler, Sonicwall, NTLM over HTTP, SMB용 스프레이 플러그인이 포함되어 있습니다.

@sprocket_ed님이 작성한 관련 블로그 게시물에서 NTLM over HTTP, Exchange Web Services 및 Spraycharles에 대해 다루고 있습니다.

이 도구는 무엇인가요?

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 스크립트를 사용하여 확장할 수 있습니다. 알림 에이전트를 사용하려면 이름과 웹훅 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 스크립트를 제공해 주셨습니다.
도구 다운로드