PromleeBlog
sitemap
aboutMe

posting thumbnail
MAC 주소와 ARP 프로토콜 - 코딩과 함께 배우는 네트워크 4일차
MAC Address and ARP Protocol - Learning Network with Coding Day 4

📅

🚀

들어가기 전에 🔗

지난 시간에는 IP 주소라는 인터넷 세상의 '집 주소'에 대해 배웠습니다.
오늘은 우리 집 바로 옆집에 편지를 전달할 때 필요한 '문 앞 이름표'와 같은
MAC 주소
에 대해 알아보고, IP 주소를 이용해 이 MAC 주소를 알아내는 똑똑한 방법인
ARP 프로토콜
에 대해 이야기해 보겠습니다.
이것들은 우리가 같은 동네(로컬 네트워크) 안에서 서로 데이터를 주고받을 때 꼭 필요한 개념들입니다.

🚀

MAC 주소란 무엇일까요? 🔗

MAC 주소(Media Access Control Address)는 우리 컴퓨터나 스마트폰에 들어있는 네트워크 카드(랜 카드 또는 Wi-Fi 카드)마다 부여된, 세상에 단 하나뿐인
고유한 물리적 주소
입니다.
마치 우리 각자의 주민등록번호처럼, 네트워크 장비를 만들 때부터 제조사에서 할당하는 번호라고 생각할 수 있습니다.

IP 주소가 OSI 7계층 중 3계층(네트워크 계층)에서 사용되는 논리적인 주소라면, MAC 주소는 2계층(데이터 링크 계층)에서 사용됩니다.
같은 네트워크, 예를 들어 우리 집 공유기에 연결된 여러 장치들끼리 통신할 때 바로 이 MAC 주소를 사용해서 서로를 구분하고 데이터를 정확히 전달합니다.

MAC 주소의 구조 🔗

MAC 주소는 총 48비트(bit)로 이루어져 있으며, 보통 16진수 12자리로 표현됩니다.
두 자리씩 끊어서 콜론(:)이나 하이픈(-)으로 구분합니다.
이 48비트 중 앞쪽 24비트는 OUI(Organizational Unique Identifier)라고 해서 네트워크 카드를 만든 제조사를 나타내는 코드이고, 뒤쪽 24비트는 제조사에서 각 장비에 할당하는 고유한 일련번호입니다.
덕분에 전 세계의 모든 MAC 주소는 중복되지 않을 수 있습니다.
MAC Address
MAC Address

🚀

ARP 프로토콜: IP 주소로 MAC 주소를 찾는 방법 🔗

자, 이제 우리 컴퓨터(A)가 같은 네트워크에 있는 다른 컴퓨터(B)에게 데이터를 보내려고 합니다.
컴퓨터 A는 컴퓨터 B의 IP 주소는 알고 있지만, 실제로 데이터를 전달하려면 컴퓨터 B의 MAC 주소를 알아야 합니다.
이때 등장하는 것이 바로
ARP(Address Resolution Protocol, 주소 결정 프로토콜)
입니다.
ARP는 IP 주소를 MAC 주소로 바꿔주는 역할을 하는 프로토콜입니다.

ARP 프로토콜의 동작 원리 🔗

  1. ARP 요청 (ARP Request)
    컴퓨터 A가 같은 네트워크에 있는 모든 장치들에게 "IP 주소가 192.168.0.10인 컴퓨터는 MAC 주소가 뭐예요?" 하고
    방송(브로드캐스트)
    합니다.
    이 요청 메시지에는 컴퓨터 A 자신의 IP 주소와 MAC 주소, 그리고 알고 싶은 컴퓨터 B의 IP 주소가 들어있습니다.
  2. ARP 응답 (ARP Reply)
    네트워크에 있는 모든 장치가 이 요청을 받지만, 오직 IP 주소가 192.168.0.10인 컴퓨터 B만이 "제 MAC 주소는 AA:BB:CC:DD:EE:FF입니다." 라고 컴퓨터 A에게만
    직접(유니캐스트)
    응답합니다.
  3. ARP 캐시 테이블 저장
    컴퓨터 A는 컴퓨터 B로부터 받은 MAC 주소 정보를 자신의
    ARP 캐시 테이블
    이라는 곳에 저장해 둡니다.
    이렇게 하면 다음에 또 컴퓨터 B에게 데이터를 보낼 때는 다시 ARP 요청을 하지 않고 캐시에 저장된 MAC 주소를 바로 사용할 수 있어 효율적입니다.
ARP 프로토콜
ARP 프로토콜

우리가 사용하는 컴퓨터 운영체제(윈도우, 리눅스, macOS 등)에는 이 ARP 캐시 테이블을 확인하는 명령어가 있습니다. 예를 들어, 윈도우의 명령 프롬프트(cmd)나 리눅스/macOS의 터미널에서 arp -a 명령어를 입력하면 현재 ARP 캐시에 저장된 IP 주소와 MAC 주소 목록을 볼 수 있습니다.
  # 윈도우, 리눅스, macOS 터미널에서 ARP 캐시 확인 명령어 예시
arp -a
ARP 캐시 테이블
ARP 캐시 테이블

🚀

ARP 스푸핑: 주소를 속이는 위험한 공격 🔗

ARP 프로토콜은 매우 유용하지만, 한 가지 큰 약점이 있습니다. 바로
보안에 취약하다는 점
입니다.
ARP는 요청을 보낸 측이나 응답을 받는 측에서 별다른 인증 과정을 거치지 않습니다.
이 허점을 이용한 공격이 바로
ARP 스푸핑(ARP Spoofing)
또는 ARP 캐시 포이즈닝(ARP Cache Poisoning)이라고 불리는 공격입니다.

🖐️
ARP 스푸핑 공격은 공격자가 악의적인 ARP 응답 메시지를 네트워크에 보내서, 다른 컴퓨터들의 ARP 캐시 테이블 내용을 거짓 정보로 오염시키는 행위입니다.

ARP 스푸핑은 어떻게 이루어질까요? 🔗

  1. 공격자는 네트워크상의 특정 컴퓨터(피해자)에게 자신이 마치 게이트웨이(인터넷으로 나가는 문)인 것처럼 속이는 ARP 응답을 계속 보냅니다.
  2. 동시에 게이트웨이에게는 자신이 피해자 컴퓨터인 것처럼 속이는 ARP 응답을 보냅니다.
  3. 이렇게 되면, 피해자 컴퓨터가 인터넷으로 보내는 모든 데이터는 공격자를 거치게 되고, 게이트웨이가 피해자 컴퓨터로 보내는 데이터 역시 공격자를 거치게 됩니다.
  4. 공격자는 중간에서 모든 데이터를 엿보거나(도청), 데이터를 변조하거나, 심지어 인터넷 접속을 막아버릴 수도 있습니다.
ARP 스푸핑 공격 다이어그램
ARP 스푸핑 공격 다이어그램

ARP 스푸핑의 위험성과 대응 방안 🔗

ARP 스푸핑은 주로 같은 로컬 네트워크(예: 공용 Wi-Fi) 내에서 발생하며, 개인 정보 유출, 금융 정보 탈취 등 심각한 피해를 줄 수 있습니다.

대응 방안으로는 다음과 같은 것들이 있습니다.

🚀

결론 🔗

오늘은 우리 바로 옆에 있는 장비와 통신하기 위한 고유 식별자인 MAC 주소와, IP 주소를 이용해 이 MAC 주소를 알아내는 ARP 프로토콜에 대해 배웠습니다.
MAC 주소는 하드웨어에 부여된 변경 불가능한 주소이며, ARP는 같은 네트워크 내에서 IP 주소만 아는 상대방의 MAC 주소를 물어보는 과정임을 알게 되었습니다.
또한, ARP 프로토콜의 취약점을 이용한 ARP 스푸핑 공격의 위험성과 기본적인 대응 방안에 대해서도 살펴보았습니다.

이처럼 네트워크 세상에서는 편리한 기능만큼이나 보안도 매우 중요하다는 것을 항상 기억해야 합니다.
다음 시간에는 신뢰성 있는 데이터 전송을 책임지는 TCP와 빠른 속도가 중요한 UDP 프로토콜에 대해 자세히 알아보겠습니다.

참고 🔗