패킷 검사 및 가변 프로파일 상관 분석을 통해 블루 팀, AV, EDR, 스캐너를 차단하는 Cobalt Strike C2 리버스 프록시
(이전에는 proxy2's의 malleable_redirector 플러그인으로 알려짐)
C2 리다이렉터의 IR 회복탄력성 수준을 한 단계 더 높여볼까요?

Red Teaming 업계에서는 사고 대응자와 교전하고 동시에 저항력 있는 C2 리다이렉터 네트워크를 제공하면서 사고 대응자들을 잘못된 방향으로 유도하는 여러 훌륭한 아이디어들을 보아 왔습니다.
이 작업은 그러한 많은 훌륭한 아이디어들을 하나의 가벼운 유틸리티로 결합하여, Apache2가 단순한 HTTP(S) 리버스 프록시로서의 근본을 모방합니다.
Malleable C2 프로필 이해, 알려진 불량 IP 주소 풀에 대한 지식, 그리고 새로운 검사 및 잘못된 라우팅 로직을 쉽게 추가할 수 있는 유연성을 결합하여 IR 검사에 대한 교묘한 퇴치 도구를 탄생시켰습니다.

잘못된 인바운드 패킷이 RedWarden에 도달하면 redirect, reset 또는 단순히 proxy하여 처리할 수 있습니다!
이 프로그램은 HTTP/HTTPS 리버스 프록시 역할을 하며, 인바운드 C2 HTTP 요청에 여러 제한을 적용하여 Teamserver로 보낼 패킷과 드롭할 패킷을 선택합니다. 이는 Apache2의 mod_rewrite에서 규정된 .htaccess 파일 제한과 유사합니다.
RedWarden은 C2 리다이렉터 계층에서 IR/AV/EDR/Sandbox 회피 문제를 해결하기 위해 만들어졌습니다. 이 목적으로 사용되던 기존의 Apache2 + mod_rewrite 설정을 대체하기 위한 것입니다.
특징:
RedWarden은 입력으로 Malleable C2 프로필과 teamserver의 hostname:port를 받습니다. 그런 다음 제공된 Malleable 프로필 섹션을 구문 분석하여 계약을 이해하고, 이를 충족하는 인바운드 요청만 통과시키고 다른 요청은 잘못된 방향으로 유도합니다.
http-stager, http-get, http-post 같은 섹션과 해당 URI, 헤더, prepend/append 패턴, User-Agent는 모두 합법적인 Beacon 요청과 관련 없는 인터넷 소음 또는 IR/AV/EDR의 범위를 벗어난 패킷을 구별하는 데 사용됩니다.
이 프로그램은 다음에서 제공되는 훌륭한 알려진 불량 IP 범위를 활용합니다: curi0usJack 및 기타: https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10
IP 주소 블랙리스트와 Reverse-IP DNS 쿼리 및 HTTP 헤더 검사를 통한 알려진 불량 키워드 조회를 함께 사용하면, 공격자 인프라를 조사하려는 승인되지 않은 피어에 대한 리다이렉터의 회복탄력성을 크게 향상시킬 수 있습니다.
잘못된 패킷은 세 가지 전략에 따라 잘못 라우팅될 수 있습니다:
이 구성은 설정 파일에 규정되어 있습니다:```yaml
drop_action: redirect
아래 예시는 `redirect`를 `https://googole.com`으로 설정한 결과를 보여줍니다:

현명하게 사용하고 안전을 유지하세요.
### 요구 사항
이 프로그램은 fork를 사용하여 여러 프로세스를 생성하므로 Linux 시스템에서만 실행할 수 있습니다.
또한 SSL 인증서 생성에 사용되는 `openssl` 시스템 명령어가 설치되어 있어야 합니다.
마지막으로, 다음 명령어로 Python3 PIP 요구 사항을 쉽게 설치할 수 있습니다:```shell
bash $ sudo pip3 install -r requirements.txt
최소 RedWarden의 config.yaml 설정 파일은 다음을 포함할 수 있습니다:```yaml port:
profile: jquery-c2.3.14.profile
ssl_cacert: /etc/letsencrypt/live/attacker.com/fullchain.pem ssl_cakey: /etc/letsencrypt/live/attacker.com/privkey.pem
teamserver_url:
drop_action: reset
그런 다음, 구성 파일의 경로를 제공하여 프로그램을 실행할 수 있습니다:```shell
bash$ sudo python3 RedWarden.py -c config.yaml
[INFO] 19:21:42: Loading 1 plugin...
[INFO] 19:21:42: Plugin "malleable_redirector" has been installed.
[INFO] 19:21:42: Preparing SSL certificates and keys for https traffic interception...
[INFO] 19:21:42: Using provided CA key file: ca-cert/ca.key
[INFO] 19:21:42: Using provided CA certificate file: ca-cert/ca.crt
[INFO] 19:21:42: Using provided Certificate key: ca-cert/cert.key
[INFO] 19:21:42: Serving http proxy on: 0.0.0.0, port: 80...
[INFO] 19:21:42: Serving https proxy on: 0.0.0.0, port: 443...
[INFO] 19:21:42: [REQUEST] GET /jquery-3.3.1.min.js
[INFO] 19:21:42: == Valid malleable http-get request inbound.
[INFO] 19:21:42: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
[INFO] 19:21:42: [RESPONSE] HTTP 200 OK, length: 5543
[INFO] 19:21:45: [REQUEST] GET /jquery-3.3.1.min.js
[INFO] 19:21:45: == Valid malleable http-get request inbound.
[INFO] 19:21:45: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
[INFO] 19:21:45: [RESPONSE] HTTP 200 OK, length: 5543
[INFO] 19:21:46: [REQUEST] GET /
[...]
[ERROR] 19:24:46: [DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile.
[...]
[INFO] 19:24:46: [RESPONSE] HTTP 301 Moved Permanently, length: 212
[INFO] 19:24:48: [REQUEST] GET /jquery-3.3.1.min.js
[INFO] 19:24:48: == Valid malleable http-get request inbound.
[INFO] 19:24:48: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
[...]
위 출력에는 승인되지 않았으며 당사의 C2 프로필과 호환되지 않는 인바운드 요청이 있었음을 지적하는 줄이 포함되어 있습니다. 이 요청은 제시된 호환되지 않는 User-Agent 문자열로 인해 차단되었습니다.``` [...] [DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile. [...]
## 사용 사례
### 비콘 트래픽 발신지에 IP 지리적 위치 정보 부과하기
사전 피싱(Pre-Phish) 및 OSINT를 매우 잘 수행했습니다. 이제 타겟이 어디에 살고 있는지 알고 있으며, 트래픽이 어디에서 발생해야 하는지에 대한 단서를 가지고 있거나, 적어도 완전히 보조적인 트래픽을 탐지하는 방법을 알고 있습니다.
리디렉터에서 비콘 요청에 IP 지리적 위치 정보를 어떻게 부과할까요?
RedWarden이 도움을 줍니다!
예를 들어, 유럽의 폴란드에서 발생하는 트래픽만 수락하려고 합니다.
사전 피싱/OSINT 결과는 다음을 나타냅니다:
- `89.64.64.150`은 폴란드에서 발생하는 타겟 중 하나의 합법적인 IP입니다.
- `59.99.140.76`은 그렇지 않으며 일반 인터넷 노이즈 패킷으로 시스템에 도달했습니다.