suminworld

network

[네트워크] ALFA AWUS036ACM 모니터 모드 설정 (Wi-Fi 보안 실습 - 1)

숨usm 2025. 9. 10. 03:40

ALFA AWUS036ACM USB 무선랜카드를 사용해서 Wi-Fi 패킷을 직접 캡처하고 분석해보는 실습을 진행하였습니다.

 

suminworld-system-lab/network/wifi at main · sumin-world/suminworld-system-lab

System programming & networking lab (C, Linux, OSTEP practice) - sumin-world/suminworld-system-lab

github.com

 


🔧 실습 환경 세팅

제 실습 환경은 아래와 같습니다.

  • 🖥️ Host: macOS + UTM 가상머신
  • 🐧 Guest: Ubuntu 24.04 LTS
  • 📡 무선랜카드: ALFA AWUS036ACM (MediaTek MT7612U)
  • 🔍 분석 도구: tcpdump, tshark

1️⃣ USB 무선랜카드 인식 확인

먼저 USB 무선랜카드가 제대로 인식되는지 확인해봤습니다.

# USB 장치 확인
lsusb
# MediaTek MT7612U (AWUS036ACM) 확인됨

# 커널 드라이버 로딩 확인  
dmesg | grep mt76
# mt76x2u 드라이버가 정상 로드됨

결과: MT7612U 칩셋이 Ubuntu에서 바로 인식되고 별도 드라이버 설치 없이 작동


2️⃣ 모니터 모드로 전환

일반적인 Wi-Fi 카드는 Managed 모드에서 작동하지만, 패킷 분석을 위해서는 Monitor 모드로 변경해야 합니다.

# 무선 인터페이스 비활성화
sudo ip link set wlx00c0cab766e5 down

# 모니터 모드로 변경
sudo iw dev wlx00c0cab766e5 set type monitor

# 인터페이스 활성화
sudo ip link set wlx00c0cab766e5 up

# 모드 확인
iwconfig

결과 확인:

wlx00c0cab766e5  IEEE 802.11  Mode:Monitor  Frequency:2.412 GHz

모니터 모드란?
주변의 모든 Wi-Fi 트래픽을 도청할 수 있는 모드입니다. "무선 도청 장치"처럼 작동한다고 생각하면 됩니다.


3️⃣ 실제 Wi-Fi 패킷 캡처

이제 실제로 날아다니는 Wi-Fi 신호들을 캡처해봅시다.

# tcpdump로 패킷 캡처 (Ctrl+C로 중단)
sudo tcpdump -i wlx00c0cab766e5 -w first_capture.pcap

📊 캡처 결과: 약 320개의 프레임이 수집됨!

참고: 원래는 GUI Wireshark를 쓰려고 했는데, UTM 환경에서 Qt/X11 문제로 실행이 안 돼서 CLI 도구인 tshark를 사용했습니다.


4️⃣ Beacon 프레임 분석

캡처된 패킷 중에서 Beacon 프레임을 분석해봤습니다. Beacon은 AP(공유기)가 "나 여기 있어요!"라고 광고하는 신호입니다.

# Beacon 프레임만 필터링
tshark -r first_capture.pcap | grep Beacon

# 결과 예시:
# 2.412000 08:5d:dd:xx:xx:xx → Broadcast    IEEE 802.11 Beacon frame

Probe Request/Response도 확인

# 단말이 어떤 AP를 찾고 있는지 확인
tshark -r first_capture.pcap -Y "wlan.fc.type_subtype==4" \
  -T fields -e wlan.sa -e wlan.da -e wlan.ssid

일부 SSID가 hex 값으로 나와서 xxd로 ASCII 변환도 해봤습니다.


5️⃣ 데이터 정리 및 CSV 생성

분석을 위해 Beacon 프레임 정보를 CSV로 정리했습니다.

# AP 정보를 CSV로 추출
tshark -r first_capture.pcap -Y "wlan.fc.type_subtype==8" \
  -T fields -e wlan.bssid -e wlan.ssid -e radiotap.channel.freq \
  > ap_summary.csv

문제점:

  • SSID가 hex 값으로 표시되어 읽기 어려움
  • 보안 필드(wlan.rsn, wlan.wfa.ie.wpa)는 tshark 버전에서 지원 안 됨

6️⃣ 민감정보 마스킹 처리

실제 네트워크 정보가 노출되면 안 되니까, Python 스크립트로 데이터 마스킹 처리를 했습니다.

sanitize.py 스크립트 작성:

import pandas as pd
import re

# CSV 읽기 및 민감정보 마스킹
def mask_bssid(bssid):
    return re.sub(r'([0-9a-f]{2}:){2}([0-9a-f]{2}:){3}', r'\1\2**:**:**', bssid)

def mask_ssid(ssid):
    if len(ssid) > 4:
        return ssid[:4] + '****'
    return '<MISSING>'

최종 결과 (ap_summary_safe.csv):

bssid_masked,ssid_masked,freq_mhz,channel
08:5d:dd:**:**:**,olle_****,2412,1
12:f4:5e:**:**:**,<MISSING>,2412,1
38:f4:5e:**:**:**,SK_B_****,2412,1

분석 결과: 총 3개의 고유한 AP가 발견됨


실습 후기

✅ 성공한 것들

  • MT7612U 칩셋이 Linux에서 완벽 호환
  • 모니터 모드 전환 성공
  • 실제 Wi-Fi 트래픽 캡처 및 분석
  • 민감정보 자동 마스킹 구현

🔧 아쉬운 점들

  • GUI Wireshark 실행 실패 (VM 환경 한계)
  • 일부 tshark 필드 미지원
  • SSID hex 변환 수동 처리 필요

다음 학습 계획

- 특정 채널 고정하여 AP별 상세 트래픽 분석

- Deauthentication 테스트 (격리된 환경에서만!)


⚠️ 주의사항

이 실습은 순수 학습 목적입니다.
타인의 네트워크에 대한 무단 분석은 불법이며, 모든 실습은 제 소유 네트워크에서만 진행했습니다.