시스템 보안 · 취약점 › I. 지속성 · 재침투 징후 · 18/50편 (전체 418/450)
학습 단계: 계정·인증 지속성 탐지
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

계정·인증 지속성은 "누구로, 어떤 인증으로 다시 들어오는가"의 문제입니다. 지금까지 다룬 아홉 가지 기법을 계정·인증 수단·권한 세 층으로 묶어 정리합니다.

계정·인증 지속성 3층 구조
 [계정 층]   백도어 계정(I09) · UID 0(I10) · 휴면 재활성화(I11)
 [인증 층]   SSH 키(I12) · sshd 설정(I13) · PAM(I14)
             자격증명 재설정(I16) · SSH CA(I17)
 [권한 층]   sudoers 규칙(I15)
   ↓
 재침투: 계정 + 인증 수단 + 권한 이 한 세트로 준비됨

핵심: 한 층만 제거하면 나머지 층으로 복귀

공격자는 보통 계정·인증·권한을 한 세트로 준비합니다. 예를 들어 휴면 계정을 살리고(계정), 키를 넣고(인증), NOPASSWD를 주는(권한) 식입니다.

2. 왜 중요한가

  • 층별로 전수 점검해야 근절 후 재침투를 막을 수 있습니다.
  • 같은 주체·같은 시간대의 계정·인증 변경을 묶으면 지속성 세트가 드러납니다.
  • 면접·보고서에서 계정 지속성을 체계적으로 설명하는 틀이 됩니다.

3. 핵심 명령어 / 설정

기법주 근거룰 ID
백도어 계정passwd 감시108080
UID 0USER_MGMT108090
휴면 재활성화USER_MGMT108100
SSH 키authorized_keys 감시108110
sshd 설정persist_ssh108120
PAMpersist_pam108130
sudoerssudoers 감시108140
자격증명USER_CHAUTHTOK108150
SSH CApersist_ssh108160

4. 실습 (실습 예시)

# 계정·인증 지속성 일괄 점검 (분석 방법)
echo "[계정]";  awk -F: '$3==0||($3>=1000&&$7!~/nologin|false/){print $1,$3,$6,$7}' /etc/passwd
echo "[키]";    sudo find / -xdev -name 'authorized_keys*' -exec ssh-keygen -lf {} \; 2>/dev/null
echo "[sshd]";  sudo sshd -T | grep -iE '^(authorizedkeysfile|permitrootlogin|port|trustedusercakeys) '
echo "[PAM]";   rpm -V pam 2>/dev/null || dpkg --verify libpam-modules
echo "[sudo]";  sudo grep -rhE 'NOPASSWD' /etc/sudoers /etc/sudoers.d/ 2>/dev/null
echo "[변경]";  sudo ausearch -m USER_MGMT,USER_CHAUTHTOK -ts this-week -i 2>/dev/null | grep -c type=

5. 정상 상태

[계정] root 0 / kim.dev 1005 ...  (기준선 일치)
[키] 기준선 지문만   [sshd] 기준선 일치
[PAM] 이상 없음      [sudo] NOPASSWD 없음

세 층 모두 기준선과 일치하고 이번 주 계정 변경이 모두 티켓으로 설명되는 상태가 정상입니다.

6. 이상 상태

[계정] oldsvc 셸 bash 로 변경, backup UID 0
[키] /root 신규 지문 SHA256:Qm3...
[sudo] apache NOPASSWD: /usr/bin/python3
[변경] auid=webadmin, 02:51~03:07 사이 집중
  • 세 층 모두에서 변경 → 계정·인증·권한 지속성 세트
  • 같은 주체가 16분 안에 집중 수행 → 단일 공격 단계
  • 한 층만 복구하면 재침투 가능 → 전 층 동시 근절 필요

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

계정·인증 지속성 종합 판정 흐름입니다(가상의 예시).

[층별 점검] 계정 → 인증 → 권한
   ↓
[주체·시간 묶기] 같은 auid · 30분 창
   ↓
[세트 판정] 2개 층 이상 변경 = 지속성 세트
   ↓
[사용 확인] 세트 구성 계정의 재침투 로그인
   ↓
[근절] 3층 동시 제거 → 재침투 감시
층제거 대상
계정백도어·UID 0·재활성화 계정
인증키·CA·sshd·PAM·비밀번호
권한sudoers 규칙

근절 순서는 "인증 수단 차단 → 세션 종료 → 계정·권한 정리"가 안전합니다. 세션을 먼저 끊으면 공격자가 남은 경로로 바로 복귀할 수 있습니다.

8. SOC 관제 포인트

  • 계정·인증 관련 Alert를 같은 auid·시간 창으로 묶어 한 인시던트로 관리합니다.
  • 2개 층 이상 변경은 자동으로 높은 우선순위를 부여합니다.
  • 근절 체크리스트에 9개 기법을 모두 포함합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_i,persistence,">
  <rule id="108170" level="14">
    <if_matched_sid>108110</if_matched_sid>
    <if_group>persistence</if_group>
    <same_field>audit.auid</same_field>
    <timeframe>1800</timeframe>
    <description>SSH 키 추가 후 30분 내 동일 사용자의 추가 계정·권한 지속성(지속성 세트)</description>
    <mitre><id>TA0003</id></mitre>
  </rule>
</group>

SSH 키 추가(108110)를 기점으로 같은 사용자가 다른 지속성 이벤트를 만들면 "지속성 세트"로 보고 최고 수준으로 경보하는 상관 룰 예시입니다.

10. 대응 방법

  1. 초기 확인 — 세 층의 변경 사항을 모두 목록화합니다.
  2. 범위 확인 — 같은 주체·시간대의 변경을 묶어 세트 범위를 확정합니다.
  3. 증거 확보 — 층별 근거 로그와 파일 사본을 보존합니다.
  4. 차단/조치 — 인증 수단 차단 → 세션 종료 → 계정·권한 정리 순으로 동시 근절합니다.
  5. 재발 방지 — 층별 기준선과 상관 룰로 재발을 감시합니다.

11. 핵심 정리

층기법
계정백도어·UID 0·휴면
인증키·sshd·PAM·자격증명·CA
권한sudoers
원칙3층 동시 근절
면접 포인트"계정·인증·권한은 한 세트 — 한 층만 지우면 나머지 층으로 돌아온다"

12. 다음 편 예고

다음 편 419. 지속성·재침투 — cron 기반 지속성 탐지 에서는 crontab·cron.d·cron.hourly 등 cron 위치에 심은 주기 실행 지속성을 작성 주체·내용·실행 기록으로 탐지하는 방법을 다룹니다.


이전 편: 417. 지속성·재침투 — SSH 인증서·신뢰 CA 악용 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글