416. 지속성·재침투 — 자격증명 재설정·해시 교체 탐지

changseop lee·6일 전

시스템 보안 · 취약점

목록 보기
416/450

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

선행 학습

1. 개념

새 계정이나 키를 만들지 않고 기존 계정의 비밀번호를 공격자가 아는 값으로 바꾸는 방식도 지속성입니다. 특히 서비스 계정·휴면 계정처럼 소유자가 바로 알아차리기 어려운 계정이 대상이 됩니다(T1098).

자격증명 재설정 경로
 passwd <user>             → USER_CHAUTHTOK, secure 로그
 echo 'u:pw' | chpasswd    → 배치 변경, 여러 계정 동시
 /etc/shadow 직접 편집     → 해시 필드 교체, 도구 로그 없음
 usermod -p '<hash>'       → 미리 만든 해시 주입
흔적: shadow 3번째 필드(마지막 변경일) 갱신 여부

핵심: shadow의 "마지막 변경일"과 변경 도구를 함께 본다

직접 편집이나 usermod -p는 마지막 변경일 필드를 그대로 둘 수도 있어 파일 감시 기록이 결정적인 근거가 됩니다.

2. 왜 중요한가

  • 비밀번호 변경은 정상 업무에서도 자주 일어나 지속성으로 잘 의심받지 않습니다.
  • 여러 계정을 한 번에 바꾸면 재침투 경로가 동시에 여러 개 생깁니다.
  • 정당한 소유자가 로그인에 실패하기 전까지 드러나지 않습니다.

3. 핵심 명령어 / 설정

확인명령 / 로그포인트
변경 이벤트ausearch -m USER_CHAUTHTOK -i변경자·대상
변경일chage -l <user>Last password change
직접 편집ausearch -k account_persist -f /etc/shadowexe
일괄 변경grep chpasswd /var/log/secure동시 다수

4. 실습 (실습 예시)

# 자격증명 재설정 점검 (분석 방법)
sudo ausearch -m USER_CHAUTHTOK -ts recent -i 2>/dev/null | grep -E 'acct=|auid=|exe=|res=' | tail
# shadow를 쓴 프로그램 집계
sudo ausearch -k account_persist -f /etc/shadow -i 2>/dev/null | grep -oE 'exe=[^ ]+' | sort | uniq -c
# 최근 7일 내 비밀번호가 바뀐 계정 (shadow 3번째 필드)
today=$(( $(date +%s) / 86400 )); sudo awk -F: -v t=$today '$3!="" && t-$3<=7{print $1, t-$3"일 전"}' /etc/shadow

5. 정상 상태

USER_CHAUTHTOK acct=kim.dev auid=kim.dev exe=/usr/bin/passwd res=success (본인 변경)
shadow 수정 exe: /usr/bin/passwd, /usr/sbin/usermod

사용자가 본인 비밀번호를 passwd로 바꾸거나, 관리자가 티켓에 따라 변경한 기록만 있는 상태가 정상입니다.

6. 이상 상태

USER_CHAUTHTOK acct=oldsvc auid=webadmin exe=/usr/sbin/chpasswd (03:05)
USER_CHAUTHTOK acct=backup auid=webadmin exe=/usr/sbin/chpasswd (03:05)
shadow 수정 exe: /usr/bin/python3 (03:07)
  • 한 사용자가 같은 시각 여러 계정 비밀번호를 일괄 변경 → 다중 재침투 경로
  • python3가 shadow를 직접 수정 → 해시 주입 의심
  • 변경 대상이 서비스·휴면 계정 → 소유자가 알아차리기 어려운 계정 선택

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

자격증명 재설정 분석 흐름입니다(가상의 예시).

[변경 이벤트] USER_CHAUTHTOK / shadow 감시
   ↓
[주체·대상] auid ≠ acct (타인 비밀번호 변경) ?
   ↓
[방식] passwd·chpasswd·직접 편집·usermod -p
   ↓
[사용] 변경 이후 해당 계정 로그인(출발지·방식)
신호해석
auid ≠ acct타인 계정 변경
일괄 변경다중 경로 확보
직접 편집로그 회피

자기 계정이 아닌 비밀번호 변경은 관리자 업무일 수 있으므로 티켓과 대조하되, 대상이 서비스·휴면 계정이면 우선순위를 높입니다.

8. SOC 관제 포인트

  • "auid ≠ acct"인 비밀번호 변경을 별도 Alert로 분리합니다.
  • 같은 주체의 다계정 일괄 변경은 상관 룰로 묶습니다.
  • 사고 조사 시 침투 이후 바뀐 모든 비밀번호를 다시 교체합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_i,persistence,">
  <rule id="108150" level="10">
    <if_sid>108000</if_sid>
    <field name="audit.type">USER_CHAUTHTOK</field>
    <field name="audit.exe" type="pcre2">/chpasswd$|/usermod$</field>
    <description>chpasswd·usermod를 통한 비밀번호 변경(자격증명 재설정 지속성 의심)</description>
    <mitre><id>T1098</id></mitre>
  </rule>
  <rule id="108151" level="12" frequency="3" timeframe="300">
      <if_matched_sid>108150</if_matched_sid>
      <same_field>audit.auid</same_field>
      <description>동일 사용자 5분 내 다계정 비밀번호 변경</description>
      <mitre><id>T1098</id></mitre>
    </rule>
</group>

일괄·주입형 변경 도구를 1차로 잡고, 같은 auid가 짧은 시간에 여러 번 반복하면 상관 룰(108151)로 레벨을 높입니다.

10. 대응 방법

  1. 초기 확인 — 변경된 계정 목록·변경 주체·방식을 확인합니다.
  2. 범위 확인 — 변경 이후 해당 계정들의 로그인과 행위를 확인합니다.
  3. 증거 확보 — USER_CHAUTHTOK 기록·shadow 사본을 보존합니다.
  4. 차단/조치 — 영향 계정의 비밀번호를 다시 교체하고 세션을 종료합니다.
  5. 재발 방지 — 타인 계정 비밀번호 변경을 승인 절차와 경보로 관리합니다.

11. 핵심 정리

경로탐지
passwd·chpasswdUSER_CHAUTHTOK
직접 편집shadow 감시
일괄 변경상관 룰
사용변경 후 로그인
면접 포인트"새 계정 없이 기존 계정의 열쇠를 바꾼다 — 누가 남의 비밀번호를 바꿨는가"

12. 다음 편 예고

다음 편 417. 지속성·재침투 — SSH 인증서·신뢰 CA 악용 탐지 에서는 TrustedUserCAKeys·AuthorizedPrincipalsFile 변조로 공격자 CA가 서명한 인증서를 무제한 발급해 재침투하는 경로를 탐지하는 방법을 다룹니다.


이전 편: 415. 지속성·재침투 — sudoers 지속성 규칙 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글