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

선행 학습

1. 개념

PAM은 인증의 관문이므로, 공격자가 지속성·우회를 위해 노리는 대표 지점입니다. 변조는 두 가지 형태로 나뉩니다.

① 설정 변조  : /etc/pam.d/* 또는 system-auth 에 pam_permit, nullok 추가
                → 비밀번호 없이/틀려도 통과 (062편 우회 패턴)
② 모듈 변조  : /usr/lib64/security/*.so (Rocky) / /lib/x86_64-linux-gnu/security/*.so (Ubuntu)
                - 정상 모듈 교체(해시 변경)
                - 악성 .so 추가 후 스택에 삽입
                → 모든 인증을 통과시키거나 입력 자격증명을 외부에 기록

설정 변조는 텍스트라 FIM diff로 바로 보이지만, 모듈(.so) 변조는 바이너리 무결성 검증(A영역 025편)이 필요합니다.

2. 왜 중요한가

  • PAM 백도어는 성공 로그가 정상처럼 남아 로그만으로는 거의 티가 나지 않습니다. 파일 무결성·모듈 출처 확인이 핵심 탐지 수단입니다.
  • 설정에 모듈 한 줄 추가로 인증을 우회하거나, 교체된 모듈이 입력된 비밀번호를 파일로 남기는 방식이 알려져 있습니다(상세 기법은 다루지 않고 흔적 중심으로 설명).
  • PAM 모듈 디렉터리의 변경은 정상 운영에서는 패키지 업데이트일 때만 발생합니다.

3. 핵심 명령어 / 설정

점검명령
설정 변조grep -rnE 'pam_permit.so|nullok|pam_exec.so' /etc/pam.d/
모듈 목록·시각ls -la --time-style=long-iso /usr/lib64/security/ (Ubuntu: /lib/x86_64-linux-gnu/security/)
모듈 무결성rpm -Vf /usr/lib64/security/pam_unix.so / dpkg -V libpam-modules
패키지 미소속 모듈각 .so에 rpm -qf/dpkg -S → "not owned"
최근 변경 모듈find <모듈경로> -name '*.so' -mtime -7

4. 실습 (실습 예시)

MODDIR=/usr/lib64/security          # Ubuntu: /lib/x86_64-linux-gnu/security
# 1) 설정 변조 패턴
grep -rnE 'pam_permit\.so|nullok|pam_exec\.so|pam_python' /etc/pam.d/

# 2) 모듈 무결성 (패키지 기준 검증)
rpm -Vf $MODDIR/*.so 2>/dev/null | grep -vE '^\.\.\.\.\.\.\.\.\.'      # 변경된 것만
# Ubuntu: dpkg -V libpam-modules libpam-modules-bin

# 3) 패키지에 속하지 않은 .so 찾기
for f in $MODDIR/*.so; do rpm -qf "$f" >/dev/null 2>&1 || echo "NOT-OWNED $f"; done   # Ubuntu: dpkg -S

# 4) 최근 변경된 모듈
find $MODDIR -name '*.so' -mtime -7 -printf '%TY-%Tm-%Td %TH:%TM %p\n'

5. 정상 상태

$ grep -rnE 'pam_permit|nullok|pam_exec' /etc/pam.d/
/etc/pam.d/postlogin:... pam_exec ...     # 배포판 기본 사용처(정상)
$ rpm -Vf /usr/lib64/security/*.so | grep -vE '^\.{9}'
$ for f in $MODDIR/*.so; do ...; done
$ find $MODDIR -name '*.so' -mtime -7
$

설정에 비정상 패턴이 없고, 모든 모듈이 패키지 검증을 통과하며, 최근 변경된 모듈이 없는 상태가 정상입니다(pam_exec의 기본 사용처는 배포판 문서로 확인).

6. 이상 상태

$ grep -rn pam_permit /etc/pam.d/
/etc/pam.d/sshd:3:auth sufficient pam_permit.so
$ rpm -Vf /usr/lib64/security/pam_unix.so | grep pam_unix
S.5....T.    /usr/lib64/security/pam_unix.so
$ for f in $MODDIR/*.so; do ...; done
NOT-OWNED /usr/lib64/security/pam_sysmon.so
  • sshd 스택에 pam_permit.so sufficient → 인증 우회(062편 패턴)
  • pam_unix.so 해시 변경 → 핵심 인증 모듈 교체 (출력을 신뢰할 수 없으므로 외부 기준과 비교)
  • 패키지 미소속 pam_sysmon.so → 악성 모듈 추가 의심

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

PAM 변조 흔적입니다(가상의 예시 로그).

type=PATH msg=audit(1759341500.010:4101): item=1 name="/usr/lib64/security/pam_sysmon.so" nametype=CREATE key="pam_module"
type=SYSCALL msg=audit(1759341500.010:4101): syscall=257 success=yes auid=1002 uid=0 comm="cp" exe="/usr/bin/cp" key="pam_module"
type=PATH msg=audit(1759341520.100:4105): item=0 name="/etc/pam.d/sshd" nametype=NORMAL key="auth_conf"

** Wazuh FIM
File '/usr/lib64/security/pam_unix.so' modified. Mode: realtime
Size changed / SHA256 changed
관찰해석
모듈 디렉터리에 .so 생성(pam_module 키)악성 모듈 추가
pam_unix.so 해시 변경(FIM)정상 모듈 교체
직후 /etc/pam.d/sshd 수정추가·교체한 모듈을 스택에 연결

변조된 PAM은 인증 성공 로그가 정상처럼 남으므로, 파일 변경 이벤트가 사실상 유일한 조기 신호입니다.

8. SOC 관제 포인트

  • PAM 모듈 디렉터리와 /etc/pam.d/를 realtime FIM으로 감시합니다(패키지 업데이트 시각과 대조).
  • 패키지 미소속 .so, 핵심 모듈 해시 변경은 최상위 우선순위로 처리합니다.
  • PAM 변조가 확인되면 해당 서버의 인증 로그 전체를 신뢰할 수 없는 것으로 보고 대응 범위를 넓힙니다.

9. 탐지 규칙

<group name="local,syssec_b,pam,audit_tamper,">
  <rule id="101110" level="13">
    <if_sid>550,554</if_sid>
    <field name="file" type="pcre2">/security/pam_\S+\.so$</field>
    <description>PAM 모듈(.so) 변경/추가: 인증 백도어 의심</description>
  </rule>
  <rule id="101111" level="12">
    <if_sid>550</if_sid>
    <field name="file" type="pcre2">^/etc/pam\.d/</field>
    <description>PAM 설정 파일 변경</description>
  </rule>
</group>

FIM이 모듈 디렉터리를 감시하도록 agent syscheck에 해당 경로를 추가해야 합니다. 패키지 업데이트로 인한 대량 변경은 048편 방식으로 정탐/정상 구분합니다.

10. 대응 방법

  1. 초기 확인 — 변경된 PAM 설정·모듈과 시각·행위자, 패키지 소속 여부를 확인합니다.
  2. 범위 확인 — 변조 이후의 인증 성공 로그 전체를 의심 대상으로 보고 범위를 확인합니다.
  3. 증거 확보 — PAM 설정·모듈 사본(해시), FIM diff, audit 로그를 보존합니다(모듈은 오프라인 분석).
  4. 차단/조치 — 표준 PAM 복원(패키지 재설치), 악성 모듈 제거, 영향 계정 비밀번호 교체를 진행합니다. 핵심 모듈 교체 시 서버 재구축을 검토합니다.
  5. 재발 방지 — PAM 경로 realtime FIM과 모듈 변경 룰을 상시 운영합니다.

11. 핵심 정리

변조 유형탐지 수단
설정 변조(pam_permit, nullok)grep, /etc/pam.d FIM
모듈 추가(미소속 .so)rpm -qf/dpkg -S, 모듈 디렉터리 FIM
모듈 교체(해시 변경)rpm -Vf/dpkg -V, FIM
공통인증 성공 로그는 정상처럼 남음 → 파일 변경이 조기 신호
면접 포인트"PAM 백도어는 로그가 깨끗하다 — 무결성 검증이 유일한 조기 탐지"

12. 다음 편 예고

다음 편 064. 계정 · 인증 보안 — 계정 잠금 — pam_faillock 설정과 해제 에서는 반복 실패를 막는 계정 잠금(pam_faillock) 설정과 해제를 다룹니다.


이전 편: 062. 계정 · 인증 보안 — PAM 스택 구조와 control flag 해석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글