
CVE-2022-47522에 대한 개념 증명 악용으로, 비인증 공격 및 MAC 주소 스푸핑을 통한 Wi-Fi 프레임 가로채기를 시연하여 HTTP 및 ICMP 응답을 캡처합니다.
이것은 Wi-Fi 네트워크상의 임의의 클라이언트에게 전송되는 프레임을 가로채는 취약점입니다.
자세한 설명은 여기를 참조하세요.
참고: MITRE의 설명은 정확하지 않으므로, 올바른 세부 사항은 위 링크를 참조하세요.
이 저장소는 해당 링크를 기반으로 합니다.
실제와 유사한 테스트 환경을 위해, 피해자와 공격자는 별도의 호스트에서 실행됩니다.
피해자와 공격자를 단일 호스트에서 실행하는 것도 가능할 수 있지만, 그러려면 무선 네트워크 인터페이스 세 개와 코드 및 실행 방법의 수정이 필요할 수 있습니다.
다음 명령을 실행하세요 (선택적으로 python venv에서):
pip install scapy==2.6.1 httpx==0.28.1
또는 victim.py 대신 ping, curl 또는 웹 브라우저를 사용할 수 있습니다.
다음 명령을 실행하세요:
cd macstealer/research
./build.sh
cd ../../attacker
./pysetup.sh
피해자가 테스트하려는 네트워크에 연결되어 있는지 확인하세요.
./attacker/attacker.conf를 편집하여 피해자 연결의 네트워크 설정과 일치시키세요.
확실하지 않다면 wpa_supplicant.conf를 구성하는 방법을 참조하세요.
# attacker.conf
# Don't change this line, other MacStealer won't work
ctrl_interface=wpaspy_ctrl
network={
#Fill in properties of your network
key_mgmt=WPA-PSK
ssid="Your-SSID"
psk="Your-password"
}
NetworkManager가 두 인터페이스를 모두 무시하도록 구성해야 합니다:
/etc/NetworkManager/NetworkManager.conf에 다음 줄을 추가하세요:
[keyfile]
unmanaged-devices=interface-name:{iface};interface-name:{mon_iface}
다음을 실행하여 변경 사항을 적용하세요:
sudo systemctl restart NetworkManager
되돌리려면 추가한 줄을 제거하고 NetworkManager를 다시 시작하세요.
실행 전에 venv를 루트로 활성화하세요:
cd attacker
sudo su
source venv/bin/activate
victim.py를 실행하고 프롬프트에 따라 필요한 정보를 입력하세요 (또는 기본값을 사용하세요).
그런 다음 Enter를 누를 때마다 ICMP Echo Request와 HTTP GET Request가 전송됩니다.
다음 명령을 실행하세요:
./attacker.py -i $iface -m $mon_iface -v $victimMAC
-i는 공격자의 **관리 인터페이스(managed interface)**를 지정합니다.
-m은 공격자의 모니터 인터페이스를 지정합니다.
-v는 피해자의 MAC 주소를 지정합니다.
예를 들어:
./attacker.py -i wlan0 -m wlan1 -v a0:d3:65:2c:ed:71
실행하면 스크립트가 자동으로 사전 연결(pre-connection)을 수립하고 공격을 준비합니다.
공격이 준비되면 다음 프롬프트가 표시됩니다:
Press enter to start attack:
이 시점에서 피해자 쪽에서 먼저 Enter를 눌러 요청을 보낸 다음, 즉시 공격자 쪽에서 Enter를 눌러 공격을 시작하세요.
공격이 성공하려면 두 동작이 거의 동시에 수행되어야 합니다.
그러나 피해자가 요청을 먼저 보내야 합니다.
참고:
- 연결 시간이 짧을수록 공격 성공률이 높아집니다.
- 테스트에서 연결 시간은 약 200ms였지만, 때때로 AP가 예기치 않게 연결을 거부하여 연결 시간이 길어졌습니다.
- 이런 경우 타임아웃을 기다리거나Ctrl+C로 프로세스를 종료한 후 다시 시도하세요.
- 사전 연결과 재연결 사이의 간격이 길수록 실패 확률이 높아집니다.
- 공격을 시작하려면 가능한 한 빨리 Enter를 누르세요.
- 공격자의 연결이 안정적인데도 공격이 성공하지 않으면, 피해자가 요청하는 서버를 더 먼 위치로 변경해 보세요.
저는 한국에 있기 때문에 가장 먼 지역 중 하나인 아르헨티나에 있는 서버를 선택했습니다.

HTTP 및 ICMP 응답이 가로채졌는지 확인하고, HTTP 본문과 ICMP 페이로드가 올바르게 표시되는지 확인하세요.
준비
Deauth 공격
가로채기