274. 프로세스·지속성 — LD_PRELOAD·동적 라이브러리 지속성 탐지

changseop lee·2026년 10월 7일

시스템 보안 · 취약점

목록 보기
274/450

시스템 보안 · 취약점 › F. 비정상 프로세스 · 지속성 징후 · 24/50편 (전체 274/450)
학습 단계: 지속성(persistence) 메커니즘
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

동적 링커는 프로그램 실행 시 공유 라이브러리를 로드합니다. 공격자는 LD_PRELOAD나 /etc/ld.so.preload로 악성 라이브러리를 먼저 로드시켜, 정상 함수를 가로채거나(후킹) 모든 프로세스에 코드를 주입합니다.

동적 라이브러리 지속성·후킹
 /etc/ld.so.preload: 모든 프로세스에 라이브러리 강제 로드(전역)
 LD_PRELOAD 환경변수: 특정 실행에 라이브러리 주입
 함수 후킹: open/read 등을 가로채 은닉·자격증명 탈취
 사용자 rootkit: 라이브러리 수준 프로세스·파일 은닉

위험: 전역 후킹 → 은닉·자격증명 탈취·모든 프로세스 영향

/etc/ld.so.preload는 모든 동적 링크 프로세스에 라이브러리를 강제 로드시켜, 가장 강력한 라이브러리 수준 지속성·rootkit이 됩니다.

2. 왜 중요한가

  • /etc/ld.so.preload는 모든 프로세스에 라이브러리를 주입해 전역 후킹·은닉을 가능하게 합니다.
  • 함수 후킹(open·readdir 등)은 파일·프로세스 은닉, 자격증명 탈취에 쓰입니다.
  • 라이브러리 수준 rootkit은 ls·ps 등의 출력을 조작해 탐지를 회피합니다.

3. 핵심 명령어 / 설정

메커니즘범위위험
/etc/ld.so.preload전역(모든 프로세스)매우 높음
LD_PRELOAD 환경변수특정 실행높음
함수 후킹은닉·탈취매우 높음
비표준 .so 로드라이브러리 주입높음
정상 라이브러리정상정상

4. 실습 (실습 예시)

# LD_PRELOAD·라이브러리 지속성 탐지 (분석 방법)
# ld.so.preload 존재·내용(비어있어야 정상인 경우 많음)
cat /etc/ld.so.preload 2>/dev/null
sudo ausearch -k persist -i --start recent 2>/dev/null | grep 'ld.so.preload'
# 프로세스 환경변수의 LD_PRELOAD(비정상 주입)
for p in /proc/[0-9]*; do tr '\0' '\n' < $p/environ 2>/dev/null | grep -q '^LD_PRELOAD=' && echo "$p: $(grep -a LD_PRELOAD $p/environ)"; done 2>/dev/null | grep -vE '/usr/lib'

5. 정상 상태

$ (ld.so.preload) (없음 또는 비어있음)
$ (LD_PRELOAD 환경변수) (없음 또는 정상 라이브러리)

/etc/ld.so.preload가 비어있거나 정상이고, 프로세스에 비정상 LD_PRELOAD 주입이 없는 상태가 정상입니다.

6. 이상 상태

$ (ld.so.preload)
/tmp/.so
04:13 /etc/ld.so.preload 변경(watch)
$ (LD_PRELOAD 환경변수)
/proc/3400: LD_PRELOAD=/dev/shm/.hook.so
  • /etc/ld.so.preload에 /tmp/.so → 모든 프로세스에 악성 라이브러리 전역 주입
  • 프로세스에 LD_PRELOAD=/dev/shm/.hook.so → 함수 후킹(은닉·탈취)
  • 전역 preload·비표준 .so 주입 → 라이브러리 rootkit → 정탐(최고 위험)

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

LD_PRELOAD 지속성·후킹 분석입니다(가상의 예시).

[전역 주입] /etc/ld.so.preload: /tmp/.so
   ↓
[로드] 모든 동적 링크 프로세스가 /tmp/.so 먼저 로드
   ↓
[후킹] open/readdir/read 가로채기
   ├ 파일·프로세스 은닉(ls·ps에서 숨김)
   ├ 자격증명 탈취(비밀번호 입력 가로채기)
   └ 백도어 인증
 = 전역 라이브러리 rootkit(가장 강력)
메커니즘효과
ld.so.preload전역 주입
함수 후킹은닉·탈취
readdir 후킹파일 숨김
전역 영향모든 프로세스

ld.so.preload 변경은 라이브러리 rootkit의 결정적 지표입니다.

8. SOC 관제 포인트

  • LD_PRELOAD·ld.so.preload는 악성 라이브러리를 먼저 로드시켜 후킹·은닉·탈취를 수행합니다.
  • /etc/ld.so.preload는 모든 프로세스에 전역 주입되어 가장 강력한 라이브러리 rootkit입니다.
  • preload 파일 변경·비정상 LD_PRELOAD 환경변수를 탐지합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,persistence,">
  <rule id="105230" level="14">
    <if_sid>105060</if_sid>
    <field name="audit.file" type="pcre2">/etc/ld\.so\.preload|/etc/ld\.so\.conf</field>
    <description>동적 링커 preload 변경(라이브러리 rootkit·전역 후킹)</description>
    <mitre><id>T1574.006</id></mitre>
  </rule>
</group>

/etc/ld.so.preload는 FIM 최우선 감시 대상입니다. 비정상 LD_PRELOAD 환경변수는 프로세스 점검으로 보완합니다.

10. 대응 방법

  1. 초기 확인 — ld.so.preload 내용·LD_PRELOAD 환경변수·주입 라이브러리를 확인합니다.
  2. 범위 확인 — 전역 주입·함수 후킹·은닉 효과(ls·ps 조작)를 확인합니다.
  3. 증거 확보 — preload 파일·주입 라이브러리·변경 이벤트를 보존합니다.
  4. 차단/조치 — 라이브러리 rootkit 정탐이면 preload 제거·라이브러리 격리·전체 무결성 점검을 진행합니다.
  5. 재발 방지 — LD_PRELOAD·preload 지속성 탐지를 최우선 FIM으로 운영합니다.

11. 핵심 정리

메커니즘범위
/etc/ld.so.preload전역(모든 프로세스)
LD_PRELOAD 변수특정 실행
함수 후킹은닉·탈취
비표준 .so라이브러리 주입
면접 포인트"ld.so.preload는 전역 후킹 rootkit — 모든 프로세스에 주입, FIM 최우선 감시"

12. 다음 편 예고

다음 편 275. 프로세스·지속성 — SSH authorized_keys 지속성 탐지 에서는 SSH authorized_keys 지속성을 다루는 SSH authorized_keys 지속성 탐지를 다룹니다.


이전 편: 273. 프로세스·지속성 — init·rc 스크립트 지속성 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글