본문 바로가기

NCS/시스템 보안 구축

DHCP Snooping and DAI

LAB : DHCP snooping

Virtual Software : VMWare Workstation 12 pro

Network Simulation software : EVE-ng

Network Device IOS

           R7 : IOL(i86bi-linux-l3-adventerprisek9-15.4.1T.bin)

           ASW : IOL(i86bi-linux-l2-adventerprisek9-15.2c.bin)

           Net : Pnet0












R7 (Authenticated DHCP Server)

Linux-Kali (Rogue DHCP Server)

Win (Victim)

 

R7  설정

En

Conf t

hostname BBR

!

ip dhcp pool KG

 network 10.1.1.0 255.255.255.0

 default-router 10.1.1.254

 dns-server 168.126.63.1

 lease 0 8

!

no ip domain lookup

!

interface Ethernet0/0

 ip address 10.1.1.254 255.255.255.0

!

interface Ethernet0/1

 ip address dhcp

!

ip route 10.10.1.0 255.255.255.0 Ethernet0/0 10.1.1.253

 

ASW 설정

 

 

Win 에서

Ipconfig /release 한 후 ipconfig /renew 할 경우 dhcp server에서 디버그 한 모습

BBR#debug ip dhcp server events

DHCP server event debugging is on.

BBR#

*Apr 17 08:22:06.835: DHCPD: Sending notification of TERMINATION:

*Apr 17 08:22:06.835:  DHCPD: address 10.1.1.1 mask 255.255.255.0

*Apr 17 08:22:06.835:  DHCPD: reason flags: RELEASE

*Apr 17 08:22:06.835:   DHCPD: htype 1 chaddr 5000.0003.0000

*Apr 17 08:22:06.835:   DHCPD: lease time remaining (secs) = 28770

*Apr 17 08:22:06.835: DHCPD: returned 10.1.1.1 to address pool KG.

BBR#

*Apr 17 08:22:13.785: DHCPD: Sending notification of DISCOVER:

*Apr 17 08:22:13.785:   DHCPD: htype 1 chaddr 5000.0003.0000

*Apr 17 08:22:13.785:   DHCPD: remote id 020a00000a0101fe00000000

*Apr 17 08:22:13.785:   DHCPD: circuit id 00000000

*Apr 17 08:22:13.785: DHCPD: Seeing if there is an internally specified pool class:

*Apr 17 08:22:13.785:   DHCPD: htype 1 chaddr 5000.0003.0000

*Apr 17 08:22:13.785:   DHCPD: remote id 020a00000a0101fe00000000

*Apr 17 08:22:13.785:   DHCPD: circuit id 00000000

*Apr 17 08:22:13.791: DHCPD: client requests 10.1.1.1.

*Apr 17 08:22:13.791: DHCPD: Allocated binding C1ED9640

*Apr 17 08:22:13.791: DHCPD: Adding binding to radix tree (10.1.1.1)

BBR#

*Apr 17 08:22:13.791: DHCPD: Adding binding to hash tree

*Apr 17 08:22:13.791: DHCPD: assigned IP address 10.1.1.1 to client 0150.0000.0300.00.

BBR#

*Apr 17 08:22:15.804: DHCPD: Sending notification of DISCOVER:

*Apr 17 08:22:15.804:   DHCPD: htype 1 chaddr 5000.0003.0000

*Apr 17 08:22:15.804:   DHCPD: remote id 020a00000a0101fe00000000

*Apr 17 08:22:15.804:   DHCPD: circuit id 00000000

*Apr 17 08:22:15.804: DHCPD: Seeing if there is an internally specified pool class:

*Apr 17 08:22:15.804:   DHCPD: htype 1 chaddr 5000.0003.0000

*Apr 17 08:22:15.804:   DHCPD: remote id 020a00000a0101fe00000000

*Apr 17 08:22:15.804:   DHCPD: circuit id 00000000

*Apr 17 08:22:15.808: DHCPD: Sending notification of ASSIGNMENT:

*Apr 17 08:22:15.808:  DHCPD: address 10.1.1.1 mask 255.255.255.0

BBR#

*Apr 17 08:22:15.808:   DHCPD: htype 1 chaddr 5000.0003.0000

*Apr 17 08:22:15.808:   DHCPD: lease time remaining (secs) = 28800

BBR#unde all

All possible debugging has been turned off

BBR#

 

Linux-Kali 에서 가짜 dhcp server 생성

[Kali 서버에서 Ettercap 툴을 이용하여 Rogue DHCP 서버 운영]

Win에서 전에 인증된 DHCP서버로부터 10.1.1.1 IP를 받은 경험이 있고, 가짜  DHCP 서버는 IP범위를 10.1.1.2-100 까지 설정했기 때문에 공격이 계속 실패했다. 그래서 범위를 1-100으로 재설정한 후 원하는 대로 Win 시스템은 가짜 서버로부터 IP를 임대했다.

[Kali 서버에서 Ettercap 툴을 이용하여 Rogue DHCP 서버 운영 : 범위 변경]

[가짜 서버로부터 임대한 IP/SubnetMask , Gateway]

 

Win 시스템에서 외부로 통신을 할 경우 아래와 같이 실패한다.

 

Kali(공격자)시스템에서 Win 시스템에 통신 될 수 있도록 한다. 그래야 피해자는 자신이 정상적으로 통신된다고 생각하기때문이다.

 

[피해자 시스템에서 정상적인 통신이 이루어진 모습]

이제 ASW 스위치에서 DHCP Snooping 기능을 활성화 해보자.

ASW 설정

ASW#conf t

ASW(config)#ip dhcp snooping vlan 1-4094

ASW(config)#ip dhcp snooping

ASW(config)#no ip dhcp snooping information option

ASW(config)#ip dhcp snooping database unix:dhcp

ASW(config)#interface e1/1

ASW(config-if)#ip dhcp snooping trust

ASW(config-if)#end

 

Win  클라이언트에서 ipconfig /release , ipconfig /renew 명령을 사용하여 IP를 재할당 받은 후 ASW 스위치에서 show ip dhcp snooping binging / show ip dhcp snooping statistics 명령을 수행해 본다.

 

 

ASW#debug ip dhcp snooping event

DHCP Snooping Event debugging is on

ASW#

*Apr 17 09:09:45.963: DHCP_SNOOPING: delete binding from port Ethernet0/1.

*Apr 17 09:09:45.963: DHCP_SNOOPING: dump binding entry: Mac=50:00:00:03:00:00 Ip=10.1.1.1 Lease=28739      Type=dhcp-snooping Vlan=1 If=Ethernet0/1

*Apr 17 09:09:45.963: DHCP_SNOOPING: dump binding entry: Mac=50:00:00:03:00:00 Ip=10.1.1.1 Lease=28739      Type=dhcp-snooping Vlan=1 If=Ethernet0/1

ASW#

*Apr 17 09:09:54.963: DHCP_SNOOPING: add binding on port Ethernet0/1.

*Apr 17 09:09:54.963: DHCP_SNOOPING: added entry to table (index 951)

 

ASW#debug ip dhcp snooping packet

DHCP Snooping Packet debugging is on

ASW#

*Apr 17 09:11:31.175: DHCP_SNOOPING: received new DHCP packet from input interface (Ethernet0/1)

*Apr 17 09:11:31.175: DHCP_SNOOPING: process new DHCP packet, message type: DHCPRELEASE, input interface: Et0/1, MAC da: aabb.cc00.7000, MAC sa: 5000.0003.0000, IP da: 10.1.1.254, IP sa: 10.1.1.1, DHCP ciaddr: 10.1.1.1, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 5000.0003.0000

*Apr 17 09:11:31.175: DHCP_SNOOPING: message type : DHCPRELEASE DHCP ciaddr: 10.1.1.1, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 5000.0003.0000

ASW#

*Apr 17 09:11:31.195: DHCP_SNOOPING_SW: bridge packet send packet to port: Ethernet1/1, vlan 1.

ASW#

*Apr 17 09:11:37.316: DHCP_SNOOPING: received new DHCP packet from input interface (Ethernet0/1)

*Apr 17 09:11:37.316: DHCP_SNOOPING: process new DHCP packet, message type: DHCPDISCOVER, input interface: Et0/1, MAC da: ffff.ffff.ffff, MAC sa: 5000.0003.0000, IP da: 255.255.255.255, IP sa: 0.0.0.0, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 5000.0003.0000

*Apr 17 09:11:37.316: DHCP_SNOOPING: message type : DHCPDISCOVER DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 5000.0003.0000

ASW#

*Apr 17 09:11:37.316: DHCP_SNOOPING_SW: bridge packet get invalid mat entry: FFFF.FFFF.FFFF, packet is flooded to ingress VLAN: (1)

*Apr 17 09:11:37.317: DHCP_SNOOPING_SW: bridge packet send packet to port: Ethernet1/1, vlan 1.

ASW#

*Apr 17 09:11:39.340: DHCP_SNOOPING: received new DHCP packet from input interface (Ethernet1/1)

*Apr 17 09:11:39.340: DHCP_SNOOPING: process new DHCP packet, message type: DHCPOFFER, input interface: Et1/1, MAC da: 5000.0003.0000, MAC sa: aabb.cc00.7000, IP da: 10.1.1.1, IP sa: 10.1.1.254, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 10.1.1.1, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 5000.0003.0000

*Apr 17 09:11:39.340: DHCP_SNOOPING: message type : DHCPOFFER DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 10.1.1.1, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 5000.0003.0000

*Apr 17 09:11:39.340: DHCP_SNOOPING: direct forward dhcp replyto output port: Ethernet0/1.

*Apr 17 09:11:39.341: DHCP_SNOOPING: received new DHCP packet from input interface (Ethernet0/1)

*Apr 17 09:11:39.341: DHCP_SNOOPING: process new DHCP packet, message type: DHCPREQUEST, input interface: Et0/1, MAC da: ffff.ffff.ffff, MAC sa: 5000.0003.0000, IP da: 255.255.255.255, IP sa: 0.0.0.0, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 5000.0003.0000

*Apr 17 09:11:39.341: DHCP_SNOOPING: message type : DHCPREQUEST DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 5000.0003.0000

*Apr 17 09:11:39.341: DHCP_SNOOPING_SW: bridge packet get invalid mat entry: FFFF.FFFF.FFFF, packet is flooded to ingress VLAN: (1)

*Apr 17 09:11:39.341: DHCP_SNOOPING_SW: bridge packet send packet to port: Ethernet1/1, vlan 1.

*Apr 17 09:11:39.342: DHCP_SNOOPING: received new DHCP packet from input interface (Ethernet1/1)

*Apr 17 09:11:39.342: DHCP_SNOOPING: process new DHCP packet, message type: DHCPACK, input interface: Et1/1, MAC da: 5000.0003.0000, MAC sa: aabb.cc00.7000, IP da: 10.1.1.1, IP sa: 10.1.1.254, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 10.1.1.1, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 5000.0003.0000

ASW#

*Apr 17 09:11:39.342: DHCP_SNOOPING: message type : DHCPACK DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 10.1.1.1, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 5000.0003.0000

*Apr 17 09:11:39.342: DHCP_SNOOPING: direct forward dhcp replyto output port: Ethernet0/1.

 

몇번의 실습을 한 결과 통계가 많이 업데이트 됐다.

 


 

ARP Inspection

DAI는 네트워크내에서 ARP패킷의 정당성을 확인하는 보안 주제이다. Untrust로 설정된 인터페이스에서 통신되는 패킷을 가로채어 확힌하여 옳지 않는 MAC-IP 쌍의 패킷을 로그로 남기고 버린다. 이 기술은 MIT(Man in the Middle)공격으로부터 네크워크를 보호한다.

DAI는 정확한 MAC주소와 IP주소의 정당성을 확인하기 위해 미리 데이터베이스를 생성한다. 이것은 DHCP Snoopoing에 의해 생성되고 관리된다. 추가적으로 정적으로 구성할 수도 있다. ARP ACL을 구성하면 DHCP snooping 보다 우선한다. 예를들어 ARP ACL에서 거부된 패킷은 DHCP SNOOPING 데이터베이스에 존해하더라도 거부된다.

 

TRUST STATE AND UNTRUST STATE

TRUST된 인터페이스로 패킷이 인입되면 DAI 프로세스는 BYPASS한다. UNTRUST인터페이스로 패킷이 인입되면 DAI 프로세스를 구동한다. 전형적으로 호스트와 연결된 포트는 UNTRUST이고 스위치간 연결은 TRUST포트이다.

 

RATE LIMITING OF ARP PACKETS

DAI CPU를 사용하여 패킷을 점검한다. DOS와 같은 공격을 방지하기 위해 인터페이스로 들어오는 ARP패킷을 제한하고 있다. 인입되는 ARP패킷이 많으면 ERRORDISABLE 상태가 된다.

 

ASW에서 IP ARP INSPECTION 설정

conf t

interface Ethernet 1/1

ip arp inspection trust

 exit

ip arp inspection vlan1-4094

ip arp inspection validate ip src-mac

 


 

 

 

 

 

 

 

 

 

클라이언트에서 DHCP서버 데이터베이스와 다른 IP를 설정한 후 ASW 스위치 콘솔을 보자

통신이 이루지지 않는다. ARP INSPECTION기능의 활성화로 인한 통신 거부이다.

ASW#

*Apr 17 10:52:50.550: %SW_DAI-4-INVALID_ARP: 1 Invalid ARPs (Req) on Et0/1, vlan 1.([5000.0003.0000/0.0.0.0/0000.0000.0000/10.1.1.10/12:52:49 EET Mon Apr 17 2017])

*Apr 17 10:52:51.554: %SW_DAI-4-INVALID_ARP: 1 Invalid ARPs (Req) on Et0/1, vlan 1.([5000.0003.0000/0.0.0.0/0000.0000.0000/10.1.1.10/12:52:50 EET Mon Apr 17 2017])

ASW#

*Apr 17 10:52:52.559: %SW_DAI-4-INVALID_ARP: 1 Invalid ARPs (Req) on Et0/1, vlan 1.([5000.0003.0000/0.0.0.0/0000.0000.0000/10.1.1.10/12:52:51 EET Mon Apr 17 2017])

*Apr 17 10:52:53.559: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Et0/1, vlan 1.([5000.0003.0000/10.1.1.10/0000.0000.0000/10.1.1.10/12:52:52 EET Mon Apr 17 2017])

*Apr 17 10:52:53.559: %SW_DAI-4-DHCP_SNOOPING_DENY: 2 Invalid ARPs (Req) on Et0/1, vlan 1.([5000.0003.0000/10.1.1.10/0000.0000.0000/10.1.1.254/12:52:52 EET Mon Apr 17 2017])

ASW#

*Apr 17 10:52:54.563: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Et0/1, vlan 1.([5000.0003.0000/10.1.1.10/0000.0000.0000/10.1.1.254/12:52:53 EET Mon Apr 17 2017])

*Apr 17 10:52:55.568: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Et0/1, vlan 1.([5000.0003.0000/10.1.1.10/0000.0000.0000/10.1.1.254/12:52:54 EET Mon Apr 17 2017])