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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
smbcrawler — smbcrawler는 실용적인 도구로, 자격 증명과 호스트 목록을 받아 해당 공유를 '크롤링'(또는 '스파이더링')합니다. | Kitploit
도구/GitHubGitHub/syss-research/smbcrawler
ReconnaissanceVulnerability AnalysisData ExfiltrationInformation GatheringNetwork SecurityPenetration Testing
GitHubsyss-research/smbcrawler

smbcrawler

smbcrawler는 실용적인 도구로, 자격 증명과 호스트 목록을 받아 해당 공유를 '크롤링'(또는 '스파이더링')합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SmbCrawler

SmbCrawler는 자격 증명과 호스트 목록을 받아 해당 공유를 '크롤링'(또는 '스파이더링')하는 실용적인 도구입니다. 기능:

  • 호스트 이름, IP 주소, IP 범위 또는 nmap xml 파일을 입력으로 받음
  • 권한을 확인 (쓰기 권한 확인은 선택 사항이며, 공유에 빈 디렉토리를 생성해야 하기 때문)
  • 크롤링 깊이를 사용자 정의 가능
  • 결과를 기계 판독 가능 형식 또는 대화형 HTML 보고서로 출력
  • 패스더해시(pass-the-hash) 지원
  • 흥미로운 파일 자동 다운로드
  • 잠재적 비밀 보고
  • 멀티스레드
  • 일시 중지 가능
  • 개별 공유 및 호스트를 대화식으로 건너뛰기

설치

Python 패키지 설치 방법에 대한 지침이 필요하다면, pipx가 설치되어 있는지 확인하고 pipx install smbcrawler를 실행하는 것을 권장합니다.

SmbCrawler는 MarkItDown을 사용하여 PDF, XLSX, DOCX, ZIP 등과 같은 일부 바이너리 파일을 자동으로 일반 텍스트로 변환할 수 있습니다. 이 패키지는 많은 종속성을 가져오므로 추가 기능으로 표시되어 있습니다. 그러나 최상의 결과를 얻으려면 적극 권장됩니다. 바이너리를 자동으로 변환하려면 다음과 같이 SmbCrawler를 설치하십시오:

root@kitploit:~
pipx install 'smbcrawler[binary-conversion]'

셸 완성을 추가하는 것이 좋습니다. click 라이브러리를 사용하는 Python 앱으로서, 일반적인 메커니즘을 사용하여 bash, zsh 및 fish에 탭 완성을 추가할 수 있습니다.

예제

다음과 같이 실행합니다 (10개 스레드, 최대 깊이 5):

root@kitploit:~
$ smbcrawler crawl -i hosts.txt -u pen.tester -p iluvb0b -d contoso.local -t 10 -D 5

버전 1.0의 주요 변경 사항

SmbCrawler가 대대적으로 개편되었습니다. 가장 중요한 변경 사항은 다음과 같습니다:

  • CLI를 정리하고 크롤러의 동작을 제어하는 '프로필' 메커니즘 도입
  • 출력이 분산된 JSON 파일 대신 sqlite 데이터베이스로 변경됨
  • 권한이 더 세분화되어 보고됨

이전 CLI 인수('interesting files', 'boring shares' 등)는 투박하고 혼란스러웠습니다. 대신 이제 '프로필'을 사용합니다. 자세한 내용은 아래를 참조하세요.

또한, 기본적으로 관계형 데이터베이스를 재발명했지만 매우 형편없이 했기 때문에, sqlite를 직접 사용하는 것이 낫다는 것을 깨달았습니다. sqlite 접근 방식을 사용하면 좋은 성능으로 멋진 대화형 HTML 보고서를 생성할 수 있습니다. 다른 도구 파이프라인에서 데이터를 사용해야 하는 경우 여전히 다양한 형식으로 결과를 내보낼 수 있습니다.

이전 SmbCrawler의 권한 보고 방식은 때로 유용하지 않았습니다. 예를 들어, 공유의 루트 디렉토리에 대한 읽기 권한이 있지만 모든 하위 디렉토리가 보호되는 경우가 흔합니다(예: 사용자 프로필). 이제 SmbCrawler는 공유의 디렉토리 트리를 읽을 수 있는 깊이와, 최대 깊이 인수를 더 높게 제공했다면 더 깊이 들어갈 수 있었는지 또는 최대치에 도달했는지를 보고합니다.

이전 버전을 선호한다면, PyPI에서 여전히 사용 가능하며 예를 들어 pipx install smbcrawler==0.2.0으로 설치할 수 있습니다.

사용법

실행 중에는 다음 키를 사용할 수 있습니다:

  • p: 크롤러를 일시 중지하고 개별 호스트 또는 공유 건너뛰기
  • <space>: 현재 진행 상황 출력
  • s: 더 자세한 상태 업데이트 출력

자세한 정보는 smbcrawler -h를 실행하십시오.

참고 사항

중간 규모의 네트워크에서도 SmbCrawler는 엄청난 양의 데이터를 찾을 것입니다. 과제는 가양성(false positive)을 줄이는 것입니다.

권한에 대한 참고 사항

권한이 서비스 수준과 파일 시스템 수준 모두에 적용될 수 있다는 점을 인식하는 것이 중요합니다. 원격 SMB 서비스가 인증을 허용하고 사용자 계정이 원칙적으로 읽기 권한을 가질 수 있지만, 파일 시스템에서는 이러한 권한이 없을 수 있습니다.

SmbCrawler는 다음 권한이 있는지 보고합니다:

  • 게스트로 대상에 인증하고 공유 목록 가져오기
  • 사용자 자격 증명으로 대상에 인증
  • 게스트로 공유에 접근
  • 사용자 자격 증명으로 공유에 접근
  • 공유의 루트 디렉토리에 디렉토리 생성
  • 접근할 수 있었던 공유의 가장 깊은 디렉토리 수준 (--depth 인수에 의해 제한됨)

해당 작업을 시도하지 않고 SMB 공유의 권한을 확인하는 것은 간단하지 않기 때문에, SmbCrawler는 각 공유에 디렉토리를 생성하려고 시도합니다. 디렉토리 이름은 smbcrawler_DELETEME_<8 random characters>이며 즉시 삭제되지만, 그래도 주의하십시오.

[!WARNING] 때로는 디렉토리를 생성할 권한이 있지만 삭제할 권한이 없어 빈 디렉토리가 남을 수 있습니다.

프로필

특정 공유, 파일 또는 디렉토리를 처리하는 방법을 결정하기 위해 SmbCrawler에는 '프로필'이라는 기능이 있습니다. 기본 프로필을 살펴보세요.

프로필은 다음 위치에서 *.yml 또는 *.yaml 확장자를 가진 파일에서 로드됩니다:

  • 내장 기본 프로필
  • $XDG_DATA_HOME/smbcrawler/ (~/.local/share/smbcrawler by default)
  • --extra-profile-directory로 정의된 추가 디렉토리
  • --extra-profile-file로 정의된 추가 파일

각 위치의 프로필은 이전 정의를 재정의합니다.

regex 값은 프로필이 일치하는지 여부를 정의하며, 마지막으로 일치하는 프로필이 사용됩니다. 모든 정규식은 대소문자를 구분하지 않으며, Windows 세계에서 가장 일반적인 동작을 반영합니다.

서로 다른 소스의 프로필이 어떻게 함께 작동하는지 혼란스러울 수 있으므로 --dry-run 매개변수를 활용하십시오. 이를 통해 실제 구성을 보여주며 그 외에는 아무것도 하지 않습니다.

각 섹션은 항상 딕셔너리 목록입니다. 딕셔너리의 각 키는 임의의 레이블이며 각 값은 다시 다양한 속성을 가진 딕셔너리입니다.

파일

  • comment: 이 프로필을 설명하는 도움이 되는 문자열
  • regex: 이 프로필이 적용되는 파일을 정의하는 정규식. 일치하는 마지막 정규식이 유효합니다.
  • regex_flags: 정규식 match 함수에 전달될 플래그 배열
  • high_value (기본값: false): 파일이 '고가치'인 경우 해당 존재가 보고되지만 반드시 다운로드되지는 않습니다 (가상 하드 드라이브 생각 - 중요하지만 자동 다운로드하기에는 너무 큼)
  • download (기본값: true): true이면 처음 200KiBi가 다운로드되고 (또는 high_value=true인 경우 전체 파일) 비밀을 위해 파싱됩니다.

공유 및 디렉토리

  • comment, regex, regex_flags: 위와 동일
  • high_value: 해당 존재가 보고되고 크롤링 깊이가 무한대로 변경됨
  • crawl_depth: --depth 인수로 정의된 것과 다른 깊이까지 이 공유 또는 디렉토리를 크롤링

비밀

  • comment, regex_flags: 위와 동일
  • regex: 비밀과 일치하는 정규식. 비밀 자체는 이름이 secret인 명명된 그룹일 수 있습니다.

일반적인 워크플로우

먼저 크롤링 깊이 1로 SmbCrawler를 실행하여 무엇을 다루고 있는지 파악하는 것이 좋습니다. 이 첫 번째 실행에서는 -w를 사용하여 쓰기 확인을 활성화할 수 있습니다:

root@kitploit:~
$ smbcrawler -C permissions_check.crwl crawl -D1 -t10 -w \
    -i <INPUT FILE> -u <USER> -d <DOMAIN> -p <PASSWORD>

이것은 각 공유의 루트 디렉토리에 대한 쓰기 및 읽기 권한만 확인합니다. 읽기 권한이 얼마나 깊이 있는지에 대한 자세한 정보는 전체 실행을 통해서만 알 수 있습니다.

초기 권한 확인 후, 다음 실행 또는 여러 번의 실행에서 흥미로운 공유와 지루한 공유를 식별할 수 있습니다. SYSVOL 및 NETLOGON과 같은 일부 공유는 여러 번 나타나므로, 다음 실행에서 크롤링 깊이를 0으로 설정하고 세 번째 실행에서 이러한 중복 공유를 스캔할 호스트 하나를 선택해야 합니다. 예는 다음과 같습니다:

root@kitploit:~
$ smbcrawler -C dc_only.crwl crawl -D -1 <DC IP> \
    -u <USER> -d <DOMAIN> -p <PASSWORD>
$ smbcrawler -C full.crwl crawl -D5 -t10 -i <NEW INPUT FILE> \
    -u <USER> -d <DOMAIN> -p <PASSWORD> \
    --extra-profile-file skip_sysvol.yml

여기서 skip_sysvol.yml은 다음과 같습니다:

root@kitploit:~
shares:
  sysvol:
    comment: "Skip sysvol and netlogon share"
    regex: 'SYSVOL|NETLOGON'
    crawl_depth: 0

크롤링할 가치가 없다고 생각되는 다른 공유를 여기에 자유롭게 포함하십시오.

출력

원시 데이터는 SQLite 데이터베이스와 디렉토리(기본적으로 output.crwl 및 output.crwl.d)에 포함됩니다. 디렉토리에는 두 개의 추가 디렉토리가 포함됩니다: 해시 내용으로 고유화된 다운로드 파일이 있는 디렉토리와 내용 파일을 가리키는 심볼릭 링크가 있는 모든 공유를 미러링하는 디렉토리입니다. 후자는 다운로드된 모든 파일을 grep하는 데 좋습니다.

데이터는 다양한 형식으로 변환될 수 있습니다. 예를 들어 sqlitebrowser로 데이터베이스에 간단히 접근할 수도 있습니다. 몇 가지 유용한 뷰가 미리 정의되어 있습니다. 또는 JSON을 출력하고 jq를 사용하여 데이터를 가공할 수도 있습니다.

예를 들어, 루트 디렉토리 너머까지 읽을 수 있었던 모든 공유를 LaTeX 테이블로 표시하려면 다음 쿼리를 사용하십시오:

root@kitploit:~
SELECT target_id || " & " || name || " & " || remark || " \\"
FROM share
WHERE read_level > 0
ORDER BY target_id, name

또한 실험적인 HTML 출력 기능이 있습니다. 대량의 데이터에는 아직 완전히 유용하지 않을 수 있습니다.

도움 주기

보고된 비밀에서 많은 가양성 또는 가음성(false negative)을 발견하면 도움을 주시고 알려주십시오. 자동 감지를 개선하려고 할 때 커뮤니티의 의견이 중요합니다. 최상의 시나리오: 기본 프로필 파일을 변경하는 풀 리퀘스트를 제공하십시오.

크레딧

Adrian Vollmer, SySS GmbH

라이선스

MIT 라이선스; 자세한 내용은 LICENSE 참조.

도구 다운로드