hhkb.dev

BLOG

2025-12-23 / 레드팀인프라구축 · 03

리다이렉터 서버 설정

1. 개요

리다이렉터의 핵심 목적은 C2 서버를 숨기는 것이다. 피해 시스템의 비컨(Beacon)은 C2 서버의 실제 IP를 직접 알지 못하고, 리다이렉터 도메인(cchealthwv.com 등)과만 통신하게 만든다.

리다이렉터는 겉으로는 정상적인 HTTPS 웹 서버처럼 보인다. 그 안에서 유효한 C2 트래픽만 골라서 백엔드 C2 서버로 넘기고, 나머지는 정상 사이트처럼 처리해 의심을 줄인다.

2. Nginx 및 Certbot 설치

AWS Redirector 인스턴스(Ubuntu)에 접속하여 웹 서버와 인증서 발급 도구를 설치한다.

sudo apt update
sudo apt install -y nginx certbot python3-certbot-nginx

3. HTTPS 인증서 발급(Let's Encrypt)

확보한 도메인에 대해 신뢰할 수 있는 SSL 인증서를 발급받는다. 이렇게 하면 트래픽이 암호화되어 IDS, IPS가 내용을 들여다보기 어려워진다.

# 도메인 환경변수 설정
DOMAIN="[구입한_도메인]"
EMAIL="admin@[구입한_도메인]"

# 인증서 발급(Nginx 플러그인 사용)
sudo certbot --nginx -d www.$DOMAIN -d $DOMAIN --non-interactive --agree-tos -m $EMAIL

4. Reverse Proxy 설정(Traffic Forwarding)

Nginx 설정 파일(/etc/nginx/sites-available/default)을 수정해 리버스 프록시 규칙을 정의한다. 여기서 잡는 경로와 헤더 조건은 나중에 맞출 C2 프로파일(Malleable C2)과 정확히 일치해야 한다.

4.1. 설정 예시

핵심 포인트는 세 가지다.

  • C2 트래픽 식별: 특정 URL 경로(URI)와 User-Agent 문자열을 검사한다.
  • Proxy Pass: 식별된 트래픽만 C2 서버 IP(가급적 Private IP)로 넘긴다.
  • Redirect: 식별되지 않은 트래픽은 google.com 같은 정상 사이트로 돌려보낸다.
server {
    listen 443 ssl;
    server_name [구입한_도메인];

    # SSL 설정(Certbot이 자동 생성한 라인 유지)
    ...

    # 1. C2 트래픽 처리(Malleable C2 프로파일과 일치하는 경로)
    location /login.php {
        # C2 서버로 트래픽 전달
        proxy_pass https://[C2_Server_Private_IP]:443;
        
        # 헤더 전달 설정
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_ssl_verify off; # C2 서버가 사설 인증서일 경우 검증 무시
    }

    # 2. 그 외 모든 트래픽은 정상 사이트로 리다이렉트(Decoy)
    location / {
        return 301 https://www.google.com;
    }
}

5. 작동 원리 검증

설정 후에는 아래 순서로 동작을 확인한다.

  1. 정상 접속 시도: 브라우저에서 https://[도메인]에 접속했을 때 구글로 리다이렉트되는지 본다. 일반 사용자나 분석가 시점 검증에 해당한다.
  2. C2 접속 시도: curl 등으로 https://[도메인]/login.php 같은 경로와 맞는 User-Agent를 넣어 요청했을 때, C2 서버 응답이 오는지 확인한다. 이 부분은 C2 구축 후 검증해도 된다.