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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
wasmforge — WasmForge — Go 및 C# 프로그램을 단일 바이너리, WASM 샌드박스 네이티브 실행 파일로 컴파일하며 다형성 출력을 지원합니다. | Kitploit
도구/GitHubGitHub/praetorian-inc/wasmforge
Penetration Testing FrameworksPrivilege EscalationExploit FrameworksPayload GenerationPersistence MechanismsLateral MovementWeb Application ExploitationPost-ExploitationCommand and ControlBinary AnalysisRed TeamingShellcode Generation
11912522개월 전Kitploit 검토 완료
GitHubpraetorian-inc/wasmforge

wasmforge

WasmForge — Go 및 C# 프로그램을 단일 바이너리, WASM 샌드박스 네이티브 실행 파일로 컴파일하며 다형성 출력을 지원합니다.

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

WasmForge

WasmForge는 Go와 C# 프로그램을 WebAssembly로 컴파일한 후, 단일 네이티브 바이너리로 패키징합니다. 결과 실행 파일은 게스트 코드를 WASM 런타임( wazero 의 빌드별 포크) 내부에 샌드박싱합니다. 샌드박스 내부에서 게스트는 투명하게 네트워킹, raw 소켓, Win32 API, macOS 프레임워크 API에 액세스할 수 있습니다.

net.Dial, net.Listen, 또는 net/http를 사용하여 일반 Go 코드를 작성할 수 있습니다. 기존 .NET Framework C# 프로젝트를 마이그레이션할 수도 있습니다. 어느 쪽이든, 출력은 Windows 또는 macOS에서 실행되는 단일 바이너리이며, 사용자가 게스트 소스를 수정할 필요가 없습니다.

WasmForge Sliver 데모

그냥 사람과 대화하고 싶어요

이 프로젝트를 잠깐만 훑어봐도 LLM을 매우 많이 활용하여 개발되었다는 것을 알 수 있습니다. 문서의 상당 부분도 마찬가지지만, 이 섹션은 그렇지 않습니다. WasmForge를 실제로 사용하는 과정을 최대한 간단하게 만들기 위해 이 README를 최대한 간소화했습니다. 또한 LLM이 자신의 성과를 지나치게 미화하는 문서를 작성하지만, 한계점이 그렇게 명확하게 드러나지는 않습니다.

기대치를 적절히 설정하기 위해, Go의 다양한 기능과 함께 테스트되었지만 모든 Go 프로그램을 위한 완벽한 솔루션은 아닙니다. 아직 제대로 지원되지 않는 win32 API(콜백 썽크가 필요한 API 등)가 상당수 있습니다. 예를 들어 Sliver는 많은 명령어에서 작동하지만 완전한 1:1 기능 포팅은 아닙니다. 예를 들어 ls 명령어는 여전히 전통적인 C:\ 경로 대신 /를 포함한 경로를 표시하는데, 이는 WASM 블롭이 Windows 내에 있다는 것을 완전히 인식하지 못하기 때문입니다. 다른 기능은 그냥 충돌을 일으킬 수도 있습니다. 작동하지 않는 것이 있다면, 문제가 되는 가장 기본적인 API 예제를 작성하여 이슈를 열거나 PR을 제출해 주세요.

실제 타겟에서 사용하기 전에 사용하려는 기능을 반드시 테스트하세요.

C# 쪽은 궁극적으로 구현보다는 개념 증명에 가깝습니다. C#을 WASM으로 컴파일하는 데 사용되는 프로세스는 너무 실험적이어서 WasmForge가 실행을 위해 프로그램의 상당 부분을 다시 작성해야 하는 경우가 많습니다. 결국 이 기능에 너무 깊이 빠져든 것 같고, 그냥 사람들에게 LLM을 사용하여 C# 코드를 Go 코드로 다시 작성하도록 권장했어야 했을 수도 있습니다. 아마도 처리하기에 덜 고통스러울 것입니다. 그렇긴 하지만, C# -> Wasm -> WasmForge 의 일반적인 패턴은 작동하며 많은 C# 특화 탐지를 우회합니다.

이 점에서 WasmForge는 주로 정적 탐지를 처리하기 위해 설계되었습니다. 변환 과정은 인-메모리 스캐닝에서도 대부분의 탐지를 우회하지만, 궁극적으로 바이너리에 mimikatz나 sliver와 같은 매우 명백한 문자열이 포함되어 있으면 몇 가지 저비용 인-메모리 스캔에 탐지될 수 있습니다. 자동 문자열 난독화는 자동화하기 쉬운 기능이므로 향후 추가될 예정이지만, 첫 번째 버전에서는 디버깅을 상대적으로 간단하게 유지하기 위해 빌드 파이프라인에 추가 복잡성을 추가하고 싶지 않았습니다.

이 저장소의 소스 코드를 정리/통합하려는 노력이 있었지만 여전히 상당히 체계적이지 않습니다. 다양한 테스트 프로세스를 위한 여러 폴더가 있습니다. 기본 단위 테스트는 일반적으로 examples/와 test/에 있고, 전체 실험실 환경에서 실행하도록 설계된 더 복잡한 테스트는 testdata/에 있습니다. 또한 scripts/ 및 internal/devtools 폴더에는 개발/테스트 전용 도구가 있습니다. 이는 자신만의 테스트 환경을 구축하여 추가 개발을 하려는 경우에만 필요합니다. 일반적으로 이렇게 복잡한 것을 LLM으로 개발하려면 생성 과정을 안내할 매우 명확한 테스트 케이스가 많이 필요합니다. 그렇지 않으면 전혀 작동하지 않는 결과물이 나옵니다. 이 프로젝트에는 이러한 하네스가 포함되어 있어 관심 있는 사람이라면 누구나 도구 개발을 더 진행하거나 프로젝트에 기여할 수 있습니다.

커뮤니티에서 이 도구를 비교적 쉽게 사용할 수 있기를 바라며, 시간이 지남에 따라 계속 개선해 나갈 것입니다. 언젠가는 C# 컴파일이 Go 컴파일만큼 잘 작동하는 날이 올지도 모르겠습니다.

빠른 시작 (Go 프로젝트)

wasmforge를 얻는 세 가지 방법이 있습니다:

  1. 사전 빌드된 바이너리. 릴리스 페이지 에서 릴리스를 받으세요 — Linux, macOS, Windows용 CLI 빌드가 각 태그에 첨부되어 있습니다.

  2. 도커 이미지. C# / .NET 프로젝트의 경우, 번들된 이미지에는 모든 필수 구성 요소(.NET 10 SDK, NativeAOT-LLVM 워크로드, WASI SDK 24.0, wasm-ld, osslsigncode)가 사전 설치되어 있습니다. make docker-build로 한 번 빌드하고 make docker-run으로 구동하세요 — 전체 워크플로는 docs/CSHARP.md를 참조하세요. C#의 경우 권장되는 방법입니다.

  3. 소스에서 빌드.

    root@kitploit:~
    make build
    

    make build는 임베디드 internal/build/build_assets.tar.gz를 재생성한 다음 CLI를 컴파일합니다. go build -o wasmforge ./cmd/wasmforge만 실행하면 작동하는 바이너리를 얻을 수 있지만, 배포 모드 빌드(CLI가 이 소스 트리 외부에서 실행될 때)는 오래된 임베디드 아카이브를 사용합니다. 자세한 설명은 CONTRIBUTING.md를 참조하세요.

examples/ 디렉토리에는 바로 빌드할 수 있는 실행 가능한 Go 프로그램이 있습니다. 전체 목록은 examples/README.md를 참조하세요.

Windows 타겟팅

root@kitploit:~
GOOS=windows GOARCH=amd64 ./wasmforge build \
  --ghost traefik \
  -o myapp.exe \
  /path/to/your/project

Win32 API 브리지는 GOOS=windows일 때마다 자동으로 활성화됩니다 — 일반적인 경우 더 이상 --win32-apis를 전달할 필요가 없습니다.

--ghost traefik은 임베디드 gopclntab 심볼 분포를 Traefik 리버스 프록시처럼 보이게 교체합니다. 번들된 프로필 중에서 이 프로필은 가장 낮은 VirusTotal 탐지율을 생성합니다. 다른 프로필과 자신만의 프로필을 생성하는 방법은 docs/GHOST-PROFILES.md에 있습니다.

Windows 타겟은 기본적으로 자체 서명 인증서로 자동 서명됩니다. --sign google.com을 사용하여 도메인의 TLS 인증서를 스푸핑하거나, --no-sign을 사용하여 서명을 완전히 비활성화합니다.

macOS 타겟팅

root@kitploit:~
# Intel
GOOS=darwin GOARCH=amd64 ./wasmforge build -o myapp /path/to/your/project

# Apple Silicon
GOOS=darwin GOARCH=arm64 ./wasmforge build -o myapp /path/to/your/project

추가 플래그가 필요하지 않습니다. macOS 프레임워크 브리지는 GOOS=darwin일 때마다 자동으로 활성화됩니다. 프레임워크 브리지, purego/ObjC 지원 및 기타 Apple 관련 참고 사항은 docs/MACOS.md를 참조하세요.

선택적 플래그

root@kitploit:~
# Raw 소켓 지원 (빌드 시 CAP_NET_RAW 또는 루트 필요)
./wasmforge build --raw-sockets -o myapp ./path/to/project

# 자세한 출력 (처음 빌드 시 유용)
GOOS=windows GOARCH=amd64 ./wasmforge build --ghost traefik --win32-apis -v -o tool.exe /path/to/project

# 사용자 정의 PE VERSIONINFO (Windows 전용)
./wasmforge build --pe-company "Acme Corp" --pe-product "AcmeTool" --pe-file-version "10.0.19041.1" ...

C# / .NET 프로젝트 컴파일

C# 프로젝트(.csproj 파일)는 자동으로 감지됩니다. WasmForge는 NativeAOT-WASI 마이그레이션, 패치 및 빌드 파이프라인을 하나의 명령으로 실행합니다:

root@kitploit:~
GOOS=windows GOARCH=amd64 ./wasmforge build --win32-apis -o seatbelt.exe path/to/Seatbelt/Seatbelt/

C# 작업의 경우 Docker 빌드 환경을 강력히 권장합니다. 모든 필수 구성 요소(.NET 10 SDK, NativeAOT-LLVM 워크로드, WASI SDK 24.0, wasm-ld)를 번들로 제공하므로 호스트에 설치할 필요가 없습니다. 전체 지침은 docs/CSHARP.md에 있습니다.

CLI 요약

root@kitploit:~
wasmforge build [package]      Go (또는 C#) 패키지를 WASM 샌드박스 네이티브 바이너리로 컴파일
  -o, --output <path>          출력 바이너리 경로
  --ghost <name>               고스트 프로필: traefik, caddy, terraform (docs/GHOST-PROFILES.md 참조)
  --raw-sockets                Raw 소켓 지원 활성화
  --win32-apis                 Win32 API 브리지 활성화 (Windows 타겟)
  --sign <mode>                바이너리 서명: 'self' 또는 도메인 이름 (Windows 기본값: self)
  --no-sign                    Windows 타겟의 기본 자동 서명 비활성화
  --tags <tags>                Go 빌드 태그 (쉼표로 구분)
  --pe-company / --pe-product / --pe-description / --pe-copyright / --pe-file-version
                               PE VERSIONINFO 재정의
  -v, --verbose                자세한 빌드 출력

wasmforge run [package]        빌드 후 즉시 실행
wasmforge clean                캐시된 패치된 GOROOT 제거 (~/.wasmforge/cache/)
wasmforge version              버전 출력

wasmforge dotnet-migrate <dir> .NET Framework 프로젝트를 .NET 10 NativeAOT-WASI로 마이그레이션
wasmforge dotnet-patch <dir>   NativeAOT-WASI C# 소스 패치 적용

기능

WasmForge는 WASM과 기본 호스트 간의 격차를 해소하여 게스트 프로그램이 수정 없이도 작동할 수 있게 합니다.

플랫폼 API. TCP, UDP, DNS, HTTP, TLS 및 raw 소켓은 Windows와 macOS 모두에서 게스트 코드 변경 없이 작동합니다. Windows에서 WasmForge는 전체 Win32 표면(레지스트리, 파일 I/O, 프로세스, DLL 로딩, 최대 15개 인수의 SyscallN)을 프록시합니다. 포인터 변환은 자동입니다. COM vtable 체인이 미러링되어 CLR 및 기타 COM 중심 API가 처음부터 끝까지 작동합니다. macOS에서 dlopen 및 dlsym은 모든 프레임워크(Security, CoreGraphics, IOKit 등)에 도달할 수 있으며, ebitengine/purego 및 Objective-C 런타임이 즉시 작동합니다.

.NET 호스팅 및 마이그레이션. CLR은 표준 체인(CoInitializeEx, CLRCreateInstance, Load_3, Invoke_3)을 통해 로드됩니다. AMSI는 시작 시 패치되어 Assembly.Load(byte[])가 알려진 도구를 차단하지 않습니다. 별도의 NativeAOT-WASI 파이프라인은 기존 .NET Framework 프로젝트를 가져와 타겟에 .NET 런타임 없이 단일 Windows PE 바이너리를 생성합니다.

호스트 메모리 및 셸코드. VirtualAlloc 기반 호스트 메모리 프록시는 게스트 내부에서 접근 가능합니다. 따라서 WASM 샌드박스를 벗어나지 않고도 COFF/BOF 로더 및 셸코드 실행이 가능합니다.

협력적 양보. 블로킹 Win32 API(Sleep, WaitForSingleObject, ReadFile 등)는 WASM 고루틴을 중단시키지 않습니다. 호스트는 백그라운드 고루틴에서 호출을 디스패치하고 결과가 준비될 때까지 게스트에게 양보 신호를 보냅니다.

다형성 출력. 모든 빌드는 구조적으로 고유한 바이너리를 생성합니다. WASM opcode가 순열되고, 섹션 ID와 매직 바이트가 무작위화되며, 모든 식별자, PE 임포트, VERSIONINFO 문자열, 라이선스 블록 및 소스 파일 이름이 삭제됩니다. 번들된 wazero 포크는 순열된 바이트코드와 일치하도록 다시 작성됩니다. 고스트 프로파일링은 gopclntab 심볼을 실제 엔터프라이즈 Go 바이너리(Traefik, Caddy, Terraform)와 일치하도록 다시 작성합니다. Windows 출력은 기본적으로 Authenticode 서명되며, 자체 서명되거나 osslsigncode를 통해 실제 도메인의 TLS 인증서를 스푸핑합니다.

아키텍처

root@kitploit:~
+-------------------- WASM 게스트 (wasip1) --------------------+
|                                                             |
|  사용자의 Go 프로그램 (net, net/http, os; 투명하게 작동)      |
|                                                             |
+----------- go:wasmimport ABI (사용자 정의 opcode) -----------+
                        |
+----------- 호스트 런타임 (빌드별 wazero 포크) ----------------+
|                                                             |
|  90개 이상의 호스트 함수 (네트워킹, OS 프록시, 플랫폼 API)     |
|  Windows: 포인터 변환, 섀도우 메모리, COM 미러링             |
|  macOS: dlopen/dlsym 프레임워크 브리지, ABI 트램폴린         |
|                                                             |
+----------- wazero (사용자 정의 VM: 순열된 opcode/매직) ------+
                        |
         OS 커널 / Windows API / macOS 프레임워크

빌드 파이프라인은 6단계로 실행됩니다.

  1. 패치된 GOROOT 준비. Go의 표준 라이브러리를 심볼릭 링크하고 WASM 네트워킹을 위해 syscall/ 및 net/을 패치합니다. ~/.wasmforge/cache/에 캐시됩니다.
  2. Go를 WASM으로 컴파일. 패치된 표준 라이브러리를 사용하여 GOOS=wasip1 GOARCH=wasm으로 빌드합니다. 자동 스터브가 플랫폼별 격차를 메웁니다. golang.org/x/sys 및 ebitengine/purego에 대한 Sysshim은 해당 임포트가 존재할 때 주입됩니다.
  3. WASM 재매핑. 빌드별 opcode 순열, 섹션 ID 순열, 사용자 정의 매직 바이트 및 전체 페이로드 바이트 치환.
  4. 호스트 바이너리 생성. 무작위화된 식별자, 일치하는 빌드별 wazero 포크, 베이크된 PE 리소스 및 -trimpath가 포함된 다형성 main.go.
  5. PE 후처리 (Windows 전용). 임포트 보강, PE 체크섬 및 명명된 PE 섹션으로 페이로드 주입.
  6. 코드 서명 (선택 사항). osslsigncode를 통한 Authenticode 서명.

실제 검증

WasmForge는 복잡한 플랫폼별 코드가 포함된 경우를 포함하여 수정되지 않은 타사 Go 프로젝트를 컴파일하고 실행합니다.

프로그램플랫폼설명검증 내용
SliverWindowsC2 프레임워크, 대량의 Win32 사용HTTPS 비콘, whoami, ps, netstat, execute-assembly (Rubeus, Seatbelt)
SlivermacOSC2 프레임워크 (비콘 + 세션)pwd, ls, download, execute, SOCKS5 프록시
go-clrWindows.NET CLR 호스팅 + 어셈블리 실행CLR 로드 체인, Rubeus 트라이지, Seatbelt 시스템 스캔
ChiselWindowsHTTP를 통한 TCP/UDP 터널 + SOCKS5터널 연결, 프록시 포워딩
Ligolo-ngWindows고급 터널링 및 피벗TUN 인터페이스, 에이전트 연결
goffloaderWindowsunsafe.Pointer를 사용한 COFF/BOF 로더VirtualAlloc, 셸코드 실행, PE 파싱, IAT 해석

.NET NativeAOT-WASI 프로그램:

프로그램플랫폼설명검증 내용
SeatbeltWindows보안 열거대부분의 명령 통과; WMI / Defender 콜백 디스패치가 필요한 일부 명령은 브리지 지원을 기다리며 정직하게 스터브 처리됨.
RubeusWindowsKerberos 도구해시 + 토큰 작업이 직접 작동; 네트워크 동사(asktgt, kerberoast, asreproast)는 TCP 브리지를 통해 전달; LSA 쿼리(klist, logonsession)는 네이티브 기준과 일치.

단계별 Sliver 워크스루는 docs/BUILDING-SLIVER.md를, C# 파이프라인은 docs/CSHARP.md를 참조하세요.

요구 사항

WasmForge는 Linux, macOS 또는 Windows 빌드 호스트에서 실행됩니다. Go 1.25 이상이 필요합니다.

일부 기능은 추가 설정이 필요합니다. Raw 소켓은 CAP_NET_RAW 또는 루트가 필요합니다. Win32 브리지에는 --win32-apis가 포함된 Windows 타겟이 필요합니다(다른 타겟은 ENOSYS 반환). macOS 프레임워크 브리지에는 macOS 타겟이 필요하며 GOOS=darwin에서 자동 감지됩니다. 코드 서명에는 PATH에 osslsigncode가 필요합니다. C# 프로젝트에는 .NET 10 SDK, NativeAOT-LLVM 워크로드 및 WASI SDK 24.0이 필요합니다. 또는 번들된 Docker 이미지(docs/CSHARP.md 참조)가 모든 것을 사전 설치하여 제공합니다.

패리티 테스트 하네스(test/parity/) 및 scripts/lab-setup/의 랩 설치 스크립트는 추가로 Ludus 에서 실행 중인 Active Directory 범위와 GOAD (Game of Active Directory) 를 가정합니다. 모든 하드코딩된 sevenkingdoms.local / kingslanding / SEVENKINGDOMS-CA 기본값은 GOAD 기본값이며, WASMFORGE_PARITY_* 환경 변수(test/parity/internal/lab/lab.go 참조)를 통해 재정의할 수 있습니다. 전체 랩 설정은 docs/internals/PARITY-HARNESS.md 및 docs/internals/LAB-STABILITY.md를 참조하세요.

문서

여기서 시작

주제문서
실행 가능한 예제 (TCP 스캐너, HTTP 서버, ICMP 핑)examples/README.md
Sliver 엔드-투-엔드 빌드 (Windows + macOS)docs/BUILDING-SLIVER.md
C# / .NET 프로젝트 컴파일 (Docker 워크플로)docs/CSHARP.md
macOS 타겟 및 프레임워크 브리지docs/MACOS.md
고스트 프로필 사용 및 사용자 정의 프로필 빌드docs/GHOST-PROFILES.md
빌드 타임 환경 변수 (R80 레시피, 모든 WASMFORGE_* 노브)docs/ENVIRONMENT.md

더 깊이 들어가기

주제문서
아키텍처 — 호스트 모듈, 빌드 파이프라인, 설계 결정docs/ARCHITECTURE.md
기여 — 저장소 구조, 전제 조건, 호스트 함수 추가CONTRIBUTING.md
보안 정책 + 공개SECURITY.md
행동 강령CODE_OF_CONDUCT.md

관리자 참조

주제문서
호스트 API 계약 — 등록된 익스포트, 시그니처 안정성docs/internals/HOST-API-CONTRACT.md
AST 패처 내부 — 문자열 대체 규칙 및 디스패치docs/internals/AST-PATCHER.md
패리티 하네스 — C# 네이티브 대 WASM 차이 실행docs/internals/PARITY-HARNESS.md
랩 안정성 — Ludus + GOAD 범위 설정, 감시 스크립트docs/internals/LAB-STABILITY.md

라이선스

Apache License, Version 2.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 및 NOTICE를 참조하세요.

Copyright (c) 2025-2026 Praetorian Security, Inc.

도구 다운로드