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

선행 학습

1. 개념

가장 단순하면서도 흔한 지속성은 공격자 전용 계정을 하나 만들어 두는 것입니다(T1136.001). 정상 계정처럼 보이는 이름을 쓰거나, useradd 대신 /etc/passwd를 직접 편집해 로그를 피하려 합니다.

백도어 계정 생성 경로
 ① useradd / adduser      → secure: "new user: name=..."
 ② /etc/passwd 직접 편집  → useradd 로그 없음, FIM·watch로만 보임
 ③ 기존 계정 UID 변경     → usermod (다음 편 UID 0 주제)
 공통 흔적: passwd·shadow·group 동시 변경

핵심: useradd 로그만 보면 ② 직접 편집을 놓친다

그래서 계정 생성 로그 + passwd/shadow 파일 변경 감시를 함께 써야 합니다. 둘 중 하나만 있으면 우회 경로가 생깁니다.

2. 왜 중요한가

  • 백도어 계정은 비밀번호 변경·키 폐기 후에도 남아 재침투를 허용합니다.
  • 직접 편집은 계정 관리 도구 로그를 남기지 않아 파일 감시가 유일한 탐지 수단입니다.
  • 정상 계정 발급과 시간·작성자·속성이 다르므로 구분이 가능합니다.

3. 핵심 명령어 / 설정

확인명령 / 로그포인트
생성 로그grep 'new user' /var/log/secure이름·UID·홈·셸
파일 감시ausearch -k account_persist -f /etc/passwdexe=useradd 외
최근 계정awk -F: '$3>=1000' /etc/passwd기준선과 비교
비밀번호 상태passwd -S <user>설정 시점

4. 실습 (실습 예시)

# 백도어 계정 점검 (분석 방법)
sudo grep -E 'new user|new group' /var/log/secure* | tail
# 계정 파일 변경 주체 확인: useradd 외의 exe가 수정했는지
sudo ausearch -k account_persist -f /etc/passwd -i 2>/dev/null | grep -E 'exe=|auid=' | sort | uniq -c
# 기준선 대비 신규 로그인 가능 계정
diff <(awk '{print $1}' /root/baseline/persist-*/accounts.txt | sort -u) \
     <(getent passwd | awk -F: '$7!~/(nologin|false)$/{print $1}' | sort)

5. 정상 상태

useradd[2101]: new user: name=kim.dev, UID=1005, GID=1005, home=/home/kim.dev, shell=/bin/bash
auid=admin01 exe=/usr/sbin/useradd, 티켓 ACC-0331 (09:40)

계정 관리 도구(useradd)로, 권한 있는 관리자가 업무 시간에, 발급 티켓과 함께 만든 계정은 정상 발급입니다.

6. 이상 상태

type=PATH name=/etc/passwd ... auid=webadmin exe=/usr/bin/vi (02:51)
passwd 신규 줄: sysadm:x:1099:1099::/var/tmp/.s:/bin/bash
secure: useradd 기록 없음
  • useradd 로그 없이 vi로 passwd 직접 수정 → 로그 회피 시도
  • 홈 디렉터리가 /var/tmp 아래 숨김 경로 → 비정상 속성
  • 관리자처럼 보이는 이름(sysadm) + 새벽 시간 → 백도어 계정 판정

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

백도어 계정 분석 흐름입니다(가상의 예시).

[passwd 변경 감지] FIM / auditd account_persist
   ↓
[작성 도구] exe=useradd ? ── 아니오 → 직접 편집(고위험)
   ↓
[속성] UID·홈·셸 비정상? (숨김 홈, /bin/bash, 낮은 UID)
   ↓
[이력] 발급 티켓·승인자 확인
   ↓
[연계] 같은 auid의 권한 상승·SSH 키 추가 여부
신호위험
직접 편집높음
숨김·임시 홈높음
관리자 위장 이름중간
티켓 없음높음

계정 생성 직후 해당 계정의 첫 로그인이 외부 IP에서 일어났다면 백도어 계정이 실제로 재침투에 사용된 것입니다.

8. SOC 관제 포인트

  • useradd 로그와 passwd 변경 이벤트 수를 대조해, 로그 없는 변경을 별도로 경보합니다.
  • 신규 계정의 첫 로그인 출발지를 반드시 확인합니다.
  • 퇴사·정리된 계정 이름의 재생성도 백도어 패턴으로 봅니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_i,persistence,">
  <rule id="108080" level="12">
    <if_sid>108000</if_sid>
    <field name="audit.key">account_persist</field>
    <field name="audit.file.name">/etc/passwd</field>
    <field name="audit.exe" negate="yes" type="pcre2">/(useradd|usermod|userdel|passwd|chfn|chsh|vipw)$</field>
    <description>계정 관리 도구 외 프로그램의 /etc/passwd 수정(백도어 계정 의심)</description>
    <mitre><id>T1136.001</id></mitre>
  </rule>
</group>

정상 계정 관리 도구 목록을 negate로 제외하고, 그 밖의 프로그램이 /etc/passwd를 쓰면 경보합니다. negate 지원 여부는 Wazuh 버전에 따라 다르므로 logtest로 검증합니다.

10. 대응 방법

  1. 초기 확인 — 신규 계정의 속성(UID·홈·셸)과 생성 도구를 확인합니다.
  2. 범위 확인 — 같은 작성자가 SSH 키·sudoers·cron도 변경했는지 확인합니다.
  3. 증거 확보 — passwd·shadow 사본과 auditd 기록을 보존합니다.
  4. 차단/조치 — 계정을 잠그고(usermod -L, 셸 nologin) 세션을 종료한 뒤 삭제 여부를 결정합니다.
  5. 재발 방지 — 계정 발급을 티켓과 연동하고 passwd 직접 편집을 감시 대상으로 유지합니다.

11. 핵심 정리

경로탐지
useraddsecure 로그
직접 편집FIM·auditd(exe≠useradd)
속성 이상숨김 홈·위장 이름
사용 여부첫 로그인 출발지
면접 포인트"useradd 로그만 보면 직접 편집을 놓친다 — 파일 감시와 함께 본다"

12. 다음 편 예고

다음 편 410. 지속성·재침투 — UID 0 숨은 계정 탐지 에서는 root 외에 UID 0을 가진 숨은 관리자 계정과 UID 변경(usermod -o -u 0)을 탐지하는 방법을 다룹니다.


이전 편: 408. 지속성·재침투 — 지속성·재침투 판정 기준
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글