Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Formbook-Payload-Extraction-XOR-Decryption-Net-Assembly-Analysis — Formbook에 대한 리버스 엔지니어링 분석으로, .NET 어셈블리 조작과 XOR 복호화를 사용하는 정보 탈취 프로그램입니다. XOR 복호화 루프, CLR 초기화, SQLExpress 미끼, 키로거/클립보드 API를 포함하여 x32dbg를 통해 전체 페이로드를 추출했습니다. | Kitploit
도구/GitHubGitHub/kaandemir993/formbook-payload-extraction-xor-decryption-net-assembly-analysis
Static AnalysisDynamic Analysis (Sandboxing)Reverse EngineeringDebuggersInformation GatheringMalware AnalysisDigital ForensicsBinary AnalysisPapers & Research
GitHubkaandemir993/formbook-payload-extraction-xor-decryption-net-assembly-analysis

Formbook-Payload-Extraction-XOR-Decryption-Net-Assembly-Analysis

Formbook에 대한 리버스 엔지니어링 분석으로, .NET 어셈블리 조작과 XOR 복호화를 사용하는 정보 탈취 프로그램입니다. XOR 복호화 루프, CLR 초기화, SQLExpress 미끼, 키로거/클립보드 API를 포함하여 x32dbg를 통해 전체 페이로드를 추출했습니다.

저장소 보기
6122일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

1. x32dbg – 암호화된 구성 복호화 및 메모리 할당

x32dbg 메모리 덤프는 Formbook이 구성 데이터를 복호화하고 NtAllocateVirtualMemory를 사용하여 해당 데이터를 위한 메모리를 할당한다는 것을 보여줍니다.

주요 관찰 사항:

  • NtAllocateVirtualMemory – 복호화된 페이로드를 위한 메모리를 할당합니다.
  • mov edx, dword ptr ds:[esi+1C] – ESI 레지스터에서 암호화된 데이터의 크기를 가져옵니다.
  • push 0x1000 – MEM_COMMIT을 사용하여 메모리를 할당합니다.
  • push 0 – 할당 유형 또는 보호 플래그를 지정합니다.
  • mov edx, dword ptr ds:[esi+4] – 또 다른 구성 값을 가져옵니다.
  • lea ecx, [ebp-4] – 지역 변수에 대한 포인터를 로드합니다.
  • test ecx, ecx – 포인터가 유효한지 확인합니다.
  • mov ecx, [esi+1C] – 암호화된 데이터 크기를 다시 가져옵니다.
  • push 0x1000 – MEM_COMMIT 플래그를 반복합니다.
  • push 0 – 할당 플래그를 반복합니다.

하위 덤프 섹션:

  • ConnectionStrings – C2 주소를 위한 .NET 구성 키입니다.
  • system.data, DbProviderFactories – .NET 구성 섹션 (미끼일 가능성).
  • system.serviceModel – .NET 서비스 모델 섹션.
  • <DbProviderFactories /> – 빈 XML 요소 (미끼).

중요한 이유:

  • 구성 복호화: Formbook은 메모리에서 구성을 복호화합니다.
  • C2 주소: ConnectionStrings에 C2 URL이 포함되어 있을 가능성이 높습니다.
  • 회피: .NET 구성 키워드를 사용하여 탐지를 피합니다.

시각적 참조:

Formbook Encrypted Configuration & Memory Allocation NtAllocateVirtualMemory와 ConnectionStrings 복호화를 보여주는 x32dbg 화면.

2. x32dbg – .NET 어셈블리 조작, XOR 복호화 및 CLR 초기화

이 x32dbg 화면은 Formbook이 .NET 어셈블리 조작, XOR 기반 복호화, 그리고 CLR (Common Language Runtime) 초기화를 사용하여 페이로드를 실행한다는 것을 보여줍니다.

주요 관찰 사항:

  • xor eax, eax – EAX를 초기화하여 XOR 기반 복호화를 나타냅니다.
  • call 0x6C6E7F60 – 복호화 또는 처리 함수를 호출합니다.
  • call 0x6C6EE8B0 – 또 다른 처리 함수를 호출합니다.
  • DllCanUnloadNowInternal – .NET 어셈블리 로드/언로드를 관리합니다.
  • PublicKeyToken=31bf3856ad364e35 – Microsoft 어셈블리를 사칭합니다.
  • system.serviceModel – .NET 서비스 모델 구성 (C2 통신).
  • System.Web – .NET 웹 구성 (HTTP 기반 C2).
  • clr.NGenCreateNGenWorker – .NET Native Image Generator 워커를 생성합니다.
  • clr.GetCLRFunction – CLR 함수를 가져옵니다.
  • return to clr.Initialize – .NET 런타임을 초기화합니다.

중요한 이유:

  • XOR 복호화: xor eax, eax와 이후의 call 함수들은 XOR 기반 복호화를 확인시켜 줍니다.
  • .NET 실행: Formbook은 CLR을 사용하여 페이로드를 실행합니다.
  • 사칭: PublicKeyToken은 Microsoft 어셈블리처럼 보이게 만듭니다.
  • C2 구성: system.serviceModel과 System.Web에 C2 설정이 저장됩니다.

시각적 참조:

Formbook .NET Assembly, XOR Decryption & CLR XOR 복호화, DllCanUnloadNowInternal, CLR 초기화를 보여주는 x32dbg 화면.

3. x32dbg – SQLExpress 미끼 및 CLR 초기화

이 x32dbg 화면은 Formbook이 SQLExpress 관련 문자열을 미끼로 사용하고 .NET CLR을 초기화하여 페이로드를 실행한다는 것을 보여줍니다.

주요 관찰 사항:

  • L"ce=..\SQLEXPR" – SQL 데이터 탈취와 관련 없는 미끼 문자열입니다. 악성코드를 합법적인 SQL Server Express 구성 요소처럼 보이게 하는 데 사용됩니다
  • clr.InitializeFusion – .NET Fusion 어셈블리 로더를 초기화하며, 이는 .NET 페이로드를 메모리에 로드하는 데 사용됩니다.
  • clr.GetCLRFunction – 관리 코드를 실행하기 위한 CLR 함수를 가져옵니다.
  • clr.NGenCreateNGenWorker – .NET Native Image Generator 워커를 생성하여 페이로드가 JIT 컴파일 없이 실행될 수 있게 합니다.
  • return to clr.InitializeFusion+1751 – CLR 초기화 루틴으로 돌아갑니다.

중요한 이유:

  • 사칭: SQLEXPR 문자열은 보안 도구의 탐지를 피하기 위한 미끼입니다.
  • .NET 실행: Formbook은 CLR을 사용하여 페이로드를 메모리에서 직접 로드하고 실행합니다
  • 회피: CLR 초기화는 악성코드가 정적 분석을 우회하는 데 도움을 줍니다.

시각적 참조:

Formbook SQLExpress Decoy & CLR Initialization L"ce=..\SQLEXPR", clr.InitializeFusion, CLR 함수들을 보여주는 x32dbg 화면.

4. x32dbg – 페이로드 시작 및 XOR 복호화 루프

이 x32dbg 화면은 표준 PE DOS 스텁 메시지 이후에 위치한 Formbook 페이로드의 시작을 보여줍니다. 악성코드는 XOR 복호화 루프를 사용하여 메모리에서 페이로드를 복호화합니다.

주요 어셈블리 명령어:

  • This program cannot be run in DOS mode – 표준 PE DOS 스텁 메시지.
  • xor dword ptr ds:[edi], eax – EDI의 데이터를 EAX와 XOR합니다 (복호화).
  • mov al, byte ptr ds:[edi+1] – EDI+1에서 AL로 바이트를 로드합니다.
  • xor al, byte ptr ds:[edx+1] – AL을 EDX+1의 바이트와 XOR합니다 (복호화 키).
  • mov byte ptr ds:[edi], al – 복호화된 바이트를 EDI에 다시 씁니다.
  • call ntdll.77DDE45C – RtlIsCurrentThreadAttachExempt를 호출합니다 (안티 디버그).
  • cmp dword ptr ds:[esi+4], 0 – 카운터 (ESI+4)가 0인지 확인합니다.
  • sub dword ptr ds:[esi+4], eax – 카운터를 감소시킵니다.
  • test edx, edx – EDX가 0인지 테스트합니다.
  • jne ntdll.77DDF9F4 – 0이 아니면 루프백합니다 (복호화 루프).

중요한 이유:

  • 페이로드 시작: 페이로드는 표준 PE DOS 스텁 이후에 시작됩니다.
  • XOR 복호화: Formbook은 XOR을 사용하여 메모리에서 페이로드를 복호화합니다.
  • 안티 디버그: 디버거를 회피하기 위해 RtlIsCurrentThreadAttachExempt를 호출합니다.
  • 루프: 복호화 루프는 카운터가 0에 도달할 때까지 계속됩니다.

시각적 참조:

Formbook Payload XOR Decryption Loop 표준 PE DOS 스텁 메시지 이후의 XOR 복호화 루프를 보여주는 x32dbg 화면.

5. Binary Ninja – 키로거, 클립보드 및 권한 상승 API

추출된 페이로드에 대한 Binary Ninja 분석은 Formbook이 키로깅, 클립보드 하이재킹, 권한 상승에 사용하는 포괄적인 API 목록을 보여줍니다.

관찰된 주요 API:

  • 클립보드 하이재킹: SetClipboardData, GetClipboardData – 클립보드 데이터를 탈취하고 교체합니다.
  • 키로거: SetWindowsHookExW, SetWindowsHookExA – 키보드 훅을 설치합니다.
  • 프로세스 조작: NtSetInformationProcess, NtCreateThreadEx, NtTerminateProcess.
  • 권한 상승: NtAdjustPrivilegesToken – 토큰 권한을 조정합니다.
  • 시스템 제어: NtShutdownSystem, SystemParametersInfoA/W.
  • 지속성: MsInstallProductW/A – 지속성을 위해 제품을 설치합니다.
  • 실행: CreateProcessInternalW – 새 프로세스를 생성합니다.

중요한 이유:

  • 키로깅: 모든 키 입력 (비밀번호, 메시지)을 캡처합니다.
  • 클립보드 탈취: 복사된 암호화폐 주소와 비밀번호를 탈취합니다.
  • 권한 상승: 더 깊은 시스템 접근을 위해 더 높은 권한을 획득합니다.
  • 지속성: MsInstallProductW/A는 악성코드가 시작 시 실행되도록 보장합니다.

시각적 참조:

Formbook Keylogger & Clipboard APIs 키로거, 클립보드, 권한 상승 API를 보여주는 Binary Ninja 화면.

결론

이 분석은 암호화된 구성, .NET 어셈블리 조작, XOR 복호화, 키로깅/클립보드 하이재킹을 사용하는 정교한 정보 탈취 악성코드인 Formbook을 밝혀냈습니다.

주요 요점:

  • 암호화된 구성: NtAllocateVirtualMemory를 사용하여 메모리에서 구성을 복호화합니다.
  • .NET 어셈블리 조작: DllCanUnloadNowInternal과 PublicKeyToken을 사용하여 Microsoft 어셈블리를 사칭합니다.
  • CLR 초기화: clr.InitializeFusion과 clr.NGenCreateNGenWorker를 사용하여 .NET 페이로드를 실행합니다.
  • SQLExpress 미끼: 탐지를 회피하기 위해 L"ce=..\SQLEXPR"를 미끼로 사용합니다.
  • 페이로드 복호화: PE DOS 스텁 이후에 XOR 복호화 루프를 사용합니다.
  • 키로깅 및 클립보드 탈취: SetWindowsHookExW, SetClipboardData, GetClipboardData를 사용합니다.
  • 권한 상승: 상승된 접근을 위해 NtAdjustPrivilegesToken을 사용합니다.

탐지 권장 사항:

  • 메모리에서 NtAllocateVirtualMemory와 ConnectionStrings를 모니터링합니다.
  • 비정상적인 프로세스에서 DllCanUnloadNowInternal과 CLR 초기화를 탐지합니다.
  • SetWindowsHookExW와 SetClipboardData 호출을 모니터링합니다.
  • NtAdjustPrivilegesToken과 NtCreateThreadEx 사용을 확인합니다.

샘플 다운로드

분석된 Formbook 샘플은 직접 분석을 수행하고자 하는 분들을 위해 MalwareBazaar에서 이용할 수 있습니다:

🔗 Formbook Sample on MalwareBazaar

사용된 도구: x64dbg, Binary Ninja

도구 다운로드