ARP Spoofing

eigenkyeong·2021년 7월 18일
1

절대 타인의 컴퓨터에 공격을 해서는 안됩니다. 범죄 행위이고 처벌을 받을 수 있습니다.
오로지 교육적인 목적으로만 실습하시고 사용해주세요.

ARP란?

주소 결정 프로토콜(Address Resolution Protocol)
: 소프트웨어적으로 할당된 논리 주소인 IP주소를(L3, 네트워크 계층) 실제적인 물리 주소인 MAC주소(L2, 데이터링크 계층)로 바꿔주는 역할

즉 IP주소를 MAC주소와 매칭시키기 위한 프로토콜 입니다.




그럼 IP주소MAC주소는 무엇일까요?




MAC주소는 컴퓨터간 데이터를 전송하기 위해 있는 컴퓨터의 물리적 주소입니다.

엇? 컴퓨터 주소는 IP주소 아니었나요? IP주소로 데이터를 주고 받는 줄 알았는데요?


네 맞습니다. 멀리 있는 컴퓨터와 통신하기 위해서는 IP주소를 사용합니다.

그런데 내부적으로 어떻게 동작하는지를 살짝 들여다 보면, 실제로는 IP주소를 MAC주소로 바꿔 사용하기 때문에 IP주소를 사용한다는 것이 결국 MAC주소를 사용한다는 것과 같은 의미라고 합니다!
즉 IP통신 내부에 MAC 주소 통신이 포함되어 있습니다.

IP주소와 MAC주소는 동작하는 계층이 다릅니다. 이 부분은 자세히 설명하지 않고 넘어가겠습니다.
IP 주소는 3계층인 네트워크 계층에서 동작하고, MAC 주소는 2계층인 데이터링크 계층에서 동작합니다.
네트워크 주소를 찾고 그 하위 단계에서 진행된다고 생각하시면 됩니다!


데이터를 보내는 과정을 보면 IP 주소는 "내가 A 주소로 데이터를 보낼게!" 즉 시작과 끝에 해당하는 주소이고 MAC 주소는 바로 옆에 나와 물리적으로 연결되어 있는 노드와 통신할 때 사용되는 주소를 의미합니다.

시작 주소에서 목표 주소로 가기 위해서는 사이사이 노드들을 거쳐 데이터가 전달되어야 하죠!
즉 이웃노드들간의 통신(데이터링크 계층)이 이루어져야 멀리 있는 노드에게도 통신(네트워크 계층)이 가능하다는 겁니다.



그렇다면 왜 주소가 두 개나 필요할까요?🤔

MAC 주소는 물리적 주소라고도 합니다. 그 기계의 고유번호로 하드웨어를 구분하기 위한 주소입니다. 이 주소는 사용자가 마음대로 바꿀 수 없습니다.

만약에 저 멀리 있는 A라는 컴퓨터와 통신을 하고 싶다고 합시다. IP주소가 변동가능성이 있기 때문에 IP주소는 A컴퓨터를 확실하게 보증할 수 없습니다. 그래서 절대 변하지 않는 고유주소번호가 있어야 하는데, 그게 MAC 주소입니다!




⇨ MAC 주소를 직접 확인해보고 싶으시다고요?


먼저 cmd창을 열어주세요.(검색에 cmd라고 입력하시면 명령프롬르트 앱이 뜹니다.)
ipconfig/all 명령어를 입력해주세요.

다른 정보들과 함께 물리적 주소를 보여줍니다.

만약 MAC 주소만 보고싶다! 하시면 getmac -v 명령어를 입력해주세요.

이렇게 물리적 주소를 확인하실 수 있습니다.




다시 돌아와서,
A가 B에게 데이터를 전송하는 경우 전송하는 데이터의 목적지 IP주소뿐만 아니라 MAC주소도 지정되어야 전송할 수 있습니다.


보통 메일을 보낼 때 abc1234@gmail.com 이런식으로 도메인 주소로 메일을 발송하시죠?
이 도메인주소는 전송될 때 IP로 바뀌어서 통신 요청을 하게 됩니다.


MAC주소는 별도로 전달하지 않았는데요?!


우리가 전달하지 않아도 네트워크 단에서 IP주소로 MAC주소를 알아오는 기능을 하는 프로토콜이 있습니다.
.
.
.

네 그 프로토콜이 바로 ARP입니다!


ARP가 동작하는 방식은 다음과 같습니다.

인터넷 통신을 하는 기기들은 목적지 IP 주소에 대해 알기 위해 자신이 속한(연결된) 네트워크에 있는 다른 기기들에게 ‘누가 해당 IP 주소를 갖고 있는지’ 물어봅니다. ex) 누가 7.7.7.1이니?!

그러면 그와 상관없는 IP 주소를 가진 기기들은 응답하지 않고 해당 IP 주소를 가진 기기가 자신의 해당 IP 주소와 함께 자신의 고유 정보인 MAC 주소로 응답합니다.

이렇게 응답하여 보내는 정보를 ARP 패킷이라고 합니다.


ARP는 IP주소와 MAC주소를 일대일 매칭하여 목적지를 제대로 찾아갈 수 있도록 돕습니다. IP주소와 MAC주소를 일대일로 대응하여 테이블로 정리하고 목적지 IP에 맞는 목적지 MAC주소로 전달합니다. 이것을 ARP Table이라 부릅니다. ARP Table은 cmd창에서 arp -a 명령어를 통해 확인하실 수 있습니다.





그렇다면 이제 ARP 스푸핑에 대해 이야기해보도록 하겠습니다.
ARP 스푸핑은 쉽게 말해 MAC 주소를 속이는 것 입니다.

공격자가 자신이 가지고 있는 MAC 주소를 공유기에 연결된 기기들에게 서로의 MAC 주소라고 거짓으로 알려줍니다. 그럼 기기들은 서로에게 보낼 데이터를 공격자에게 보내게 되고 공격자는 그 데이터를 볼 수 있겠죠..!

데이터를 보고 아무일도 없었던 것처럼 대상 기기에 데이터를 보내주면 통신이 이루어집니다.

즉, 통신은 되는데 중간에서 데이터를 몰래 보는 기법이라고 할 수 있습니다.


이처럼 ARP Table을 보았을 때 다른 IP에 대한 같은 MAC주소가 보이면 ARP 스푸핑을 의심할 수 있겠죠!



<실습>

가상머신을 이용하여 ARP 스푸핑을 실습해볼 수 있습니다.

실습을 위해서 칼리 리눅스 ifconfig 설정을 promisc로 설정해 줍니다.

Primiscuous(프리미스큐어스) 모드로 설정한 것입니다.

이 설정을 해주게 되면 요청받은 IP주소와 MAC 주소가 다르더라도 전부 패킷을 수신할 수 있게 됩니다.

이제부터 칼리 리눅스에서 모든 패킷을 수신받을 수 있게 되었습니다!



실습을 위해 윈도우 7을 가상머신에서 열어주었습니다.

위에서 언급했던 ipconfig/all 명령어를 통해 살펴보면

기본 게이트웨이를 찾을 수 있습니다.


arp -a 명령어로 ARP Table을 보면 기본 게이트웨이의 MAC주소를 발견할 수 있습니다.

기존 게이트웨이 맥 주소: 00-50-56-e9-54-71이 되겠네요!


이제 칼리 리눅스에서 arpspoof -t [윈도우 7 IP 주소][게이트웨이 주소] 명령어를 입력해주면

기존에는 윈도우 7 <-> 게이트웨이 방식으로 작동이 됐다면

변경 후에는 윈도우 7 <-> 칼리 <-> 게이트웨이 방식으로 작동이 되게 됩니다.

arp spoofing을 실행하고 있는 상황에서

윈도우 7에서 다시 ARP Table을 확인해볼까요?

!!

기존 게이트웨이의 값이 칼리 리눅스의 (MAC)물리적 주소로 변한 것을 확인할 수 있습니다.

다른 IP에 대한 같은 MAC주소가 보이는 것도 확인할 수 있습니다.





0개의 댓글