079. 계정 · 인증 보안 — 신규 계정 생성 탐지와 검증

changseop lee·5일 전

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

선행 학습

1. 개념

계정 생성은 정상 운영(입사·서비스 추가)에서도 일어나므로, 탐지 자체보다 생성된 계정이 정상 절차를 따랐는가를 검증하는 것이 핵심입니다.

신규 계정 검증 체크리스트
 ① 승인      : 인사·변경관리 기록이 있나
 ② 생성 주체 : 누가(auid) 만들었나, 관리 계정인가
 ③ 시간      : 업무 시간인가
 ④ 속성      : UID(0/중복?), 셸(서비스인데 bash?), 홈(비정상 경로?), 그룹(특권 그룹?)
 ⑤ 사용      : 생성 직후 바로 로그인했나(백도어는 즉시 사용되는 경향)

A영역 003편이 "이미 있는 비정상 계정"을 점검했다면, 여기서는 생성 이벤트를 실시간 탐지하고 검증합니다.

2. 왜 중요한가

  • 백도어 계정 생성은 가장 직접적인 지속성 수단입니다(A영역 049편의 sysbak).
  • 정상 계정 생성이 섞여 있어, 생성 Alert를 무조건 올리면 피로도가 높습니다. 승인·속성 검증으로 정탐을 가려야 합니다.
  • 생성 직후 특권 그룹 추가·로그인이 이어지면 백도어 가능성이 급등합니다(030·031편과 연계).

3. 핵심 명령어 / 설정

확인명령
생성 로그sudo grep 'new user' /var/log/secure (Ubuntu: useradd/adduser)
생성 그룹sudo grep 'new group' /var/log/secure
최근 생성 계정shadow 마지막 변경일이 최근인 계정
속성 검증getent passwd 계정 + 052편 필드 점검
생성 주체audit identity 키의 auid

4. 실습 (실습 예시)

LOG=/var/log/secure        # Ubuntu: /var/log/auth.log
# 1) 최근 계정·그룹 생성
sudo grep -E 'new user|new group' $LOG | tail

# 2) audit로 생성 주체(auid) 확인
sudo ausearch -k identity -i --start today 2>/dev/null | grep -E 'useradd|adduser' | tail

# 3) 생성 계정 속성 검증 (UID·셸·그룹)
NEWU=sysbak
getent passwd $NEWU
id $NEWU
# 생성 직후 로그인했는지
sudo grep "Accepted .* for $NEWU " $LOG

5. 정상 상태

Oct  2 10:05:02 rocky9-web01 useradd[13001]: new user: name=intern02, UID=1003, GID=1003, home=/home/intern02, shell=/bin/bash, from=/dev/pts/0
$ sudo ausearch -k identity -i | grep useradd
... auid=admin1 ... comm=useradd ... a1=intern02
$ getent passwd intern02
intern02:x:1003:1003:Intern:/home/intern02:/bin/bash

관리자(admin1)가 업무 시간에, 일반 UID·표준 홈·로그인 셸로 생성, 인사 승인(HR-2026-77)과 일치 → 정상입니다.

6. 이상 상태

Oct  2 02:14:09 rocky9-web01 useradd[11301]: new user: name=sysbak, UID=0, GID=0, home=/dev/shm/.c, shell=/bin/bash, from=/dev/pts/1
$ sudo ausearch -k identity -i | grep useradd
... auid=devops ... comm=useradd ... a1=-o a2=-u a3=0 ...
$ sudo grep 'Accepted .* for sysbak ' $LOG
Oct  2 02:20:02 ... Accepted password for sysbak from 192.168.56.77
  • UID 0, 비정상 홈(/dev/shm), 새벽, 생성 주체 devops(탈취 계정) → 백도어 계정
  • -o -u 0으로 UID 중복 허용 → root 권한 공유
  • 생성 6분 후 바로 로그인 → 백도어의 즉시 사용 패턴
  • 승인 기록 없음 → 모든 검증 축에서 실패

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

생성 → 사용으로 이어지는 흐름입니다(가상의 예시 로그).

02:14:09 useradd[11301]: new user: name=sysbak, UID=0, ... (auid=devops)
02:14:10 useradd[11301]: new group: name=sysbak, GID=0
type=ADD_USER msg=audit(...): op=add-user id=0 exe="/usr/sbin/useradd" acct="sysbak" res=success
02:20:02 sshd: Accepted password for sysbak from 192.168.56.77
이벤트의미
new user ... UID=0백도어 계정 생성
ADD_USER(audit)감사 이벤트로도 기록
생성 주체 auid=devops탈취 계정이 또 다른 계정 생성(030편 연계)
6분 후 Accepted생성 계정 즉시 사용

8. SOC 관제 포인트

  • 계정 생성 Alert는 속성(UID·셸·홈·그룹) + 승인 + 주체 + 즉시 사용으로 검증합니다.
  • UID 0·중복, 서비스 계정 셸, 비정상 홈은 속성만으로 높은 우선순위입니다.
  • 생성 직후 로그인·특권 그룹 추가가 이어지면 백도어로 확정에 가깝게 봅니다.

9. 탐지 규칙

<group name="local,syssec_b,account,persistence,">
  <rule id="101260" level="12">
    <match>new user: name=</match>
    <regex type="pcre2">UID=0,|home=/(tmp|dev/shm|var/tmp)/|shell=/(usr/)?bin/(ba|z)?sh.*from=/dev/pts</regex>
    <description>비정상 속성 계정 생성(UID 0 / 임시 홈 등)</description>
  </rule>
</group>

Wazuh 기본 룰(5902 new user)이 모든 생성을 잡으므로, 위는 속성 기반 상향입니다. 정상 생성이 잦은 환경은 승인 시스템 연동(변경관리 번호 매칭)으로 오탐을 줄입니다.

10. 대응 방법

  1. 초기 확인 — 생성 계정의 속성·주체·시간·승인 여부와 생성 직후 사용을 확인합니다.
  2. 범위 확인 — 같은 주체가 만든 다른 계정, 다른 서버의 동일 계정을 확인합니다.
  3. 증거 확보 — 생성 로그(secure·audit), passwd/shadow FIM, 로그인 로그를 보존합니다.
  4. 차단/조치 — 비인가 계정 잠금·제거(증거 확보 후), 생성 주체 계정 조사를 진행합니다.
  5. 재발 방지 — 계정 생성 검증 체크리스트와 속성 기반 탐지 룰을 운영합니다.

11. 핵심 정리

검증 축정상 vs 백도어
승인인사·변경관리 기록 vs 없음
주체·시간관리자·업무시간 vs 탈취계정·새벽
속성일반 UID·표준 홈 vs UID 0·임시 홈·서비스 셸
사용나중 vs 생성 직후 즉시
면접 포인트"생성 탐지보다 속성·승인 검증이 핵심 — 정상 생성과 구분"

12. 다음 편 예고

다음 편 080. 계정 · 인증 보안 — 계정 변경(usermod) 이벤트 분석 에서는 기존 계정을 바꾸는 계정 변경(usermod) 이벤트 분석을 다룹니다.


이전 편: 078. 계정 · 인증 보안 — 동시 세션·다중 출발지 로그인 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글