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

선행 학습

1. 개념

서비스 계정은 웹·DB 등 데몬이 쓰는 계정으로, 침해 시 발판이 됩니다(B영역 34·35편). 공격자는 서비스 계정의 프로세스·소유 파일·권한을 조회해 "이 계정으로 무엇을 할 수 있는가"를 파악합니다.

서비스 계정 정찰
 ps -u apache            → 서비스 계정이 실행 중인 프로세스
 find / -user apache     → 서비스 계정 소유 파일(쓰기 가능 위치)
 grep apache /etc/passwd → 서비스 계정 셸·홈(B영역 34편)
 id apache               → 서비스 계정 권한·그룹

목적: 서비스 계정이 쓸 수 있는 파일·디렉터리(웹루트 등)를 통한 공격 경로 파악

B영역 34·35편이 "서비스 계정을 로그인 불가로 유지/대화형 로그인 탐지"라면, 여기서는 공격자가 서비스 계정의 활용 가능성을 조회하는 정찰입니다.

2. 왜 중요한가

  • 서비스 계정이 소유한 쓰기 가능 디렉터리(웹루트 등)는 공격 도구 배치·웹셸 지속성(F영역)의 장소가 됩니다.
  • 서비스 계정의 그룹·권한을 알면, 그 계정 탈취 후 무엇이 가능한지(docker 그룹 등, B영역 54편) 판단합니다.
  • 서비스 계정 정찰은 웹·DB 침해(앱 보안 영역)와 시스템 침해의 연결점입니다.

3. 핵심 명령어 / 설정

조회정보
ps -u apache서비스 계정 프로세스
find / -user apache소유 파일(쓰기 위치)
id apache/groups apache권한·그룹
grep apache /etc/passwd셸·홈(B영역 34편)

4. 실습 (실습 예시)

# 서비스 계정 정찰 감사 (실습 예시)
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/find -F auid>=1000 -F auid!=unset -k recon_priv
# ps/id는 execve 감사 또는 /proc 접근으로 포착

# 세션에서 서비스 계정 대상 조회 (분석 방법) — find -user 서비스계정
sudo ausearch -k recon_priv -i --start recent | grep -E 'find' | tail
sudo ausearch --session 12 -i 2>/dev/null | grep -E 'apache|mysql|www-data|nginx' | tail

5. 정상 상태

$ sudo ausearch --session 8 -i 2>/dev/null | grep apache | tail -1
(관리자가 서비스 점검 중 특정 파일 소유 확인 — 단발)

관리자가 서비스 점검으로 특정 파일 소유를 확인하는 것은 정상입니다.

6. 이상 상태

02:14:55 auid=devops ses=12 comm="ps" (ps -u apache)
02:15:00 auid=devops ses=12 comm="find" a1="/var/www" a2="-user" a3="apache" a4="-writable"
02:15:05 auid=devops ses=12 comm="id" (id apache)
  • 서비스 계정 프로세스 + 쓰기 가능 소유 파일 탐색(find -user apache -writable) + 권한 확인 연속 → 서비스 계정 악용 정찰
  • 웹루트의 쓰기 가능 위치 발견 → 웹셸 지속성 배치 장소(F영역)
  • 계정·권한 정찰(C21~27)에 이어 서비스 계정 활용 경로 탐색

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

서비스 계정 정찰 흐름입니다(가상의 예시 로그).

type=EXECVE ... a0="find" a1="/var/www" a2="-user" a3="apache" a4="-writable"
type=SYSCALL ... auid=devops ses=12 comm="find" key="recon_priv"
type=EXECVE ... a0="id" a1="apache"
관찰해석
ps -u apache서비스 프로세스
find -user -writable쓰기 가능 위치(웹셸 장소)
id apache권한·그룹
ses=12서비스 계정 정찰

발견된 쓰기 가능 위치에 파일 생성(F영역 지속성)이 이어지는지 연계합니다.

8. SOC 관제 포인트

  • 서비스 계정 정찰은 쓰기 가능 소유 파일 탐색을 핵심으로 봅니다(웹셸·지속성 장소).
  • 서비스 계정의 그룹·권한 조회는 그 계정 탈취 후 가능성(B영역 54편)과 연계합니다.
  • 발견 위치의 파일 생성·실행(F영역)을 연계 감시합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_c,recon,">
  <rule id="102270" level="8">
    <if_group>audit</if_group>
    <field name="audit.key">recon_priv</field>
    <regex type="pcre2">a0="find".*-user.*(apache|nginx|www-data|mysql).*-writable|-writable.*(apache|nginx|www-data)</regex>
    <description>서비스 계정 쓰기 가능 파일 탐색(악용 경로 정찰)</description>
    <mitre><id>T1083</id></mitre>
  </rule>
</group>

서비스 계정 정찰은 계정 정찰 세트(130편)·F영역 지속성과 연계합니다.

10. 대응 방법

  1. 초기 확인 — 서비스 계정 조회의 대상·쓰기 가능 위치 탐색 여부·주체를 확인합니다.
  2. 범위 확인 — 발견 위치의 파일 생성·웹셸(F영역)이 이어졌는지 확인합니다.
  3. 증거 확보 — 세션 조회 흐름과 서비스 계정 소유 파일 목록을 보존합니다.
  4. 차단/조치 — 탈취 세션이면 B영역 대응과 웹루트 점검을 진행합니다.
  5. 재발 방지 — 서비스 계정 정찰을 계정 정찰·F영역 상관에 포함합니다.

11. 핵심 정리

조회정보
ps -u 서비스프로세스
find -user -writable쓰기 가능 위치(웹셸)
id 서비스권한·그룹
구분서비스 점검(정상) vs 쓰기 위치·권한 탐색(정찰)
면접 포인트"서비스 계정의 쓰기 가능 위치 탐색은 웹셸 지속성 장소 정찰"

12. 다음 편 예고

다음 편 130. Linux 정보 수집 — 사용자·권한 정보 수집 종합 분석 에서는 3단계를 마무리하는 사용자·권한 정보 수집 종합 분석을 다룹니다.


이전 편: 128. Linux 정보 수집 — 관리자 권한 관련 정보 수집
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글