시스템 보안 · 취약점 › C. Linux 정보 노출 및 수집 · 21/50편 (전체 121/450)
학습 단계: 사용자·권한 정보 수집
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
사용자 목록 조회는 공격자가 "어떤 계정이 있고, 누구를 노릴까" 를 파악하는 정찰입니다. B영역이 계정의 보안 상태(필드 이상·탈취)를 다뤘다면, C영역은 공격자가 계정 정보를 조회하는 행위와 그 흔적을 봅니다.
B영역(051~100) : 계정이 안전한가, 탈취됐나 (계정 보안)
C영역(이 편) : 공격자가 계정 목록을 어떻게 조회하고 흔적은 무엇인가 (정찰)
사용자 목록 조회
cat /etc/passwd → 전체 계정(UID·셸·홈)
getent passwd → NSS 통합 계정
compgen -u → 계정명 목록
awk -F: '{print $1}' /etc/passwd → 계정명 추출
조회 대상(/etc/passwd)은 누구나 읽을 수 있어, 조회 자체가 막히진 않습니다. 탐지는 읽기 감사 + 연속성·주체로 합니다.
| 조회 | 정보 |
|---|---|
cat /etc/passwd | 전체 계정·UID·셸 |
getent passwd | NSS 통합 계정 |
compgen -u | 계정명 목록 |
awk -F: 가공 | 계정명 추출·정리 |
| 관심 | UID≥1000(사람), sudo 그룹 |
# 사용자 목록 조회 감사 (실습 예시)
-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편 튜닝).
$ 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영역 점검 포함).
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 가공)
계정 목록 정찰 흐름입니다(가상의 예시 로그).
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 passwd | NSS 통합 조회 |
| awk 가공 | 계정명 추출(수집 의도) |
| ses=12 | 계정 정찰 세션 |
추출된 계정 중 특정 계정에 대한 이후 공격(B영역 brute-force·su)이 나타나는지 연계합니다.
<!-- 실습 예시 룰: 적용 전 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편)으로 묶습니다.
| 조회 | 정보 |
|---|---|
| cat /etc/passwd | 전체 계정 |
| getent passwd | NSS 통합 |
| awk 가공 | 계정명 추출 |
| 구분 | 계정 점검(정상) vs 수집·가공 연속 조회(정찰) |
| 면접 포인트 | "B영역은 계정 보안, C영역은 계정 조회(정찰) — 읽기 → 표적 선별" |
다음 편 122. Linux 정보 수집 — 그룹 정보 조회 분석 에서는 그룹 체계 정찰인 그룹 정보 조회 분석을 다룹니다.
이전 편: 120. Linux 정보 수집 — 네트워크 정보 수집 종합 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점