시스템 보안 · 취약점 › G. 내부 확장 · 측면 이동 징후 · 27/50편 (전체 327/450)
학습 단계: 원격 실행·서비스 악용
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
포트 포워딩·SSH 터널링은 거점 호스트를 중계점으로 삼아 내부 서비스에 접근하거나 트래픽을 은닉하는 피벗 기법입니다. 공격자는 접근 가능한 호스트를 경유해, 직접 닿지 못하는 내부 세그먼트로 이동합니다.
포트 포워딩·SSH 터널링
로컬 포워딩(-L): 내 포트 → 거점 경유 → 내부 서비스
원격 포워딩(-R): 거점 포트 → 내 쪽(리버스)
동적 포워딩(-D): SOCKS 프록시 → 내부 전체 접근
특징: 하나의 터널로 다수 내부 접근 중계
핵심: 거점을 경유해 내부 세그먼트 접근
F37(C2 터널링)이 외부 유출 관점이라면, 여기서는 내부 피벗(거점 경유 측면 이동) 관점에 집중합니다. ssh -L/-R/-D 옵션과 거점의 중계 연결이 신호입니다.
| 터널 방식 | 옵션 | 위험 |
|---|---|---|
| 로컬 포워딩 | ssh -L | 높음(내부 서비스) |
| 원격 포워딩 | ssh -R | 높음(리버스) |
| 동적 포워딩 | ssh -D(SOCKS) | 매우 높음(전체) |
| 중계 연결 | 수신↔내부 송신 | 높음 |
| 정상 터널 | 승인 관리 | 정상 |
# 포트 포워딩·SSH 터널링 탐지 (분석 방법)
# ssh 터널 옵션(-L/-R/-D) 사용
sudo ausearch -k lateral,proc_exec -i --start recent 2>/dev/null | grep -E 'proctitle=.*ssh.*(-L|-R|-D)' | tail
# 거점의 중계 연결(동일 프로세스가 수신+내부 송신)
ss -tnp 2>/dev/null | grep -E 'ssh|sshd' | grep -E '10\.|192\.168\.'
$ (ssh 터널 옵션) (없음 또는 승인된 관리 터널)
$ (중계 연결) (없음)
ssh 터널 옵션이 승인된 관리 용도에 그치고, 거점의 비정상 중계 연결이 없는 상태가 정상입니다.
$ (ssh 터널 옵션)
proctitle="ssh -D 1080 user@web01" (SOCKS 동적 포워딩)
proctitle="ssh -L 3306:db01:3306 web01" (내부 DB 포워딩)
$ (중계 연결)
web01: 외부 수신 ↔ 10.0.0.50:3306 송신 (중계)
포트 포워딩·터널링 분석입니다(가상의 예시).
[공격자] 외부
↓ SSH 터널(-D/-L)
[거점] web01 (접근 가능)
↓ 터널 중계
[내부 세그먼트] db01, app01 (직접 불가 → 거점 경유)
= 거점을 피벗으로 내부 세그먼트 접근
[탐지] ssh -L/-R/-D + 거점 중계 연결(수신↔내부 송신)
| 관찰 | 해석 |
|---|---|
| ssh -D | SOCKS 피벗 |
| ssh -L | 내부 서비스 포워딩 |
| 중계 연결 | 거점 경유 |
| 내부 송신 | 세그먼트 접근 |
터널 옵션 + 거점 중계가 피벗 측면 이동의 지표입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_g,lateral,">
<rule id="106260" level="13">
<if_sid>106000</if_sid>
<field name="audit.proctitle" type="pcre2">\bssh\b.*\s-[LRD]\s</field>
<description>SSH 포트 포워딩·터널링(거점 경유 피벗·측면 이동)</description>
<mitre><id>T1572</id><id>T1090.001</id></mitre>
</rule>
</group>
F37(C2 터널)과 구분해 내부 피벗(거점 중계)을 포착합니다. 승인된 관리 터널은 기준선 예외로 등록합니다.
| 터널 방식 | 옵션 |
|---|---|
| 로컬 포워딩 | ssh -L |
| 원격 포워딩 | ssh -R(리버스) |
| 동적 포워딩 | ssh -D(SOCKS) |
| 중계 연결 | 수신↔내부 송신 |
| 면접 포인트 | "터널은 거점 경유 내부 접근 — ssh -L/-R/-D + 거점 중계가 피벗 신호" |
다음 편 328. 내부 확장·측면 이동 — 원격 실행·서비스 악용 종합 분석 에서는 원격 실행·서비스 악용을 종합하는 원격 실행·서비스 악용 종합 분석을 다룹니다.
이전 편: 326. 내부 확장·측면 이동 — 원격 복사(scp·rsync) 기반 도구 전송 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점