네트워크 보안 학습을 시작하면서 MAC 주소 변경과 네트워크 인터페이스에 대해 알아본 내용을 정리했습니다. UTM 가상머신(우분투)과 맥OS 환경에서의 차이점을 중심으로 설명하겠습니다.
개요
이 글은 네트워크 보안 학습을 시작하면서 MAC 주소 변경과 네트워크 인터페이스에 대해 알아본 내용을 정리했습니다. UTM 가상머신(우분투)과 맥OS 환경에서의 차이점을 중심으로 설명합니다.
환경 설정
제 개발 환경은 아래와 같습니다.
- 호스트: macOS (MacBook Air)
- 가상머신: UTM Ubuntu
- 연결: SSH를 통한 VS Code 개발환경
- 네트워크: 가상화된 이더넷 연결 (macOS는 Wi-Fi 연결을 사용하지만, UTM Ubuntu에서는 가상화된 Ethernet 인터페이스(enp0s1)로 인식됨)
1. 네트워크 기본 개념
MAC 주소란?
- 정의: 네트워크 카드의 고유 식별번호 (48비트)
- 형식: aa:bb:cc:dd:ee:ff (6바이트를 콜론으로 구분)
- 특징: 전세계에서 유일한 하드웨어 주소
- 보안 이슈: 기기 추적, 네트워크 스푸핑에 악용 가능
IP 주소 vs MAC 주소
IP 주소 = 논리적 주소 (변경 가능한 우편번호)
MAC 주소 = 물리적 주소 (하드웨어에 박힌 고유번호)
공인 IP vs 사설 IP
공인 IP (Public IP)
- 정의: 인터넷에서 전세계적으로 유일한 주소
- 할당: ISP(인터넷 서비스 제공업체)에서 할당
- 접근: 인터넷 어디서든 접근 가능
- 예시: 8.8.8.8 (구글 DNS), 1.1.1.1 (Cloudflare)
사설 IP (Private IP)
- 정의: 내부 네트워크에서만 사용하는 주소
- 할당: 공유기나 DHCP 서버에서 자동 할당
- 접근: 같은 네트워크 내에서만 통신 가능
- 대역: RFC 1918에서 정의된 특정 범위만 사용
- 192.168.0.0 ~ 192.168.255.255
- 172.16.0.0 ~ 172.31.255.255
- 10.0.0.0 ~ 10.255.255.255
네트워크 인터페이스
- 인터페이스: 컴퓨터가 네트워크에 연결되는 통로
- 이더넷: 유선 네트워크 연결 방식
- 루프백(lo): 자기 자신과 통신하는 가상 인터페이스 (127.0.0.1)
자주 사용하는 명령어 해설
ifconfig
- 풀네임: Interface Configure
- 의미: 네트워크 인터페이스를 설정하거나 상태를 확인
- 사용: ifconfig → 모든 네트워크 인터페이스 정보 출력
grep
- 풀네임: Global Regular Expression Print
- 의미: 정규표현식 패턴에 맞는 줄을 전역적으로 찾아서 출력
- 사용: ifconfig | grep inet → IP 주소가 포함된 줄만 출력
파이프 |
- 역할: 왼쪽 명령어의 출력을 오른쪽 명령어의 입력으로 전달
- 사용: ifconfig | grep ether → MAC 주소만 필터링해서 출력
inet
- 의미: Internet Protocol (IPv4 네트워킹)
- 표시: inet 192.168.64.8 → IPv4 주소 정보
- 구성:
- IP 주소: 192.168.64.8
- 넷마스크: 255.255.255.0 (네트워크 범위)
- 브로드캐스트: 192.168.64.255 (네트워크 전체 송신용)
inet6
- 의미: Internet Protocol version 6 (IPv6 네트워킹)
- 표시: inet6 fe80::c6c:d2ff:feb3:41cd → IPv6 주소 정보
- 특징: IPv4보다 훨씬 긴 주소 체계
2. UTM 가상화 네트워크 구조
연결 경로
인터넷 ← 공유기 ← 맥북 Wi-Fi ← UTM 가상화 ← 우분투 가상머신
가상화의 특징
- UTM이 맥북의 Wi-Fi를 가상 이더넷으로 변환
- 우분투는 유선 연결로 인식하지만 실제로는 무선 연결
- 별도의 가상 네트워크 대역 사용 (192.168.64.0/24)
3. MAC 주소 변경 실습
보안상 MAC 주소 변경이 필요한 이유
- 프라이버시 보호: 기기 추적 방지
- 네트워크 해킹 실습: 안전한 더미 주소 사용
- 보안 테스트: 실제 정보 노출 방지
우분투에서 macchanger 사용
설치
sudo apt update
sudo apt install macchanger
기본 사용법
# 현재 MAC 주소 확인
sudo macchanger -s enp0s1
# 랜덤 MAC으로 변경
sudo macchanger -r enp0s1
# 특정 MAC으로 변경
sudo macchanger -m aa:bb:cc:dd:ee:ff enp0s1
# 원래 MAC으로 복구
sudo macchanger -p enp0s1
실제 실행 예시
user@user-utm:~$ sudo macchanger -m aa:bb:cc:dd:ee:ff enp0s1
Current MAC: aa:bb:cc:dd:ee:ff (unknown)
Permanent MAC: 0e:6c:d2:b3:41:cd (unknown)
New MAC: aa:bb:cc:dd:ee:ff (unknown)
It's the same MAC!!
참고: "It's the same MAC!!" 메시지가 나온 이유는 이전에 이미 같은 더미 MAC 주소로 변경했기 때문입니다. 처음 변경하는 경우라면 성공적으로 변경되었다는 메시지가 표시됩니다.
Permanent MAC 안전성: 여기서 보이는 0e:6c:d2:b3:41:cd는 UTM이 생성한 가상 MAC 주소입니다. 실제 물리적 하드웨어 주소가 아니라 가상머신 환경에서만 사용되는 임시 식별자이므로 공개해도 안전합니다.
상세 정보 확인
user@user-utm:~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff permaddr [HIDDEN]
주요 발견사항:
- permaddr: 영구 주소 (UTM이 할당한 가상 MAC)
- 현재 사용 중인 MAC은 더미 주소로 변경됨
맥OS에서 MAC 주소 변경
수동 변경 방법
# Wi-Fi 인터페이스 종료
sudo ifconfig en0 down
# MAC 주소 변경
sudo ifconfig en0 ether aa:bb:cc:dd:ee:ff
# Wi-Fi 인터페이스 재시작
sudo ifconfig en0 up
랜덤 MAC 생성
# Python을 이용한 랜덤 MAC 생성
python3 -c "import random; print(':'.join(['%02x' % random.randint(0,255) for _ in range(6)]))"
# OpenSSL을 이용한 방법
openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
자동화 스크립트
# 한 줄 명령어로 자동 실행
sudo ifconfig en0 down && \
sudo ifconfig en0 ether $(python3 -c "import random; print(':'.join(['%02x' % random.randint(0,255) for _ in range(6)]))") && \
sudo ifconfig en0 up && \
echo "New MAC:" && ifconfig en0 | grep ether
스크립트 파일 생성
# 스크립트 파일 생성
cat > ~/change_mac.sh << 'EOF'
#!/bin/bash
sudo ifconfig en0 down
sudo ifconfig en0 ether $(python3 -c "import random; print(':'.join(['%02x' % random.randint(0,255) for _ in range(6)]))")
sudo ifconfig en0 up
echo "New MAC:"
ifconfig en0 | grep ether
EOF
# 실행 권한 부여
chmod +x ~/change_mac.sh
# alias 설정 (선택사항)
echo "alias randmac='~/change_mac.sh'" >> ~/.zshrc
source ~/.zshrc
실행 결과
(base) suminworld@suminui-MacBookAir ~ % ~/change_mac.sh
Password:
ifconfig: ioctl (SIOCAIFADDR): Network is down
New MAC:
ether de:63:42:36:68:5e
4. 네트워크 인터페이스 비교 분석
맥OS 네트워크 인터페이스 (복잡)
(base) suminworld@suminui-MacBookAir ~ % ifconfig | grep -o "^[a-z0-9]*:"
lo0: # 루프백
gif0: # 일반 터널링
stf0: # 6to4 터널
anpi1: # Apple Network Interface
anpi0: # Apple Network Interface
en3: # 이더넷/USB 어댑터
en4: # 이더넷/USB 어댑터
en1: # 가상 이더넷
en2: # 가상 이더넷
bridge0: # 브리지 인터페이스
utun0-5: # VPN 터널들
ap1: # 액세스 포인트 (핫스팟)
en0: # Wi-Fi (메인)
awdl0: # AirDrop
llw0: # Low Latency WLAN
vmenet0: # UTM 가상 네트워크
bridge100: # UTM 브리지
우분투 네트워크 인터페이스 (단순)
user@user-utm:~$ ifconfig | grep -o "^[a-z0-9]*:"
enp0s1: # 메인 네트워크 (PCI bus 0, slot 1)
lo: # 루프백
인터페이스 명명 규칙
- 우분투: enp0s1 = Ethernet + PCI bus 0 + slot 1
- 맥OS: en0 = Ethernet Network 0
5. IP 주소 구조 분석
맥OS 네트워크 정보
(base) suminworld@suminui-MacBookAir ~ % ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=6460<TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
ether de:63:42:36:68:5e
inet6 fe80::1081:e083:f255:8efd%en0 prefixlen 64 secured scopeid 0xb
inet 192.168.45.188 netmask 0xffffff00 broadcast 192.168.45.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
우분투 네트워크 정보
user@user-utm:~$ ifconfig enp0s1
enp0s1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.64.8 netmask 255.255.255.0 broadcast 192.168.64.255
inet6 fd8f:7d8a:5c67:66e5:b020:82ff:fe50:2e29 prefixlen 64 scopeid 0x0<global>
inet6 fd8f:7d8a:5c67:66e5:b4cd:40ff:fe14:9ce1 prefixlen 64 scopeid 0x0<global>
inet6 fd8f:7d8a:5c67:66e5:a8bb:ccff:fedd:eeff prefixlen 64 scopeid 0x0<global>
inet6 fd8f:7d8a:5c67:66e5:c6c:d2ff:feb3:41cd prefixlen 64 scopeid 0x0<global>
inet6 fe80::c6c:d2ff:feb3:41cd prefixlen 64 scopeid 0x20<link>
ether aa:bb:cc:dd:ee:ff txqueuelen 1000 (Ethernet)
IP 주소 차이점
- 맥: 192.168.45.188/24 (실제 공유기 네트워크)
- 우분투: 192.168.64.8/24 (UTM 가상 네트워크)
IPv6 주소 생성 패턴
우분투에서 MAC 주소 aa:bb:cc:dd:ee:ff가 IPv6 주소 a8bb:ccff:fedd:eeff로 자동 변환되는 것을 확인할 수 있습니다.
IPv6 주소 유형 설명
- fe80::: Link-Local Address (링크 로컬) - 같은 네트워크 세그먼트 내에서만 사용
- fd8f::: ULA (Unique Local Address) - IPv6의 사설 주소, IPv4의 192.168.x.x와 비슷한 역할
6. UTM 네트워크 연결 구조 분석
실제 연결 경로
맥 Wi-Fi (en0: 192.168.45.188)
↓
UTM bridge100 (2e:ca:16:68:01:64)
↓
UTM vmenet0 (12:b2:8e:1e:d4:1a)
↓
우분투 enp0s1 (192.168.64.8)
MAC 주소 현황
- 맥 en0: de:63:42:36:68:5e (랜덤화됨)
- 우분투 enp0s1: aa:bb:cc:dd:ee:ff (더미 주소)
- UTM 원본: 0e:6c:d2:b3:41:cd (가상머신 할당 주소)
7. 보안 고려사항
노출되면 안 되는 정보
- 실제 물리적 MAC 주소: 기기 추적 가능
- 내부 네트워크 구조: 공격 대상 정보 제공
- 실제 IP 주소: 위치 추적 가능
안전한 실습 방법
- 더미 MAC 주소 사용: aa:bb:cc:dd:ee:ff 같은 테스트용 주소
- 정보 마스킹: 로그나 스크린샷에서 실제 정보 숨기기
- 가상 환경 활용: UTM 같은 격리된 환경에서 실습
정보 마스킹 예시
# MAC 주소 자동 마스킹
ip link show | sed 's/[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]/[HIDDEN]/g'
# 출력 결과:
# link/ether [HIDDEN] brd [HIDDEN] permaddr [HIDDEN]
8. 추가 학습 명령어
네트워크 상태 확인
# 라우팅 테이블 확인
route -n # 우분투
netstat -rn # 맥OS
# DNS 서버 확인
resolvectl status # 우분투
scutil --dns # 맥OS
# ARP 테이블 확인
arp -a # 공통
# 포트 상태 확인
netstat -tuln # 공통
연결 테스트
# 기본 연결 테스트
ping -c 3 8.8.8.8
# 루프백 테스트
ping -c 3 127.0.0.1
# 네트워크 진단
traceroute 8.8.8.8
결론
- 가상화 환경의 네트워크 구조: UTM이 어떻게 물리적 네트워크를 가상화하는지
- MAC 주소의 중요성: 보안과 프라이버시 측면에서의 위험성
- 환경별 차이점: 물리적 하드웨어와 가상머신의 네트워크 인터페이스 구조 차이
⚠️ 본 글에 사용된 모든 MAC/IP는 더미 또는 사설 주소입니다. 네트워크 보안 학습에서는 항상 더미 데이터를 사용하고, 실제 개인정보가 노출되지 않도록 주의해야 합니다.
개선 사항이 있다면 언제든 의견 남겨주세요!
'network' 카테고리의 다른 글
[네트워크] ALFA AWUS036ACM USB 무선랜카드로 Wi-Fi 보안 학습 환경 구축하기 (2) | 2025.09.08 |
---|---|
[네트워크] UTM VM에서 USB 무선랜카드 연결하는 법 (macOS) (0) | 2025.09.08 |
[네트워크] C 소켓 프로그래밍 Echo 서버 구현 - 기본부터 멀티클라이언트까지 (0) | 2025.09.08 |
[네트워크] C 네트워크 프로그래밍과 패킷 분석 실습 (0) | 2025.09.08 |
[네트워크 보안] 와이어샤크를 이용한 네트워크 패킷 분석 실습 (0) | 2025.09.08 |