VLAN Hopping 파헤치기

 

1. 공격의 정의


VLAN hopping은 직접 접근이 불가능한 VLAN 망을 우회하여 침투하는 기술입니다.

 

hopping의 사전적 의미는 “깡충 뛰어넘는 동작”입니다. ‘뛰어넘다’라는 표현대로, VLAN hopping은 한 VLAN 네트워크를 발판 삼아 표적으로 삼은 다른 VLAN 네트워크에 접근하는 공격으로 설명할 수 있습니다.

 

2. VLAN이 무엇이며, 어떤 약점이 존재하나요?


VLAN은 “Virtual Local Area Network”의 약자로, 가상의 하위 네트워킹 그룹을 형성하는 기술입니다. 네트워크 장치들이 같은 건물, 같은 층, 같은 네트워크에 위치할지라도, 이들을 독립된 네트워킹 그룹에 속하도록 망을 구축할 수 있습니다.

 

VLAN과 관련하여, 더 자세한 내용은 아래 포스트에도 정리되어 있으니 참고바랍니다.

https://pyromaniac.me/entry/VLANVirtual-LAN%EA%B3%BC-%EC%8A%A4%EC%9C%84%EC%B9%98-%EB%AA%A8%EB%93%9C

 

VLAN(Virtual LAN)과 스위치 모드

VLAN의 정의 VLAN은 “Virtual Local Area Network”의 약자로, 가상의 하위 네트워킹 그룹을 형성하는 기술입니다. Layer 2 계층의 스위치에는 자신이 가진 포트 중에서 일부를 가상의 브로드캐스트 도메인

pyromaniac.me

 

 

VLAN의 취약점

VLAN은 네트워크 망을 논리적으로 분할(Logical Network Segmentation)하여 외부로부터 격리된 네트워킹 환경을 구성할 수 있으므로 분명 보안 측면에서 좋은 기술인 것은 확실합니다.

 

허나, VLAN 기술에는 치명적인 약점이 존재하는데요. 바로 VLAN ‘trunk port’가 그렇습니다.

 

Trunk port는 네트워크 스위치에서 외부에 있는 VLAN 망에 패킷을 내보내는 통로입니다. 네트워크 스위치를 타고 이동하는 패킷은 이더넷(Ethernet) 프레임 안에 목적지에 해당하는 VLAN ID 정보를 담고 있습니다. 그렇기 때문에 trunk port를 모니터링하면 어떤 VLAN에 속하는 패킷이 중간에 드나들었는지 알 수 있죠.

 

그래서 VLAN 망을 타겟으로 하는 공격은 바로, 임의의 네트워크 스위치와 연결된 trunk port를 먼저 선점하는 행위로 전개됩니다. 해커는 trunk port와 이어지는 다른 VLAN 채널로 전달되는 민감 데이터를 훔쳐보거나, 각종 바이러스 웜과 같은 공격 벡터들을 타겟 네트워크로 내보내는 게 가능합니다.

 

3. VLAN Hopping의 2가지 공격 유형


VLAN Hopping은 사전에 미리 장악한 trunk port를 이용하여 다른 VLAN 망에 침투하는 공격이며, 알려진 공격 수법은 크게 2가지, “Switch spoofing”과 “Double tagging”입니다.

 

Switch Spoofing

공격자 호스트 스스로가 마치 네트워크 스위치인 것처럼 행동하는 전략입니다. 공격자는 정상 스위치 간의 trunking을 위한 링크를 제공합니다.

 

Switch Spoofing은 중간자 공격(Man-in-the-Middle Attack) 유형에 가까우며, 생성된 trunk 링크를 통해 VLAN 망으로 향하는 패킷을 들여다 볼 수 있습니다.

 

Switch Spoofing 공격이 일어나는 세부 과정을 정리하면,

  1. 공격 호스트는 주변 네트워크 스위치에 DTP(Dynamic Trunking Protocol) 메시지를 전송
  2. 스위치들 중, dynamiac auto 또는 dyanmic desirable 모드가 활성화되어 있는 경우에 한해 trunk port 개방
  3. 연결된 trunk 링크를 통해 VLAN 트래픽을 감시 및 제어

 

예방법

  • DTP 기능 비활성화: Switch Spoofing 공격이 가능한 건, 완전히 신뢰할 수 없는 호스트에게 trunk port를 열어주었기 때문입니다. 이를 방지하려면 네트워크 스위치에서 trunking 요청을 자동이 아닌 수동(static) 방식으로 처리하도록 설정해야 하며, dynamiac auto 또는 dyanmic desirable 와 같은 모드를 비활성 상태로 두는 것이 좋습니다.
  • 802.1X 인증 도입: 비인가된 네트워크 장치를 식별하고 허용되지 않은 MAC 주소를 지닌 장비들이 스위치에 접근하지 못하도록 막을 수 있어야 합니다.

 

Double Tagging

Double Tagging 공격은 조작된 이더넷 프레임을 가진 가짜 VLAN 패킷을 생성하여 원래대로라면 도달할 수 없는 VLAN 망으로 전송하는 기술입니다. 이 공격의 핵심은, 이름 그대로 이더넷 프레임 안에 VLAN Tag를 동시에 2개를 삽입하는 것입니다.

 

네트워크 스위치는 VLAN Tag 영역 안에 담긴 VLAN ID를 식별하여 목적지에 해당하는 VLAN으로 패킷을 포워딩합니다. 이 때, 패킷은 타겟으로 삼는 VLAN을 구성하는 스위치(아래 예시에서 Switch 2)로 직접 보내져야만 하는데요.

 

아래 이미지처럼 Switch 2로 거쳐가는 경로 사이에 존재하는 Switch 1에게 VLAN 10로 향하는 패킷을 전달해봐야, Switch 1VLAN 10에 직접 접근할 수 있는 게 아니라서 패킷을 거부해버립니다.

 

그러나, 다음과 같이 VLAN Tag가 2개씩 달린 경우는 이야기가 다릅니다. 우선 Double Tagging이 성공하는 조건은, 패킷을 가장 처음으로 받는 스위치 역시 또 다른 VLAN(아래 예시에서 VLAN 20)을 운용 중인 상태여야 합니다.

 

네트워크 스위치는 VLAN 패킷을 받으면, Source address 뒤에 등장하는 VLAN Tag 영역을 조사하고, 해당 Tag를 떼어내어 목적지 VLAN으로 전달합니다.

 

정상적인 VLAN 패킷이라면 VLAN Tag의 크기인4 bytes만큼이 온전히 도려내진 상태로 이동하겠지만, Double-tagged VLAN 패킷의 경우, 가장 바깥쪽에 있는 Tag(VLAN 20)만 잘려나가고 바로 뒤에 숨겨진 2번째 Tag(VLAN 10)이 남게 되죠.

 

Switch 1에서 해당 패킷을 내보낼 때 즈음, VLAN 10 태그의 존재를 확인하고 해당 VLAN 망을 관장하는 Switch 2으로 목적지가 변경됩니다. 첫 번째 VLAN Tag에 기재된 VLAN 20는 무시되는 셈입니다.

 

Switch 2VLAN 10 태그를 벗겨내고 공격자가 원래 의도한 타겟 네트워크인 VLAN 10으로 해당 패킷을 전달합니다. 이러한 오류를 악용하여 외부에서 접근이 불가능한 VLAN 망에 악성 패킷을 쏘아 보내는 행위가 이뤄질 수 있습니다.

 

다만, Double Tagging 공격은 오직 단방향으로만 개시할 수 있는데요. 이는 타겟 네트워크에서 돌아오는 response 패킷에도 VLAN Tag를 여러 번 붙일 수 없기 때문입니다.

 

예방법

위에서 언급한대로, Double Tagging의 제약 조건은 패킷 이동 경로에 또 다른 VLAN 망(ex., VLAN 20)이 존재해야 한다는 것입니다.

 

따라서, 사용하지 않는 VLAN 망은 제거하고, 또 일부 네트워크 스위치에는 기본(default)적으로 열려 있는 VLAN 망(보통 VLAN 1이 여기에 해당)을 비활성화하거나, ID를 공격자가 쉽게 추측하지 못하도록 변경하는 것이 좋습니다.

반응형