hhkb.dev

BLOG

2025-12-20 / 피버팅과터널링 · 10

리눅스 피버팅 도구

1. 개요

SSH만으로 설명이 부족할 때가 있어서, 리눅스 환경에서는 별도 피버팅, 터널링 도구도 같이 본다. 이런 도구들은 SSH 기반 방식의 제약, 예를 들어 권한 요구나 설정 번거로움을 보완하는 쪽에서 자주 언급된다.

여기서는 대표적으로 sshuttleRPivot을 간단히 정리한다.

2. sshuttle: VPN over SSH

sshuttle은 흔히 "가난한 자의 VPN"이라고 불린다. SSH 연결을 이용해, 로컬 트래픽이 원격 네트워크로 자연스럽게 흘러가게 만드는 도구라고 보면 된다.

2.1 특징 및 동작 원리

핵심 특징은 아래 정도로 정리할 수 있다.

  • Transparent Proxy: ProxyChains처럼 개별 도구 설정에 기대기보다, 로컬 라우팅을 잠시 조정해 트래픽을 SSH 터널로 보낸다.
  • No Admin on Remote: 원격 피벗 서버 쪽에는 보통 관리자 권한이 필요하지 않다. 대신 로컬 클라이언트에서는 라우팅 조정 때문에 관리자 권한이 필요할 수 있다.
  • Python 기반: 원격 서버에 Python 환경이 있으면 비교적 다루기 쉽다.

2.2 사용법

# 기본 구문: sshuttle -r [User]@[PivotHost] [TargetSubnet]
sudo sshuttle -r [email protected] 10.1.20.0/24
  • sudo: 로컬 라우팅 수정 권한이 필요하다.
  • -r: 원격 피벗 호스트를 지정한다.
  • 10.1.20.0/24: 대상으로 잡을 서브넷 대역이다.

명령 실행 후, 공격자 PC에서 10.1.20.0/24 대역으로 향하는 모든 트래픽은 자동으로 SSH 터널을 경유한다. 따라서 proxychains 접두어 없이 nmap이나 브라우저를 바로 사용할 수 있다.

3. RPivot: Reverse Gateway for SOCKS

RPivot은 리버스 SOCKS 프록시 성격을 가진 Python 기반 도구다.

3.1 특징 및 활용

주요 특징은 아래와 같다.

  • Reverse SOCKS: 피벗 호스트가 먼저 바깥으로 연결을 만들고, 그 연결을 SOCKS 프록시처럼 활용하는 구조다.
  • Dynamic Port Forwarding 대안: SSH의 -R 기반 방식이 제한적일 때 대안으로 거론된다.
  • HTTP-Proxy 호환성: 제한된 프록시 환경에서도 상대적으로 유연하게 다룰 수 있는 편이다.

3.2 구성 (Server/Client)

RPivot은 Server와 Client 두 구성으로 나뉜다.

  1. Server 실행(공격자 측)
    # --server-port: 피벗 호스트가 접속할 포트 (9999)
    # --proxy-port: 공격자가 사용할 SOCKS 포트 (1080)
    python server.py --server-port 9999 --proxy-port 1080
    
  2. Client 실행(피벗 호스트 측)
    # 공격자 서버로 접속 시도
    python client.py --server-ip 10.8.0.2 --server-port 9999
    
  3. ProxyChains 연결
    • 공격자는 로컬의 1080 포트를 SOCKS 프록시처럼 보고 연동한다.

3.3 설치 참고

# 공격자 및 피벗 호스트 양쪽에 필요
git clone https://github.com/klsecservices/rpivot.git
# 의존성 없이 Python 2.x/3.x 표준 라이브러리로 동작