ALFA AWUS036ACM USB 무선랜카드를 사용해서 Wi-Fi 패킷을 직접 캡처하고 분석해보는 실습을 진행하였습니다.
- GitHub 저장소: suminworld-system-lab/network/wifi
- 사용 도구: tcpdump, tshark, ALFA AWUS036ACM
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 테스트 (격리된 환경에서만!)
⚠️ 주의사항
이 실습은 순수 학습 목적입니다.
타인의 네트워크에 대한 무단 분석은 불법이며, 모든 실습은 제 소유 네트워크에서만 진행했습니다.
'network' 카테고리의 다른 글
| [네트워크] Part 1-3: 환경 세팅기 Ubuntu 24.04 + UTM 환경에서 ALFA AWUS036ACM 무선랜카드 설정 (0) | 2025.10.04 |
|---|---|
| ALFA AWUS036ACM(MT7612U) 모니터모드 캡처 설정 (0) | 2025.10.01 |
| [네트워크] ALFA AWUS036ACM USB 무선랜카드로 Wi-Fi 보안 학습 환경 구축하기 (2) | 2025.09.08 |
| [네트워크] UTM VM에서 USB 무선랜카드 연결하는 법 (macOS) (0) | 2025.09.08 |
| [네트워크] C 소켓 프로그래밍 Echo 서버 구현 - 기본부터 멀티클라이언트까지 (0) | 2025.09.08 |