
.NET 직렬화 가젯(gadget)을 생성하는 도구로, JS/VBS/VBA 기반 스크립트에서 BinaryFormatter를 사용하여 역직렬화할 때 .NET 어셈블리 로드/실행을 트리거할 수 있습니다.
.NET 직렬화 가젯을 생성하는 도구로, JS/VBS/VBA 스크립트에서 BinaryFormatter를 사용하여 역직렬화할 때 .NET 어셈블리 로드/실행을 트리거할 수 있습니다.
현재 가젯은 jscript/vbscript/vba에서 BinaryFormatter를 사용하여 역직렬화할 때 Activator.CreateInstance() 호출을 트리거합니다. 즉, 기본/public 생성자를 통해 선택한 .NET 어셈블리의 실행을 트리거하는 데 사용할 수 있습니다.
이 도구는 주로 RT(레드팀) 임무(초기 접근, 측면 이동, 지속성)를 위한 WSH 스크립트 무기화를 자동화하기 위해 만들어졌습니다. PoC에 사용된 셸코드 로더는 제거되었으며 TestAssembly 프로젝트에 구현된 예제 어셈블리로 대체되었습니다.
Release 폴더에 있는 바이너리를 사용하거나 VS2017을 사용하여 프로젝트를 .NET 버전 3.5 또는 4.x로 대상 재지정한 후 G2JS를 소스에서 빌드할 수 있습니다.
.NET 3.5 버전의 G2JS를 사용하여:
.NET 4.x 버전의 G2JS를 사용하여:
C# 소스 코드 페이로드는 클래스의 기본 public 생성자 안에 배치해야 합니다. (jscript에서 Mimikatz를 실행하는 예: https://gist.github.com/med0x2e/cc10d42b1f581507013e801da2651c74)
테스트는 다양한 .NET Framework 버전이 설치된 최신 Windows 10 Enterprise 1909 릴리스와 Windows 7에서 수행되었습니다.
GadgetToJScript.exe를 사용하여 WSH 스크립트를 생성할 때 Windows Defender가 꺼져 있는지 확인하십시오. 스크립트가 생성된 후에는 다시 켤 수 있습니다.
.NET 4.8+ 유형 검사를 여전히 우회할 수 있는 WSH Registration-free JScript/HTA 스크립트를 생성하려면 .NET 3.5 버전의 G2JS를 사용하십시오. 첫 번째 TextFormattingRunProperties 스테이지 가젯을 사용하여 해당 완화 조치를 비활성화할 필요가 없습니다. .NET 4.8+ 환경을 대상으로 하는 Reg-free JScript/HTA 페이로드를 실행하기 위한 더 좋고/깔끔한 우회 방법으로 간주하십시오. 다음이 필요하지 않기 때문입니다:
Shell 개체 만들기COMPLUS_Version 환경 변수 설정.-> 더 적은 IOC + 3.5 < .NET < 4.x 환경을 대상으로 함
이 도구는 다음 사람들의 훌륭한 연구/작업을 기반으로 합니다:
GadgetToJScript는 공인된 레드 팀링(red teaming) 및/또는 비영리 교육 목적으로만 사용해야 합니다. 이 소프트웨어의 오용에 대한 책임은 작성자에게 없습니다. 본인 소유의 네트워크 및/또는 네트워크 소유자의 허가를 받은 상태에서 사용하십시오.
-w, --scriptType=js | js, vbs, vba 또는 hta로 설정합니다 |
-a, --assembly=TestAssembly.dll | .NET 어셈블리, 예: -a C:\Users\userX\Desktop\shellcode_loader.dll/exe, 또는 -c 명령줄 스위치를 사용하여 C# 소스 파일을 대신 지정할 수 있습니다. |
-c, --csfile=TestAssembly.cs | C# 소스 코드 파일, 예: -c C:\Users\userX\Desktop\shellcode_loader.cs, 클래스의 기본 생성자 안에 코드를 배치하고 -d 명령줄 스위치를 사용하여 필요한 종속성을 지정하십시오. |
-d, --references=Example.dll | 참조 어셈블리, 예: -d System.Window- s.Forms.dll, System.dll |
-b, --bypass | .NET 버전 4.8+에 도입된 유형 검사 제어를 우회합니다. 기본값은 false로 설정되어 있으며, WSH 스크립트가 .NET 버전 > 4.8+ 환경에서 실행되도록 생성되는 경우 true(--bypass/-b)로 설정하십시오. 이 옵션은 .NET 4.x G2JS 실행 파일에서만 사용해야 합니다. |
-e, --encodeType=b64 | VBA 가젯 인코딩: b64 또는 hex(기본값은 b64) |
-o, --output=output | 생성된 페이로드 출력 파일, 예: -o C:\Users\userX\Desktop\output (확장자 없음) |
-r, --regfree | .NET 기반 COM 구성 요소의 등록 없는(registration-free) 활성화, JS/HTA 스크립트에만 적용됩니다. |
-h, --help | 도움말 표시 |