시스템 보안 · 취약점 › I. 지속성 · 재침투 징후 · 13/50편 (전체 413/450)
학습 단계: 계정·인증 지속성 탐지
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
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만 추가할 수 있습니다.
| 확인 | 명령 | 포인트 |
|---|---|---|
| 실효 설정 | sshd -T | 기준선 diff |
| 조건부 설정 | sshd -T -C user=root,addr=203.0.113.5,host=x | Match 결과 |
| drop-in | ls -la /etc/ssh/sshd_config.d/ | 신규 파일 |
| 리스닝 | ss -lntp | grep sshd | 추가 포트 |
| 재시작 | journalctl -u sshd | Server listening on |
# 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'
authorizedkeysfile .ssh/authorized_keys
permitrootlogin no
port 22
passwordauthentication no
실효 설정이 기준선과 같고, 리스닝 포트가 22번 하나이며 drop-in 디렉터리에 승인된 파일만 있는 상태가 정상입니다.
> 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.
sshd 설정 변조 분석 흐름입니다(가상의 예시).
[변경 감지] /etc/ssh 감시(auditd·FIM)
↓
[실효 비교] sshd -T 기준선 diff → 바뀐 지시어 확정
↓
[적용 여부] sshd 재시작·신규 포트 리스닝 시각
↓
[사용 여부] 추가 포트·숨은 키 경로로 들어온 로그인
| 변조 | 재침투 효과 |
|---|---|
| AuthorizedKeysFile | 숨은 키 사용 |
| PermitRootLogin | root 직접 접속 |
| Port 추가 | 감시 밖 출입문 |
| Match 완화 | 특정 출발지 비밀번호 허용 |
/etc/.k/ 같은 숨은 키 경로가 발견되면 그 안의 키 지문과 해당 지문의 로그인까지 함께 추적해야 합니다.
<!-- 실습 예시 룰: 적용 전 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 차이가 나면 별도 이벤트로 남겨 두 신호를 함께 봅니다.
| 변조 | 확인 |
|---|---|
| 키 경로 | authorizedkeysfile |
| root 허용 | permitrootlogin |
| 포트 | port·ss |
| drop-in | sshd_config.d 신규 파일 |
| 면접 포인트 | "키 파일을 안 건드리고 문을 새로 낸다 — sshd -T 실효 설정을 기준선으로" |
다음 편 414. 지속성·재침투 — PAM 백도어 모듈 탐지 에서는 악성 pam_*.so 모듈 추가·교체와 pam.d 설정 변조로 만든 인증 백도어를 패키지 검증·해시·감사 로그로 탐지하는 방법을 다룹니다.
이전 편: 412. 지속성·재침투 — SSH authorized_keys 백도어 키 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점