BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
SSH 다이나믹 포트 포워딩
1. 개요
**SSH 다이나믹 포트 포워딩(Dynamic Port Forwarding)**은 공격자 시스템에 **SOCKS 프록시(Proxy)**를 생성하고, 이를 통해 발생하는 트래픽을 SSH 터널을 경유하여 피벗 호스트로 보낸 뒤, 피벗 호스트에서 목적지로 릴레이(Relay)하는 기법이다.
기존의 로컬/리모트 포트 포워딩이 1:1 매핑(특정 포트를 특정 목적지로 연결)인 반면, 다이나믹 포트 포워딩은 1:N 매핑이다. 즉, 하나의 터널만으로 내부망에 존재하는 다수의 호스트와 포트에 접근할 수 있어, 네트워크 스캔(Nmap)이나 웹 브라우징, RDP 접속 등 다양한 작업을 동시에 수행하는 데 매우 효율적이다.
2. SOCKS 프록시와 작동 원리
SSH 클라이언트는 지정된 로컬 포트에서 SOCKS 서버처럼 동작한다.
- SOCKS 리스너 생성:
ssh -D [LocalPort]명령으로 공격자 로컬 머신에 SOCKS 리스너를 띄운다(주로 1080/9050 포트 사용). - 애플리케이션 연동: 공격자는
ProxyChains나 웹 브라우저의 프록시 설정(FoxyProxy 등)을 통해 트래픽을 로컬 SOCKS 포트로 보낸다. - 다이나믹 라우팅: SSH 클라이언트는 SOCKS 프로토콜 헤더를 분석하여 목적지 주소를 파악하고, 이를 암호화하여 피벗 호스트로 전송한다.
- 최종 전달: 피벗 호스트는 패킷을 복호화한 후, 헤더에 명시된 내부망의 목적지로 트래픽을 대신 전송(Proxy)한다.
3. 명령어 구문 및 도구 설정
3.1 기본 구문
ssh -N -D [LocalBindIP]:[LocalBindPort] [User]@[PivotHost]
-D: 다이나믹 포트 포워딩(SOCKS 프록시 생성) 옵션.[LocalBindPort]: 공격자 PC에서 리스닝할 포트 (예: 1080).[LocalBindIP]: 생략 시127.0.0.1에 바인딩.
3.2 ProxyChains 설정 및 사용
생성된 SOCKS 터널을 활용하기 위해 ProxyChains 도구를 주로 사용한다. ProxyChains는 프록시를 지원하지 않는 일반 명령어(nmap, rdesktop 등)도 강제로 프록시를 경유하게 만들어준다.
- 설정 파일 수정 (
/etc/proxychains4.conf):[ProxyList] # SSH -D로 생성한 포트와 프로토콜(socks4 또는 socks5)을 지정 socks5 127.0.0.1 1080 - 도구 실행:
# 내부망(10.1.20.0/24) 웹 서버 스캔 proxychains nmap -sT -Pn -p 80,443 10.1.20.20 # 내부망 호스트로 RDP 접속 proxychains rdesktop 10.1.20.10 # 내부망 호스트로 WinRM 접속 proxychains evil-winrm -i 10.1.20.20 -u user -p password
4. 제약 사항 및 OpsSec
4.1 프로토콜 제약
- TCP Only: 기본적으로 SSH 터널링과 SOCKS4는 TCP 트래픽만 처리 가능하다. SOCKS5는 UDP를 지원하지만,
ssh -D구현체나 네트워크 환경에 따라 UDP 터널링(예: DNS 질의, SNMP 스캔)이 불안정하거나 지원되지 않을 수 있다. - 속도 저하: 모든 트래픽이 암호화/복호화 과정을 거치고 터널을 경유하므로, 직접 접속 대비 지연 시간(Latency)이 발생한다. Nmap 스캔 시
-T4이상의 빠른 속도 옵션은 타임아웃 오류를 유발할 수 있다.
4.2 스캔 시 주의사항 (Nmap)
ProxyChains를 통한 Nmap 스캔 시 SYN Scan(-sS)은 불가능하다. SYN 스캔은 Raw Socket을 조작해야 하는데, SOCKS 프록시는 완전한 TCP 연결(Connect Scan, -sT) 방식만 지원하기 때문이다. 따라서 반드시 -sT 옵션을 사용해야 하며, ICMP 패킷이 터널을 통과하지 못하는 경우가 많으므로 -Pn(Ping Skip) 옵션을 함께 사용하는 것이 필수적이다.

