104. Linux 정보 수집 — uptime·시스템 가동 상태 조회 분석

changseop lee·6일 전

시스템 보안 · 취약점

목록 보기
104/310

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

선행 학습

1. 개념

가동 시간·현재 접속자 정보는 공격자에게 "지금 관리자가 보고 있는가, 이 서버가 얼마나 조용한가" 를 알려줍니다. 사람이 적게 접속하는 방치 서버일수록 공격에 유리합니다.

가동·활동 조회
 uptime / /proc/uptime   → 가동 시간, 부하
 w / who                 → 현재 접속자(관리자 접속 여부)
 last                    → 최근 로그인 이력(활동 빈도)
 loadavg                 → 시스템 부하(활동 수준)

공격자가 w/who로 "지금 관리자가 접속 중인지" 확인하는 것은, 들키지 않을 타이밍을 재는 정찰입니다. B영역 25편(로그인 기록)이 "로그인 분석"이라면, 여기서는 그 정보를 공격자가 조회하는 행위를 봅니다.

2. 왜 중요한가

  • 공격자가 w로 관리자 부재를 확인한 뒤 행동하면, 실시간 대응을 피할 수 있습니다. 가동·활동 조회는 "활동 타이밍 정찰"입니다.
  • last 조회는 그 서버의 정상 사용자·접속 패턴을 공격자가 학습하는 수단이 됩니다(B영역 기준선을 공격자가 역이용).
  • 가동 시간이 길고 접속이 드문 서버는 방치 서버로, 공격자의 우선 지속성 대상이 됩니다.

3. 핵심 명령어 / 설정

조회주는 정보흔적
uptime, /proc/uptime가동 시간·부하execve/파일 읽기
w, who현재 접속자execve, utmp 읽기
last, lastlog로그인 이력execve, wtmp 읽기
/proc/loadavg부하파일 읽기

4. 실습 (실습 예시)

# 활동 조회 감사 (실습 예시)
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/w -F auid>=1000 -F auid!=unset -k recon_activity
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/who -F auid>=1000 -F auid!=unset -k recon_activity
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/last -F auid>=1000 -F auid!=unset -k recon_activity

# 세션에서 활동 조회 흐름 (분석 방법)
sudo ausearch -k recon_activity -i --start recent | grep -E 'comm=' | tail

5. 정상 상태

$ sudo ausearch -k recon_activity -i --start today | tail -1
09:05:01 auid=admin1 ses=8 comm="w"   (업무 시작 시 현황 확인)

관리자가 업무 시작/점검 시 w·uptime을 보는 것은 정상입니다.

6. 이상 상태

02:12:00 auid=devops ses=12 comm="w"
02:12:02 auid=devops ses=12 comm="last"
02:12:05 auid=devops ses=12 comm="uptime"
  • 로그인 직후 w(현재 접속자) → last(이력) → uptime 연속 → 활동 타이밍 정찰
  • w로 관리자 부재 확인 후 이어서 시스템 정찰(C01~03)로 진행
  • 새벽 시간 + 탈취 세션 → "지금 아무도 안 본다"를 확인하는 전형적 패턴

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

활동 정찰 흐름입니다(가상의 예시 로그).

type=SYSCALL ... auid=devops ses=12 comm="w" exe="/usr/bin/w" key="recon_activity"
type=SYSCALL ... auid=devops ses=12 comm="last" exe="/usr/bin/last" key="recon_activity"
type=SYSCALL ... auid=devops ses=12 comm="uptime" key="recon_activity"
관찰해석
w / who현재 관리자 접속 여부 확인
last접속 패턴·빈도 학습
로그인 직후 연속활동 타이밍 정찰
새벽들키지 않을 시점 선택

8. SOC 관제 포인트

  • w/who 조회가 로그인 직후·새벽에 나오면 "관리자 부재 확인" 정찰로 봅니다.
  • 활동 조회와 시스템 정보 조회(C01~03)가 연속되면 정찰 세트로 판정합니다.
  • 방치 서버(긴 uptime·드문 접속)는 지속성 위험이 높아 감시를 강화합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_c,recon,">
  <rule id="102030" level="7">
    <if_group>audit</if_group>
    <field name="audit.key">recon_activity</field>
    <time>18:00-08:00</time>
    <description>업무 외 시간 접속자·활동 정보 조회</description>
    <mitre><id>T1033</id></mitre>
  </rule>
</group>

T1033(System Owner/User Discovery) 계열에 매핑됩니다. 활동 조회는 C01 연속 조회 상관에도 포함합니다.

10. 대응 방법

  1. 초기 확인 — 활동 조회의 종류·시점·주체와 직후 행위를 확인합니다.
  2. 범위 확인 — "관리자 부재 확인 후 행동" 패턴인지 세션 흐름으로 확인합니다.
  3. 증거 확보 — 세션 조회 흐름과 utmp/wtmp 접근 흔적을 보존합니다.
  4. 차단/조치 — 탈취 세션이면 즉시 B영역 대응과 연계합니다.
  5. 재발 방지 — 업무 외 활동 조회 탐지와 정찰 상관을 운영합니다.

11. 핵심 정리

조회정보
uptime/loadavg가동 시간·부하(방치 여부)
w/who현재 접속자(관리자 부재)
last접속 패턴 학습
구분업무 시작 점검(정상) vs 새벽 부재 확인(정찰)
면접 포인트"w 조회는 '지금 들키지 않을까'를 재는 활동 타이밍 정찰"

12. 다음 편 예고

다음 편 105. Linux 정보 수집 — CPU 정보 접근 흔적 에서는 하드웨어 자원 정찰인 CPU 정보 접근 흔적을 다룹니다.


이전 편: 103. Linux 정보 수집 — hostname·시스템 식별 정보 조회 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글