📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 113편
이전 글: 112. Ethernet 프레임 필드 분석 — eth.src·eth.dst·eth.type로 읽는 2계층 증거 · 다음 글: 114. ARP 패킷 필드 분석 — opcode와 Sender·Target 필드로 IP-MAC 매핑 검증하기
MAC 주소의 구조(OUI, 특수 주소)는 06. MAC Address란 무엇인가, Ethernet 헤더의 eth.src·eth.dst 필드와 IG/LG 비트, IP-MAC 불일치 판단은 112. Ethernet 프레임 필드 분석 — eth.src·eth.dst·eth.type로 읽는 2계층 증거에서 다뤘습니다. 이 글은 한 걸음 더 나아가 캡처에 등장한 MAC 목록을 "어떤 장비인가"로 바꾸는 작업을 다룹니다.
MAC 분석의 목표는 세 가지 질문에 답하는 것입니다.
| 질문 | 사용하는 정보 |
|---|---|
| 이 MAC은 사람이 쓰는 단말인가, 장비·프로토콜용 주소인가? | 특수 목적 MAC 패턴 |
| 이 MAC은 어떤 IP·호스트명을 썼는가? | DHCP, ARP, 트래픽의 IP |
| 이 MAC은 언제부터 언제까지 활동했는가? | 프레임 시각 (첫 등장, 마지막 등장) |
캡처 안의 MAC을 장비 정보로 바꾸는 흐름입니다.
Statistics → Endpoints → Ethernet 탭 : 등장한 MAC 전체 목록
↓
특수 목적 MAC 제외 (브로드캐스트, 멀티캐스트, 이중화 가상 MAC, 스위치 프로토콜)
↓
단말 MAC별로 IP·호스트명 연결
├─ DHCP : chaddr(MAC) ↔ 할당 IP ↔ 호스트명 옵션
├─ ARP : Sender MAC ↔ Sender IP (114편)
└─ 일반 트래픽 : 같은 서브넷 내부 IP의 eth.src
↓
ethers 파일에 "MAC 이름" 등록 → 화면에 장비 이름으로 표시
↓
자산 대장·스위치 MAC 테이블·NAC 기록과 대조
Wireshark는 View → Name Resolution → Resolve Physical Addresses가 켜져 있으면 개인 설정 폴더의 ethers 파일(및 시스템 /etc/ethers)을 먼저 찾아 MAC을 이름으로 바꾸고, 없으면 OUI 제조사 이름으로 표시합니다. 실제로 적용된 이름은 Statistics → Resolved Addresses에서 확인할 수 있습니다.
캡처에서 자주 보이지만 단말이 아닌 MAC 패턴입니다.
| MAC 패턴 | 의미 | 대응하는 IP·프로토콜 |
|---|---|---|
ff:ff:ff:ff:ff:ff | 브로드캐스트 | ARP 요청, DHCP Discover |
01:00:5e: + 하위 23비트 | IPv4 멀티캐스트 | 예: 224.0.0.251(mDNS) → 01:00:5e:00:00:fb |
33:33: + 하위 32비트 | IPv6 멀티캐스트 | 예: ff02::1 → 33:33:00:00:00:01 (116. IPv6 Packet 분석) |
01:80:c2:00:00:00 | STP(스패닝 트리) | 스위치 간 제어 프레임 |
01:80:c2:00:00:0e | LLDP | 장비 자기 소개 프레임 |
00:00:5e:00:01:xx | VRRP 가상 라우터 MAC (xx = VRID) | 이중화 게이트웨이 |
00:00:0c:07:ac:xx | HSRP(v1) 가상 MAC | Cisco 이중화 게이트웨이 |
단말 MAC을 식별할 때 쓰는 Wireshark 필드입니다.
| 필드 | 얻는 정보 |
|---|---|
eth.src, eth.src_resolved, eth.src.oui_resolved | 원래 값, ethers 이름, 제조사 이름 |
eth.src.lg | 1이면 로컬 관리(랜덤화 가능) 주소 |
dhcp.hw.mac_addr | DHCP 요청 단말의 MAC (chaddr) |
dhcp.option.hostname | 단말이 알린 호스트명 (옵션 12) |
dhcp.option.dhcp | 메시지 종류 (1 Discover, 3 Request, 5 ACK 등) |
dhcp.ip.your | 서버가 할당한 IP (ACK의 yiaddr) |
arp.src.hw_mac, arp.src.proto_ipv4 | ARP가 주장한 MAC-IP 쌍 |
실습 예시 — 본인 소유 실습망 캡처에서 MAC-IP-호스트명 대응표를 만듭니다(Rocky/Ubuntu 공통). 출력 값은 예시(값은 환경마다 다름)입니다.
F=/tmp/lab.pcapng
# 1) 등장한 출발지 MAC과 제조사, LG 비트
tshark -r $F -T fields -e eth.src -e eth.src.oui_resolved -e eth.src.lg | sort | uniq -c | sort -rn
# 2) DHCP로 MAC-호스트명-할당 IP 확인
tshark -r $F -Y 'dhcp' -T fields -e frame.time -e dhcp.option.dhcp \
-e dhcp.hw.mac_addr -e dhcp.option.hostname -e dhcp.ip.your
# 3) 같은 서브넷 내부 IP와 MAC의 첫 등장·마지막 등장 시각
tshark -r $F -Y 'ip.src == 192.168.10.0/24' -T fields \
-e frame.time_epoch -e eth.src -e ip.src \
| awk '{k=$2" "$3; if(!(k in f)) f[k]=$1; l[k]=$1} END {for (k in f) print k, f[k], l[k]}'
2)번 결과의 형식 예시입니다.
... 1 00:0c:29:3a:4b:5c LAB-PC01
... 3 00:0c:29:3a:4b:5c LAB-PC01
... 5 00:0c:29:3a:4b:5c 192.168.10.21
확인된 대응을 개인 설정 폴더(tshark -G folders의 Personal configuration)의 ethers 파일에 등록하면, 이후 캡처에서 MAC이 장비 이름으로 표시됩니다.
# ethers 파일 형식 예시: MAC 주소 이름
00:0c:29:3a:4b:5c LAB-PC01
00:50:56:dd:ee:ff LAB-GW
📷 [실습 화면 삽입 위치] Endpoints → Ethernet 탭에서 Name resolution을 켰을 때 ethers에 등록한 이름(LAB-PC01, LAB-GW)과 제조사 이름이 함께 보이는 화면
📷 [실습 화면 삽입 위치] DHCP ACK 패킷의 Details에서 Client MAC address, Your (client) IP address, Host Name 옵션을 펼친 화면
dhcp.hw.mac_addr와 프레임의 eth.src가 다르면 DHCP 릴레이를 거친 경우(프레임 출발지가 릴레이 장비)일 수 있고, 같은 LAN에서 직접 온 요청이라면 도구로 만든 요청일 가능성도 검토합니다.dhcp.hw.mac_addr로 DHCP Discover가 대량 발생하면 DHCP 주소 풀 고갈 시도의 흔적일 수 있습니다(71. DHCP 위장·고갈 공격의 원리와 탐지).| 흔적 위치 | MAC 분석과 연결하는 방법 |
|---|---|
| DHCP 서버 임대 로그 | 사건 시각에 해당 IP를 받은 MAC 확인 |
| 스위치 MAC 주소 테이블·포트 보안 로그 | MAC → 연결된 스위치 포트(물리 위치) |
| NAC·무선 컨트롤러 | 인증 사용자, 접속 AP, 접속 시간 |
| EDR·자산 관리 | MAC → 호스트명·사용자 |
관제자가 확인할 질문
오탐 주의: 스마트폰·노트북은 SSID마다, 혹은 주기적으로 MAC을 바꿀 수 있어 "미등록 MAC"이 곧 불법 장비는 아닙니다. 또한 라우터 너머에서 온 트래픽의 MAC은 모두 게이트웨이 MAC이므로 원격 호스트 식별에 쓰지 않습니다. 스위치에서 MAC을 추적하는 방법은 04. 네트워크 장비 실습 영역에서 다룹니다.
01:00:5e, 33:33)·STP·LLDP·VRRP·HSRP 가상 MAC을 먼저 걸러 냅니다.dhcp.hw.mac_addr, dhcp.option.hostname, dhcp.ip.your)와 ARP 필드로 MAC-IP-호스트명 대응표를 만듭니다.ethers 파일에 등록해 이름으로 표시하고, Statistics → Resolved Addresses로 적용 결과를 확인합니다.