413. 지속성·재침투 — sshd 설정 변조를 통한 재침투 경로 탐지

changseop lee·5일 전

시스템 보안 · 취약점

목록 보기
413/450

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

선행 학습

1. 개념

authorized_keys를 직접 건드리지 않고 sshd 설정을 바꿔 출입문을 새로 만드는 방법도 있습니다. 키 파일 위치를 바꾸거나, root 로그인을 허용하거나, 다른 포트를 하나 더 여는 방식입니다.

sshd 설정 변조 유형
 AuthorizedKeysFile .ssh/authorized_keys /etc/.k/%u   ← 숨은 키 경로 추가
 PermitRootLogin yes                                   ← root 직접 접속 허용
 Port 22 + Port 2222                                    ← 감시 밖 포트 추가
 PasswordAuthentication yes (Match Address 203.0.113.*) ← 특정 출발지만 완화
 drop-in: /etc/ssh/sshd_config.d/00-x.conf             ← 먼저 읽혀 우선 적용

핵심: 파일보다 "sshd -T 실효 설정"을 기준선으로 비교

A영역 9편에서 본 것처럼 drop-in 파일은 먼저 읽힌 값이 우선합니다. 공격자는 본 설정 파일은 그대로 두고 drop-in만 추가할 수 있습니다.

2. 왜 중요한가

  • 설정 변조는 키 파일 감시를 우회하는 새 인증 경로를 만듭니다.
  • sshd 재시작 전까지는 효과가 없어 변경과 재시작 사이의 시간차가 단서가 됩니다.
  • Match 블록 완화는 특정 출발지에만 적용되어 일반 점검에서 놓치기 쉽습니다.

3. 핵심 명령어 / 설정

확인명령포인트
실효 설정sshd -T기준선 diff
조건부 설정sshd -T -C user=root,addr=203.0.113.5,host=xMatch 결과
drop-inls -la /etc/ssh/sshd_config.d/신규 파일
리스닝ss -lntp | grep sshd추가 포트
재시작journalctl -u sshdServer listening on

4. 실습 (실습 예시)

# sshd 실효 설정 기준선 비교 (분석 방법)
sudo sshd -T | sort > /tmp/sshd_now.txt
diff /root/baseline/sshd_T.txt /tmp/sshd_now.txt
sudo sshd -T | grep -iE '^(authorizedkeysfile|permitrootlogin|port|passwordauthentication) '
ls -la --time-style=full-iso /etc/ssh/sshd_config.d/
sudo journalctl -u sshd --since "-7d" | grep -E 'Server listening|Received signal'

5. 정상 상태

authorizedkeysfile .ssh/authorized_keys
permitrootlogin no
port 22
passwordauthentication no

실효 설정이 기준선과 같고, 리스닝 포트가 22번 하나이며 drop-in 디렉터리에 승인된 파일만 있는 상태가 정상입니다.

6. 이상 상태

> authorizedkeysfile .ssh/authorized_keys /etc/.k/%u
> permitrootlogin yes
> port 2222
sshd_config.d/00-perf.conf (02:58 생성, 패키지 소유 아님)
sshd: Server listening on 0.0.0.0 port 2222.
  • 숨은 키 경로 추가 → authorized_keys 감시 우회
  • root 직접 로그인 허용 + 추가 포트 → 새 재침투 출입문
  • "성능" 이름의 drop-in이 먼저 읽혀 적용 → 위장된 설정 변조

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

sshd 설정 변조 분석 흐름입니다(가상의 예시).

[변경 감지] /etc/ssh 감시(auditd·FIM)
   ↓
[실효 비교] sshd -T 기준선 diff → 바뀐 지시어 확정
   ↓
[적용 여부] sshd 재시작·신규 포트 리스닝 시각
   ↓
[사용 여부] 추가 포트·숨은 키 경로로 들어온 로그인
변조재침투 효과
AuthorizedKeysFile숨은 키 사용
PermitRootLoginroot 직접 접속
Port 추가감시 밖 출입문
Match 완화특정 출발지 비밀번호 허용

/etc/.k/ 같은 숨은 키 경로가 발견되면 그 안의 키 지문과 해당 지문의 로그인까지 함께 추적해야 합니다.

8. SOC 관제 포인트

  • sshd -T 출력 해시를 기준선으로 정기 비교합니다.
  • sshd 재시작 이벤트는 설정 변경 승인 기록과 반드시 대조합니다.
  • 방화벽에서 승인되지 않은 SSH 포트를 차단해 설정 변조의 효과를 줄입니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_i,persistence,">
  <rule id="108120" level="12">
    <if_sid>108000</if_sid>
    <field name="audit.key">persist_ssh</field>
    <field name="audit.file.name" type="pcre2">^/etc/ssh/sshd_config(\.d/.*)?$</field>
    <description>sshd 설정 파일·drop-in 변경(재침투 경로 생성 의심)</description>
    <mitre><id>T1098</id></mitre>
  </rule>
</group>

/etc/ssh/를 persist_ssh 키로 감시하고, 정기 점검에서 sshd -T 차이가 나면 별도 이벤트로 남겨 두 신호를 함께 봅니다.

10. 대응 방법

  1. 초기 확인 — 바뀐 지시어와 drop-in 파일, 적용(재시작) 시점을 확인합니다.
  2. 범위 확인 — 숨은 키 경로·추가 포트를 통한 로그인 기록을 확인합니다.
  3. 증거 확보 — 설정 파일 사본과 sshd -T 출력, 재시작 로그를 보존합니다.
  4. 차단/조치 — 설정을 기준선으로 복원하고 sshd를 재시작한 뒤 숨은 키 파일을 제거합니다.
  5. 재발 방지 — sshd -T 기준선 비교와 SSH 포트 방화벽 정책을 유지합니다.

11. 핵심 정리

변조확인
키 경로authorizedkeysfile
root 허용permitrootlogin
포트port·ss
drop-insshd_config.d 신규 파일
면접 포인트"키 파일을 안 건드리고 문을 새로 낸다 — sshd -T 실효 설정을 기준선으로"

12. 다음 편 예고

다음 편 414. 지속성·재침투 — PAM 백도어 모듈 탐지 에서는 악성 pam_*.so 모듈 추가·교체와 pam.d 설정 변조로 만든 인증 백도어를 패키지 검증·해시·감사 로그로 탐지하는 방법을 다룹니다.


이전 편: 412. 지속성·재침투 — SSH authorized_keys 백도어 키 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글