
법의학 증거 수집기

Rust 1.50+에서 컴파일 및 테스트되었습니다. 프로젝트 디렉터리에서 터미널을 열고 릴리스 빌드를 컴파일하려면 다음을 입력하세요.
cargo build --release
디버그 빌드는 다음을 사용하여 컴파일할 수 있습니다.
cargo build
컴파일된 실행 파일은 각각 target/release/gargamel.exe 또는 target/debug/gargamel.exe에 있습니다.
로깅 수준을 변경하려면:
src/main.rs를 엽니다.LevelFilter::Info를 (예를 들어) LevelFilter::Trace로 변경하면 더 상세한 로깅이 가능합니다.
LevelFilter::Trace는 비밀번호를 포함한 모든 것을 기록한다는 점에 유의하세요.현재 이 앱은 Windows에서만 작동하며 대상 컴퓨터는 Windows 또는 Linux를 사용해야 합니다.
Gargamel과 같은 디렉터리에 다음 프로그램이 있는지 확인하세요.
psexec, 다운로드paexec, PsExec의 오픈 소스 대안, 다운로드winpmem, 오픈 소스 메모리 이미지 도구, 다운로드.
plink 및 pscp, 오픈 소스 CLI SSH/SCP 클라이언트, 다운로드SharpRDP, RDP를 사용하는 오픈 소스 명령 실행기, 다운로드WMImplant, 오픈 소스 PowerShell WMI 명령 실행기, 다운로드7za.exe, 7zip 아카이버의 독립형 콘솔 버전, 다운로드참고: psexec와 paexec가 모두 필요합니다. 두 애플리케이션이 기능적으로 동일하다고 가정되지만 실제로는 특정 상황에서 다른 동작을 보입니다.
Gargamel은 완전한 기능을 위해 관리자 권한 터미널에서 실행되어야 합니다. 현재 제한된 권한으로 실행될 때 UAC 대화 상자나 어떤 종류의 알림도 지원하지 않습니다. 제한된 사용자 권한으로 실행하면 대상 메모리 덤프와 같은 일부 작업이 작동하지 않습니다.
다음 매개변수로 컴퓨터에 연결한다고 가정합니다.
192.168.42.47Janonbusr123다음 명령은 PsExec 방식을 사용하여 방화벽 상태, 네트워크 상태, 로그인한 사용자, 실행 중인 프로세스,
활성 네트워크 연결, 레지스트리, 시스템 및 애플리케이션 이벤트 로그를 수집합니다.
증거는 Gargamel 위치를 기준으로 testResults 디렉터리에 저장됩니다.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults
Gargamel이 원격 사용자의 비밀번호를 묻습니다. 예제에서는 비밀번호가 nbusr123입니다.
비밀번호는 입력 시 숨겨집니다.
프로그램 인수로 비밀번호를 직접 지정할 수도 있습니다.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -p nbusr123 -o testResults
다음 매개변수로 도메인의 컴퓨터에 연결한다고 가정합니다.
WORKSPACEJanovPCJanonbusr123다음 명령은 PsExec 방식을 사용하여 방화벽 상태, 네트워크 상태, 로그인한 사용자, 실행 중인 프로세스, 활성 네트워크 연결, 레지스트리, 시스템 및 애플리케이션 이벤트 로그를 수집합니다.
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -o testResults
또는 비밀번호 프롬프트를 건너뛰려면 비밀번호를 직접 지정하세요.
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -p nbusr123 -o testResults
PsExec는 지원되는 5가지 연결 방법 중 하나입니다.
--psexec를 다음 옵션으로 대체할 수 있습니다.
--psexec--psrem, 대상 컴퓨터에서 PowerShell 원격이 구성된 경우.--rdp, 대상 컴퓨터에서 RDP가 활성화된 경우.--wmi.--ssh, 대상 컴퓨터가 Linux를 사용하는 경우.여러 방법을 동시에 사용할 수 있습니다. 예를 들어 PsExec와 RDP를 모두 사용하려면 다음 명령을 사용할 수 있습니다.
gargamel.exe -c 192.168.42.47 -u Jano --psexec --rdp -o testResults
--psexec --rdp --psrem --wmi를 모두 지정하는 것과 동일한 특수 스위치 --all도 있습니다.
참고: 실행 매개변수는 순서에 구애받지 않습니다. 즉, 매개변수를 어떤 순서로 지정해도 상관없습니다.
메모리 덤프도 수집하려면 프로그램 매개변수에 -m 플래그를 추가하면 됩니다. 예:
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m
다른 증거 없이 메모리 덤프만 수집하려면 다음 명령을 사용하세요.
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m --no-events-search --no-evidence-search --no-registry-search
이 기능은 Windows 대상에만 사용할 수 있습니다.
Gargamel은 원격 컴퓨터에서 사용자 정의 Windows CMD 또는 Linux 셸 명령을 실행할 수 있습니다.
먼저 다음 내용으로 custom-commands.txt 파일을 만듭니다.
# 이 방법은 모든 방법으로 실행됩니다.
ipconfig
# --all, --psexec, --wmi 방법 중 하나 이상으로 실행할 때만 실행됩니다.
:psexec:wmi ipconfig -all
위 명령의 결과는 -o 옵션으로 지정된 디렉터리에 저장됩니다.
custom-commands.txt에 작성된 위 명령을 실행하려면 -e 스위치를 사용하세요. 예:
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -e custom-commands.txt
Gargamel은 원격 파일을 다운로드할 수 있습니다.
먼저 다음 내용으로 custom-files.txt 파일을 만듭니다.
C:\Users\Public\sss*
C:\Users\Jano\danove.pdf
# 이 줄과 다음 줄은 무시됩니다.
# C:\Users\Jano\somBajecny.pptx
위 명령의 결과는 -o 옵션으로 지정된 디렉터리에 저장됩니다.
custom-files.txt에 작성된 위 명령을 실행하려면 -s 스위치를 사용하세요. 예:
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -s custom-files.txt
지원되는 모든 스위치는 아래에 설명되어 있습니다.
사용법:
gargamel.exe [FLAGS] [OPTIONS] --user <user>
FLAGS:
-a, --all 지원되는 모든 방법(PsExec, PsRemote,
WMI, RDP)을 사용하여 Windows 시스템에서 증거를 수집합니다.
--no-events-search Windows 이벤트 로그 수집을 비활성화합니다.
--no-evidence-search 일반적으로 빠르게 다운로드할 수 있는 증거(ipconfig,
방화벽 상태 등) 수집을 비활성화합니다.
--no-registry-search 대상 레지스트리 수집을 비활성화합니다.
-h, --help 도움말 정보를 출력합니다.
-m, --mem-image 선택 사항: 대상 Windows 시스템의 메모리 덤프입니다.
--local 로컬 시스템에서 증거를 수집합니다.
--nla 선택 사항: RDP 사용 시 네트워크 수준 인증을 사용합니다. (Windows 대상만 해당)
--no-7z 선택 사항: 레지스트리 및 메모리 이미지에 대한 7zip 압축을 비활성화합니다. 이렇게 하면
실행 시간이 크게 줄어들지만 WMI 및 RDP 연결이 제대로 작동하지 않을 수 있습니다.
(Windows 대상만 해당)
--psexec PsExec를 사용하여 Windows 시스템에서 증거를 수집합니다. 현재 디렉터리 또는 경로에
PsExec64.exe와 paexec.exe가 모두 필요합니다.
--psrem PowerShell을 사용하여 Windows 시스템에서 증거를 수집합니다. 현재 디렉터리 또는 경로에
PsExec64.exe와 paexec.exe가 모두 필요합니다.
--rdp RDP를 사용하여 Windows 시스템에서 증거를 수집합니다. 현재 디렉터리 또는 경로에
SharpRDP.exe가 필요합니다.
--ssh SSH를 사용하여 Linux 시스템에서 증거를 수집합니다. 현재 디렉터리 또는 경로에
plink.exe와 pscp.exe가 모두 필요합니다.
-V, --version 버전 정보를 출력합니다.
--wmi WMI를 사용하여 Windows 시스템에서 증거를 수집합니다. 현재 디렉터리 또는 경로에
WMImplant.ps1이 필요하고 호스트 시스템에 PowerShell 3.0+가 필요합니다. 참고: Windows
Defender 실시간 보호를 비활성화해야 합니다(다른 AV는 테스트되지 않음).
OPTIONS:
-c, --computer <computer> 원격 컴퓨터 주소/이름입니다. [기본값: 127.0.0.1]
-u, --user <user> 원격 사용자 이름입니다.
-d, --domain <domain> 선택 사항: 원격 Windows 도메인입니다.
-o, --output <local-store-directory>
증거를 저장할 로컬 디렉터리 이름입니다. [기본값: evidence-output]
-p, --password <password>
선택 사항: 원격 사용자 비밀번호입니다. 이 옵션을 생략하면 비밀번호를 숨겨서 입력할 수 있는 프롬프트가
표시됩니다. 빈 비밀번호를 지정하려면 `-p ""`를 사용하세요.
--redownload <re-download>
선택 사항: 대상 컴퓨터에서 지정된 파일을 다운로드하고 삭제합니다. 이전에 실패한 부분 완료 작업의 경우에
사용하세요. 파일을 다운로드만 하고 삭제하지 않으려면 `search` 스위치를 사용하세요. 7zip 청크(.7z.[청크
번호], 예: .7z.004)를 지정하면 후속 청크도 자동으로 다운로드하려고 시도합니다. --psexec --psrem,
--rdp, --wmi, --all과 함께 사용하세요.
-r, --remote-storage <remote-store-directory>
임시 저장소로 사용할 원격 디렉터리 이름입니다. (Windows 대상만 해당) [기본값:
C:\Users\Public]
-e, --commands <custom-command-path> 선택 사항: 원격 컴퓨터에서 실행할 사용자 정의 명령이 있는 파일입니다.
-s, --search <search-files-path>
선택 사항: 원격 컴퓨터에서 검색할 파일 이름이 있는 파일입니다. 파일 이름은 `*` 및 `?`
와일드카드를 지원합니다(상위 디렉터리는 아직 지원하지 않음).
--key <ssh-key> 선택 사항: SSH 개인 키 파일의 이름/경로입니다. (Linux 대상만 해당)
--timeout <timeout>
선택 사항: 장기 실행 작업에 대한 제한 시간(초)입니다. 이 옵션은 WMImplant.ps1 및 SharpRDP.exe의 버그에
대한 해결 방법으로, 장기 실행 작업 완료 시 연결을 제대로 종료하지 못해 Gargamel이 멈춘 것처럼 보이거나
대상 사이트에서 이전 작업이 완료되지 않은 상태에서 다음 작업을 실행하는 경우가 있습니다. 이 제한 시간을
늘리면 대상 시스템에서 레지스트리 또는 메모리 이미지를 수집할 때 문제가 해결될 수 있습니다. [기본값: 300]
_ 기호가 있는 파일에 출력을 쓸 수 없습니다.Copyright (C) 2020 LIFARS LLC
All Rights Reserved