공성전에서 성을 지키는 방법 🏰⚔️

By PLURA

옛날, 성벽🧱이 높고 해자🌊가 깊은 나라가 있었습니다.
적은 성벽을 넘을 수 없었고, 남은 길은 성문뿐이었죠.

오늘 우리의 시스템도 같습니다. 방화벽으로 외곽은 닫혀 있고, 유일한 열린 문은 웹 서비스(80/443)입니다.
그래서 공격자는 성문을 정면돌파하기보다, 성 안에 ‘세작(백도어)’을 들여보내는 전략에 모든 창의와 자원을 쏟습니다.

Protect the Castle

1) 우화로 보는 현재: 성문·배수로·세작

  • 성벽 = 네트워크 경계(방화벽, 분리망)
  • 성문(정문) = 웹 서비스(HTTPS 443, 리다이렉트 80→443)
  • 배수로/은닉로 = 본문 인코딩·우회 기법, 취약 라이브러리, 관리 콘솔
  • 세작(백도어, 악성코드) = 웹셸·악성 플러그인·크리덴셜 탈취 후 설치된 지속화 도구

모든 성벽이 안전할 때, 공격자는 성문을 속이거나 성내에 세작을 들이는 것 외엔 방법이 없습니다.


2) 왜 ‘웹’이 모든 공격의 관문인가?

  1. 유일한 개방 포트: 대국민·대고객 서비스는 443이 표준. 결국 모든 트래픽이 이 문을 통과.
  2. 복잡성의 함정: 수많은 프레임워크·플러그인·API가 얽히며 “기능=공격면”.
  3. 운영 상시 변경: 배포·설정 변경·긴급 패치가 빈번해, 규칙이 뒤쫓는 구조가 됨.
  4. TLS 암호화: 내용이 보이지 않으면 WAF/보안장비가 장식이 될 수 있음(TLS 종단 위치·가시성 문제).

3) 세작(백도어) 제조의 진화 — “수백 명 → 수억 개”

예전엔 하루 종일 사람 수십·수백 명이 한 개의 세작을 만들었습니다. 이제는 AI가 수억 개의 변종 페이로드를 만들어 우회·난독화·폴리모픽을 자동으로 반복합니다.

  • 속임수의 질·양이 기하급수적 증가: 시그니처·정적 룰만으론 누수 발생.
  • 군중 속 한두 명의 세작을 놓치면, 곧 트로이 목마가 되어 내부 권한 상승·측면 이동이 시작됩니다.

4) “듣지 않는 귀”의 위험 — 형식주의가 만드는 괴물 정책

  • 깃발 색을 점검하고, 성문 장식을 번쩍이게 하는 형식 중심 점검배수로를 보지 못합니다.
  • 현장의 본문·감사 로그가 비어 있으면 어떤 인증도 실전 방어가 되지 못합니다.

AI 방어는 ‘데이터’ 없이는 불가능합니다. 웹 요청/응답 본문, 서버 감사 로그가 없으면, AI는 볼 것도, 배울 것도 없습니다.

👉 우리나라 해킹은 정부의 인증 제도 때문이다
👉 ISMS 인증제도, 왜 지금은 더 이상 유효하지 않은가?


5) 실전 방어 원칙 — “성문 가시성 + 성내 첩보 + 즉응”

5.1 필수 가시성(Observability)

  • 웹 계층: 요청/응답 본문 로그(POST/JSON/XML/파일 업로드), 헤더·쿠키·바디 파라미터 정규화
  • 호스트 계층: 감사 정책(Windows Sysmon, Linux auditd) 활성화, 프로세스 트리·명령행·네트워크 연결
  • TLS 가시성: WAF/리버스 프록시 TLS 종단으로 본문 검사 가능하도록 설계

5.2 다층 방어(Defense-in-Depth)

  • WAF: 본문·정규화·파일형식 검증, 가변 페이로드 탐지(행위/문맥), 취약 컴포넌트별 전문화 룰셋
  • EDR/XDR: 웹셸 실행·권한 상승·크리덴셜 접근·압축/암호화·C2 연결의 행위 탐지
  • SIEM/SOAR: 웹↔호스트 이벤트 상관 분석, 자동 플레이북으로 격리/계정잠금/티켓 발행

5.3 MITRE ATT&CK 관점

  • Initial Access: T1190(공개 애플리케이션 익스플로잇), T1133(외부 원격 서비스)
  • Execution: T1059(명령 인터프리터), 웹셸 통한 명령 실행
  • Persistence: T1505.003(웹셸), T1053(스케줄러)
  • Credential Access: T1003(LSA/LSASS 덤프)
  • Exfiltration: T1041(네트워크로 유출, 쪼개 전송)
  • Command & Control: T1071(웹 프로토콜 C2), 도메인 프론팅/정상 서비스 악용

6) 탐지·차단 플레이북

  1. 프런트라인(WAF)
  • TLS 종단 위치에서 본문 검사 활성화
  • 정규화 후 탐지(이중 인코딩/우회 제거)
  • 파일 업로드: 확장자↔MIME↔매직넘버 일치 검증·격리 스캔
  • 취약 컴포넌트 전용 룰셋(예: 프레임워크/관리콘솔별) → 우리 환경에 없는 스택은 기본 비활성화로 성능 보호
  1. 호스트(EDR/XDR)
  • 웹 프로세스(예: w3wp, php-fpm, java)의 자식 프로세스 실행 모니터
  • 웹루트 변경·신규 스크립트 생성 알림, 권한 상승/암호 수집 차단
  • 아웃바운드 정책: 서버→외부 직접 통신 최소화(프록시·허용목록 기반)
  1. 상관·대응(SIEM/SOAR)
  • “업로드 직후 웹루트 파일 생성 + 비정상 프로세스 트리 + 신규 외부 연결” = 고위험 스토리라인 경보
  • 자동화: 세션 차단 → 파일 격리 → 계정잠금/비번 리셋 → 티켓 생성 → 증거 보존

7) 현장 체크리스트 ✅

  • 요청/응답 본문 로그가 저장·조회·검색 가능한가? (PII 마스킹·보존정책 포함)
  • TLS 가시성을 확보했는가? (종단 위치·재암호화·성능 테스트)
  • 프레임워크/플러그인 인벤토리가 최신이고, 취약성 매핑 룰이 반영되는가?
  • 웹루트 변경 탐지서버 아웃바운드 제어가 적용되어 있는가?
  • MITRE ATT&CK 기반 상관 규칙이 운영 중인가? (웹 이벤트 ↔ 호스트 이벤트)
  • 릴리스·패치 거버넌스가 있고, 롤백·블루/그린 배포보안 룰 동기화가 되는가?

8) 자주 틀리는 정책들 🙅

  • 형식 점검만 강화하고 본문·감사 로그가 비어있는 상태로 AI 도입
  • 우리 스택에 없는 취약점 룰까지 전부 켬성능 저하·오탐 증가
  • 아웃바운드 무제한 허용(서버가 클라이언트가 됨) — 유출·C2 통로 생성
  • TLS를 백엔드까지 종단 없이 밀폐 — 장비가 내용을 못 봄

9) 결론 — “성문을 본문으로 본다”

AI 시대의 공성전에서 공격의 기술은 세작 대량생산으로 진화했습니다. 우리가 해야 할 일은 단순합니다.

🚪門을 보듯, 본문을 보라.
🗣️성내의 속삭임(감사 로그)을 기록하라.
웹 ↔️ 호스트를 하나의 사건으로 이해하고 자동으로 대응하라.

데이터가 쌓이면 AI는 거짓과 진짜를 가려내는 훈련을 시작할 수 있고, 그때 비로소 세작은 군중 속에서 드러납니다.


📖 함께 읽기

PLURA-XDR는 웹 본문 로그 + 호스트 감사로그를 수집·상관·자동대응(SOAR)까지 연결하여
보이지 않던 세작“을 가시화→격리→증거화합니다.