432. 지속성·재침투 — C2 비컨 재연결 패턴 탐지

changseop lee·2026년 10월 9일

시스템 보안 · 취약점

목록 보기
432/450

시스템 보안 · 취약점 › I. 지속성 · 재침투 징후 · 32/50편 (전체 432/450)
학습 단계: 백도어·재침투 경로 탐지
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

C2 비컨은 악성코드가 "지시할 것이 있는가"를 주기적으로 묻는 짧은 통신입니다(T1071). 지속성으로 살아남은 악성코드는 재부팅 후에도 같은 C2로 다시 비컨을 보내므로, 비컨은 남은 지속성을 알려 주는 신호가 됩니다.

비컨 통신 지표
 간격   : 60s ± 지터(jitter 10~20%) 로 규칙적
 크기   : 요청·응답 크기가 거의 일정 (명령 없을 때)
 목적지 : 같은 도메인·IP, 낮은 평판·최근 등록 도메인
 시간대 : 사람의 업무 시간과 무관하게 24시간
 프로세스: 정상 브라우저가 아닌 서버 프로세스

핵심: 개별 연결은 평범 — "반복의 규칙성"이 지표

예) 간격 분포
 연결 간격(초): 58 61 60 63 57 60 59 62 ...  → 표준편차 작음 = 비컨

F영역 31편이 비컨 패턴 자체를 다뤘다면, 이번 편은 근절 전후 비컨 비교로 지속성 잔존 여부를 판단하는 데 초점을 둡니다.

2. 왜 중요한가

  • 비컨은 지속성이 남아 있는 한 계속되므로 근절 검증 지표로 쓸 수 있습니다.
  • HTTPS로 암호화되어도 간격·크기·목적지 패턴은 보입니다.
  • 서버 프로세스의 규칙적 외부 통신은 정상 업무에서 드뭅니다.

3. 핵심 명령어 / 설정

지표데이터비컨 신호
간격연결 시각 차이표준편차 작음
크기바이트 수거의 일정
목적지DNS·IP단일 목적지 반복
지속24시간 분포시간대 무관
프로세스connect 감사 exe비표준 경로

4. 실습 (실습 예시)

# 비컨 간격 분석 (분석 방법, conntrack/방화벽 로그 기반 예시)
# 1) 특정 호스트의 외부 연결 시각을 목적지별로 추출 (zeek conn.log 예시)
awk -F'\t' '$3=="10.10.2.15"{print $5, int($1)}' conn.log | sort -k1,1 -k2,2n > /tmp/conn.txt
# 2) 목적지별 연결 간격의 평균·표준편차·횟수
awk '{if($1==p){d=$2-t; n[$1]++; s[$1]+=d; ss[$1]+=d*d} p=$1; t=$2}
 END{for(k in n){m=s[k]/n[k]; sd=sqrt(ss[k]/n[k]-m*m); if(n[k]>50) printf "%s n=%d avg=%.0f sd=%.1f\n",k,n[k],m,sd}}' /tmp/conn.txt | sort -t= -k4 -n | head

5. 정상 상태

203.0.113.10 n=72 avg=1200 sd=380.4   (업데이트 서버, 불규칙)
목적지 다양, 업무 시간대 집중

외부 연결의 간격이 불규칙하고 목적지가 다양하며, 승인된 업데이트·모니터링 목적지로 설명되는 상태가 정상입니다.

6. 이상 상태

198.51.100.7 n=1438 avg=60 sd=3.1
요청 크기 412B·응답 크기 128B 고정, 24시간 균등 분포
connect 감사: exe=/usr/lib/.x/agent
  • 평균 60초·표준편차 3초의 규칙적 반복 → 비컨
  • 크기 고정 + 24시간 분포 → 자동화된 C2 확인 통신
  • 숨김 경로 바이너리가 연결 주체 → 지속성 악성코드 잔존

7. 로그 분석 (분석 방법)

비컨 기반 지속성 잔존 판단 흐름입니다(가상의 예시).

[연결 데이터] conn.log·방화벽·프록시 로그
   ↓
[통계] 목적지별 간격 평균·표준편차·횟수·크기
   ↓
[주체] 호스트 connect 감사로 프로세스·실행 파일 특정
   ↓
[근절 검증] 근절 전후 같은 목적지 비컨 유무 비교
결과판단
근절 후 비컨 지속지속성 잔존
근절 후 소멸해당 채널 근절
목적지만 변경백업 C2 존재

근절 후 목적지만 바뀐 비컨이 나타나면 악성코드가 예비 C2 목록을 가진 것이므로, 바이너리 분석으로 C2 목록 전체를 확보해 차단해야 합니다.

8. SOC 관제 포인트

  • 서버 대역의 외부 연결 간격 통계를 일 단위로 산출합니다.
  • 비컨 의심 목적지는 DNS·프록시에서 차단하고 차단 로그로 재시도를 감시합니다.
  • 근절 보고서에 "근절 후 비컨 0건 확인 기간"을 명시합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_i,persistence,">
  <rule id="108310" level="12">
    <if_sid>108000</if_sid>
    <field name="audit.key">reentry_net</field>
    <field name="audit.exe" type="pcre2">^/(tmp|var/tmp|dev/shm)/|/\.[^/]+/</field>
    <description>숨김·임시 경로 실행 파일의 외부 연결(C2 비컨 주체 의심)</description>
    <mitre><id>T1071</id></mitre>
  </rule>
  <rule id="108311" level="14" frequency="30" timeframe="1800">
      <if_matched_sid>108310</if_matched_sid>
      <same_field>audit.exe</same_field>
      <description>동일 숨김 경로 실행 파일의 30분 내 반복 외부 연결(비컨 패턴)</description>
      <mitre><id>T1071</id></mitre>
    </rule>
</group>

호스트 측에서는 연결 주체를, 반복 빈도 룰(108311)로는 규칙적 반복을 잡습니다. 정확한 간격 통계는 SIEM 집계로 보완합니다.

10. 대응 방법

  1. 초기 확인 — 비컨 목적지·간격·주체 프로세스를 확인합니다.
  2. 범위 확인 — 같은 목적지로 통신하는 다른 호스트와 예비 C2를 확인합니다.
  3. 증거 확보 — 연결 로그·실행 파일·메모리를 보존합니다.
  4. 차단/조치 — 목적지를 차단하고 주체 프로세스와 기동 트리거를 제거합니다.
  5. 재발 방지 — 근절 후 비컨 0건 확인 기간을 두고 감시합니다.

11. 핵심 정리

지표기준
간격표준편차 작음
크기일정
시간24시간 균등
활용근절 검증
면접 포인트"비컨은 남은 지속성의 맥박 — 근절 후에도 뛰면 아직 안에 있다"

12. 다음 편 예고

다음 편 433. 지속성·재침투 — SSH 터널·포트 포워딩 재침투 경로 탐지 에서는 ssh -R 역방향 터널·autossh·SOCKS 프록시로 만든 재침투 통로를 sshd 로그·프로세스 인자·연결 정보로 탐지하는 방법을 다룹니다.


이전 편: 431. 지속성·재침투 — 웹셸 재침투 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글