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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ScareCrow — ScareCrow - EDR 우회를 중심으로 설계된 페이로드 생성 프레임워크 | Kitploit
도구/GitHubGitHub/optiv/scarecrow
Exploit FrameworksPayload GenerationShellcodePenetration TestingRed TeamingPayload DevelopmentArchived
GitHuboptiv/scarecrow

ScareCrow

ScareCrow - EDR 우회를 중심으로 설계된 페이로드 생성 프레임워크

저장소 보기
2.9k5293년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

이 저장소는 보관되었습니다

ScareCrow의 최신 버전을 확인하거나 이슈를 제출하려면 https://github.com/Tylous/ScareCrow를 참조하십시오.



ScareCrow

추가 정보

이 프레임워크에서 사용된 기술에 대해 더 자세히 알고 싶다면 Part 1 및 Part 2를 참조하십시오.

설명

ScareCrow는 합법적인 Windows 프로세스에 사이드 로딩(주입이 아닌)을 위한 페이로드 생성 프레임워크입니다(애플리케이션 허용 목록 제어 우회). DLL 로더가 메모리에 로드되면, 프로세스 메모리에서 실행 중인 시스템 DLL에서 EDR의 후크를 제거하는 기술을 활용합니다. 이는 EDR의 후크가 프로세스가 생성될 때 배치된다는 사실을 이용하기 때문에 작동합니다.

ScareCrow는 이러한 DLL을 대상으로 하여 API 함수 VirtualProtect를 사용하여 메모리 내에서 조작할 수 있습니다. VirtualProtect는 프로세스 메모리의 특정 섹션 권한을 다른 값, 특히 Execute–Read에서 Read-Write-Execute로 변경합니다.

ScareCrow는 후크 해제를 위해 2가지 방법 중 하나를 사용합니다.

Disk

실행되면 ScareCrow는 C:\Windows\System32\에 디스크에 저장된 시스템 DLL의 바이트를 복사합니다. 이러한 DLL은 프로세스가 생성될 때 변경되지 않은 복사본을 새 프로세스에 로드하는 데 사용되기 때문에 디스크에 EDR 후크가 없는 상태로 저장됩니다. EDR은 메모리 내에서만 이러한 프로세스를 후킹하므로 디스크의 DLL은 변경되지 않습니다. ScareCrow는 전체 DLL 파일을 복사하지 않고 DLL의 .text 섹션에만 집중합니다. DLL의 이 섹션에는 실행 가능한 어셈블리가 포함되어 있으며, 이렇게 함으로써 ScareCrow는 전체 파일을 다시 읽으면 EDR이 시스템 리소스의 수정을 감지할 수 있기 때문에 탐지 가능성을 줄이는 데 도움이 됩니다. 그런 다음 각 함수의 오프셋을 사용하여 데이터를 올바른 메모리 영역에 복사합니다. 각 함수에는 함수가 위치한 기본 주소로부터의 정확한 바이트 수를 나타내는 오프셋이 있으며, 이를 통해 스택에서 함수의 위치를 제공합니다.

이를 위해 ScareCrow는 VirtualProtect를 사용하여 .text 메모리 영역의 권한을 변경합니다. 이는 시스템 DLL이지만 제어하는 프로세스에 로드되었으므로 상승된 권한 없이도 메모리 권한을 변경할 수 있습니다.

간접 시스템 호출(Indirect Syscalls)

ScareCrow는 먼저 세 가지 암호화 방법(아래 설명) 중 하나로 암호화된 셸코드를 복호화한 후 메모리에 로드합니다. 복호화되어 로드되면 셸코드가 실행됩니다. 지정된 로더 옵션에 따라 ScareCrow는 DLL에 대해 다른 내보내기 함수를 설정합니다. 로드된 DLL에는 일반적으로 모든 DLL이 작동하는 데 필요한 표준 DLLMain 함수도 포함되어 있지 않습니다. DLL은 여전히 문제없이 실행됩니다. 로드되는 프로세스가 해당 내보내기 함수를 찾고 DLLMain의 존재 여부는 신경 쓰지 않기 때문입니다.

바이너리 샘플

이후

KnownDLLs

KnownDLLs는 Windows가 시스템 시작 프로세스 중에 로드하는 DLL 목록입니다. 이러한 DLL은 운영 체제 기능에 필수적인 것으로 간주되므로 애플리케이션 시작 시 로드 시간을 줄이고 성능을 향상시키기 위해 캐시됩니다. KnownDLLs에는 kernel32.dll, kernelbase.dll 및 ntdll.dll과 같은 DLL이 포함됩니다.

이러한 KnownDlls를 활용하여 ScareCrow는 NtOpenSection과 NtMapViewOfSection의 조합을 사용하여 \KnownDlls\<dllname>에서 DLL의 복사본을 매핑하여 프로세스 메모리에 로드합니다. ScareCrow는 전체 DLL을 로드하지 않고 DLL의 .text 섹션만 로드합니다(이 섹션에는 모든 시스템 호출이 포함되어 있음). 그런 다음 ScareCrow는 간접 시스템 호출을 사용하여 NtProtectVirtualMemory를 호출하고 DLL의 .text 메모리 섹션 권한을 변경하여 ScareCrow가 EDR의 후크를 덮어쓴 후 권한을 복원할 수 있도록 합니다.

자세한 내용은 modexp의 상세 article를 읽을 수 있습니다.

후크가 제거되면 ScareCrow는 사용자 지정 시스템 호출을 사용하여 셸코드를 메모리에 로드하고 실행합니다. ScareCrow는 EDR 후크가 제거된 후에도 이 작업을 수행하여 Event Tracing for Windows (ETW) 또는 기타 이벤트 로깅 메커니즘과 같은 사용자 영역이 아닌 후크 기반 텔레메트리 수집 도구에 의한 탐지를 피하는 데 도움을 줍니다. 이러한 사용자 지정 시스템 호출은 위에서 설명한 EDR이 배치한 후크를 제거하기 위한 VirtualProtect 호출을 수행하는 데에도 사용되며, EDR의 변조 방지 제어에 의한 탐지를 피합니다. 이는 VirtualProtect 시스템 호출의 사용자 지정 버전인 NtProtectVirtualMemory를 호출하여 수행됩니다. ScareCrow는 Golang을 사용하여 이러한 로더를 생성한 다음 어셈블리를 사용하여 이러한 사용자 지정 시스템 호출 함수를 생성합니다.

로더 생성 과정에서 ScareCrow는 비콘이 홈 콜백한 후 백그라운드에 혼합되기 위한 라이브러리를 사용합니다. 이 라이브러리는 두 가지 작업을 수행합니다:

  • 코드 서명 인증서로 서명된 파일은 일반적으로 덜 조사되므로 도전받지 않고 실행되기 더 쉽습니다. 신뢰할 수 있는 이름으로 서명된 파일은 다른 파일보다 의심을 덜 받기 때문입니다. 대부분의 맬웨어 방지 제품은 이러한 인증서를 검증하고 확인할 시간이 없습니다(지금은 일부 제품이 하지만 일반적으로 일반적인 공급업체 이름은 허용 목록에 포함됩니다). ScareCrow는 도구 limelighter의 go 패키지 버전을 사용하여 pfx12 파일을 생성함으로써 이러한 인증서를 만듭니다. 이 패키지는 사용자가 지정한 도메인 이름을 입력받아 해당 도메인에 대한 코드 서명 인증서를 생성합니다. 필요한 경우 valid 명령줄 옵션을 사용하여 자체 코드 서명 인증서가 있는 경우 사용할 수도 있습니다.

OpSec 고려 사항:

root@kitploit:~
  로더를 microsoft.com으로 서명할 때 WINDOWS DEFENDER ATP 제품에 대해 사용하면 인증서가 Microsoft에 속하므로 검증할 수 있기 때문에 효과적이지 않을 수 있습니다. Windows 제품에 대해 로더를 사용하는 경우 다른 도메인을 사용하십시오.
  • 로더의 속성 스푸핑: 이는 syso 파일을 사용하여 수행됩니다. syso 파일은 임베디드 리소스 파일의 한 형태로, 로더와 함께 컴파일되면 컴파일된 코드의 속성 부분을 수정합니다. syso 파일을 생성하기 전에 ScareCrow는 (로더 유형에 따라) 임의의 파일 이름을 생성하여 사용합니다. 선택되면 이 파일 이름은 해당 파일 이름에 대한 관련 속성에 매핑되어 올바른 값이 할당되도록 합니다.

파일 속성 샘플

이러한 파일과 go 코드를 사용하여 ScareCrow는 c-shared 라이브러리 옵션을 사용하여 DLL로 교차 컴파일합니다. DLL이 컴파일되면 깨진 base64 문자열로 난독화되어 파일에 임베드됩니다. 이를 통해 파일을 원격으로 가져오고, 액세스하고, 프로그래밍 방식으로 실행할 수 있습니다.

사용자 정의 속성 파일

ScareCrow에는 광범위한 파일 속성 목록이 있지만 사용자 정의(환경별) 속성 집합이 필요한 경우도 있습니다. 이를 수용하기 위해 ScareCrow는 속성이 포함된 JSON 파일 입력을 허용합니다. -configfile 명령줄 옵션을 사용하면 ScareCrow는 기존 속성 대신 이러한 속성과 파일 이름을 사용합니다. main.json 파일에는 JSON 구조가 올바르게 작동하기 위해 필요한 샘플 템플릿이 포함되어 있습니다. "InternalName"으로 사용하는 것이 파일 이름이 됩니다.

요구 사항

ScareCrow는 이제 로더를 컴파일하기 위해 golang 1.19.1 이상이 필요합니다. 이전 버전을 실행 중인 경우 버전 1.19.1 이상을 사용하십시오.

새 버전은 https://golang.org/dl/에서 확인하십시오.

설치

첫 번째 단계는 항상 그렇듯이 저장소를 클론하는 것입니다. ScareCrow를 컴파일하기 전에 종속성을 설치해야 합니다.

설치하려면 다음 명령어를 실행하십시오:``` go get github.com/fatih/color go get github.com/yeka/zip go get github.com/josephspurrier/goversioninfo go get github.com/Binject/debug/pe go get github.com/awgh/rawreader

root@kitploit:~
운영 체제에 다음 항목들이 설치되어 있는지 확인하세요:```
openssl
osslsigncode
mingw-w64

그런 다음 빌드하세요.``` go build ScareCrow.go

root@kitploit:~
또한, ScareCrow는 모든 로더를 난독화하기 위해 [Garble](https://github.com/burrowers/garble)을 사용합니다.

참고: 여러 종속성이 Windows에서 컴파일 시 제대로 작동하지 않습니다. 따라서 OSX 또는 Linux에서 로더를 컴파일하는 것이 좋습니다.

## 도움말```

./ScareCrow -h

  _________                           _________                       
 /   _____/ ____ _____ _______   ____ \_   ___ \_______  ______  _  __
 \_____  \_/ ___\\__  \\_  __ \_/ __ \/    \  \/\_  __ \/  _ \ \/ \/ /
 /        \  \___ / __ \|  | \/\  ___/\     \____|  | \(  <_> )     / 
/_______  /\___  >____  /__|    \___  >\______  /|__|   \____/ \/\_/  
        \/     \/     \/            \/        \/                      
                                                        (@Tyl0us)
        “Fear, you must understand is more than a mere obstacle. 
        Fear is a TEACHER. the first one you ever had.”

Usage of ./ScareCrow:
  -Evasion string
        Sets the type of EDR unhooking technique:
        [*] Disk - Retrives a clean version of the DLLs ".text" field from files stored on disk.
        [*] KnownDLL - Retrives a clean version of the DLLs ".text" field from the KnownDLLs directory in the object namespace.
        [*] None - The Loader that WILL NOT removing the EDR hooks in system DLLs and only use custom syscalls. (default "Disk")
  -Exec string
        Set the template to execute the shellcode:
        [*] RtlCopy - Using RtlCopy to move the shellcode into the allocated address in the current running process by making a Syscall.
        [*] ProcessInjection - Process Injection Mode.
        [*] NtQueueApcThreadEx - Executes the shellcode by creating an asynchronous procedure call (APC) to a target thread.
        [*] VirtualAlloc - Allocates shellcode into the process using custom syscalls in the current running process (default "RtlCopy")
  -I string
        Path to the raw 64-bit shellcode.
  -Loader string
        Sets the type of process that will sideload the malicious payload:
        [*] binary - Generates a binary based payload. (This type does not benefit from any sideloading)
        [*] control - Loads a hidden control applet - the process name would be rundll32 if -O is specified a JScript loader will be generated.
        [*] dll - Generates just a DLL file. Can be executed with commands such as rundll32 or regsvr32 with DllRegisterServer, DllGetClassObject as export functions.
        [*] excel - Loads into a hidden Excel process using a JScript loader.
        [*] msiexec - Loads into MSIexec process using a JScript loader.
        [*] wscript - Loads into WScript process using a JScript loader. (default "binary")
  -O string
        Name of output file (e.g. loader.js or loader.hta). If Loader is set to dll or binary this option is not required.
  -clone string
        Path to the file containing the certificate you want to clone
  -configfile string
        The path to a json based configuration file to generate custom file attributes. This will not use the default ones.
  -console
        Only for Binary Payloads - Generates verbose console information when the payload is executed. This will disable the hidden window feature.
  -delivery string
        Generates a one-liner command to download and execute the payload remotely:
        [*] bits - Generates a Bitsadmin one liner command to download, execute and remove the loader (Compatible with Binary, Control, Excel, and Wscript Loaders).
        [*] hta - Generates a blank hta file containing the loader along with an MSHTA command to execute the loader remotely in the background (Compatible with Control and Excel Loaders). 
        [*] macro - Generates an office macro that will download and execute the loader remotely (Compatible with Control, Excel, and Wscript Loaders).
  -domain string
        The domain name to use for creating a fake code signing cert. (e.g. www.acme.com) 
  -encryptionmode string
        Sets the type of encryption to encrypt the shellcode:
                [*] AES - Enables AES 256 encryption.
                [*] ELZMA - Enables ELZMA encryption.
                [*] RC4 - Enables RC4 encryption. (default "ELZMA")
  -export string
        For DLL Loaders Only - Specify an Export function for a loader to have.
  -injection string
        Enables Process Injection Mode and specify the path to the process to create/inject into (use \ for the path).
  -noamsi
        Disables the AMSI patching that prevents AMSI BufferScanner.
  -noetw
        Disables the ETW patching that prevents ETW events from being generated.
  -nosign
        Disables file signing, making -domain/-valid/-password parameters not required.
  -nosleep
        Disables the sleep delay before the loader unhooks and executes the shellcode.
  -obfu
        Enables Garbles Literal flag replaces golang libray strings with more complex variants, resolving to the same value at run-time. This creates a larger loader and times longer to compile
  -outpath string
        The path to put the final Payload/Loader once it's compiled.
  -password string
        The password for code signing cert. Required when -valid is used.
  -sandbox
        Enables sandbox evasion using IsDomainJoined calls.
  -url string
        URL associated with the Delivery option to retrieve the payload. (e.g. https://acme.com/)
  -valid string
        The path to a valid code signing cert. Used instead -domain if a valid code signing cert is desired.

로더

로더는 셸코드를 대상 시스템에 로드하는 데 사용되는 기술 유형을 결정합니다. 로더 옵션이 선택되지 않은 경우, ScareCrow는 rundll32, regsvr32 또는 DLL을 활용하는 다른 기술에서 사용할 수 있는 표준 DLL 파일을 컴파일합니다. ScareCrow는 세 가지 유형의 로더를 사용하여 셸코드를 메모리에 로드합니다:

  • Control Panel – 제어판 애플릿(예: 프로그램 및 기능, 자동 실행)을 생성합니다. 로더에 특정 DLL 내보내기 함수를 컴파일하고 .cpl 파일 확장자를 결합하면 제어판 프로세스(rundll32.exe)가 생성되고 로더가 메모리에 로드됩니다.
  • WScript – 매니페스트 파일과 등록 없는 COM 기술을 사용하여 DLL 로더를 자체 프로세스에 side-by-side로 로드(인젝션 아님)하는 WScript 프로세스를 생성합니다. 이렇게 하면 DLL이 메모리에 등록되지 않으며, 매니페스트 파일이 프로세스에 어떤 DLL을, 어디서, 어떤 버전으로 로드할지 지시합니다.
  • Excel – XLL 파일(Excel 기반 DLL 파일)을 생성합니다. 이 파일이 Excel에 로드되면 로더가 실행됩니다. 숨겨진 Excel 프로세스가 생성되어 XLL 파일이 강제 로드됩니다.
  • Msiexec – 숨겨진 MSIExec 프로세스를 생성하여 DLL을 메모리에 로드하고 셸코드를 실행합니다.

ScareCrow는 -Loader 명령줄 옵션을 사용하여 필요한 경우 바이너리 기반 페이로드를 생성할 수도 있습니다. 이러한 바이너리는 side-by-side 로딩 기술의 이점을 받지 못하지만 상황에 따라 셸코드를 실행하는 추가 기술 역할을 합니다.

콘솔

ScareCrow는 먼저 프로세스를 생성한 후 백그라운드로 이동시키는 기술을 사용합니다. 이는 두 가지 역할을 합니다. 첫째, 프로세스를 숨기는 데 도움이 되고, 둘째, EDR 제품에 탐지되지 않도록 합니다. 프로세스를 바로 백그라운드에서 생성하는 것은 매우 의심스럽고 악성 행위의 지표가 될 수 있습니다. ScareCrow는 프로세스가 생성되고 EDR의 후크가 로드된 후 GetConsoleWindow 및 ShowWindow Windows 함수를 호출한 다음 창 속성을 숨김으로 변경하여 이를 수행합니다. ScareCrow는 전통적인 -ldflags -H=windowsgui를 사용하는 대신 이러한 API를 사용합니다. 이는 대부분의 보안 제품에서 강력하게 시그니처링되어 손상 지표(IoC)로 분류되기 때문입니다.

-console 명령줄 옵션이 선택되면 ScareCrow는 프로세스를 백그라운드에 숨기지 않습니다. 대신 로더가 수행하는 작업을 표시하는 여러 디버그 메시지를 추가합니다.

실행 방법

ScareCrow는 셸코드를 실행하기 위해 다양한 템플릿을 사용합니다. 템플릿을 선택하려면 -Exec 명령줄 옵션을 사용하십시오. 템플릿은 다음과 같습니다:

  • RtlCopy
  • NtQueueApcThreadEx
  • VirtualAlloc
  • ProcessInjection

프로세스 인젝션

ScareCrow는 프로세스 인젝션 공격을 수행할 수 있습니다. 로더 프로세스나 인젝션된 프로세스 자체에서 후킹이나 탐지를 피하기 위해 ScareCrow는 먼저 평소와 같이 로더 프로세스를 언후킹하여 프로세스에 후크가 없는지 확인합니다. 완료되면 로더는 생성 명령에 지정된 프로세스를 생성합니다. 생성되면 로더는 프로세스에 대한 핸들을 생성하여 로드된 DLL 목록을 검색합니다. DLL을 찾으면 원격 프로세스에서 각 DLL의 기본 주소를 열거합니다. WriteProcessMemory 함수를 사용하여 로더는 디스크에 저장된 시스템 DLL의 바이트(EDR 후크가 없으므로 "깨끗함")를 메모리 권한을 먼저 변경할 필요 없이 작성합니다. ScareCrow는 WriteProcessMemory를 사용하는데, 이 함수에는 디버깅에서 주로 사용되는 기능이 포함되어 있어 메모리 섹션이 읽기 전용이더라도 WriteProcessMemory 호출의 모든 조건이 올바르면 일시적으로 권한을 읽기-쓰기로 변경하고 메모리 섹션을 업데이트한 후 원래 권한을 복원합니다. 이렇게 완료되면 로더는 생성된 프로세스에 셸코드를 문제없이 인젝션할 수 있습니다. 두 프로세스 모두 EDR 후크가 없기 때문입니다.

이 옵션은 모든 로더 옵션과 함께 사용할 수 있습니다. 프로세스 인젝션을 활성화하려면 인젝션할 프로세스의 전체 경로와 함께 -injection 명령줄 옵션을 사용하십시오. 인수를 경로로 입력할 때는 전체 경로를 ""로 묶거나 각 디렉터리 경로에 이중 \를 사용하는 것이 중요합니다.

AMSI 및 ETW 우회

ScareCrow는 AMSI(Antimalware Scan Interface) 및 ETW 함수를 패치하여 프로세스에서 이벤트가 생성되지 않도록 방지하는 기능을 포함합니다.

AMSI는 Windows 네이티브 API로, Windows Defender(또는 기타 맬웨어 방지 제품)가 Windows 운영 체제에 깊이 통합되어 메모리 기반 공격에 대한 향상된 보호를 제공할 수 있게 합니다. AMSI를 사용하면 보안 제품이 악성 지표를 더 잘 탐지하고 위협을 차단하는 데 도움이 됩니다. AMSI는 Windows에 네이티브이므로 제품이 AMSI를 "후킹"할 필요 없이 필요한 DLL을 로드하여 프로세스에 대한 향상된 통찰력을 얻습니다. 이 때문에 ScareCrow는 AMSI.dll DLL을 로드한 후 패치하여 스캔 인터페이스의 모든 결과가 정상으로 반환되도록 합니다. AMSI 패치는 모든 로더에서 기본값입니다. 로더에서 AMSI를 패치하지 않으려면 -noamsi 명령줄 옵션을 사용하여 비활성화하십시오.

ETW는 내장된 시스템 콜을 사용하여 이 원격 측정을 생성합니다. ETW도 Windows에 내장된 네이티브 기능이므로 보안 제품은 ETW 시스템 콜을 "후킹"하여 정보를 얻을 필요가 없습니다. 결과적으로 ETW를 방지하기 위해 ScareCrow는 여러 ETW 시스템 콜을 패치하여 레지스터를 플러시하고 실행 흐름을 다음 명령어로 반환합니다. ETW 패치는 이제 모든 로더에서 기본값입니다. 로더에서 ETW를 패치하지 않으려면 -noetw 명령줄 옵션을 사용하여 비활성화하십시오.

현재 이 옵션들은 부모 프로세스에만 적용됩니다. -injection 명령줄 옵션을 사용하면 주 프로세스는 AMSI와 ETW를 패치하지만 인젝션된 프로세스는

암호화

셸코드 암호화는 EDR 및 기타 보안 제품에 의해 탐지 및 분석되는 것을 보호하는 중요한 기술입니다. ScareCrow는 셸코드를 암호화하는 여러 방법을 제공하며, 여기에는 AES, ELZMA 및 RC4가 포함됩니다.

AES

AES(Advanced Encryption Standard)는 데이터 암호화에 널리 사용되는 대칭 암호화 알고리즘입니다. ScareCrow는 AES 256비트 크기를 사용하여 셸코드를 암호화합니다. AES를 사용하여 셸코드를 암호화하면 강력한 암호화를 제공하고 암호화 라이브러리에서 널리 지원된다는 장점이 있습니다. 그러나 고정 블록 크기를 사용하면 패딩 오라클 공격과 같은 특정 공격에 취약해질 수 있습니다.

ELZMA

ELZMA는 맬웨어에서 코드를 난독화하는 데 자주 사용되는 압축 및 암호화 알고리즘입니다. ELZMA를 사용하여 셸코드를 암호화하려면 먼저 셸코드를 ELZMA 알고리즘으로 압축합니다. 그런 다음 압축된 데이터를 임의의 키로 암호화합니다. 암호화된 데이터와 키는 익스플로잇 코드에 포함됩니다. ELZMA를 사용하여 셸코드를 암호화하면 단일 알고리즘으로 압축과 암호화를 모두 제공한다는 장점이 있습니다. 이는 익스플로잇 코드의 크기를 줄이고 탐지하기 더 어렵게 만드는 데 도움이 됩니다.

RC4

RC4는 맬웨어에서 셸코드를 암호화하는 데 자주 사용되는 대칭 암호화 알고리즘입니다. 가변 길이 키를 사용할 수 있는 스트림 암호로, 단순성과 속도로 유명합니다.

난독화

-obfu 명령줄 옵션을 사용하면 컴파일 과정 중 Garbles Literal 플래그가 활성화됩니다. 이는 모든 golang 라이브러리 참조와 문자열을 런타임에 동일한 값으로 확인되는 더 복잡한 버전으로 대체합니다. 이 과정은 완료하는 데 더 오랜 시간이 걸리며, 결과적으로 더 큰 GO 파일이 생성됩니다. 파일이 컴파일되면 ScareCrow는 새로 생성된 파일을 구문 분석하여 GO 문자열 기반 IoC를 제거합니다.

전달

전달 명령줄 인수를 사용하면 원격 소스에서 파일을 가져와 피해자 호스트로 가져오는 명령 또는 코드 문자열(매크로의 경우)을 생성할 수 있습니다. 이러한 전달 방법은 다음과 같습니다:

  • Bits – 로더를 원격으로 다운로드, 실행 및 제거하는 bitsadmin 명령을 생성합니다. 이 전달 명령은 바이너리, Control, Excel 및 Wscript 로더와 호환됩니다.
  • HTA – 로더가 포함된 빈 HTA 파일을 생성합니다. 이 옵션은 HTA를 원격으로 실행할 명령줄도 제공합니다. 이 전달 명령은 Control 및 Excel 로더와 호환됩니다.
  • Macro – Excel 또는 Word 매크로 문서에 넣을 수 있는 Office 매크로를 생성합니다. 이 매크로가 실행되면 로더가 원격 소스에서 다운로드되어 실행되고 제거됩니다. 이 전달 명령은 Control, Excel 및 Wscript 로더와 호환됩니다. (이 방법은 피해자 엔드포인트의 사용 가능한 리소스 속도에 따라 기본 타이머보다 더 오래 걸릴 수 있습니다.)

할 일

  • 일부 이전 버전의 Windows OS(예: Windows 7 또는 Windows 8.1)에서는 시스템 DLL을 다시 로드하는 데 문제가 있으므로 안정성을 보장하기 위해 버전 검사가 내장되어 있습니다.
  • 인젝션된 프로세스에서 ETW 및 AMSI 패치

크레딧

  • Josephspurrier의 저장소에 특별히 감사드립니다.
  • mvdan의 Garble 개발에 특별히 감사드립니다.
  • mvdan의 Binject 개발에 특별히 감사드립니다.
  • modexp의 상세한 글에 특별히 감사드립니다.
도구 다운로드