방화벽 하나로는 못 막는다 — 발판 하나가 곧 새 관문이 된다

방화벽 하나로는 못 막는다 — 발판 하나가 곧 새 관문이 된다

분류: Security · 네트워크 · 내부망 피벗(측면이동) [정보성]

덱. 다단계 네트워크 분리(defense-in-depth)는 중요한 시스템일수록 접근 경로를 여러 겹으로 감싸는 설계입니다. 그런데 침투테스트에서는 이미 장악한 호스트 하나를 발판(pivot) 삼아, 외부에서 직접 보이지 않는 두 단계 뒤 네트워크까지 트래픽을 릴레이해 도달하는 경우가 흔합니다. 이 글은 그 “이중 피보팅(double pivoting)” 기법의 원리를 재구성합니다.

리드

네트워크 경계를 여러 겹으로 쌓는 설계 자체는 옳습니다. 문제는 그 경계 사이를 오가는 호스트가 하나라도 있으면, 그 호스트가 곧 경계를 무너뜨리는 다리가 된다는 점입니다. 라우터가 두 네트워크를 직접 연결하지 않아도, 그 두 네트워크에 동시에 다리를 걸친 컴퓨터 한 대가 있으면 그 컴퓨터를 거쳐 얼마든지 왕래할 수 있습니다. 침투테스트에서 “피보팅”이라 부르는 게 바로 이 원리를 공격 관점에서 쓰는 것이고, 그 발판을 하나 더 잇는 게 이번에 다루는 이중 피보팅입니다.

01 개념 30초 — 라우팅과 피보팅

라우팅은 서로 다른 네트워크에 있는 장치들이 어떻게 통신할지 결정하는 과정입니다. 특정 목적지로 가는 규칙이 없으면 패킷은 그 네트워크에 도달할 방법이 없습니다. 피보팅(pivoting)은 이미 장악한 컴퓨터를 경유해, 원래는 접근 권한이 없던 네트워크로 들어가는 기법입니다. 여러 네트워크 인터페이스(NIC)를 가진 컴퓨터 — 예컨대 사무 네트워크와 DMZ(외부에 노출된 서버들을 격리해 두는 구간)에 동시에 연결된 서버 — 를 장악하면, 공격자는 그 컴퓨터를 터널처럼 써서 원래 격리돼 있던 구간에 도달할 수 있습니다.

02 빈틈 — 경계 설계가 놓치는 것

방화벽 규칙은 “네트워크 A에서 네트워크 B로 가는 트래픽을 막는다”는 식으로 짜입니다. 하지만 이 규칙은 라우터·방화벽 수준의 이야기이고, 호스트 자체가 두 네트워크에 동시에 연결돼 있는 경우는 다루지 못합니다. 그 호스트 안에서 발생하는 트래픽은 애초에 방화벽을 거치지 않기 때문입니다. 관리 편의를 위해 여러 세그먼트에 걸친 서버를 두는 경우가 실무에서는 드물지 않은데, 이런 호스트 하나가 뚫리면 그 순간 네트워크 분리 전략 전체가 무력화됩니다.

03 메커니즘 — 발판을 잇는 절차

원문이 다루는 침투 시나리오를 개념적으로 재구성하면 다음과 같은 단계로 진행됩니다.

  1. 첫 발판 확보. 외부에서 접근 가능한 구간의 호스트 하나를 장악합니다. 이 호스트를 조사해 보니 두 번째 네트워크 인터페이스가 있다는 게 확인됩니다 — 즉 이 호스트가 원래 노출돼 있던 네트워크와, 그때까지 보이지 않던 두 번째 네트워크에 동시에 걸쳐 있습니다.
  2. 첫 번째 라우팅 경로 개설. 공격자의 콘솔에서 이 발판을 거쳐 두 번째 네트워크로 요청을 보낼 수 있도록 경유 경로를 설정합니다(개념용 단순화 — 실제로는 침투 프레임워크 안에서 라우팅 테이블에 규칙을 하나 추가하는 정도의 작업입니다).
  3. 프록시로 외부 도구까지 연결. 침투 프레임워크 내부 도구만으로는 부족할 때가 많습니다. 포트 스캐너 같은 일반 도구로 이 경로를 쓰려면, 로컬에 소켓 프록시 서버를 하나 세우고, 그 프록시를 거쳐 트래픽이 발판까지 릴레이되도록 도구 설정을 바꿉니다.
  4. 두 번째 네트워크에서 정찰. 이제 두 번째 네트워크 안의 호스트들을 스캔할 수 있습니다. 여기서 또 다른 취약점을 가진 호스트를 찾아 장악하면, 그 호스트를 조사하는 과정에서 또 다른 네트워크 인터페이스를 발견할 수 있습니다.
  5. 두 번째 발판 → 이중 피보팅. 이 두 번째로 장악한 호스트도 여러 네트워크에 걸쳐 있다면, 공격자의 콘솔에서 세 번째(외부에서는 두 단계 뒤에 있던) 네트워크까지 릴레이 체인을 한 단계 더 늘릴 수 있습니다. 로컬 프록시 설정에 두 프록시 서버를 순서대로 등록하면, 트래픽은 “콘솔 → 첫 발판 → 두 번째 발판 → 최종 목표” 순으로 중계됩니다.

핵심은 이 체인의 길이에 이론적 제한이 없다는 점입니다. 발판을 하나씩 더 확보할 때마다, 처음엔 완전히 격리돼 보였던 구간에 한 단계씩 더 가까워집니다.

04 왜 반복되는가 — 우리 논평

이 기법이 반복해서 통하는 이유는, 네트워크 분리를 설계할 때 “경계에 규칙이 있는가”만 보고 “어떤 호스트가 경계 사이에 다리를 걸치고 있는가”는 잘 보지 않기 때문입니다. 이건 저희가 다른 글에서 다룬 신뢰 경계 문제와 같은 축입니다 — 한 계층(방화벽 규칙)에서 분리가 보장됐다고 해서, 그 위를 오가는 개별 호스트까지 같은 수준으로 분리돼 있다고 가정하면 안 됩니다. 신뢰(또는 격리)는 경계 설정 문서가 아니라, 실제로 그 경계를 넘나드는 모든 지점을 하나하나 확인해야 성립합니다.

방어 관점. 원문이 제시하는 대응 방향은 단순하지만 유효합니다 — 여러 네트워크 인터페이스를 가지면서 DMZ 접근 권한까지 있는 호스트는, 가능하면 그 구조 자체를 없애는 게 최선입니다. 부득이 다리 역할을 하는 호스트가 필요하다면, 그 호스트만 별도로 강하게 모니터링하고, DMZ 안의 시스템은 반드시 지정된 DMZ 경로를 통해서만 접근하도록 강제해야 합니다. 이런 호스트에서 나가는 라우팅 규칙 변경이나 비정상적인 아웃바운드 프록시 트래픽은 그 자체로 탐지 대상이 될 수 있습니다.

05 남는 교훈

네트워크 분리는 “경계선을 그었다”로 끝나는 설계가 아니라, “그 경계를 실제로 넘나드는 호스트가 몇 개고 어디인가”까지 계속 확인해야 하는 운영입니다. 발판 하나가 뚫리면 그 발판이 곧 새로운 관문이 된다는 것 — 이 한 틈은 특정 사고마다 다르게 나타나지만, 이 사고방식 자체는 다른 자리에서 계속 반복됩니다.

References / 참고자료

  1. Mücahit Karadağ, “Explore Hidden Networks With Double Pivoting”, PenTest.blog — 이 글이 재구성한 원 분석. 라우팅·포트포워딩·프록시 체이닝을 이용한 이중 피보팅 시나리오를 다룸. https://pentest.blog/explore-hidden-networks-with-double-pivoting/

이 글은 위 원 분석을 우리 관점에서 다시 쓰고 짧은 논평을 더한 정보성 초안입니다. 특정 문장·명령어·스크린샷을 그대로 옮기지 않았으며, 작동하는 재현 절차는 싣지 않았습니다. ⚠️미확인 표시 항목은 발행 전 독립 팩트체크에서 확증·정정되어야 합니다.