vlan hopping이라는 재밌는 이론을 발견해서 정리해보겠습니다.
Prerequisite
vlan hopping이라는 공격을 알기 전에 이해하고 들어가야하는 기술이 있습니다. DTP와 Native VLAN의 작동방식에 대해 알아보고 들어가겠습니다.
DTP
Dynamic Trunking Protocol은 시스코 스위치 간에 트렁크 형성을 협상하는데 사용되는 프로토콜입니다. 스위치 포트에 장치가 연결되면 자동으로 활성화되며 시스코 장비와 버전에 따라 다르지만 특정 모드를 명시해주지 않았을 경우엔 dynamic auto 또는 dynamic desirable로 작동합니다. DTP 모드에 따라서 협상하는 방식이 다릅니다.
Dynamic auto | Dynamic desirable | Trunk | Access | |
Dynamic auto | Access | Trunk | Trunk | Access |
Dynamic desirable | Trunk | Trunk | Trunk | Access |
Trunk | Trunk | Trunk | Trunk | 제한된 연결 |
Access | Access | Access | 제한된 연결 | Access |
Dynamic auto, Dynamic desirable, Trunk, Access 4개 모드로 이루어지며 각각의 모드가 협상할때 위의 표와 같이 협상하게 됩니다.
Dynamic auto : 인터페이스가 자신을 trunk로 만들기 위해 협상 메시지를 수신할때까지 기다립니다(수동적). 상대방이 trunk가 아니라면 access로 작동합니다.
Dynamic desirable : 트렁킹 사용을 시작할지의 여부를 동저으로 선택하는 협상 메시지를 전송하여 포트가 다른 포트와의 트렁킹을 시작할 수 있도록 작동합니다.
Trunking , Access : 각각 수동으로 trunking 인지 access인지 지정
switchport nonegociate
이런 패킷을 수신하지 않으려면 포트를 Access 또는 Trunk로 지정해주 위의 명령어를 입력하시면 됩니다. Vlan hopping에서도 사용되듯이 상당한 취약점으로 작용할 수 있기 때문에 위 명령어를 통해 비활성화 하는게 좋습니다.
Native VLAN
![](https://blog.kakaocdn.net/dn/F584S/btsij72jfSb/K1MkmhZq6DUQWVMCcqrjO1/img.png)
현재 전세계 스위치에서 널리 사용되고 있는 표준인 802.1Q 방식은 Tag를 이용해서 Vlan을 구분합니다. 이때 위의 사진같이 VLAN이 할당되지 않은 스위치 포트의 통신이나 VLAN을 지원하지 않는 허브의 트래픽을 VLAN TAG가 존재하지 않는다고 드랍하면 안되겠죠,,,따라서 Native VLAN(기본 VLAN)이 존재합니다. Native VLAN을 통해서 VLAN이 존재하지 않는 트래픽에 대해 Native VLAN으로 판단하고 TAG를 따로 검사하지 않습니다. 이를 통해서 VLAN이 할당되지 않은 트래픽을 버리지 않고 포워딩할 수 있는 것입니다.
![](https://blog.kakaocdn.net/dn/xEcvc/btsikUuQCSD/EvAkPTZkYCszbt9ZIKxKU0/img.png)
![](https://blog.kakaocdn.net/dn/dijV9q/btsilivQLqU/dU81fiYnCcjvrFSsiQqux1/img.png)
따라서 위의 사진 처럼 초기 설정의 스위치 포트들은 기본 Native VLAN인 VLAN1에 할당돼 있는 것을 확인할 수 있습니다. 이런 Native VLAN은 아래 명령어로 변경할 수 있습니다.
switchport trunk native vlan [num]
VLAN hopping?
![](https://blog.kakaocdn.net/dn/s97NS/btsijMqCSDC/H05JW6rkY92Ync15F4ocUK/img.png)
VLAN hopping의 궁극적인 목표는 트래픽이 차단된 VLAN을 무단으로 뛰어넘는다는 것입니다. VLAN hopping은 3계층까지 라우팅 해야 도달할 수 있는 서로 다른 VLAN이라는 장벽을 DTP와 802.1Q의 NATIVE VLAN을 통해서 2계층에서 ACL같은 접근 제어의 영향을 받지 않고 도달할 수 있습니다.
Switch Spoofing에서는 양방향 공격을 시도할 수 있지만 Double Tagging 방식에서는 공격이 상대 VLAN을 뛰어 넘을 수 있지만 다시 돌아오는 것은 불가능하기에 단방향 공격입니다. 이 공격은 따라서 DoS 공격이나 비연결성인 UDP 프로토콜을 통한 공격 등 다양한 공격과 연계되어 무기화 될 수 있습니다.
Switch Spoofing
스위치 스푸핑은 관리자의 관리 실수에서 발생할 수 있는 취약점이라 파급력이 크다고 생각되진 않습니다. 앞서 말씀드렸던 DTP에 의해서 발생하는 취약점 입니다.
![](https://blog.kakaocdn.net/dn/l4AJ6/btsimDzpVia/cyV89OPkSpPhjUoq8HwnJk/img.png)
위와 같이 VLAN 10으로 구성된 Victim Switch와 VLAN 20으로 구성된 Switch B가 있습니다.
#Switch B
int f0/1
swithport access vlan 20
#Victim Switch
intf0/1
switchport mode access
switchport access vlan 10
위와 같이 구성되어 있다고 가정합니다. Switch B에 무언가 잘못 구성되어 있습니다. vlan 20을 access 하도록 구성했지만 port mode를 access 로 설정하는 것을 누락함으로써 access 로 설정되지 않고 DTP가 실행되고 있습니다.
![](https://blog.kakaocdn.net/dn/l1MPH/btsil0I9Mxv/m7JHMLyFQTMlLSYUI8VLck/img.png)
DTP는 특정 dynamic desirable DTP 또는 trunk 패킷을 받으면 trunk mode로 변경되던 것을 기억하십니까?? 공격자는 위조된 DTP 패킷을 스위치에게 보냄으로써 VLAN 20을 TRUNK PORT로 변경해버렸습니다 !!!!! 공격자는 TRUNK 포트에 접근할 수 있게 됐고 이제 모든 VLAN에 대한 접근 권한이 생겼습니다.
어떻게 접근 권한이 생기나요 ?
![](https://blog.kakaocdn.net/dn/bc8yma/btsij6QqkBX/CM33IPgoplDet95Q8DW4gK/img.png)
trunk 링크에 현재 공격자가 있기 때문에 라우터를 거치지 않고도 다른 vlan으로 이동할 수 있는 권한이 생겼습니다. 이제 vlan 태그가 10인 악성 패킷을 vlan 10으로 전송하면 라우터를 거치지 않고 vlan 10으로 이동할 수 있게 되는 것입니다.
Double Tagging
더블 태깅은 위와 다른 DTP 방식을 이용하는 것이 아닌 Native VLAN의 구조적인 취약점을 이용합니다. 위에서 802.1Q는 VLAN TAG가 없는 포트를 위해 Native VLAN이 존재하고 Native VLAN의 패킷은 태그를 검사하지 않는다고 했습니다. Double Tagging은 이를 이용한 공격 기법입니다.
개인적으로 잘 준비된 Double Tagging이 공격하기도 쉽고 더 파급력이 크다고 생각합니다. 이러한 공격 방식을 실행하기 전에는 네트워크에 전제 조건이 있어야 합니다.
1. 공격자가 Native VLAN에 속해있어야 합니다.
2. 공격자는 피해자의 VLAN을 알고 있어야 합니다.
![](https://blog.kakaocdn.net/dn/clpUMH/btsiqWTlPXp/0lSKgSBgjdc7Ta5zaElGPk/img.png)
공격자는 Native VLAN에 속해 있습니다. 이때 802.1Q의 결함을 이용하기 위해 패킷에 Native VLAN에 관한 태그를 하나 더 씌웁니다.
![](https://blog.kakaocdn.net/dn/ceBbff/btsimDUmbfs/SagqkrSAkjCvUQFeO5Bgv1/img.png)
공격자는 악성패킷위에 2개의 VLAN 태그를 올립니다. 하나는 Native VLAN의 태그 또 하나는 공격하려는 피해자가 있는 VLAN의 VLAN 태그입니다.
![](https://blog.kakaocdn.net/dn/buLaLF/btsij7Puzlh/h2hCFOfldiK0xDHyKc8O51/img.png)
이제 공격자는 악성패킷을 전송합니다. 스위치에서는 프레임의 VLAN 태그를 보게 되고(동시에 2개를 읽는게 아닌 한번에 하나 씩 읽기 때문에) Native VLAN이라고 인식하게 됩니다. Native VLAN의 태그는 역캡슐화되고 스위치는 패킷을 플러딩 합니다.
![](https://blog.kakaocdn.net/dn/ctbyjC/btsilIuQjW2/hbKh87jTWohFlVYQOITOK1/img.png)
플러딩 된 패킷이 해당 VLAN의 스위치에 도착하게 되고 VLAN 태그를 읽습니다. 어? VLAN 10은 Victim Switch의 스위치의 VLAN입니다. 따라서 이 프레임을 피해자에게로 전달하게 됩니다.
이런 과정을 통해 Double Tagging 공격이 성공하게 됩니다.!
완화 방법
Switch spoofing
1. 모든 엑세스 포트(PC와 같은 종단 장치가 연결되는 포트)에서 switch port mode access 명령어를 통하여 access 모드를 수동으로 설정하고 switchport nonegociate를 이용하여 DTP를 비활성화 합니다. 트렁크 포트에서도 동일하게 수행합니다.
2. 엑세스 포트를 trunk, dynamic auto, dynamic desirable 모드로 설정하지 않아야 합니다.
3. 현재 사용하지 않는 포트를 모두 종료합니다(shutdown)
Double Tagging
1. ACCESS VLAN에 할당하는 VLAN을 NATIVE VLAN으로 설정하지 않습니다.
2. 기본 NATIVE VLAN인 VLAN 1을 다른 VLAN 으로 변경합니다.
3. 모든 VLAN 트래픽이 트렁크 포트를 통과하게 설정하지 말고 필요한 VLAN만 트렁크 포트를 지날 수 있도록 해야합니다.
'네트워크 > 네트워크 일반' 카테고리의 다른 글
CBAC 실습 및 URL FILTER (0) | 2023.06.19 |
---|---|
Reflexive ACL(가난한 자의 stateful inspection) (0) | 2023.06.18 |
HSRP,VRRP,GLBP 이론 및 설정법 (0) | 2023.05.13 |
OSPF STUB AREA (0) | 2023.05.13 |
OSPF deep dive 1(dr,bdr,drother,passive interface) (0) | 2023.04.25 |