
arp-scan은 로컬 네트워크 내에서 열려 있는 IP와 MAC주소를 빠르게 스캔할 수 있는 명령어다. 이름에서 알 수 있듯이 ARP(Address Resolution Protocol)을 활용하여, 같은 서브넷에 있는 장비들을 물리적으로 찾아낸다.
지정된 서브넷(ex: 192.168.0.0/24)에 속하는 모든 IP에 대해 브로드캐스트로 ARP 요청을 보내고, 응답이 온 IP들의 IP주소, MAC주소, MAC주소로 추정한 벤더 이름까지 출력한다.
sudo arp-scan 192.168.0.0-192.168.0.255
| 도구 | 주요 방식 | 특징 | 장점 | 단점 |
|---|---|---|---|---|
| arp-scan | ARP (2계층) | 로컬망의 MAC/IP 확인 | 빠름, 스텔스성 우수, 스위치 환경 적합 | 동일 서브넷만 가능, 라우터 넘어 불가 |
| nmap | TCP/IP (3~4계층) | 포트/OS/서비스 탐지 가능 | 기능 다양, 원격 탐지 가능 | 느림, 방화벽에 탐지될 수 있음 |
| netdiscover | ARP + 패턴 매칭 | 제조사 추정, 단순 탐색용 | 사용 간단, 로컬 장치 빠르게 확인 가능 | 정확도 낮음, 정보 제한적 |
| masscan | TCP SYN 스캔 | 고속 포트 스캔 | 매우 빠름, 대규모 네트워크 스캔 가능 | 오탐 가능성, 방화벽 탐지 쉬움 |
| ping sweep | ICMP Echo 요청 | 응답하는 호스트만 탐지 | 간단, 빠름, 범용 시스템 호환 | ICMP 차단 시 무력화, 포트 정보 없음 |
위에서 말했듯, IP 주소와 MAC 주소 매핑에 사용되는 ARP 프로토콜을 사용한다.
ARP는 데이터링크 계층에서 동작하며, "이 IP를 가진 장비 있냐?"라고 브로드캐스트 방식으로 호스트들에게 질문한다. 예를 들어 "Who has 192.168.0.3? Tell 192.168.0.2"과 같이 보내면,
IP가 192.168.0.3인 호스트에서 192.168.0.2에게 "192.168.0.3 is at aa:bb:cc:dd:ee:ff"와 같이 자신의 MAC주소를 알려준다.
arp-scan은 지정된 IP범위에 대해 순차적으로 ARP 요청을 보내고, 응답이 온 IP들만 "존재하는 장비"로 인식하고 출력한다.
arp-scan 명령어를 실행하면 아래와 같이 해당 호스트의 벤더명도 같이 출력한다.
ARP 프로토콜은 IP, MAC 주소만 주고받도록 되어있는데 어떻게 벤더명을 알 수 있을까?

정답은 바로 OUI라는 걸 이용하면 된다. MAC 주소의 앞 3바이트가 OUI인데, 이를 분석하여 벤더 이름을 추정할 수 있다.
OUI(Organizationally Unique Indentifier")는 "조직(회사)에게 고유하게 부여된 식별자"라는 뜻으로, 네트워크 장비를 식별하기 위한 MAC주소의 상위 3바이트(24비트)를 말한다.
예를 들어, aa:bb:cc:dd:ee:ff와 같은 MAC 주소에서 앞부분 aaa:bbb:ccc가 OUI이다.
이 3값은 IEEE(국제전기전자기술자협회)가 각 제조사에게 고유하게 할당한다.
OUI는 전세계 수많은 장비가 서로 충돌 없는 고유한 MAC 주소를 가질 수 있도록 제조사 단위로 구분하는 게 목적이다.
제조사는 할당받은 OUI를 기준으로 남은 하위 3바이트를 조합해 자사 장비마다 고유한 MAC 주소를 생성한다. 이를 통해 네트워크 상에서 장비를 식별하거나 추적할 때, 해당 MAC 주소만으로 어떤 제조사에서 만든 장비인지 확인할 수 있다.
arp-scan이 사용하는 OUI 데이터베이스는 일반적으로 텍스트 파일 형식으로 저장된다.
직접 확인하거나 수정할 수도 있다.
기본적으로 /usr/share/arp-scan/ieee-oui.txt라는 경로에 있다.
cat으로 확인해보니 아래와 같이 OUI 번호와 벤더명이 출력된다.

MAC 주소는 NIC(Network Interface Card), 즉 랜카드 하드웨어 내부에 저장된다. 대부분의 랜카드에는 ROM(Read-Only Memory) 또는 EEPROM(Electrically Erasable Programmable Read-Only Memory)과 같은 비휘발성 메모리 칩이 내장되어 있으며, 여기에 제조사가 할당한 MAC 주소(Burned-in Address, BIA)가 영구적으로 기록된다.
MAC 주소는 네트워크 인터페이스를 전세계적으로 유일하게 식별하기 위한 48비트 ID다.
IEEE는 OUI(앞 3바이트)를 각 제조사에게 고유하게 할당하고, 제조사는 뒤 3바이트로 자체 일련번호를 생성하여 전체 주소를 유일하게 만들어야 한다.
대부분의 벤더(제조사)는 추적, 기술지원, 보안, 법적 책임 등의 이유로 모든 출고 제품의 MAC 주소를 기록 하고 보관한다고 한다.
MAC 주소의 유일성은 3바이트(OUI) + 3바이트(벤더 일련번호)의 조합으로 보장된다.
전체 6바이트(48비트) 중, 하위 3바이트(24비트)만으로도 사실상 16,777,216가지를 표현할 수 있기 때문에 한 제조사가 만든 모든 제품을 구분하기에 충분히 크다고 할 수 있다.
한 OUI 당 할당할 수 있는 MAC 주소는 2^24. 즉 대략 1600만개 정도이다.
대기업과 같은 경우(ex: Samsung, Apple)은 수십개의 OUI를 보유하고 있어 수억 대를 커버칠 수 있다.
아래는 삼성의 OUI를 필터링해서 출력한 결과다.
삼성만 해도 벌써 52개를 소유하고있다!

랜덤 MAC 주소: 최신 스마트폰(안드로이드 10 이상, iOS 14 이상)이나 Windows 10/11과 같은 운영체제에서는 Wi-Fi 네트워크 연결 시 '랜덤 MAC 주소' 기능을 제공한다. 이는 사용자의 프라이버시를 보호하기 위함으로, 공용 Wi-Fi 등에서 장치 MAC 주소를 통한 추적을 막기 위해 네트워크마다 다른 임시 MAC 주소를 사용한다. 하지만 장치 하드웨어 자체에는 여전히 벤더가 할당한 고유한 MAC 주소가 존재한다.
MAC 주소 스푸핑: MAC 주소는 하드웨어에 고유하게 부여되지만, 소프트웨어적으로는 쉽게 변경할 수 있다. 이를 'MAC 스푸핑'이라고 하며, 네트워크 보안 우회, 프라이버시 보호, 특정 네트워크 장비로 위장하여 네트워크 공격 수행 등 다양한 목적으로 사용될 수 있다.
멀티캐스트 MAC 주소: MAC 주소의 첫 번째 바이트의 LSB(최하위 비트)가 1로 설정된 주소는 멀티캐스트 주소로 사용된다. 이는 특정 그룹에 속한 여러 장치들에게 동시에 데이터를 전송할 때 사용된다.
하나의 데스크톱 PC에 LAN 카드가 2개이거나(LAN 포트가 2개), 무선 랜카드(Wi-Fi)까지 포함되어 있다면, arp-scan을 실행했을 때 해당 PC에 대해 2개 또는 그 이상의 MAC 주소가 출력될 수 있다. MAC 주소는 네트워크 인터페이스 카드(NIC)마다 할당되는 고유 식별자이기 때문에, PC에 여러 NIC가 존재하고 활성화되어 있다면 각각의 NIC는 고유한 MAC 주소를 가지게 된다.