Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Snaffler — 침투 테스터들이 맛있는 사탕을 찾는 데 도움을 주는 도구, by @l0ss and @Sh3r4 ( Twitter: @/mikeloss and @/sh3r4_hax ) | Kitploit
도구/GitHubGitHub/snaffcon/snaffler
ReconnaissancePersistence MechanismsLateral MovementInformation GatheringPost-ExploitationPenetration TestingRed TeamingLateral Movement #8위Persistence Mechanisms #20위Post-Exploitation #13위
2.9k283387개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubsnaffcon/snaffler

Snaffler

침투 테스터들이 맛있는 사탕을 찾는 데 도움을 주는 도구, by @l0ss and @Sh3r4 ( Twitter: @/mikeloss and @/sh3r4_hax )

저장소 보기

Snaffler

ko-fi

"snaffle"의 사전적 정의

무엇을 위한 걸까요?

Snaffler는 침투 테스터와 레드 팀을 위한 도구로, 지루하고 거대한 건초 더미(대규모 Windows/AD 환경)에서 맛있는 사탕 바늘(주로 크리덴셜이지만 유연함)을 찾는 데 도움을 줍니다.

다른 용도로도 유용할 수 있지만, 명시적으로 "감사" 도구가 아닙니다.

이 모든 걸 읽고 싶지 않아!!!

에, 좋아요. 하지만 결과에 대해 책임지지 않습니다. 여러분을 위해 이 모든 걸 썼지만 괜찮아요. 화난 건 아니고, 그냥 실망했을 뿐이에요.

snaffler.exe -s -o snaffler.log

어떤 일을 하나요?

대체로 말하자면, Active Directory에서 Windows 컴퓨터 목록을 가져온 다음, 그 모든 컴퓨터에 탐촉 촉수를 뻗어 파일 공유가 있는지, 그리고 읽을 수 있는지 확인합니다.

그런 다음, 더 많은 탐촉 촉수로 해당 공유의 모든 파일을 열거하고 LEARNED ARTIFACTUAL INTELLIGENCE for MACHINES를 사용하여 당신 같은 더러운 작은 해커가 원할 만한 파일을 찾아냅니다.

사실 ML 같은 건 하지 않습니다. 제대로 하려면 훈련 데이터가 필요하고, 그걸 만드는 데 엄청난 시간이 필요하기 때문입니다. 대신, 모든 좋은 "ML" 프로젝트처럼 그냥 수많은 if 문과 정규식을 사용합니다.

어떻게 생겼나요?

이렇게요!

어떻게 사용하나요?

"도메인 가입 머신에서 도메인 사용자 컨텍스트로 EXE를 그냥 실행만 하면" (사람들이 Grouper2에서 하라는 대로 했고, 곧바로 모든 상세/디버그 스위치를 켜서 수백 메가바이트의 스택 트레이스를 내뱉게 만들었습니다) 기본적으로 아무것도 하지 않을 것입니다. README 파일을 읽지 않는 사람들을 위한 우리의 장난입니다.TM 왜냐하면 우리는 괴물이니까요.

하지만... 올바른 주문을 추가하면 앞서 언급한 L.A.I.M.이 활성화되고 사탕이 있을 법한 파일 경로가 드러날 것입니다.

핵심 주문은 다음과 같습니다:

-o 결과를 파일로 출력합니다. -s를 사용하지 않는 경우 이것을 원할 것입니다. 예: -o C:\users\thing\snaffler.log

-s 결과를 찾는 대로 표준 출력으로 출력합니다. -o를 사용하지 않는 경우 이것을 원할 것입니다.

-v 상세 수준을 제어합니다. 옵션은 Trace(가장 자세함), Degub(덜 자세함, 덜 구복), Info(기본값), Data(결과만)입니다. 예: -v debug

-m Snaffler가 마음에 드는 파일을 자동으로 복사(또는 Snaffle... 원한다면)할 출력 디렉터리를 활성화하고 지정합니다.

-l Snaffle할 파일의 최대 크기(바이트)입니다. 기본값은 10000000이며, 약 10MB입니다.

-i 컴퓨터 및 공유 검색을 비활성화하고, 파일 검색을 수행할 디렉터리 경로가 필요합니다.

-i 컴퓨터 검색을 비활성화하고, 공유 및 파일 검색을 수행할 호스트의 쉼표로 구분된 목록 또는 입력 파일이 필요합니다. 파일을 제공하는 경우 입력은 경로여야 합니다(예: C:\targets.txt 또는 .\targets.txt).

-y 출력을 TSV 형식으로 지정합니다.

-b 덜 흥미로운 것을 찾는 LAIM 규칙을 건너뜁니다. 0에서 3 사이의 숫자로 조정합니다.

-f DFS(분산 파일 시스템)를 통해 파일 공유를 찾도록 Snaffler를 제한합니다. 이는 많은 조직에서 가장 큰 파일 공유를 포함하면서도 기본보다 훨씬 은밀해야 합니다.

-a 파일 열거를 건너뛰고, 대상 호스트의 목록 가능한 공유 목록만 제공합니다.

-u Snaffler가 AD에서 계정 이름 목록을 가져와 가장 흥미로워 보이는 것을 선택한 다음 검색 규칙에 사용하도록 합니다.

-d 검색할 컴퓨터를 검색할 공유를 검색할 파일을 검색할 도메인입니다. 쉽습니다.

-c 도메인 컴퓨터 목록을 쿼리할 도메인 컨트롤러입니다.

-r 내부에서 흥미로운 문자열을 검색할 최대 파일 크기(바이트)입니다. 기본값은 500k입니다.

-j 파일에서 발견된 문자열 주변에 표시할 컨텍스트의 바이트 수입니다(예: -j 200).

-z 위의 모든 사항과 훨씬 더 많은 것을 정의하는 구성 파일의 경로입니다! 자세한 내용은 아래를 참조하세요. -z generate를 사용하면 .\default.toml이라는 샘플 구성 파일이 생성됩니다.

-t 출력하려는 로그 유형입니다. 현재 지원되는 옵션은 plain과 JSON입니다. 기본값은 plain입니다.

-x 사용할 최대 스레드 수입니다. 4 미만으로 설정하면 문제가 발생합니다.

-p .toml 형식 규칙으로 가득한 디렉터리 경로입니다. Snaffler는 기본 규칙 집합 대신 이 규칙을 모두 로드합니다.

로그 출력의 의미는 무엇인가요?

다음 주석이 달린 예제가 도움이 되길 바랍니다:

이 로그 항목은 대략 왼쪽에서 오른쪽으로 다음과 같이 읽습니다:

  • 7시 37분경
  • Snaffler가 주목할 만한 파일을 발견했습니다
  • 등급은 "Red"로, 두 번째로 흥미로운 수준입니다
  • "KeepConfigRegexRed"라는 규칙과 일치했습니다
  • 읽을 수는 있지만 수정할 수는 없습니다
  • 일치한 정확한 정규식은 빨간색 상자 안의 내용입니다
  • 크기는 208kB입니다
  • 마지막 수정일은 2020년 1월 10일 오후 3시 45분입니다
  • 보라색 경로에서 파일을 찾을 수 있습니다

... 그리고 나머지 줄(회색)은 일치한 위치의 파일에서 가져온 작은 컨텍스트 조각입니다.

이 경우 ASP.NET validationKey와 decryptionKey 값을 찾았으며, 이를 통해 일부 역직렬화 해킹으로 웹 앱에 RCE를 수행할 수 있을 수 있습니다. 만세!

참고: 이 스크린샷이 만들어진 후 Sh3r4가 각 줄 앞에 현재 사용자와 호스트 이름을 앞에 추가하는 기능을 추가했습니다. 하지만 스크린샷을 다시 찍고 싶지는 않습니다.

어떤 파일이 좋고 어떤 파일이 지루한지 어떻게 결정하나요?

"너무 간단해서 거의 거짓말 같은" 답변:

각 L.A.I.M. 마법 파일 찾기 방법은 다음과 같은 작업을 수행합니다:

  • 정확한 파일 확장자 일치로 검색 – 관련 단어 목록과 일치하는 확장자를 가진 파일이 반환됩니다. 이는 거의 항상 사탕을 포함하는 파일 확장자를 위한 것입니다(예: .kdbx, .vmdk, .ppk 등).

  • (대소문자 구분 없이) 정확한 파일 이름 일치로 검색 – 거의 항상 사탕을 포함하는 파일 이름을 위한 것입니다(예: id_rsa, shadow, NTDS.DIT 등).

  • 정확한 파일 확장자 일치(또 다른 단어 목록)로 검색한 후 일치하는 파일의 내용을 특정 키워드(또 다른 단어 목록)로 'grep'합니다. 이는 때때로 사탕을 포함하지만 걸러내야 할 잡것이 많을 것으로 예상되는 파일 확장자를 위한 것입니다. 예를 들어 web.config는 데이터베이스 자격 증명을 포함할 수 있지만, 지루한 IIS 구성과 비밀번호 없는 내용도 자주 포함합니다. 예를 들어 .config로 끝나는 모든 파일을 찾은 다음 connectionString, password, PRIVATE KEY 등을 포함한 문자열을 grep합니다.

  • 부분 파일 이름 일치로 검색(또 더 많은 단어 목록). 이는 주로 Jeff's Password File 2019 (Copy).docx 또는 Privileged Access Management System Design - As-Built.docx 등을 찾기 위한 것으로, 파일 이름에 passw, handover, secret, secure, as-built 등의 하위 문자열이 포함된 파일을 일치시킵니다.

  • 특정 확장자를 가진 모든 파일이나 경로에 특정 문자열이 포함된 파일을 건너뛰기 위한 건너뛰기 목록도 있습니다.

진짜 답변:

Snaffler는 "분류기" 시스템을 사용합니다. 각 분류기는 공유, 폴더, 파일 또는 파일 내용을 검사하고 일부 항목을 다음 분류기로 전달하며 다른 항목은 폐기합니다. 각 분류기는 규칙 집합을 사용하여 분류한 항목을 어떻게 처리할지 결정합니다.

이러한 규칙은 매우 간단할 수 있습니다. 예를 들어 "파일 확장자가 .kdbx이면 알려줘" 또는 "경로에 windows\sxs가 포함되어 있으면 그 경로 내의 하위 디렉터리와 파일 보기를 중지" 등입니다.

규칙은 정규식을 사용할 수도 있어 비교적 정교한 패턴 일치가 가능합니다. 이는 파일 내용을 검사할 때 특히 유용하지만, 성능에 큰 영향을 미치는 정규식은 주의해야 합니다. 대규모 환경에서는 이러한 규칙이 말 그대로 수백만 번 확인될 수 있으므로 사소한 성능 문제가 크게 증폭될 수 있습니다.

Snaffler의 진정한 힘은 여러 규칙을 체인으로 연결하고 분기 체인을 만들 수 있는 능력에 있습니다. 이를 통해 "저렴한" 규칙(예: 파일 이름 및 확장자 확인)을 사용하여 "비싼" 규칙(예: 파일 내용 전체에서 정규식 실행, 인증서 구문 분석하여 개인 키 포함 여부 확인 등)을 언제 사용할지 결정할 수 있습니다. 이것이 Snaffler가 필요할 때는 파일을 상당히 깊이 검사하면서도 C#과 같은 고급 언어로 작성된 도구로서 놀라울 정도로 빠른 이유입니다.

예를 들어, 매우 간단한 규칙 집합은 다음과 같을 수 있습니다:

  • 이미지 파일과 관련된 확장자를 가진 모든 파일을 폐기하는 규칙
  • .dmp 파일 확장자를 가진 모든 파일을 찾아 Snaffle하는 규칙
  • 다음과 같은 규칙 체인:
    • 첫 번째 규칙은 .ps1 파일 확장자를 찾고, 일치하는 모든 파일을 두 번째 및 세 번째 규칙으로 전송합니다.
    • 두 번째 규칙은 PowerShell 코드에서 하드코딩된 자격 증명을 찾기 위해 설계된 정규식을 사용하여 파일 내부를 검사합니다.
    • 세 번째 규칙은 PowerShell 스크립트 내에서도 흔히 사용되는 .bat 또는 .cmd 파일에서 볼 수 있는 cmd.exe 명령의 하드코딩된 자격 증명을 찾기 위해 설계된 정규식을 사용합니다.

이 접근 방식은 비교적 관리하기 쉽고 읽기 쉬운 규칙 집합을 유지할 수 있게 해주며, 최종 사용자(당신)가 기본값을 사용자 정의하거나 자신만의 규칙 집합을 개발하는 것을 훨씬 쉽게 만듭니다.

규칙을 쓰고 싶지 않아요, 어렵고 지루해 보이거든요.

맞아요, 그렇긴 했죠.

Snaffler는 .exe에 내장된 기본 규칙 집합과 함께 제공됩니다. ./Snaffler/SnaffRules/DefaultRules에서 확인할 수 있습니다.

저는 지루함의 거대한 거인, 평범함의 달인입니다. 자신만의 규칙 집합을 쓰고 싶습니다.

문제없어요, 거대한 괴짜님. 두 가지 옵션이 있습니다.

  1. DefaultRules 디렉터리의 규칙을 편집하거나 교체한 다음 새 Snaffler를 빌드하세요. 해당 디렉터리의 .toml 파일은 리소스로 .exe에 포함되며, 다른 규칙을 지정하지 않을 때 런타임에 로드됩니다.
  2. 디렉터리를 만들고 자신의 규칙 파일 몇 개를 넣은 다음, -p .\path\to\rules와 함께 Snaffler를 실행하세요. Snaffler는 해당 디렉터리의 모든 .toml 파일을 구문 분석하고 결과 규칙 집합을 사용합니다. 모든 규칙을 하나의 큰 .toml 파일에 넣어도 작동합니다.

다음은 도움이 되기를 바라는 주석이 달린 예제입니다. 이것이 매우 어렵게 보인다면, 그냥 우리 규칙을 사용하면 좋은 것을 찾을 수 있을 것입니다.

도구 다운로드