network

[네트워크 보안] MAC 주소 변경과 네트워크 인터페이스 완전 분석 - UTM 가상머신과 macOS 환경 비교

숨usm 2025. 9. 8. 20:03

네트워크 보안 학습을 시작하면서 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 주소 변경이 필요한 이유

  1. 프라이버시 보호: 기기 추적 방지
  2. 네트워크 해킹 실습: 안전한 더미 주소 사용
  3. 보안 테스트: 실제 정보 노출 방지

우분투에서 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. 보안 고려사항

노출되면 안 되는 정보

  1. 실제 물리적 MAC 주소: 기기 추적 가능
  2. 내부 네트워크 구조: 공격 대상 정보 제공
  3. 실제 IP 주소: 위치 추적 가능

안전한 실습 방법

  1. 더미 MAC 주소 사용: aa:bb:cc:dd:ee:ff 같은 테스트용 주소
  2. 정보 마스킹: 로그나 스크린샷에서 실제 정보 숨기기
  3. 가상 환경 활용: 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

결론

  1. 가상화 환경의 네트워크 구조: UTM이 어떻게 물리적 네트워크를 가상화하는지
  2. MAC 주소의 중요성: 보안과 프라이버시 측면에서의 위험성
  3. 환경별 차이점: 물리적 하드웨어와 가상머신의 네트워크 인터페이스 구조 차이

⚠️ 본 글에 사용된 모든 MAC/IP는 더미 또는 사설 주소입니다. 네트워크 보안 학습에서는 항상 더미 데이터를 사용하고, 실제 개인정보가 노출되지 않도록 주의해야 합니다.

개선 사항이 있다면 언제든 의견 남겨주세요!