시스템 보안 · 취약점 › I. 지속성 · 재침투 징후 · 9/50편 (전체 409/450)
학습 단계: 계정·인증 지속성 탐지
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
가장 단순하면서도 흔한 지속성은 공격자 전용 계정을 하나 만들어 두는 것입니다(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 파일 변경 감시를 함께 써야 합니다. 둘 중 하나만 있으면 우회 경로가 생깁니다.
| 확인 | 명령 / 로그 | 포인트 |
|---|---|---|
| 생성 로그 | grep 'new user' /var/log/secure | 이름·UID·홈·셸 |
| 파일 감시 | ausearch -k account_persist -f /etc/passwd | exe=useradd 외 |
| 최근 계정 | awk -F: '$3>=1000' /etc/passwd | 기준선과 비교 |
| 비밀번호 상태 | passwd -S <user> | 설정 시점 |
# 백도어 계정 점검 (분석 방법)
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)
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)로, 권한 있는 관리자가 업무 시간에, 발급 티켓과 함께 만든 계정은 정상 발급입니다.
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 기록 없음
백도어 계정 분석 흐름입니다(가상의 예시).
[passwd 변경 감지] FIM / auditd account_persist
↓
[작성 도구] exe=useradd ? ── 아니오 → 직접 편집(고위험)
↓
[속성] UID·홈·셸 비정상? (숨김 홈, /bin/bash, 낮은 UID)
↓
[이력] 발급 티켓·승인자 확인
↓
[연계] 같은 auid의 권한 상승·SSH 키 추가 여부
| 신호 | 위험 |
|---|---|
| 직접 편집 | 높음 |
| 숨김·임시 홈 | 높음 |
| 관리자 위장 이름 | 중간 |
| 티켓 없음 | 높음 |
계정 생성 직후 해당 계정의 첫 로그인이 외부 IP에서 일어났다면 백도어 계정이 실제로 재침투에 사용된 것입니다.
<!-- 실습 예시 룰: 적용 전 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로 검증합니다.
usermod -L, 셸 nologin) 세션을 종료한 뒤 삭제 여부를 결정합니다.| 경로 | 탐지 |
|---|---|
| useradd | secure 로그 |
| 직접 편집 | FIM·auditd(exe≠useradd) |
| 속성 이상 | 숨김 홈·위장 이름 |
| 사용 여부 | 첫 로그인 출발지 |
| 면접 포인트 | "useradd 로그만 보면 직접 편집을 놓친다 — 파일 감시와 함께 본다" |
다음 편 410. 지속성·재침투 — UID 0 숨은 계정 탐지 에서는 root 외에 UID 0을 가진 숨은 관리자 계정과 UID 변경(usermod -o -u 0)을 탐지하는 방법을 다룹니다.
이전 편: 408. 지속성·재침투 — 지속성·재침투 판정 기준
📚 시리즈 전체 보기: 시스템 보안 · 취약점