
Windows 파일 공유의 정찰을 간소화하기 위해 함께 작동하는 3가지 도구
레드팀원으로서 가장 시간이 많이 걸리는 작업 중 하나는 파일 시스템과 공유 폴더를 뒤져 잠재적으로 민감한 정보를 찾는 것입니다. SMBCrunch를 사용하면 레드팀원이 네트워크에서 Windows 파일 공유를 신속하게 찾고, 제공된 공유 폴더에 대해 재귀적 디렉터리 목록을 작성하며, 유용해 보이는 대상 파일이 있으면 원격 공유에서 파일을 다운로드할 수도 있습니다.
함께 작동하는 세 가지(3) 도구가 있습니다. 아래 세 섹션을 모두 읽어 이 도구들이 어떻게 함께 작동하는지 파악하세요.
파일(또는 gnmap 파일)이 주어지면 SMBHunt는 제공된 서버와 관련된 모든 Windows 파일 공유를 찾습니다(gnmap 파일이 제공된 경우 포트 445가 열려 있는 서버를 확인합니다). 확인을 수행하기 위해 자격 증명이 제공되지 않으면 널 세션 공유를 확인합니다.
경고: 사용자가 서버의 하나의 공유에만 접근할 수 있어도 스크립트는 해당 서버가 호스팅하는 모든 공유를 표시합니다. 이 출력에 공유가 나열되어 있다고 해서 해당 공유에 접근할 수 있다는 의미는 아닙니다. 다음 도구를 사용하세요.
이 스크립트는 제공된 자격 증명이 실패할 경우 도메인 계정 잠금을 방지하기 위해 경고합니다. "-f" 스위치는 이 보호 기능을 무시합니다.
이 스크립트는 하나의 자격 증명으로만 서버를 확인합니다. 사용자가 시스템의 하나의 공유에만 접근할 수 있어도 서버가 전체 공유 목록을 응답하기 때문에 의도적으로 이렇게 설계되었습니다.
./SMBHunt.pl [-a <account>] -i <file> [-o <output_file>]
./SMBHunt.pl -a 'testdomain\john:hunter2' -i portscan445.gnmap -o shares_found.txt
./SMBHunt.pl -h
-a, --account <string>
테스트할 사용자 자격 증명입니다. 사용자 이름은 'Domain\Username:Password' 형식으로 허용됩니다('Domain'은 선택 사항). 계정이 제공되지 않으면 스크립트는 널 세션 공유를 확인합니다.
-i, --inputFile <file>
새 줄로 구분된 시스템 목록 파일 또는 포트 445를 포함한 포트 스캔의 gnmap 파일입니다. 포트 445가 열려 있는 각 서버에 대해 SMB 공유가 있는지 확인합니다.
-o, --output <file>
결과를 파일로 출력합니다.
-f, --force
도메인 자격 증명이 정확하지 않을 수 있어도 스크립트를 계속 실행하도록 강제합니다.
--noipc
IPC 공유(IPC$)를 표시하지 않습니다.
--nohidden
숨겨진 공유(C$, IPC$, ADMIN$ 등)를 표시하지 않습니다.
SMBList는 "SMBHunt.pl"의 출력 파일(또는 "\server\share" 형식의 새 줄로 구분된 공유 파일)을 가져와 제공된 자격 증명을 사용하여 해당 공유에 대한 재귀적 디렉터리 목록을 수행합니다. SMBList는 제공된 목록에서 유효한 자격 증명을 찾을 때까지 공유에 인증을 시도합니다. 그런 다음 디렉터리 목록을 지정된 하위 폴더에 저장합니다.
이렇게 하면 파일 목록을 grep으로 검색하기가 매우 쉬워집니다!
가장 좋은 결과 파일은 /ALL_COMBINED_RESULTS.txt 입니다.
./SMBList.pl -c <credential/file> -s <share/file> -o <nonexistent directory>
./SMBList.pl -c credentials_found.txt -s shares_found.txt -o share_listing -m 150
./SMBList.pl -h
-c, --credentials <credential/file>
테스트할 단일 자격 증명 또는 자격 증명 파일입니다. 자격 증명은 'Domain\Username:Password' 형식으로 허용되며 (파일을 제공하는 경우) 새 줄로 구분됩니다.
-s, --shares <share/file>
테스트할 단일 공유 또는 공유 파일입니다. 유효한 자격 증명을 찾을 때까지 각 자격 증명이 인증을 시도합니다. 공유는 "\server\share" 형식이어야 하며 (파일을 제공하는 경우) 새 줄로 구분됩니다.
-o, --output <nonexistent directory>
이 이름의 새 디렉터리가 생성됩니다. 출력 보호를 위해 이 디렉터리가 이미 존재하면 스크립트를 실행할 수 없습니다. 존재하지 않는 디렉터리여야 합니다!
-m, --maxexec <seconds>
하나의 공유를 덤프하는 데 소비되는 최대 시간(초)입니다. 기본값은 300초(5분)입니다.
-f, --force
공유에서 오류가 발생해도 목록에서 공유를 제거하지 않고, 로그온 실패 메시지가 있어도 자격 증명을 제거하지 않습니다. 이 플래그를 사용하는 경우 자신이 무엇을 하고 있는지 확실히 알고 있어야 합니다! 주의하지 않으면 계정이 잠길 수 있습니다!
-n, --nocreds
출력에 자격 증명을 포함하지 않습니다. 경고: 이 스위치를 사용하면 다음 도구인 "SMBGrab.pl"에서 출력을 사용할 수 없습니다.
SMBList.pl의 파일 목록을 이 유틸리티에 파이프하여 공유에서 원하는 파일을 가져올 수 있습니다. SMBList.pl의 원본 목록을 이 스크립트에 전달하기 전에 "grep"으로 필터링해야 합니다. 그렇지 않으면 모든 파일이 다운로드됩니다(이는 전체 공유를 복사하는 것과 같으며 좋지 않습니다).
이 스크립트는 SMBList.pl의 출력을 파이프로 받아야 합니다. 아래 "사용 예"를 참조하세요.
./SMBGrab.pl [-s <directory>]
grep -i 'password.txt' share_listing/ALL_COMBINED_RESULTS.TXT | ./SMBGrab.pl -s savedfiles
./SMBGrab.pl -h
인수가 제공되지 않으면 파일이 공유에서 가져와 사용자에게 표시됩니다. 저장되지 않습니다.
-s, --savedir <directory>
가져온 모든 파일을 저장할 디렉터리입니다. 이 디렉터리가 존재하지 않으면 생성됩니다. 이 인수를 사용하면 파일을 저장하지만 파일이 화면에 출력되지 않습니다.
-a, --all
파이프로 들어온 모든 파일을 읽습니다. 이 스위치가 없으면 스크립트는 입력을 100개 파일로 제한하여 실수로 대량의 파일을 다운로드하는 것을 방지합니다.
-n, --noedit
파일을 원래 형태로 유지합니다. 이 스위치를 사용하지 않으면 각 파일 하단에 파일 메타데이터(읽기/쓰기 시간, 공유 내 파일 위치 등)에 대한 정보가 포함된 메모가 추가됩니다.
-h, --help
도움말 메뉴를 표시합니다.
변경 사항이나 기능 요청이 있으면 언제든지 연락 주세요!