안 쓰던 블로그
ARP와 ARP Spoofing 개념 및 공격 실습 본문
목차
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주소가 정적으로 등록되어 있다면 불가능하다
참고 자료
blog.naver.com/kings_and/221375582542
velog.io/@agurimon/ARP-%EC%8A%A4%ED%91%B8%ED%95%91
'Network' 카테고리의 다른 글
3-way handshake와 4-way handshake (0) | 2020.09.18 |
---|---|
TCP 프로토콜, UDP 프로토콜, TCP와 UDP의 공통점과 차이점 (0) | 2020.09.18 |
ARP 프로토콜 (0) | 2020.09.18 |
[네트워크] 가상머신의 네트워크 구조 (0) | 2020.09.17 |
7. TCP/IP 프로토콜 (0) | 2020.05.12 |