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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
voidsyscall — 크로스 플랫폼 시스템 콜 기반 임플란트 & C2 — 직접 시스템 콜 (Win), 원시 시스템 콜 (Linux), HTTPS/DNS/ICMP 채널. winapi 계층 없음. | Kitploit
도구/GitHubGitHub/voidsecsoftwares/voidsyscall
Privilege EscalationEncryption/Decryption ToolsPersistence MechanismsIDS/IPS EvasionLateral MovementPost-ExploitationMalware AnalysisPenetration TestingCommand and ControlRed TeamingPayload DevelopmentRemote Access Trojan
18191일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubvoidsecsoftwares/voidsyscall

voidsyscall

크로스 플랫폼 시스템 콜 기반 임플란트 & C2 — 직접 시스템 콜 (Win), 원시 시스템 콜 (Linux), HTTPS/DNS/ICMP 채널. winapi 계층 없음.

저장소 보기

voidsyscall

go license platform c2 syscalls

WinAPI 제로. 모든 NT 프리미티브는 메모리 내 ntdll에서 런타임에 해석됨 — SYSCALL 명령어는 Plan9 어셈블리 스텁을 통해 직접 발행되며, 임포트 테이블도, ntdll 유저모드 훅도 건드리지 않음. HTTPS / DNS / ICMP를 통한 C2, 메시지당 AES-256-GCM. Windows 네이티브. Linux 빌드. macOS 빌드.

이것은 syscall 래퍼 라이브러리가 아니다. 코드 주입부터 파일 읽기, 레지스트리 지속성에 이르기까지 모든 작업이 부팅 시 현재 ntdll 익스포트 테이블에서 해석된 raw Nt* syscall을 통해 이루어지는 완전한 임플란트 프레임워크다. 바이너리에는 WinAPI 호출이 존재하지 않는다. EDR이 유저모드에서 훅할 대상이 없다.


내부 구성

Syscall 엔진

  • 런타임 SSN 해석: PEB → LDR → ntdll 베이스 → PE 익스포트 테이블 → djb2 해시 매칭 → 프롤로그 스캔으로 B8 xx xx 00 00 0F 05 (직접) 또는 4C 8B D1 B8 xx xx 00 00 0F 05 (Hells Gate) 탐지. 모든 함수 이름은 컴파일 타임에 해시됨 — 바이너리에 평문 문자열 없음.
  • 직접 syscall: Plan9 asm (asm_amd64.s)이 SSN을 EAX에 로드하고, 7개 인자를 수동으로 설정한 뒤 SYSCALL을 실행. RAX/RDX를 통해 반환.
  • 간접 syscall: ntdll 내부에서 0F 05 C3 가젯 (syscall;ret)을 찾아 이를 통해 호출. CPU 트랩이 ntdll 내부에서 발생 — 호출 스택에 임플란트 프레임이 아닌 ntdll 프레임이 표시됨. 어떤 유저모드 훅도 살아남지 못함.
  • SSN 핑거프린트: 현재 ntdll 빌드에서 해석된 모든 SSN을 덤프하고 핑거프린트 해시를 생성. 헥스로 내보내고 다른 머신에서 임포트. 빌드 불일치를 문제가 되기 전에 탐지.
  • 언훅: .text를 RWX로 잠그고, 디스크 매핑된 ntdll에서 원본 바이트를 복사하고, 보호를 복원하고, icache를 플러시하고, SSN 캐시를 제거. 어떤 EDR이 배치한 유저모드 훅이든 사라짐.

주입 — 4가지 방법, 다형성 로테이션

에이전트는 주입 기법을 자동으로 로테이션한다. 각 호출은 다른 방법을 사용 — 포렌식에서 두 주입이 동일하게 보이지 않음.

안티 분석 — 13개 이상의 탐지 방법

모든 검사를 실행하고 점수화된 위협 보고서를 반환. Critical 시 자동 파괴.

토큰 작업

모두 Nt* syscall을 통해, WinAPI 없음.

  • EnablePrivilege(index) — LUID로 모든 권한 설정
  • EnableAllTokenPrivileges() — 한 번에 20개 권한 (Debug, Impersonate, TCB, Backup, Restore 등)
  • GetProcessTokenIntegrityLevel() — 필수 무결성 조회
  • StealProcessToken(pid) — 다른 프로세스 토큰 열기 + 복제
  • ImpersonateThread() / RevertToSelf()

VAD 작업

  • EnumVirtualMemory() — NtQueryVirtualMemory로 모든 가상 영역 순회
  • FindWritableExecRegions() — PAGE_EXECUTE_READWRITE 커밋된 영역 찾기
  • HideRegion() — 스캐너로부터 메모리를 숨기기 위해 PAGE_NOACCESS 설정
  • UnhideRegion() — 원래 보호 복원

파일 I/O — 모두 Nt* syscall

NtCreateFile → NtReadFile / NtWriteFile → NtClose. CreateFileA, ReadFile, WriteFile, DeleteFileW 호출 제로. ReadFileContents(), WriteFileContents(), DeleteFileNt(), FileExists().

레지스트리 지속성 — 모두 Nt* syscall

NtCreateKey → NtSetValueKey. AddRunKeyPersistence(), RemoveRunKeyPersistence(). RegCreateKeyEx, RegSetValueEx 또는 어떤 Advapi32 호출도 없음.

핸들 작업

  • EnumerateSystemHandles() — NtQuerySystemInformation(SystemHandleInformation)을 통해 시스템의 모든 열린 핸들
  • FindEDRHandles() — 소유자 PID를 30개 이상의 알려진 EDR 프로세스 이름 (MsSense, CrowdStrike, Sentinel, Cylance, Carbon Black 등)과 매칭
  • CloseEDRHandles() — EDR이 프로세스에 배치한 모니터링 핸들 닫기
  • IsProcessMonitored() — 불리언 검사: 감시당하고 있는가?

메모리 암호화

  • Vault: 타이머에 따라 자동 재키잉되는 메모리 내 XOR 암호. 평문은 절대 raw로 저장되지 않음. 재키는 복호화 → 새 키 생성 → 재암호화. 재키 간격 사이의 포렌식 힙 덤프는 쓰레기 데이터를 얻음.
  • SecureDelete: NtFreeVirtualMemory 전 3단계 와이프 (랜덤 → 제로 → 원 → 제로).
  • StackEncrypt: 반환 전 스택 할당 버퍼 암호화. 스택 프레임 재사용으로 포렌식이 신뢰할 수 없게 됨.

AMSI / ETW / 회피 패치

  • PatchAMSI() — AmsiScanBuffer → MOV EAX, 0; RET
  • PatchETW() — EtwEventWrite → RET
  • PatchNtTraceEvent() — NtTraceEvent → RET
  • PatchDbgUiRemoteBreakin() — 스레드 브레이크인 → RET
  • PatchInstrumentationCallbacks() — ThreadHideFromDebugger

C2 채널

채널전송 형식전제 조건

모든 채널은 Channel 인터페이스를 구현. NTP, DoH, TURN 추가는 인터페이스 구현을 의미 — 에이전트 변경 제로.

암호화

메시지당 AES-256-GCM AEAD. 메시지당 고유 12바이트 nonce. 임플란트별 키링. 패스프레이즈 기반 키 유도 가능. 3개 테스트, 모두 통과.


레이아웃

root@kitploit:~
voidsyscall/
  syscallwin/          Direct/indirect NT syscalls + evasion
    asm_amd64.s        Syscall/IndirectSyscall/ReadGSBase/SetGSBase/asm_cpuid/asm_rdtsc
    resolve.go         PEB→LDR→ntdll walk, PE export parse, SSN cache, prologue scan
    stubs.go           ~25 Nt* wrappers, DirectSyscall, IndirectSyscallByHash
    hash.go            djb2 hash (string + UTF-16 pointer)
    constants.go       MEM_*, PAGE_*, THREAD_*, TOKEN_*, OBJ_*, REG_*, FILE_*, STATUS_*
    unhook.go          UnhookNtdll, SelfDel
    peb.go             PEB patching (BeingDebugged, NtGlobalFlag, Heap, DebugPort)
    token.go           Privilege escalation, token theft, impersonation
    vad.go             VAD enumeration, hide/unhide regions
    files.go           File I/O via Nt* syscalls
    registry.go        Registry persistence via Nt* syscalls
    fingerprint.go     SSN dump, build fingerprint, hex export/import
    inject_advanced.go 4 injection methods: section mapping, hollow, APC, module stomp
    antianalysis.go    VM/sandbox/debug/timing detection, scored threat report
    handles.go         System handle enumeration, EDR handle killer
    memcrypt.go        Vault (re-keying XOR), SecureDelete, StackEncrypt, WipeMemory
  syscallnix/          Linux/darwin raw syscalls
  patches/             AMSI, ETW, NtTraceEvent, DbgUiRemoteBreakin, InstrumentationCallbacks
  loader/              CreateThread/APC/module-stomp injection
  channels/            HTTP, DNS (TXT), ICMP — Channel interface
  crypto/              AES-256-GCM, envelope, passphrase variant (3 tests)
  server/              SessionManager, Task Queue, interactive REPL
  agent/               Config, beacon loop, 10 task handlers
  cmd/server/main.go   CLI with REPL
  cmd/agent/main.go    Windows-only entrypoint

빌드

root@kitploit:~
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o voidsyscall-agent.exe   ./cmd/agent
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o voidsyscall-server.exe  ./cmd/server
GOOS=linux   GOARCH=amd64 go build -ldflags="-s -w" -o server-linux            ./cmd/server
GOOS=darwin  GOARCH=arm64 go build -ldflags="-s -w" -o server-darwin           ./cmd/server

garble를 사용한 난독화:

root@kitploit:~
GOOS=windows GOARCH=amd64 garble -literals -tiny build -ldflags="-s -w" \
    -o voidsyscall-agent.exe ./cmd/agent

사용법

서버

root@kitploit:~
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
./voidsyscall-server.exe --cert cert.pem --key key.pem --https-port 443

에이전트

root@kitploit:~
./voidsyscall-agent.exe -c agent/example-config.json

작업 프로토콜


SSN 해석 내부

  1. ReadGSBase (asm) → GS:[0x60] → TEB
  2. TEB+0x60 → PEB. PEB+0x18 → Ldr
  3. InMemoryOrderModuleList 순회 → djb2 해시로 ntdll.dll 매칭
  4. 베이스 → IMAGE_DOS_HEADER → e_lfanew → IMAGE_NT_HEADERS → DataDirectory[0] = 익스포트 테이블
  5. AddressOfNames[] 순회, 각각 djb2, 대상 매칭
  6. 오디널 해석 → AddressOfFunctions[ordinal] → 함수 주소
  7. 프롤로그 스캔으로 B8 xx xx 00 00 0F 05 (직접), B8 xx xx 00 00 C3 (early-ret), 또는 4C 8B D1 B8 xx xx 00 00 0F 05 (Hells Gate) 탐지

바이너리에 함수 이름 없음. 오직 djb2 해시만. syscall 명령어는 모든 유저모드 훅을 우회한다.


에이전트 작업 핸들러

root@kitploit:~
TaskShell       // exec via cmd.exe
TaskInject      // polymorphic: section/hollow/APC/stomp
TaskPatch       // AMSI/ETW/both
TaskEvasion     // PEB patches + VM/sandbox/debug/timing detection
TaskHandles     // enumerate + kill EDR monitoring handles
TaskFingerprint // dump SSN build fingerprint
TaskToken       // privilege escalation + impersonation
TaskVault       // encrypted in-memory storage
TaskSleep       // jitter-aware sleep
TaskExit        // clean shutdown

상태

출시됨: 비콘 루프, 작업 큐, 3개 C2 채널, 4가지 주입 방법, 10개 이상의 회피 검사, 핸들 열거/닫기, 토큰 조작, VAD 작업, 파일 I/O, 레지스트리 지속성, SSN 핑거프린팅, 메모리 암호화, AMSI/ETW 패칭, AES-GCM 암호화, 세션 관리, 대화형 REPL. 3개 암호화 테스트 통과. Windows에서 go build 클린.

아직 미완: Linux 자율 에이전트 (빌드는 존재, 에이전트 로직 없음), 세션 키 로테이션, 스테이지드 로더, NTP/DoH 채널, 지속성 스케줄링.

감사의 글

  • carved4/go-native-syscall
  • Enelg52/OffensiveGo
  • am0nsec/HellsGate
  • f1zm0/acheron
  • Sliver C2

라이선스

MIT — LICENSE

도구 다운로드
방법작동 방식은닉성 이유
섹션 매핑NtCreateSection → NtMapViewOfSection (원격) → NtCreateThreadExVAD에 RWX 할당 없음. 섹션은 파일 기반. 메모리 스캐너는 PAGE_EXECUTE_READWRITE가 아닌 PAGE_EXECUTE_READ를 봄.
프로세스 할로우NtCreateUserProcess (일시 중단) → NtSuspendProcess → 이미지 베이스 제로화 → 셸코드 할당 + 쓰기 → NtSetContextThread (RIP = 셸코드) → NtResumeProcess프로세스가 작업 관리자에서 정상적인 svchost.exe로 표시됨. 메모리 내용만 다름.
APC 큐잉NtQuerySystemInformation으로 스레드 열거 → NtOpenThread → NtQueueApcThread새 스레드 생성 없음. 새 TEB 없음. 새 스택 할당 없음. 스레드가 경고 가능 대기 상태에 들어갈 때 발동.
모듈 스톰핑대상에 할당 → 최소 PE 헤더 + 셸코드 쓰기 → 진입점에서 NtCreateThreadEx모듈 목록에 그럴듯한 DLL 이름 표시. PE 헤더가 모듈 열거를 속일 만큼 유효함.
검사방법
VM 탐지CPUID leaf 0x40000000 하이퍼바이저 시그니처 스캔 (VMware, VirtualBox, Hyper-V, KVM, Xen, QEMU, Parallels) + leaf 0x40000001 폴백
샌드박스 탐지CPU 수, 레지스트리 아티팩트 (VMware Tools, VBox Guest Additions, VMware/VBox 서비스), 샌드박스 프로세스 스캔 (30개 이상의 알려진 이름: wireshark, procmon, x64dbg, ida 등)
디버거 탐지PEB.BeingDebugged, PEB.NtGlobalFlag, 힙 디버그 플래그, ProcessDebugPort, ProcessDebugObjectHandle, ProcessDebugFlags, 하드웨어 브레이크포인트 DR0-7, 타이밍 단일 스텝 검사
타이밍 이상RDTSC 기반: NtQuerySystemInformation 지연 50회 샘플링, 평균/표준편차, 샘플의 10% 이상이 3σ 분산을 초과하면 플래그. 계측 오버헤드 탐지.
PEB 회피BeingDebugged, NtGlobalFlag, ProcessHeap 플래그, DebugPort, ThreadHideFromDebugger 패치 — 모두 GS 세그먼트 읽기 + NtWriteVirtualMemory를 통해. API 호출 없음.
HTTPS바이너리 POST, 커스텀 프레이밍, 무작위 UA/경로TLS 인증서
DNS<idx>-<total>-<base32> 서브도메인, TXT 응답DNS 해석
ICMPv4에코 요청/응답 ID+seq에 페이로드raw 소켓 (root/Admin)
작업바이트페이로드
shell0x01UTF-8 명령
inject0x02PID (4바이트 LE) + 셸코드
patch0x030x01=AMSI, 0x02=ETW, 0x03=둘 다
sleep0x04초 (4바이트 LE)
evasion0x100x01=전체, 0x02=VM, 0x03=샌드박스, 0x04=디버그, 0x05=타이밍, 0x06=보고서
handles0x110x01=개수, 0x02=EDR 열거, 0x03=EDR 닫기, 0x04=모니터링?
vault0x12암호화된 저장소 작업
fingerprint0x13SSN 빌드 핑거프린트 덤프
token0x140x01=모두 활성화, 0x02=무결성, 0x03=디버그 권한, 0x04=임퍼소네이트
exit0xFF—
  • 2바이트 SSN 추출 → map[uint32]uint16 캐시에 저장