
Imaginary C2는 악성코드의 행동(네트워크) 분석을 돕기 위한 파이썬 도구입니다. Imaginary C2는 선택적으로 지정된 도메인/IP로 향하는 HTTP 요청을 캡처하는 HTTP 서버를 호스팅합니다. 또한, 이 도구는 캡처된 명령 및 제어 응답/전송된 페이로드를 쉽게 재생할 수 있도록 하는 것을 목표로 합니다.
author: Felix Weyne (website) (Twitter)
Imaginary C2는 악성코드의 행동(네트워크) 분석을 돕기 위한 파이썬 도구입니다.
Imaginary C2는 선택적으로 지정된 도메인/IP에 대한 HTTP 요청을 캡처하는 HTTP 서버를 호스팅합니다. 또한, 캡처된 명령 및 제어(C&C) 응답/전달된 페이로드를 쉽게 재생할 수 있도록 합니다.
이 도구를 사용함으로써, 분석가는 악성코드에 일관된 네트워크 응답(예: 악성코드가 실행할 C&C 명령)을 제공할 수 있습니다. 또한, 분석 시점에 오프라인 상태인 도메인/IP에 대한 HTTP 요청을 캡처하고 검사할 수 있습니다.

Imaginary C2는 패킷 캡처(PCAP) 또는 _Fiddler 세션 아카이브_를 Imaginary C2가 파싱할 수 있는 __요청 정의__로 변환하는 두 개의 스크립트를 제공합니다. 이 스크립트를 통해 사용자는 HTTP 요청 URL 및 도메인, 그리고 HTTP 응답을 추출할 수 있습니다. 이렇게 하면 특정 HTTP 요청에 대한 HTTP 응답을 빠르게 재생할 수 있습니다.
요구 사항: Imaginary C2는 Python 2.7 및 Windows가 필요합니다.
모듈: 현재 Imaginary C2에는 세 개의 모듈과 두 개의 설정 파일이 포함되어 있습니다:
| 파일 이름 | 기능 |
|---|
| 1. imaginary_c2.py | Python의 간단한 HTTP 서버를 호스팅합니다. 주요 모듈입니다. |
| 2. redirect_to_imaginary_c2.py | Windows의 hosts 파일과 Windows (IP) 라우팅 테이블을 변경합니다. |
| 3. unpack_fiddler_archive.py & unpack_pcap.py | 패킷 캡처에서 HTTP 응답을 추출합니다. 설정 파일에 해당 HTTP 요청 도메인과 URL을 추가합니다. |
| 4. redirect_config.txt | 로컬호스트(Python HTTP 서버)로 리디렉션해야 하는 도메인과 IP를 포함합니다. |
| 5. requests_config.txt | 해당 데이터 소스와 함께 URL 경로 정의를 포함합니다. |
요청 정의: 요청 설정에 정의된 각 (HTTP) 요청은 두 개의 매개변수로 구성됩니다:
매개변수 1: HTTP 요청 URL 경로 (일명 urlType)
| 값 | 의미 |
|---|---|
| fixed | URL 경로를 리터럴 문자열로 정의 |
| regex | URL 경로와 일치시킬 정규식 패턴을 정의 |
매개변수 2: HTTP 응답 소스 (일명 sourceType)
| 값 | 의미 |
|---|---|
| data | Imaginary C2가 디스크에 있는 파일의 내용으로 응답 |
| python | Imaginary C2가 파이썬 스크립트를 실행합니다. 파이썬 스크립트의 출력이 HTTP 응답을 정의합니다. |
Imaginary C2는 TrickBot 구성 요소 및 구성 파일의 호스팅을 시뮬레이션하는 데 사용할 수 있습니다. 또한 TrickBot의 웹 인젝션 서버를 시뮬레이션하는 데에도 사용할 수 있습니다.
실행 시 TrickBot 다운로더는 하드코딩된 IP 집합에 연결하여 몇 가지 구성 파일을 가져옵니다. 이 구성 파일 중 하나에는 TrickBot 플러그인 서버의 위치(IP 주소)가 포함되어 있습니다. TrickBot 다운로더는 이러한 서버에서 플러그인(모듈)을 다운로드하여 복호화합니다. 복호화된 모듈은 svchost.exe 인스턴스에 주입됩니다.

TrickBot의 플러그인 중 하나는 _injectdll_로, TrickBot의 웹 인젝션을 담당하는 플러그인입니다. injectdll 플러그인은 정기적으로 업데이트된 웹 인젝션 구성 집합을 가져옵니다. 구성에 있는 각 대상(은행) 웹사이트에 대해 _webfake 서버_의 주소가 정의됩니다. 피해자가 TrickBot이 대상으로 하는 (은행) 웹사이트를 방문하면, 브라우저는 비밀리에 _webfake 서버_로 리디렉션됩니다. _webfake 서버_는 대상 웹사이트의 복제본을 호스팅합니다. 이 복제 웹사이트는 일반적으로 사회공학 공격에 사용되어 피해자를 사기하는 데 사용됩니다.
아래 비디오는 svchost.exe 내부에서 실행되는 TrickBot 다운로더가 Imaginary C2에 연결하여 두 개의 모듈을 다운로드하는 모습을 보여줍니다. 다운로드된 각 모듈은 새로 생성된 svchost.exe 인스턴스에 주입됩니다. 웹 인젝션 모듈은 브라우저에 저장된 비밀번호를 훔치려고 시도하고, 훔친 비밀번호를 TrickBot 서버로 유출합니다. 대상 은행 웹사이트를 방문하면 TrickBot은 브라우저를 _webfake 서버_로 리디렉션합니다. 데모에서 _webfake 서버_는 "Default imaginary C2 server response" 메시지를 호스팅합니다 (전체 비디오).
