시스템 보안 · 취약점 › C. Linux 정보 노출 및 수집 · 21/50편 (전체 121/450)
학습 단계: 사용자·권한 정보 수집
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

사용자 목록 조회는 공격자가 "어떤 계정이 있고, 누구를 노릴까" 를 파악하는 정찰입니다. B영역이 계정의 보안 상태(필드 이상·탈취)를 다뤘다면, C영역은 공격자가 계정 정보를 조회하는 행위와 그 흔적을 봅니다.

B영역(051~100) : 계정이 안전한가, 탈취됐나 (계정 보안)
C영역(이 편)    : 공격자가 계정 목록을 어떻게 조회하고 흔적은 무엇인가 (정찰)

사용자 목록 조회
 cat /etc/passwd        → 전체 계정(UID·셸·홈)
 getent passwd          → NSS 통합 계정
 compgen -u             → 계정명 목록
 awk -F: '{print $1}' /etc/passwd → 계정명 추출

조회 대상(/etc/passwd)은 누구나 읽을 수 있어, 조회 자체가 막히진 않습니다. 탐지는 읽기 감사 + 연속성·주체로 합니다.

2. 왜 중요한가

  • 계정 목록으로 공격자는 sudo 가능 계정·서비스 계정·관리자를 식별해 다음 표적(권한 상승 대상)을 정합니다.
  • 전체 계정을 awk로 추출·가공하는 패턴은 단순 확인보다 수집·정리 의도를 시사합니다.
  • B영역의 계정 생성·변경 탐지와 달리, 여기서는 읽기(조회) 를 봅니다. 읽기 → 이후 표적 계정에 대한 공격(B영역)으로 이어집니다.

3. 핵심 명령어 / 설정

조회정보
cat /etc/passwd전체 계정·UID·셸
getent passwdNSS 통합 계정
compgen -u계정명 목록
awk -F: 가공계정명 추출·정리
관심UID≥1000(사람), sudo 그룹

4. 실습 (실습 예시)

# 사용자 목록 조회 감사 (실습 예시)
-w /etc/passwd -p r -k recon_account
# getent/compgen은 execve 또는 shell 기반이라 passwd 읽기로 포착

# 세션에서 계정 정보 조회 흐름 (분석 방법)
sudo ausearch -k recon_account -i --start recent | grep '/etc/passwd' | tail
# passwd를 awk/cut로 가공했는지 (수집 의도)
sudo ausearch --session 12 -i 2>/dev/null | grep -E 'passwd|getent|compgen' | tail

/etc/passwd 읽기는 로그인·여러 도구가 수시로 하므로, 사람 세션(auid)의 직접 cat/awk와 시스템 접근을 구분해야 합니다(147편 튜닝).

5. 정상 상태

$ sudo ausearch -k recon_account -i --start today | grep '/etc/passwd' | grep 'comm="cat"' | tail -1
10:00:02 auid=admin1 ses=8 comm="cat" name="/etc/passwd"  (계정 점검)

관리자가 계정 점검으로 passwd를 한 번 보는 것은 정상입니다(B영역 점검 포함).

6. 이상 상태

02:14:00 auid=devops ses=12 comm="cat" name="/etc/passwd"
02:14:02 auid=devops ses=12 comm="getent" (passwd)
02:14:05 auid=devops ses=12 comm="awk" (passwd 가공)
  • passwd 직접 열람 + getent + awk 가공 연속 → 계정 수집·정리 정찰
  • awk로 UID≥1000·sudo 계정 추출 가능 → 표적 계정 선별
  • 시스템 정보·네트워크 정찰(C01~20)에 이어 계정 정찰로 전환

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

계정 목록 정찰 흐름입니다(가상의 예시 로그).

type=PATH ... name="/etc/passwd" nametype=NORMAL
type=SYSCALL ... auid=devops ses=12 comm="cat" key="recon_account"
type=EXECVE ... a0="awk" a1="-F:" a2="{print $1}" a3="/etc/passwd"
관찰해석
cat /etc/passwd전체 계정 열람
getent passwdNSS 통합 조회
awk 가공계정명 추출(수집 의도)
ses=12계정 정찰 세션

추출된 계정 중 특정 계정에 대한 이후 공격(B영역 brute-force·su)이 나타나는지 연계합니다.

8. SOC 관제 포인트

  • 사용자 목록 조회는 직접 cat/awk 가공과 연속성으로 정찰 여부를 판단합니다.
  • 추출된 표적 계정에 대한 이후 공격(B영역)을 연계 감시합니다.
  • 계정 정찰(C21~30)은 시스템·네트워크 정찰에 이은 "표적 선별" 단계로 봅니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_c,recon,">
  <rule id="102200" level="6">
    <if_group>audit</if_group>
    <field name="audit.key">recon_account</field>
    <match>/etc/passwd</match>
    <description>사용자 목록(/etc/passwd) 조회</description>
    <mitre><id>T1087.001</id></mitre>
  </rule>
</group>

T1087(Account Discovery)에 매핑됩니다. 계정 정찰(C21~30)은 계정 정찰 세트 상관(130편)으로 묶습니다.

10. 대응 방법

  1. 초기 확인 — 계정 목록 조회의 방법(직접/가공)·연속성·주체를 확인합니다.
  2. 범위 확인 — 추출된 표적 계정에 대한 이후 공격(B영역)을 연계 확인합니다.
  3. 증거 확보 — 세션 조회 흐름을 보존합니다.
  4. 차단/조치 — 탈취 세션이면 B영역 대응과 표적 계정 보호를 진행합니다.
  5. 재발 방지 — 계정 목록 조회를 계정 정찰 상관에 포함합니다.

11. 핵심 정리

조회정보
cat /etc/passwd전체 계정
getent passwdNSS 통합
awk 가공계정명 추출
구분계정 점검(정상) vs 수집·가공 연속 조회(정찰)
면접 포인트"B영역은 계정 보안, C영역은 계정 조회(정찰) — 읽기 → 표적 선별"

12. 다음 편 예고

다음 편 122. Linux 정보 수집 — 그룹 정보 조회 분석 에서는 그룹 체계 정찰인 그룹 정보 조회 분석을 다룹니다.


이전 편: 120. Linux 정보 수집 — 네트워크 정보 수집 종합 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글