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

선행 학습

1. 개념

공격자는 침입한 서버에 어떤 도구가 이미 있는가(추가 설치 없이 쓸 수 있는 것)를 확인합니다. 컴파일러(gcc)·인터프리터(python·perl)·네트워크 도구(curl·wget·nc)의 존재는 공격 가능성을 좌우합니다. 이를 LOLBins(Living off the Land) 탐색이라 합니다.

도구 존재 확인
 which gcc python3 curl   → 경로 확인(있으면 사용 가능)
 whereis nc socat         → 바이너리 위치
 type -a python           → 셸이 찾는 경로
 /proc/[PID]/exe          → 실행 중 바이너리 경로

목적: 추가 설치(A영역 24편 탐지) 없이 기존 도구로 공격
      → 설치 흔적을 남기지 않는 LOLBins 전략

A영역 24편이 "도구 설치 탐지"였다면, 여기서는 설치 없이 기존 도구를 탐색하는 정찰입니다. 설치보다 조용합니다.

2. 왜 중요한가

  • 기존 도구(LOLBins)를 쓰면 설치 로그(A영역 24편)를 남기지 않아 탐지가 어렵습니다. 그래서 도구 탐색 단계가 탐지 기회입니다.
  • gcc 존재 확인은 커널 익스플로잇 컴파일 가능성(C02 커널 정찰과 연계)을, curl/nc 존재는 외부 통신·데이터 유출 가능성을 시사합니다.
  • 짧은 시간에 여러 도구를 which로 확인하는 패턴은 LOLBins 탐색의 전형입니다.

3. 핵심 명령어 / 설정

조회정보
which gcc python curl도구 경로
whereis nc socat바이너리 위치
type -a셸 탐색 경로
/proc/[PID]/exe실행 바이너리
관심컴파일러·인터프리터·네트워크 도구

4. 실습 (실습 예시)

# 도구 탐색 감사 (실습 예시)
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/which -F auid>=1000 -F auid!=unset -k recon_tool
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/whereis -F auid>=1000 -F auid!=unset -k recon_tool

# 짧은 시간 다수 도구 탐색인지 (분석 방법)
sudo ausearch -k recon_tool -i --start recent | grep -E 'which|whereis' | tail
sudo ausearch --session 12 -i 2>/dev/null | grep -E 'which|whereis' | tail -10

5. 정상 상태

$ sudo ausearch -k recon_tool -i --start today | grep which | tail -1
11:00:02 auid=admin1 ses=8 comm="which" a1="python3"  (스크립트 작업)

관리자가 작업 중 특정 도구 경로를 확인하는 단발 which는 정상입니다. 다수 도구 연속 확인이 이상 신호입니다.

6. 이상 상태

02:15:30 auid=devops ses=12 comm="which" a1="gcc"
02:15:31 auid=devops ses=12 comm="which" a1="python3"
02:15:32 auid=devops ses=12 comm="which" a1="curl"
02:15:33 auid=devops ses=12 comm="which" a1="nc"
  • gcc·python·curl·nc를 4초 내 연속 탐색 → LOLBins 전수 조사
  • 컴파일러·인터프리터·네트워크 도구 조합 → 공격 역량 파악
  • 설치(A영역 24편) 없이 기존 도구 탐색 → 조용한 준비

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

도구 탐색 정찰 흐름입니다(가상의 예시 로그).

type=EXECVE ... a0="which" a1="gcc"
type=SYSCALL ... auid=devops ses=12 comm="which" key="recon_tool"
type=EXECVE ... a0="which" a1="nc"
관찰해석
which gcc컴파일 가능성(커널 익스플로잇)
which python/perl스크립트 실행 가능
which curl/nc외부 통신·유출
연속 탐색LOLBins 전수 조사

탐색 뒤 그 도구를 이용한 행위(F영역 비정상 프로세스·외부 연결)가 이어지는지 연계합니다.

8. SOC 관제 포인트

  • 짧은 시간 다수 도구 연속 탐색(which/whereis)을 LOLBins 정찰로 봅니다.
  • gcc·인터프리터·네트워크 도구 조합 탐색은 공격 역량 파악 신호입니다.
  • 탐색 뒤 해당 도구 사용(F영역)·외부 통신(C16)을 연계 감시합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_c,recon,">
  <rule id="102320" level="8" frequency="4" timeframe="60">
    <if_group>audit</if_group>
    <field name="audit.key">recon_tool</field>
    <same_field field="audit.session" />
    <description>단시간 다수 도구 경로 탐색(LOLBins 정찰)</description>
    <mitre><id>T1518</id></mitre>
  </rule>
</group>

T1518(Software Discovery)에 매핑됩니다. 도구 탐색은 프로세스 정찰 세트(140편)에 포함합니다.

10. 대응 방법

  1. 초기 확인 — 도구 탐색의 종류·밀도·주체와 탐색된 도구(gcc·nc 등)를 확인합니다.
  2. 범위 확인 — 탐색 뒤 해당 도구 사용·외부 통신(F·C16)이 이어졌는지 확인합니다.
  3. 증거 확보 — 세션 조회 흐름을 보존합니다.
  4. 차단/조치 — 탈취 세션이면 B영역 대응과 불필요 도구 제거를 검토합니다.
  5. 재발 방지 — 도구 탐색을 프로세스 정찰 상관에 포함합니다.

11. 핵심 정리

조회정보
which/whereis도구 경로
type -a셸 탐색 경로
관심 도구gcc·python·perl·curl·nc·socat
구분단발 확인(정상) vs 다수 연속 탐색(LOLBins 정찰)
면접 포인트"기존 도구 탐색(LOLBins)은 설치 흔적 없는 조용한 공격 준비"

12. 다음 편 예고

다음 편 134. Linux 정보 수집 — 서비스 목록 조회 에서는 서비스 구성 정찰인 서비스 목록 조회를 다룹니다.


이전 편: 132. Linux 정보 수집 — 프로세스 트리 확인 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글