공성전에서 성을 지키는 방법 🏰⚔️
By PLURA
옛날, 성벽🧱이 높고 해자🌊가 깊은 나라가 있었습니다.
적은 성벽을 넘을 수 없었고, 남은 길은 성문뿐이었죠.
오늘 우리의 시스템도 같습니다. 방화벽으로 외곽은 닫혀 있고, 유일한 열린 문은 웹 서비스(80/443)입니다.
그래서 공격자는 성문을 정면돌파하기보다, 성 안에 ‘세작(백도어)’을 들여보내는 전략에 모든 창의와 자원을 쏟습니다.
1) 우화로 보는 현재: 성문·배수로·세작
- 성벽 = 네트워크 경계(방화벽, 분리망)
- 성문(정문) = 웹 서비스(HTTPS 443, 리다이렉트 80→443)
- 배수로/은닉로 = 본문 인코딩·우회 기법, 취약 라이브러리, 관리 콘솔
- 세작(백도어, 악성코드) = 웹셸·악성 플러그인·크리덴셜 탈취 후 설치된 지속화 도구
모든 성벽이 안전할 때, 공격자는 성문을 속이거나 성내에 세작을 들이는 것 외엔 방법이 없습니다.
2) 왜 ‘웹’이 모든 공격의 관문인가?
- 유일한 개방 포트: 대국민·대고객 서비스는 443이 표준. 결국 모든 트래픽이 이 문을 통과.
- 복잡성의 함정: 수많은 프레임워크·플러그인·API가 얽히며 “기능=공격면”.
- 운영 상시 변경: 배포·설정 변경·긴급 패치가 빈번해, 규칙이 뒤쫓는 구조가 됨.
- 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) 탐지·차단 플레이북
- 프런트라인(WAF)
- TLS 종단 위치에서 본문 검사 활성화
- 정규화 후 탐지(이중 인코딩/우회 제거)
- 파일 업로드: 확장자↔MIME↔매직넘버 일치 검증·격리 스캔
- 취약 컴포넌트 전용 룰셋(예: 프레임워크/관리콘솔별) → 우리 환경에 없는 스택은 기본 비활성화로 성능 보호
- 호스트(EDR/XDR)
- 웹 프로세스(예:
w3wp
,php-fpm
,java
)의 자식 프로세스 실행 모니터 - 웹루트 변경·신규 스크립트 생성 알림, 권한 상승/암호 수집 차단
- 아웃바운드 정책: 서버→외부 직접 통신 최소화(프록시·허용목록 기반)
- 상관·대응(SIEM/SOAR)
- “업로드 직후 웹루트 파일 생성 + 비정상 프로세스 트리 + 신규 외부 연결” = 고위험 스토리라인 경보
- 자동화: 세션 차단 → 파일 격리 → 계정잠금/비번 리셋 → 티켓 생성 → 증거 보존
7) 현장 체크리스트 ✅
- 요청/응답 본문 로그가 저장·조회·검색 가능한가? (PII 마스킹·보존정책 포함)
- TLS 가시성을 확보했는가? (종단 위치·재암호화·성능 테스트)
- 프레임워크/플러그인 인벤토리가 최신이고, 취약성 매핑 룰이 반영되는가?
- 웹루트 변경 탐지와 서버 아웃바운드 제어가 적용되어 있는가?
- MITRE ATT&CK 기반 상관 규칙이 운영 중인가? (웹 이벤트 ↔ 호스트 이벤트)
- 릴리스·패치 거버넌스가 있고, 롤백·블루/그린 배포 시 보안 룰 동기화가 되는가?
8) 자주 틀리는 정책들 🙅
- 형식 점검만 강화하고 본문·감사 로그가 비어있는 상태로 AI 도입
- 우리 스택에 없는 취약점 룰까지 전부 켬 → 성능 저하·오탐 증가
- 아웃바운드 무제한 허용(서버가 클라이언트가 됨) — 유출·C2 통로 생성
- TLS를 백엔드까지 종단 없이 밀폐 — 장비가 내용을 못 봄
9) 결론 — “성문을 본문으로 본다”
AI 시대의 공성전에서 공격의 기술은 세작 대량생산으로 진화했습니다. 우리가 해야 할 일은 단순합니다.
🚪門을 보듯, 본문을 보라.
🗣️성내의 속삭임(감사 로그)을 기록하라.
웹 ↔️ 호스트를 하나의 사건으로 이해하고 자동으로 대응하라.
데이터가 쌓이면 AI는 거짓과 진짜를 가려내는 훈련을 시작할 수 있고, 그때 비로소 세작은 군중 속에서 드러납니다.
📖 함께 읽기
- 소버린 AI의 시작은 ‘소버린 데이터’다
- 왜 지금 당장 ‘소버린 사이버보안’을 준비해야 하는가?
- [정책 제안] AI 100조 시대, 성공적 추진을 위한 10대 산업 생태계 구축
- 성을 지키는 방법
PLURA-XDR는 웹 본문 로그 + 호스트 감사로그를 수집·상관·자동대응(SOAR)까지 연결하여
“보이지 않던 세작“을 가시화→격리→증거화합니다.