[Network] ARP Spoofing
ARP Spoofing
ARP Spoofing은 로컬 랜에서의 패킷 경로를 조작하는 공격입니다. 공격 구도는 다음 그림과 같습니다.
정상적이라면 타겟이 게이트웨이로 패킷을 보내는게 맞습니다. 하지만, 로컬 PC에서 조작된 ARP 패킷을 타겟으로 보내 타겟의 라우팅 테이블을 조작함으로써 게이트웨이로 가야할 패킷을 로컬 PC로 보내도록 속이는게 해당 공격의 원리입니다. ARP Spoofing 공격을 이해하기 위해 몇 가지 배경을 알아야합니다.
- 로컬 랜 내의 PC는 라우팅 테이블을 어떤 방법으로 유지/관리할까?
- ARP 프로토콜은 어느 시점에 사용될까?
라우팅 테이블
부산에서 서울로 메시지를 전송한다고 가정해봅시다. 그럼 메시지는부산에서 서울 사이에 있는 라우터들을 거쳐거쳐 목적지 라우터로 도착하게될겁니다. 물론 부산에서 서울 사이에 있는 모든 라우터들 전부를 다 거치진 않을겁니다. 어떤 라우터를 거쳐가는게 가장 빠른 경로일까요? 이 문제에 답을 찾기 위해 라우팅 프로토콜이 존재합니다. 라우팅 프로토콜이 찾은 최적의 경로를 라우팅 테이블에 유지합니다.
ARP 프로토콜
ARP 프로토콜은 IP Address를 MAC Address로 대응(bind)시키기 위해 사용되는 프로토콜입니다. 왜 IP Address를 MAC Address로 대응시켜야할까요? 그 이유는 로컬 랜 상에서의 통신(2-Layer 통신)은 MAC Address를 통해서 이뤄지기 때문입니다. 다음과 같은 상황을 가정해보겠습니다.
호스트A와 호스트B는 같은 라우터를 통해 네트워크를 잡고있다. 이때, 호스트A는 호스트B로 메시지를 보내려하지만 호스트B의 MAC Address를 모른다. 호스트B의 MAC Address를 알기 위해 호스트A는 호스트B의 IP 주소를 목적지 주소로 설정한 ARP 패킷을 로컬 랜에 브로드캐스팅한다. 이 메시지를 확인한 호스트B는 호스트A에게 자신의 MAC Address를 담은 ARP 패킷을 전송한다.
"그래서 ARP Spoofing 프로그램을 만들려면 구현해야될 기능이 뭔데?"
결론적으로 ARP Spoofing 프로그램을 만들 때 필요한 기능은 다음과 같습니다.
1. 로컬 MAC 주소를 확인하는 기능
2. Sender(Gateway), Target의 MAC 주소를 확인하는 기능
3. 타겟을 감염시킬 ARP 패킷을 설정하고, 해당 패킷을 타겟에게 전송하는 기능
4. 로컬 PC로 들어오는 패킷을 캡처해 패킷을 재전송하는 기능, 이 때 2가지의 경우가 있습니다.
- 게이트웨이가 타겟에게 보낼 패킷을 내가 받은 경우 ==> 타겟에게 재전송을 합니다.
- 타겟이 게이트웨이로 보낼 패킷을 내가 받은 경우 ==> 게이트웨이에게 재전송을 합니다.
패킷을 캡처하기 위해 필요한 라이브러리?
1. libpcap 라이브러리 - 리눅스 환경에서 사용할 수 있습니다.
2. winpcap 라이브러리 - 위의 libpcap을 윈도우 환경에서 사용할 수 있도록 포팅한 라이브러리입니다.
'Network' 카테고리의 다른 글
[Network] 무선통신(WiFi)의 위험성 (0) | 2019.01.10 |
---|