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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
gorilla — 뮤테이션을 사용하여 워드리스트를 생성하거나 기존 워드리스트를 확장하는 도구. | Kitploit
도구/GitHubGitHub/andreiverse/gorilla
Password CrackingPassword AttacksInformation GatheringCrawler
GitHubandreiverse/gorilla

gorilla

뮤테이션을 사용하여 워드리스트를 생성하거나 기존 워드리스트를 확장하는 도구.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

gorilla

gorilla는 패턴 기반 워드리스트 생성(예: crunch), 일반적인 비밀번호/사용자명 형식 기반 워드리스트 생성(예: cupp), 웹 페이지를 스크래핑하여 단어로 워드리스트 구축(예: cewl), 기존 워드리스트를 변형(mutation)으로 확장(예: hashcat의 규칙 기반 공격) 등 다양한 유용한 기능을 담은 최고의 워드리스트 도구입니다.

cargo로 설치하기

Rust의 Cargo가 설치되어 있다면 cargo install --git https://github.com/d4rckh/gorilla --branch main을 실행하세요.

이제 gorilla --help를 실행할 수 있습니다.

cargo로 빌드하기

root@kitploit:~
cargo build --release
# 바이너리는 target/release 폴더에 위치합니다

비밀번호 계산하기

--from-pattern/-p 인자는 gorilla에게 패턴을 기반으로 비밀번호를 계산하도록 지시할 때 사용합니다. 예를 들어, 다음 명령은 소문자 5개를 포함하는 모든 단어를 출력합니다.

root@kitploit:~
gorilla --from-pattern "{a-z}{a-z}{a-z}{a-z}{a-z}"

다른 패턴 예시로는 administrator{0-9} (administrator0 -> administrator9); hello_world{a-z}{0-9} (hello_worlda0 -> hello_worldz9) 등이 있습니다.

출력을 파일로 저장하려면 --output-file/-o 인자를 사용할 수 있습니다.

image

이제 gorilla는 문자 집합(character sets)도 지원합니다. 문자 집합은 src/char_sets.rs에 정의되어 있습니다. 이를 사용하는 패턴의 몇 가지 예시는 다음과 같습니다: {l} => a b c d ... z; {u} => A B C D ... Z; {d} => 1 2 3 4 ... 9; {s} => (공백) ! " # $ ... ~. 여러 개를 조합할 수도 있으므로 {luds}는 다른 모든 문자 집합을 포함하는 문자 집합이 됩니다 (#45).

범위(range)를 사용하고 양쪽 끝이 각각 1개의 문자라면 문자 범위가 됩니다. 예를 들어:

  • {a-z}는 알파벳의 각 문자를 한 번에 하나씩 추가합니다: a, b, c, d, e, f, g,...., x, y, z;
  • {a-c}는 a, b, c만 한 번에 하나씩 추가합니다;
  • {0-9}는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9만 한 번에 하나씩 추가합니다. 범위를 사용하고 한쪽 끝에 2개 이상의 문자가 있다면 각 끝은 부호 없는 32비트 숫자로 해석되어 숫자 범위가 됩니다. 예를 들어:
  • {2020-2026}는 2020, 2021, 2022, 2023, 2024, 2025, 2026을 한 번에 하나씩 추가합니다.
  • {1-100}은 1부터 100까지(포함) 숫자를 한 번에 하나씩 추가합니다.

실험적 기능: 대괄호 안에 쉼표가 포함되어 있으면 그 문자열을 쉼표로 분리하여 각 부분을 한 번에 하나씩 추가합니다. 예를 들어 {Jan,Feb,Mar}는 Jan, Feb, Mar을 한 번에 하나씩 추가합니다.

선택적으로 --pattern-threads 매개변수를 사용하여 여러 패턴 스레드를 생성할 수 있습니다. 컴퓨터에서 사용 가능한 최대 스레드 수로 설정하는 것을 권장합니다.

변형/규칙을 사용하여 기존 워드리스트 수정하기

명령줄 인자를 사용하여 지원되는 모든 변형을 수행할 수 있지만, 오직 1개의 변형 집합으로만 제한됩니다. 변형 집합(mutation set)은 단어에 적용되는 일련의 변형입니다. CLI를 통해 변형은 --mutation/-m 인자로 제공됩니다.

root@kitploit:~
gorilla --from-pattern "administrator" --mutation "prepend:_"

image

보통 이 경우에는 단일 단어 대신 워드리스트를 지정하기 위해 --from-pattern 대신 --from-file/-i 인자를 사용하게 되지만, 설명을 단순하게 유지하기 위해 그것을 사용하겠습니다.

위 명령은 1개의 단어를 입력받아 1개의 단어(_administrator)를 출력합니다. 동일한 매개변수를 사용하여 여러 변형을 추가할 수 있습니다.

root@kitploit:~
gorilla --from-pattern "administrator" \
  -m "prepend:_" \
  -m "append:{0-9}"

이번에도 단일 단어를 입력받지만 10개의 서로 다른 단어를 출력합니다. prepend와 append에 {0-9} 구문을 추가하면 여러 단어가 생성됩니다. 위 명령은 다음 단어들을 생성합니다.

root@kitploit:~
_administrator0
_administrator1
_administrator2
[.. 생략 ..]
_administrator8
_administrator9

만약 -i 파일을 통해 워드리스트를 제공한다면, 해당 워드리스트의 단어 수에 10을 곱한 만큼의 단어를 돌려받게 됩니다.

지금까지는 1개의 변형 집합만 적용했습니다. 보통은 여러 개를 결합하고 싶을 것입니다. 이는 yaml 파일을 통해 수행합니다. 하나는 --mutations-file/-f 인자로 지정합니다. 이 리포지토리의 sets/simple.yml 파일에 예시가 있으며 다음과 같습니다:

root@kitploit:~
name: simple

mutation_sets:
  - [ nothing ] # => word
  - [ reverse ] # => drow
  - [ remove_last_letter ] # => wor
  - [ remove_first_letter ] # => ord
  - [ uppercase_all ] # => WORD
  - [ "append:{0-9}" ] # => word1, word2, word3
  - [ "2 append:{0-9}" ] # => word11, word22, word33
  - [ "replace:o:0", "replace:a:4", "replace:e:3" ] # => w0rd, h3ll0

image

각 변형 파일은 예시에서 보이는 것처럼 name과 mutation_sets 값을 가져야 합니다. 위의 변형 집합은 단일 단어로부터 27개의 다른 단어를 생성합니다.

root@kitploit:~
administrator
administrator
rotartsinimda
administrato
dministrator
ADMINISTRATOR
administrator0
[.. 생략 ..]
administrator9
administrator00
[.. 생략 ..]
administrator99
4dministr4t0r

사용 전에 변형 파일에 오류가 있는지 확인하고 싶다면 다음 구문을 사용하여 요약을 파싱하고 출력할 수 있습니다.

root@kitploit:~
gorilla --mutations-file muts.yml 

웹 페이지에서 단어 스크래핑하기

(현재는) 특정 페이지에서만 단어를 스크래핑할 수 있습니다. 스타일과 스크립트 태그는 자동으로 제거됩니다.

--from-website/-w 인자로 페이지를 지정할 수 있습니다. 예를 들어

root@kitploit:~
gorilla --from-website https://example.org/

image

위 명령은 해당 웹사이트의 모든 단어를 출력합니다. 이전에 보여드린 다른 인자들, 예를 들어 --mutations-file/-f, --mutation/-m, 그리고 당연히 (출력 대신) 저장하기 위한 --output-file/-o도 추가할 수 있습니다.

조건부 변형

특정 조건/조건들을 충족하는 특정 단어에만 변형 집합을 적용할 수 있습니다. 이는 yaml 파일에서만 의미가 있습니다.

다음 변형 파일은 admin 문자열을 포함하지 않는 단어를 제거합니다. 이전 변형들과 달리 단어를 제거할 수 있습니다.

root@kitploit:~
name: filtering_words

mutation_sets:
  - [ "if_contains:admin" ]

또 다른 예시는 다음과 같으며, 5자보다 긴 단어에만 밑줄을 추가합니다.

root@kitploit:~
name: conditional_mutation

mutation_sets:
  - [ "if_length:>5", "append:_" ],
  - [ "! if_length:>5" ]

첫 번째 if 변형의 부정 버전으로 시작하는 또 다른 변형 집합을 추가해야 한다는 점에 유의하세요. 그렇지 않으면 6자보다 짧은 단어들이 제거됩니다.

기타 변형

gorilla는 다른 많은 변형을 지원하며, 이 도구는 초기 개발 단계이기 때문에 여기에 모든 목록을 유지하는 것은 매우 어렵습니다. 다른 변형들이 궁금하다면 src/mutation.rs 파일의 Action 열거형을 확인할 수 있습니다.

일반적인 비밀번호/사용자명 형식을 사용하여 워드리스트 구축하기

형식은 yaml 파일을 통해 형식 집합(formatting sets)으로 정의되며 --from-formatting/-q 인자를 통해 gorilla에 제공됩니다. 현재는 하나의 형식 집합만 있으며 sets/formatting/basic_usernames.yml에 위치합니다. 그리고 (대략) 다음과 같습니다.

root@kitploit:~
name: basic_usernames

fields:
  - [ f_name ]
  - [ l_name ]

formatting_sets:
  - [ "{f_name}_{l_name}" ]
  - [ "{l_name}{f_name}" ]
  - [ ["{f_name}", [1st_letter]], "_{l_name}" ]
  - [ ["{f_name}", [1st_letter]], "{l_name}" ]

필수 필드는 name, fields, formatting_sets입니다. fields 값은 사용자 프로필이며 나중에 formatting_sets에서 사용되는 정보를 포함합니다.

이 집합을 실행하면 각 필드를 입력하라는 메시지가 표시되고 사용자명이 생성됩니다.

image

참고: 형식 집합 내부의 변형을 너무 복잡하게 만들지 마세요. 모두 단일 스레드로 실행됩니다! 형식 파일을 변형 파일과 혼합하여 병렬 변형을 실행하세요. 형식 집합의 변형 집합 내에서는 조합(combinatorical) 패턴을 사용하지 마세요.

팁: --mutations-file/-f와 같은 다른 인자를 일반적으로 사용하여 변형을 통해 새 단어를 생성하거나 --output-file/-o를 사용하여 단어를 저장할 수 있습니다.

각 형식 집합은 나중에 추가되는 문자열 배열입니다. 따라서 ["{f_name}", "{l_name}"]는 ["{f_name}{l_name}"]와 동일합니다. 문자열 대신 배열을 제공할 수 있으며, 이를 통해 이전에 워드리스트를 확장할 때 사용했던 변형을 적용할 수 있습니다.

root@kitploit:~
- [ "{f_name}_", [ "{l_name}", [ reverse ] ] ]

f_name이 joe이고 l_name이 doe라면 결과 형식은 joe_eod를 생성합니다. 형식 집합에서 유용한 변형은 remove_last_letter, remove_first_letter, 1st_letter입니다.

형식 집합을 여러 사용자 프로필에 적용하려면 --with-csv/-c 인자를 사용하여 CSV 파일을 제공할 수 있습니다. basic_usernames 형식 집합의 경우 CSV는 다음과 같이 구성되어야 합니다:

root@kitploit:~
f_name,l_name
joe,doe
james,smith
robert,smith

image

사용 가능한 모든 변형:

기본

  • append:PATTERN - 패턴 또는 일반 텍스트를 뒤에 추가합니다
  • prepend:PATTERN - 패턴 또는 일반 텍스트를 앞에 추가합니다
  • replace:TEXT1:TEXT2 - TEXT1을 TEXT2로 교체합니다
  • reverse - 단어를 뒤집습니다
  • uppercase_all - 모든 문자를 대문자로 만듭니다
  • lowercase_all - 모든 문자를 소문자로 만듭니다
  • remove_first_letter - 첫 글자를 제거합니다
  • remove_last_letter - 마지막 글자를 제거합니다
  • capitalize - 단어의 첫 글자는 대문자로, 나머지는 소문자로 만듭니다
  • toggle_case - 각 문자의 대/소문자를 뒤집습니다

고급

  • if_length:COND - 단어 길이에 대한 조건과 일치하지 않으면 단어를 제거합니다 (COND = >NUMBER/<NUMBER/=NUMBER)
  • if_contains:TEXT - 위와 같지만 특정 텍스트를 포함하지 않으면 제거합니다
  • clone - 단어를 복제합니다
  • wipe - 단어에서 모든 것을 제거합니다
  • 1st_letter - 첫 글자를 제외한 모든 것을 유지합니다
  • nothing - 아무것도 하지 않습니다
도구 다운로드