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

선행 학습

1. 개념

Linux 커널은 이름이 아니라 UID로 권한을 판단합니다. 따라서 이름이 backup이어도 UID가 0이면 root와 똑같습니다. 공격자는 이를 이용해 root가 아닌 이름의 UID 0 계정을 지속성으로 남깁니다.

UID 0 숨은 계정
 root:x:0:0:root:/root:/bin/bash        ← 정상(유일해야 함)
 backup:x:0:0::/var/backups:/bin/bash   ← 숨은 root
 경로
  · passwd 직접 편집으로 UID 0 지정
  · usermod -o -u 0 <user> (중복 UID 허용)

핵심: "UID 0은 root 하나"가 기준선

A영역 3편에서 점검 항목으로 다뤘던 UID 0 중복을 이번에는 "언제·누가 만들었는가"를 추적하는 탐지 관점으로 다룹니다.

2. 왜 중요한가

  • UID 0 계정은 sudo 없이 곧바로 root 권한을 가지므로 가장 강력한 지속성입니다.
  • 로그에는 계정 이름으로 기록되어 root 활동처럼 보이지 않을 수 있습니다.
  • root 비밀번호만 바꾸는 복구 절차로는 제거되지 않습니다.

3. 핵심 명령어 / 설정

확인명령기대
UID 0 목록awk -F: '$3==0{print $1}' /etc/passwdroot만
중복 UIDcut -d: -f3 /etc/passwd | sort | uniq -d없음
GID 0awk -F: '$4==0' /etc/passwdroot·시스템 계정
변경 이력ausearch -m USER_MGMT -iusermod -o 기록

4. 실습 (실습 예시)

# UID 0 숨은 계정 점검 (분석 방법)
awk -F: '$3==0{print $1, $6, $7}' /etc/passwd
sudo pwck -r 2>/dev/null | head
# usermod로 UID를 바꾼 기록
sudo ausearch -m USER_MGMT -i 2>/dev/null | grep -E 'op=(changing uid|modify)' | tail
sudo grep -E "usermod.*(change user|uid)" /var/log/secure* | tail

5. 정상 상태

$ awk -F: '$3==0{print $1}' /etc/passwd
root

UID 0 계정이 root 하나뿐이고 UID 중복이 없는 상태가 정상입니다.

6. 이상 상태

$ awk -F: '$3==0{print $1}' /etc/passwd
root
backup
secure: usermod[4410]: change user 'backup' UID from '34' to '0'
type=USER_MGMT ... auid=webadmin op=changing-uid acct="backup"
  • root 외 UID 0 계정(backup) 출현 → 숨은 관리자 계정
  • 시스템 계정의 UID를 0으로 변경 → 이름은 그대로 두고 권한만 탈취
  • 권한 상승 계정(webadmin)이 수행 → 지속성 설치로 판정

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

UID 0 계정 분석 흐름입니다(가상의 예시).

[UID 0 목록] root 외 계정 발견
   ↓
[생성 방식] usermod -o -u 0 기록 ? 직접 편집 ?
   ↓
[작성자] auid 추적 → 권한 상승 시점과 비교
   ↓
[사용 여부] 해당 계정 로그인·sudo 없이 root 행위(euid=0, auid=해당 계정)
신호해석
UID 0 중복숨은 root
시스템 계정 셸 /bin/bash로그인 가능하게 개조
auid=해당 계정, euid=0실제 사용

UID 0 계정으로 로그인하면 auditd의 auid는 그 계정 UID(0)로 남으므로, 로그인 기록의 계정 이름과 함께 봐야 실제 사용 여부를 판단할 수 있습니다.

8. SOC 관제 포인트

  • UID 0 중복은 정상 운영에서 거의 없어 즉시 고위험으로 다룹니다.
  • 시스템 계정의 셸이 nologin에서 bash로 바뀐 것도 함께 확인합니다.
  • root 비밀번호 변경만으로 사고를 닫지 않도록 근절 체크리스트에 포함합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_i,persistence,">
  <rule id="108090" level="13">
    <if_sid>108000</if_sid>
    <field name="audit.type">USER_MGMT</field>
    <field name="audit.op" type="pcre2">changing.?uid|modify-account</field>
    <description>계정 UID 변경 이벤트(UID 0 숨은 계정 생성 의심)</description>
    <mitre><id>T1098</id></mitre>
  </rule>
</group>

UID 변경은 운영에서 드물기 때문에 USER_MGMT 이벤트 자체를 높은 레벨로 다룹니다. 추가로 정기 점검 스크립트가 UID 0 중복을 발견하면 별도 이벤트를 남기도록 구성합니다.

10. 대응 방법

  1. 초기 확인 — UID 0 계정 목록과 생성·변경 방식을 확인합니다.
  2. 범위 확인 — 해당 계정의 로그인·명령 실행 기록과 다른 지속성 변경을 확인합니다.
  3. 증거 확보 — passwd 사본·USER_MGMT 기록을 보존합니다.
  4. 차단/조치 — UID를 원래 값으로 되돌리거나 계정을 잠그고 소유 파일을 점검합니다.
  5. 재발 방지 — UID 0 중복 점검을 정기 점검·SCA 정책에 넣습니다.

11. 핵심 정리

항목기준
정상UID 0 = root 하나
경로usermod -o -u 0, 직접 편집
탐지USER_MGMT·정기 점검
주의root 비밀번호 변경으로 제거 안 됨
면접 포인트"권한은 이름이 아니라 UID — UID 0이 둘이면 root도 둘"

12. 다음 편 예고

다음 편 411. 지속성·재침투 — 휴면 계정 재활성화 탐지 에서는 잠겨 있거나 오래 쓰지 않던 계정의 잠금 해제·비밀번호 재설정·셸 변경을 재침투용 지속성으로 탐지하는 방법을 다룹니다.


이전 편: 409. 지속성·재침투 — 백도어 계정 생성 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글