안 쓰던 블로그

ARP와 ARP Spoofing 개념 및 공격 실습 본문

Network

ARP와 ARP Spoofing 개념 및 공격 실습

proqk 2020. 9. 18. 16:21
반응형

목차

1. ARP

2. ARP Spoofing

3. ARP Spoofing 실습

  3-1. 실습 환경

  3-2. 실습 준비

  3-3. 실습 진행

  3-4. 실습 결과

4. ARP Spoofing 방어 방법
5. ARP Spoofing 공격의 한계

 

1. ARP

주소 결정 프로토콜(Address Resolution Protocol)의 약자로 네트워크 프로토콜 중 하나

네트워크 상에서 IP주소를 물리적 네트워크 주소(MAC)로 대응시키기 위해 사용되는 프로토콜

다시 말해, TCP/IP 3계층(네트워크 계층)의 IP주소를 2계층(데이터 링크 계층)의 MAC주소로 대응시킨다

 

참고로 MAC주소는 아는데 IP를 모르는 경우에는 RARP를 쓴다

 

 

ARP 동작

1. 브로드캐스트로 MAC주소를 요청한다

2. 해당하는 IP를 가진 호스트는 응답으로 자신의 IP와 MAC주소를 요청한 호스트에게 유니캐스트로 송신

3. 이렇게 수신된 내용을 ARP Table에 저장하며, IP주소와 MAC주소를 매칭된 내용으로 저장(static이 아니면 캐시 메모리로 저장하므로, 영구 저장하지 않는다)

 

자세한 내용 foxtrotin.tistory.com/298


2. ARP Spoofing

로컬 네트워크 LAN에서 사용하는 ARP 프로토콜은 허점이 있다

ARP는 따로 static으로 설정하지 않은 경우 응답 받은 MAC주소를 캐시 메모리인 ARP Table에 저장한다

즉, 영구적이지 않기 때문에 시간이 지나면 ARP를 통해 MAC주소를 재요청하게 된다

이런 특징을 악용하여 통신 중간에 끼어 들어가 ARP Cache에 등록되는 정보를 속이는 공격이 바로 ARP Spoofing이다

 

정상 통신

 

비정상 통신


3. ARP Spoofing 실습

실습 환경

윈도우10 (피해자)

우분투 (공격자)

실습 준비

wireshark 설치

$ sudo add-apt-repository ppa:wireshark-dev/stable
$ sudo apt install wireshark

 

arpspoof 설치

$ sudo apt install dsniff

 

fragrouter 설치

$ sudo apt install bison
$ sudo apt install yacc
$ sudo apt install flex

 

fragrouter 다운로드 링크
$ tar xcfz fragrouter-1.6.tar.gz
$ ./configure
$ make
$ make install

 

실습 진행

1. 네트워크 주소 확인

VirtualBox에서 네트워크 어댑터로 구동 중인 우분투

ifconfig로 IP와 MAC주소를 확인한다

공격자 정보

IP주소: 172.30.1.29

MAC주소: 08:00:27:0f:54:0e

 

공격 전 윈도우10에서 arp -a로 arp 테이블 확인

피해자 정보

ip주소 172.30.1.20

 

게이트웨이 정보

ip주소 172.30.1.254

mac주소 88:3c:1c:ac:6c:a2

 

 

현재 172.30.1.29(공격자)의 MAC주소와 172.30.1.254(게이트웨이)의 MAC주소는 다르다

이제 공격자가 정상 통신에 끼어 들어서 아래와 같이 동작하게 만들 것이다

 

2. fragrouter 실행

$ sudo fragrouter -B1

Fragrouter는 받은 패킷을 전달하는 역할이다

공격자가 세션을 가로챘을 때 공격을 들키지 않으려면 통신은 그대로 유지되어야 한다

그래서 피해자->공격자에게 온 패킷을 공격자->게이트웨이로 넘겨주고,

게이트웨어->공격자로 온 패킷은 공격자->피해자로 넘겨주는 패킷 릴레이 과정이 필요하다

 

Fragrouter가 그런 패킷 전달 역할을 수행해 준다

B1옵션은 송수신 데이터의 변조 없이 데이터를 그대로 포워딩 하는 옵션이다

 

Fragrouter를 하지 않는다면 피해자의 패킷은 공격자에게만 전달되므로 인터넷 사용이 안 되니까 들킬 수 있다

 

3. arpspoof 공격 실행

피해자 172.30.1.20에게 게이트웨이 172.30.1.254의 MAC주소는 자기의 MAC주소라고 속인다

 

-t옵션은 타겟을 지정하는 옵션이다

 

4. 윈도우10에서 ARP table 다시 확인

172.30.1.254(게이트웨이)의 물리적 주소가 172.30.1.29(공격자)의 물리적 주소와 같아졌다

 

5. arpspoof2

정상적인 통신이 되어야 피해자가 의심하지 않으므로 게이트웨이도 속여야 한다

172.30.1.254(게이트웨이)에게 172.30.1.20(피해자)는 자기라고 한다

 

실습 결과

 

이제 아래와 같은 그림 상태가 되었고, 우분투 터미널은 총 3개가 동작하고 있다

 

윈도우10에서 dic.naver.com에 접속한다

중간에 다른 곳을 거쳐 가게 되었기 때문에 인터넷이 많이 느려진 게 체감이 될 것이다

 

우분투의 와이어샤크에서 피해자 윈도우10이 dic.naver.com에 접속한 사실이 확인된다

 

fragrouter -B1을 실행해 둔 터미널 창에서도 윈도우10이 무슨 통신을 하고 있는지 로그 형태로 남는다

정확히는 fragrouter가 포워딩 한 내용들을 로그 형태로 뿌리는 것이다

 


4. ARP Spoofing 방어 방법

  • ARP Caching Table을 정적으로 바꾸어 MAC주소를 저장한다
  • VLAN으로 네트워크를 논리적으로 나누어 같은 네트워크에 소속되지 않도록 한다

 

4-1. ARP Caching Table을 정적으로 바꾸어 MAC주소를 저장한다

원래 ARP는 request->reply의 반복으로 ARP 테이블을 채운다

하지만 MAC주소를 static하게 등록한다면 request를 보내지 않고 Table을 참조하여 서버가 재부팅 되기 전까지 지워지지 않는다

서버가 시작될 때마다 static하게 주소를 설정하는 스크립트를 만들어 자동 실행하게 한다

 

4-2. VLAN으로 네트워크를 논리적으로 나누어 같은 네트워크에 소속되지 않도록 한다

ARP Spoofing은 MAC주소를 잘못 알려주는 방법으로 해킹한다

즉, 같은 네트워크에 속해야만 가능한 방법이다

 

IP를 바꾸어 같은 네트워크에 속하지 않는다면 ARP Spoofing 공격이 불가능하다

하지만 IP를 바꾸기는 어렵기 때문에 논리적으로 네트워크를 구분하는 VLAN을 적용할 수 있다

 


5. ARP Spoofing 공격의 한계

  • HTTPS, TLS, SSH가 적용되어 있으면 불가능하다
  • 같은 네트워크가 아니면 불가능하다
  • MAC주소가 정적으로 등록되어 있다면 불가능하다

 


참고 자료

5log.tistory.com/77

blog.naver.com/kings_and/221375582542

velog.io/@agurimon/ARP-%EC%8A%A4%ED%91%B8%ED%95%91

반응형
Comments