082. 계정 · 인증 보안 — 계정 삭제·흔적 정리 탐지

changseop lee·5일 전

시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 32/50편 (전체 082/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

계정 삭제는 정상 운영(퇴직 처리)이기도 하지만, 공격자가 쓰고 버린 백도어 계정을 지워 흔적을 없애는 행위이기도 합니다. 삭제 자체보다 "무엇을, 언제, 왜" 지웠는지가 중요합니다.

userdel 계정        : passwd/shadow/group에서 제거 (홈은 유지)
userdel -r 계정     : 홈 디렉터리·메일 스풀도 삭제 (흔적 제거에 유리)

삭제 후 남을 수 있는 잔존물
 /var/spool/cron/<계정>      crontab (지속성, A영역 026편)
 /home/<계정>                홈(-r 없이 삭제 시)
 소유자 없는 파일            UID만 남아 'ls -l'에 숫자로 표시

삭제된 계정이 만들어진 지 얼마 안 된 계정이면(생성→사용→삭제), 백도어 정리 패턴입니다.

2. 왜 중요한가

  • 공격자가 백도어 계정을 삭제하면 passwd/shadow에서 사라져 "현재 상태 점검"으로는 보이지 않습니다. 로그(생성·삭제 이벤트) 와 잔존물로만 복원됩니다.
  • userdel -r는 홈의 증거(히스토리·스크립트)까지 지우므로, 삭제 전 홈 내용 확보가 중요합니다.
  • 삭제된 계정의 UID를 가진 소유자 없는 파일이 남으면, 그 계정이 무엇을 했는지 단서가 됩니다.

3. 핵심 명령어 / 설정

확인명령
삭제 로그sudo grep 'delete user|userdel|removed' /var/log/secure
audit 삭제sudo ausearch -k identity -i | grep userdel (DEL_USER)
소유자 없는 파일sudo find / -xdev -nouser 2>/dev/null
crontab 잔존sudo ls /var/spool/cron/ (존재하지 않는 계정)
생성-삭제 수명생성 로그와 삭제 로그의 시간 간격

4. 실습 (실습 예시)

LOG=/var/log/secure        # Ubuntu: /var/log/auth.log
# 1) 최근 삭제 이벤트
sudo grep -E 'delete user|userdel|removed group' $LOG | tail
sudo ausearch -k identity -i --start today 2>/dev/null | grep -iE 'userdel|DEL_USER' | tail

# 2) 소유자 없는 파일 (삭제된 계정의 잔존 흔적)
sudo find / -xdev \( -nouser -o -nogroup \) 2>/dev/null | head -20

# 3) 같은 계정의 생성·삭제 수명 비교
sudo grep -E 'new user: name=sysbak|delete user .?sysbak' $LOG

5. 정상 상태

Oct  2 11:00:02 rocky9-web01 userdel[13301]: delete user 'intern01'
$ sudo find / -xdev -nouser 2>/dev/null
$

퇴직 처리로 계정을 삭제하고(변경관리 기록 존재), 소유자 없는 파일이 남지 않도록 정리된 상태가 정상입니다.

6. 이상 상태

Oct  2 03:50:02 rocky9-web01 userdel[13401]: delete user 'sysbak'
$ sudo grep -E 'new user: name=sysbak|delete user .?sysbak' $LOG
02:14:09 useradd: new user: name=sysbak, UID=0 ...
03:50:02 userdel: delete user 'sysbak'
$ sudo find / -xdev -nouser 2>/dev/null
/dev/shm/.c/payload
/var/spool/cron/sysbak
  • sysbak 계정이 생성(02:14) → 사용 → 삭제(03:50), 수명 약 1시간 36분 → 백도어 사용 후 정리
  • userdel(‑r 아님)이라 crontab·파일이 소유자 없는 상태로 잔존 → 그 계정의 활동 증거
  • 삭제 자체가 흔적 정리이므로, 삭제 로그 + 잔존물로 계정을 복원 분석

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

생성-사용-삭제 전체 수명을 재구성한 예시입니다(가상의 예시).

02:14:09 useradd sysbak UID=0 (auid=devops)
02:20:02 sshd: Accepted for sysbak from 192.168.56.77
02:58:00 crontab(sysbak) REPLACE (지속성)
03:50:02 userdel sysbak (auid=devops)  ← 흔적 정리
잔존: /var/spool/cron/sysbak, /dev/shm/.c (소유자 없는 파일)
단계증거원
생성useradd 로그(029편)
사용로그인·행위 로그
삭제userdel 로그
잔존-nouser 파일, cron 스풀

삭제로 passwd에서 사라져도, 로그(원격 사본)와 잔존물로 전체 수명을 복원할 수 있습니다.

8. SOC 관제 포인트

  • 계정 삭제는 생성-삭제 수명과 삭제 주체·승인으로 정상/흔적정리를 구분합니다.
  • 삭제 직후 소유자 없는 파일·cron 잔존물을 점검해 삭제된 계정의 활동을 복원합니다.
  • 짧은 수명(생성→사용→삭제)은 백도어 정리 패턴으로 높은 우선순위입니다.

9. 탐지 규칙

<group name="local,syssec_b,account,">
  <rule id="101290" level="11">
    <if_group>audit</if_group>
    <match>type=DEL_USER</match>
    <description>계정 삭제(userdel) — 승인·수명 확인 필요</description>
  </rule>
</group>

삭제는 정상 운영에서도 발생하므로 기본 레벨은 중간으로 두고, 단기간 생성-삭제 상관(029편 생성 룰과 시간 결합)이나 비관리망 주체 조건으로 상향합니다. 소유자 없는 파일 점검은 정기 자체 점검(A영역 044편)에 포함합니다.

10. 대응 방법

  1. 초기 확인 — 삭제된 계정의 생성-삭제 수명·주체·승인 여부를 확인합니다.
  2. 범위 확인 — 소유자 없는 파일·cron 잔존물로 삭제된 계정의 활동을 복원합니다.
  3. 증거 확보 — 삭제 로그(원격 사본), 잔존물, 생성 로그를 보존합니다.
  4. 차단/조치 — 잔존 백도어(cron·키·파일)를 제거하고 삭제 주체 계정을 조사합니다.
  5. 재발 방지 — 계정 수명 상관 탐지와 소유자 없는 파일 정기 점검을 운영합니다.

11. 핵심 정리

구분핵심 내용
userdel vs -r계정만 vs 홈·메일까지 삭제
흔적 정리 신호짧은 수명(생성→사용→삭제), 비관리망 주체
복원 수단로그(원격 사본) + 소유자 없는 파일 + cron 잔존
정상퇴직 처리(승인·업무시간)
면접 포인트"삭제로 passwd에서 사라져도 로그·잔존물로 복원한다"

12. 다음 편 예고

다음 편 083. 계정 · 인증 보안 — 비활성·휴면 계정 식별과 정리 에서는 오래 쓰지 않는 비활성·휴면 계정 식별과 정리를 다룹니다.


이전 편: 081. 계정 · 인증 보안 — 그룹 구성원 변경과 권한 확대 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글