arpspoof를 이용한 ARP 스푸핑

안수균·2024년 7월 26일
0

Kali Linux & Hacking

목록 보기
7/19
post-thumbnail

ARP 의 취약점을 이용해서 ARP 스푸핑 즉, 트래픽을 가로채는 것에 대해 알아볼 것이다. ARP 스푸핑을 이용하면 중간자 공격(MITM), 감청, 변조, 리다이렉션 등을 수행할 수 있게 된다.

ARP 스푸핑은 ARP 포이즈닝이라고도 불리며, 같이 혼용 돼서 쓰곤한다.

ARP란?

ARP는 "Address Resolution Protocol"의 약자로, IP 주소를 MAC 주소로 변환하는 프로토콜이다. 네트워크에서 통신을 할 때는 MAC 주소가 이용되는데, 이 때 MAC 주소를 알아내기 위한 필수적인 역할을 한다고 보면 된다.

ARP의 작동 방식은 다음과 같다:

  1. ARP 요청: 특정 IP 주소에 대한 MAC 주소를 알고 싶어하는 장치가 ARP 요청 패킷을 네트워크에 브로드캐스트한다. 이 요청은 "이 IP 주소를 가진 장치의 MAC 주소는 무엇인가?"라는 내용이다.

  2. ARP 응답: 해당 IP 주소를 가진 장치가 ARP 요청을 수신하면, 자신의 MAC 주소를 포함한 ARP 응답 패킷을 전송한다.

  3. 주소 매핑 저장: 요청한 장치는 응답 받은 MAC 주소를 자신의 ARP 캐시에 저장하여, 이후 같은 IP 주소에 대한 통신 시 다시 ARP 요청을 하지 않고 바로 사용할 수 있게 된다.

이 때 ARP 는 취약점이 존재하는데, 이를 통해 ARP 스푸핑이라는 것을 할 수 있다.

ARP 취약점: 기본적으로 신뢰 기반으로 작동하기 때문에, 수신한 응답 중에서 가장 최근의 응답을 자신의 ARP 캐시에 저장하므로 위조된 ARP 응답을 ARP 캐시에 저장할 수 있다.

ARP 스푸핑 과정

ARP 취약점을 이용한 스푸핑의 작동 방식은 다음과 같다:

  1. ARP 요청: 타겟 장치와 라우터는 특정 IP 주소에 대한 MAC 주소를 알아내기 위해 ARP 요청을 보낸다.

  2. 위조된 ARP 응답: 해커는 타겟 장치와 라우터에게 위조된 ARP 응답을 전송하여 자신의 MAC 주소를 해당 IP 주소에 매핑한다.

  3. 주소 캐시 변조: 라우터와 타겟 장치는 이 위조된 ARP 응답을 수신하고, 해당 IP 주소와 해커의 MAC 주소를 매핑시켜 자신의 ARP 캐시에 저장한다. 이로 인해 이후의 데이터 패킷이 해커의 장치로 전송된다.

  4. 데이터 가로채기: 해커는 이제 다른 장치 간의 데이터 통신을 가로채거나 변조할 수 있는 위치에 있게 된다. 이를 통해 민감한 정보(예: 로그인 자격 증명, 금융 데이터 등)를 탈취하거나 악성 코드를 주입할 수 있게된다.

ARP 캐시 확인하기

arp -a


리눅스 뿐만 아니라 윈도우 환경에서도 같은 명령어를 쓸 수 있다.

사진과 같이 IP 주소와 MAC 주소가 서로 연계되어 보여주는 것을 알 수 있다.

이제 윈도우 컴퓨터와 라우터를 ARP 스푸핑을 통해 속여볼 것이다.

arpspoof

특정 컴퓨터 속이기

arpspoof -i [네크워크 식별자] -t [특정 컴퓨터 IP] [게이트웨이 IP]
예) arpspoof -i eth0 -t 192.168.135.130 192.168.135.2

라우터 속이기

arpspoof -i [네크워크 식별자] -t [게이트웨이 IP] [특정 컴퓨터 IP]
예) arpspoof -i eth0 -t 192.168.135.2 192.168.135.130

위 두 명령어를 입력하면 아래 사진과 같이 라우터의 MAC 주소가 바뀐 것을 알 수 있다.
해당 MAC 주소는 해커(칼리리눅스)의 MAC 주소라고 보면 된다.

이제 해당 컴퓨터의 모든 요청은 라우터로 바로 가지 않고 해커의 컴퓨터로 요청이 가게 된다.

하지만 리눅스의 보안 기능 때문에 요청을 받으면 요청의 흐름이 막히기 때문에 리눅스에서 포트 포워딩을 활성화 해서 라우터처럼 패킷 통과를 시켜야한다.

포트포워딩 활성화

echo 1 > /proc/sys/net/ipv4/ip_forward

이로써 윈도우 컴퓨터의 모든 요청을 리눅스 컴퓨터를 거쳐서 라우터에 도달하게 된다.

profile
공부한 내용을 블로그에서 정리합니다.

0개의 댓글