본문 바로가기

Learning/└◆Network Hacking

ARP Spoofing을 막을 수 있는 방법에 대해서

 

ARP Spoofing Attack을 하고 있다면.

 

증상 - 네트워크 부하량이 걸린다 (인터넷 속도 저하)

확인 - #arp -a 중복된 MAC 주소가 존재한다.

해결 arp cache table에 static상태로 정보를 넣는다.

 

 

ARP Spoofing 예방 방법

 

서버 장비에서 방어

- static arp table으로 설정

ARP Table은 자동(Dynamic)과 수동(Static)으로 설정이 가능하다.

수동으로 설정할 경우 ARP Cache Table의 정보를 변조하지 못한다. 다만 이중 게이트웨이가 네트워크에 존재할 시에는 사용할 수 없다. 또한 네트워크 변경시 수동으로 바꾸어야 하는 불편함이 있다.(자동설정은 자동으로 GatewayMAC 주소가 설정된다.)

 

네트워크 장비에서 방어

시스코 장비의 Port Security 기능을 사용하여 각각의 포트에 물리적인 MAC 주소를 정적(static)으로 설정한다. Port Security는 대부분의 스위치에서 제공하는 기능으로, 스위치의 각 포트별로 MAC 주소를 정적(static)으로 설정하여, 설정된 MAC 주소만 해당 포트를 통해 통신을 허용되도록 할 수 있다. 이기능을 이용할 경우 스위치 환경에서 arp를 위조하여 스니핑하거나 네트워크를 다운시키는 서비스 거부(DoS)와 같은 형태의 공격을 차단하는데 효과적이다. Port Security를 이용하면 다음과 같은 기능을 구현할 수 있다.

스위치의 각 포트별로 허용된 MAC 주소를 지정할 수 있다.

특정한 MAC 주소를 가진 트래픽을 스위치에서 차단할 수 있다.

각 포트별로 허용 가능한 MAC 수를 지정하여 이 수치를 초과할 경우 초과된 MAC 주소는 더 이상 통신이 되지 않도록 차단 설정하거나 해당 포트를 아예 일정 시간 동안 또는 영구적으로 shutdown 하도록 설정 할 수 있다.

 

 

2. 네트워크 관리자의 대응법

 

감염 대상 파악

가장 중요한 것이 주 감염원을 파악하는 것이다. ARP 스푸핑이 처음 발견되면 빠른 시간내에 MAC 주소를 모니터링 해서 주 감염원을 찾고 네트워크 라인을 네트워크에서 제거한다. PC 하나의 MAC 주소에 두개 이상의 IP를 가지고 있다면 해당 MAC 주소의 장비를 검사해야 한다.(게이트웨이의 IP를 가지려는 MAC 주소의 장비를 필히 확인한다.)

 

모든 하위 네트워크 상의 PC를 치료

모든 PC에 대해 최신 버전의 백신으로 치료를 수행하고 주 감염 PC는 자료를 백업한 후 운영체제를 재설치하도록 권고한다.

 

장비 재정비

네트워크 장비에서 ARP를 정리하기 위해 자동/수동으로 장비들을 리셋한다.

 

 

 

3. 향후 예방 조치

 

게이트웨이 장비에 수동으로 ARP Table을 할당하고 IP나 장비가 바뀔 때마다 직접 등록하여

변종 ARP Spoofing 발생에 대비하여 꾸준히 관리하는 것도 좋은 방법이다.

 

 

static 하게 ARP Cache Tble에 라우터의 MAC 주소를 등록하는

프로그램 제작

 

vi arp.sh

#!/bin/bash

 

ROUTER_IP=192.168.20.100

 

ping -c 1 $ROUTER_IP > /dev/null 2>&1

if [ $? -eq 0 ] ; then

           MAC=`arp -an | grep $ROUTER_IP | awk '{print $4}'`

           arp -s $ROUTER_IP $MAC

fi

vi /etc/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

 

touch /var/lock/subsys/local

 

#

# Sfecific Configuration

#

/root/bin/arp.sh

 

# arp -d 192.168.20.100 ;; reboot

# arp -an

 

 

 

 

 

 

vi arpwatch.sh

#!/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
MACCOUNT=`sort /root/bin/arp.txt | \
          awk '{print $4}' | \
          grep -v incomplete | \
          uniq -d | \
          wc -l`

 

if [ $MACCOUNT -ge 1 ] ; then
    echo -e "TIME: `date` - ARP Spoofing now.\t\t\t[ WARN ]" >> $LOG
else
    echo -e "TIME: `date` - No ARP Spoofing now.\t\t[  OK  ]" >> $LOG
fi

 

#rm -f /root/bin/arp.txt

 

# crontab -e

 * * * * * nohup /root/bin/arpwatch.sh &

1분에 한번씩

 

# cat arp.txt

# cat /var/log/arpwatch.log

 

 

MAC 중첩 확인 프로그램 작성 .txt

1.txt

1.txt