109. Linux 정보 수집 — 환경변수·실행 환경 정보 수집

changseop lee·5일 전

시스템 보안 · 취약점

목록 보기
109/150

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

선행 학습

1. 개념

환경변수는 의도치 않게 자격증명이 노출되는 대표 위치입니다. 애플리케이션이 DB 비밀번호·API 키·토큰을 환경변수로 받는 경우가 많아, 공격자는 이를 노립니다.

환경변수 조회
 env / printenv          → 현재 셸의 환경변수
 /proc/[PID]/environ     → 실행 중인 프로세스의 환경변수 (다른 사용자 프로세스는 권한 필요)
 /proc/self/environ      → 자기 프로세스
 ~/.bashrc, /etc/environment → 설정된 환경변수

위험: 웹/DB 프로세스의 environ에 DB_PASSWORD, API_KEY 등이 있으면
      그 프로세스를 읽을 수 있는 권한으로 자격증명 탈취

linsec 32편이 "환경변수 기반 공격"이라면, 여기서는 환경변수를 조회·수집하는 정찰 행위를 탐지합니다.

2. 왜 중요한가

  • 프로세스 environ에서 자격증명을 얻으면, 공격자는 추가 인증 없이 DB·외부 API에 접근할 수 있습니다(E영역 중요 정보 접근으로 연결).
  • 다른 사용자/서비스 프로세스의 /proc/[PID]/environ을 읽으려는 시도는 권한 상승·자격증명 탈취 정찰의 강한 신호입니다.
  • 환경변수에 비밀을 두지 않는 것(파일+권한 관리)이 근본 방어이고, 조회 탐지는 보조 수단입니다.

3. 핵심 명령어 / 설정

조회주는 정보위험
env/printenv현재 셸 환경셸에 비밀이 있으면 노출
/proc/[PID]/environ프로세스 환경서비스 비밀 노출
/proc/self/environ자기 환경낮음
/etc/environment시스템 전역설정 노출

4. 실습 (실습 예시)

# environ 접근 감사 (실습 예시) — 다른 프로세스 environ 읽기 감시
-w /etc/environment -p r -k recon_env
-a always,exit -F arch=b64 -S openat -F dir=/proc -F auid>=1000 -F auid!=unset -k recon_environ

# 다른 사용자 프로세스의 environ 읽기 시도 탐색 (분석 방법)
sudo ausearch -k recon_environ -i --start recent | grep 'environ' | tail
# 서비스 프로세스 environ을 읽었는지
sudo ausearch --session 12 -i 2>/dev/null | grep -E 'environ|printenv|/etc/environment' | tail

/proc 전체 openat 감사는 이벤트가 많으므로, 운영에서는 environ 경로 패턴·사람 세션으로 좁히고 SIEM 필터로 정제합니다(147편).

5. 정상 상태

$ sudo ausearch -k recon_env -i --start today | tail -1
(환경변수 조회 없음 또는 자기 셸 printenv 단발)

관리자가 자기 셸의 env를 확인하는 정도는 정상입니다. 위험한 것은 다른 프로세스의 environ 접근입니다.

6. 이상 상태

02:12:40 auid=devops ses=12 comm="cat" name="/proc/1450/environ"
02:12:42 auid=devops ses=12 comm="cat" name="/proc/1188/environ"
  • 다른 PID(1450=mysqld, 1188=httpd)의 environ을 읽으려 시도 → 서비스 자격증명 탈취 정찰
  • 자기 셸이 아닌 서비스 프로세스 environ 접근은 거의 항상 비정상
  • 성공했다면 DB·API 자격증명 노출 → E영역 접근으로 이어질 위험

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

environ 수집 흐름입니다(가상의 예시 로그).

type=PATH ... name="/proc/1450/environ" nametype=NORMAL
type=SYSCALL ... syscall=openat auid=devops ses=12 comm="cat" exe="/usr/bin/cat" key="recon_environ"
관찰해석
/proc/[PID]/environ특정 프로세스 환경 수집
대상 PID가 서비스DB·웹 자격증명 노림
자기 셸 아님비정상 접근
성공 시E영역 중요정보 접근 위험

8. SOC 관제 포인트

  • /proc/[PID]/environ 중 다른(특히 서비스) 프로세스 접근을 최우선 확인합니다.
  • environ 조회 성공 시 자격증명 노출로 보고 해당 자격증명 교체를 검토합니다(E영역 연계).
  • 근본 방어로 비밀을 환경변수 대신 권한 관리된 파일·시크릿 저장소에 두도록 권고합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_c,recon,credential,">
  <rule id="102080" level="11">
    <if_group>audit</if_group>
    <field name="audit.key">recon_environ</field>
    <regex type="pcre2">/proc/[0-9]+/environ</regex>
    <description>다른 프로세스 environ 조회(자격증명 수집 정찰)</description>
    <mitre><id>T1552.007</id></mitre>
  </rule>
</group>

T1552(Unsecured Credentials) 계열에 매핑됩니다. 자기 PID environ은 제외하도록 조건을 조정합니다.

10. 대응 방법

  1. 초기 확인 — environ 조회의 대상 프로세스(자기/타인·서비스)·성공 여부를 확인합니다.
  2. 범위 확인 — 노출됐을 자격증명의 사용처(DB·API)와 이후 접근(E영역)을 확인합니다.
  3. 증거 확보 — environ 접근 로그와 대상 프로세스 정보를 보존합니다.
  4. 차단/조치 — 자격증명 교체·서비스 점검을 진행하고 환경변수 비밀 사용을 개선합니다.
  5. 재발 방지 — 타 프로세스 environ 접근 탐지를 운영합니다.

11. 핵심 정리

조회위험
env/printenv(자기)낮음
/proc/[PID]/environ(타인)서비스 자격증명 탈취
/etc/environment전역 설정 노출
구분자기 셸 확인(정상) vs 서비스 프로세스 environ 접근(정찰)
면접 포인트"서비스 프로세스 environ 조회는 추가 인증 없는 자격증명 탈취 정찰"

12. 다음 편 예고

다음 편 110. Linux 정보 수집 — 시스템·OS 정보 수집 종합 분석 에서는 1단계를 마무리하는 시스템·OS 정보 수집 종합 분석을 다룹니다.


이전 편: 108. Linux 정보 수집 — 마운트 정보 조회 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글