정보처리기사 관련 포스팅 목록
ARP(Address Resolution Protocol) 스푸핑
안녕하세요.
오늘은 정보처리기사 또는 정보보안기사에서 자주 보이는 ARP 스푸핑에 대해 알아보도록 하겠습니다. ARP는 주소 결정 프로토콜의 약자입니다. 컴퓨터에서 주소란 고유한 주소인 MAC과 논리적 주소인 IP 등이 존재합니다. ARP에서 말하는 주소는 이 두 주소가 연관되어있습니다.
인터넷 상에는 정말 무수히 많은 국가와 컴퓨터, 주변기기들이 존재합니다. 요즘 2021년 IT 시대에는 냉장고, 가습기 등 할 것 없이 모두 아이피를 보유하고 네트워크 통신을 수행합니다.
편리함을 얻기 위함이죠. 원격으로 조종하여 유익한 정보들을 획득하거나 제어할 수 있습니다. 그렇다면 우리는 어떻게 이 많은 컴퓨터들 사이에서 내 컴퓨터랑 통신해야 할 상대 컴퓨터를 찾을 수 있을까요? 생각해봅시다.
IP(Internet Protocol)은 말 그대로 논리적 주소입니다. 이 말은 즉슨 내 컴퓨터도 A라는 아이피를 가질 수 있지만 다른 컴퓨터도 A라는 아이피를 똑같이 가질 수 있다는 의미입니다. 자, 그래서 충돌이 날 수 있겠죠?
이런 충돌을 피하기 위해서 사설망과 공용망이 존재합니다. 전 세계에서 사용할 수 있는 아이피는 유한적입니다. 개수의 끝이 있다는 의미이죠. 전 세계 인구수의 1명당 1개의 아이피를 할당해도 모자랍니다. 그런데 우리는 어떻게 이렇게 많은 아이피를 사용하고 있을까요.
공용망의 한 아이피를 가진 공유기는 자신과 연결된 컴퓨터등 주변기기들에게 자기가 관리하는 사설 아이피를 별개로 부여합니다. 그리고 이 사설 아이피를 가진 기기들이 인터넷망과 통신할 때는 공유기의 공용망 아이피 한 개로 모두 공유해서 사용하게 됩니다.
자. 여기서 모든 힌트들이 나왔습니다.같은 공유기에 묶인 컴퓨터 등 주변기기들은 같은 가까운 망(LAN)에 연결되어있고 이 기기들이 먼 거리인 인터넷 망으로 통신할 때는 공유기의 공용망(WAN) 아이피를 공유해서 쓰게됩니다. 따라서 인터넷 망 밖에 있는 기기가 이 공유기에 붙어있는 기기들의 아이피를 바라볼 때는 모두 한 개의 아이피로 보이게 되는 것이죠.
ARP 스푸핑은 이러한 구조를 이용하여 공격하는 방법입니다.자 그러면 이제 ARP와 ARP 스푸핑에 대해 자세히 알아보도록 하겠습니다.
ARP란
1. IP 주소와 같은 논리적 주소를 이용하여 MAC과 같은 물리적 주소를 찾는 프로토콜
2. 이외 MAC 주소로 IP 주소를 찾는 프로토콜인 RARP(Reverse ARP)가 존재
설명
1: 근거리 통신망에 위치한 기기들의 물리적 주소를 알아내기 위한 프로토콜입니다. 위에 설명한 것처럼 LAN은 공유기에 연결되어 기기들이 속한 망입니다. 이 망에서 A와 B 컴퓨터가 서로 통신하기 위해서는 서로의 논리적 주소(IP) 뿐만 아니라 물리적 주소(MAC)도 알아야 합니다. 따라서 자신의 LAN 망에 "A"라는 아이피 주소를 가진 컴퓨터야! 나에게 너의 MAC 주소를 알려줘!라는 프로토콜입니다.
2: 반대의 경우도 있습니다. 내가 통신하려는 컴퓨터의 MAC 주소를 아는데 IP를 모르는 경우에 쓰이는 프로토콜은 RARP 입니다.
아래는 실제 ARP 프로토콜 패킷의 예입니다. "192.168.0.7" 이란 아이피를 가진 컴퓨터가 누구냐?라는 메시지를 "192.168.0.1" 이 물어보는 ARP 패킷입니다. 그리고 바로 밑에 "192.168.0.7" 이란 아이피를 가진 컴퓨터가 자신의 MAC 주소는 "3c:f0:11:8 b:d6:f2"라고 알려주고 있습니다.
스푸핑이란
1. A가 B에게 정보를 요구하거나 응답할 때 C가 A에게 B인척 속여 행세를 하는 행위
2. 즉 상대방을 속여 정보를 빼내는 행위를 의미
라인 설명
1: 스푸핑이란 단어는 행위를 의미합니다. 보통 다른 컴퓨터가 LAN에 잠깐 들어와 다른 컴퓨터 행세를 하며 정보를 빼앗는 경우가 많습니다. 예를 들어 모든 컴퓨터들은 공유기 즉, 게이트웨이에게 메시지를 전송하고 게이트웨이가 다른 컴퓨터에게 메시지를 전송하여 통신이 이루어집니다. 공격 컴퓨터는 이 게이트웨이 행세를 하여 모든 컴퓨터들의 메시지를 훔치는 행위가 가능합니다.
2: 속이는 방법은 단순합니다. 그냥 다른 컴퓨터들에게 계속 "A는 나다"라는 메시지를 전송합니다. 이런 단순 행위를 스푸핑이라 합니다.
추가로 리눅스 우분투 환경에서 내 컴퓨터가 알고 있는 같은 근거리 통신망(LAN)에 있는 기기들의 아이피 주소와 MAC 주소를 확인하는 방법에 대해 알아보도록 하겠습니다.
arp 테이블 조회
$ arp
Address HWtype HWaddress Flags Mask Iface
192.168.0.1 ether 70:5d:cc:ab:90:08 C enp0s3
192.168.0.7 ether 3c:f0:11:8b:d6:f2 C enp0s3
라인 설명
1: 쉘에 arp 명령을 입력합니다.
2-4: 같은 근거리통신망(LAN)에 있는 사설 컴퓨터들의 아이피 주소와 MAC 주소가 출력됩니다. 이 주소들은 제 컴퓨터가 알고 있는 컴퓨터들의 주소입니다. 각 출력 필드는 아래와 같습니다.
Address: 아이피 주소입니다.
HWtype: 해당 아이피를 가진 기기의 하드웨어 타입입니다. 두 아이피를 가진 기기는 각각 공유기와 컴퓨터입니다. 따라서 그 기기들의 네트워크 카드 타입인 ether가 출력되고 있습니다.
HWaddress: MAC 주소입니다. 이 주소는 ARP 프로토콜 요청에 응답을 받으면 이 테이블에 저장됩니다.
Flags Mask: 아이피 주소 마스킹 값입니다. 모두 사설망으로서 C 타입을 가리키고 있습니다.
Iface: 해당 아이피 주소로 통신할 때 내 컴퓨터의 어떤 네트워크 카드를 통해 통신하는지에 대한 네트워크 카드 이름입니다. 제 컴퓨터는 enp0s3 입니다.
위의 Arp 테이블에 저장되는 내용은 자신의 컴퓨터가 같은 근거리 통신망에 ARP 프로토콜 요청 후 응답을 받았을 때 저장됩니다. 또한 주기적으로 내용이 삭제되고 추가되며 업데이트가 일어납니다.
마무리
오늘은 정보처리기사와 정보보안기사에 자주 출제되는 ARP 스푸핑에 대해 알아보았습니다. ARP는 내가 알고 있는 아이피 주소를 가진 실제 기기의 물리적 주소를 알고 싶을 때 사용하는 프로토콜이었습니다. 또한 스푸핑은 둘 간의 통신 과정에서 다른 한 명인 척 행위를 하며 속여 주요 정보를 탈취하는 행위였습니다.
또한 리눅스 환경에서 간단히 내 컴퓨터의 ARP 테이블을 조회하는 방법도 알아보았습니다.
관련 글
정보처리기사 관련 포스팅 목록