
Wi-Fi 클라이언트와 액세스 포인트를 위한 자동화된 취약성 테스터로, 프레임 주입, 혼합 모드 테스트, 패킷 캡처 분석을 통해 FragAttacks 단편화/집성 결함을 탐지합니다.
이 저장소에는 FragAttacks 도구가 포함되어 있습니다. 이 도구는 Wi-Fi 클라이언트와 액세스 포인트에서 fragmentation 및 aggregation 공격을 테스트할 수 있습니다. 이러한 취약점은 모든 보호된 Wi-Fi 네트워크에 영향을 미칩니다. 이러한 취약점에 대한 자세한 내용은 fragattacks.com을 참조하세요.
다음과 같은 추가 리소스를 이용할 수 있습니다:
도구에 대한 2020년 8월 11일 이후의 업데이트에 대한 자세한 개요는 변경 로그를 참조하세요. 이 변경 로그에는 FragAttacks 도구가 기반으로 하는 hostap 버전에 대한 정보도 포함되어 있습니다.
WPA2와 WPA3는 CCMP 및 GCMP 암호화 암호가 동일하므로 공격은 두 방식에 동일하게 적용됩니다. 이전 WPA 네트워크는 기본적으로 TKIP를 암호화에 사용하며, TKIP에 대한 공격의 적용 가능성은 논문과 웹사이트에서 논의됩니다. Wi-Fi가 처음 만들어진 이후로 취약했다는 것을 보여주기 위해 논문과 웹사이트는 WEP에 대한 공격의 적용 가능성도 간략히 논의합니다.
특정 무선 네트워크 카드만 지원됩니다. 일부 네트워크 카드는 주입된 프레임의 시퀀스 번호나 프래그먼트 번호를 덮어쓰거나 서로 다른 우선순위의 프레임을 재정렬할 수 있으며, 이로 인해 테스트 도구가 방해를 받을 수 있기 때문입니다(예: 도구가 실제로는 취약한데도 안전하다고 판단할 수 있음). 다음 네트워크 카드가 제대로 작동하는 것을 확인했습니다:
| 네트워크 카드 | USB | 5GHz | 혼합 모드 | 주입 모드 |
|---|---|---|---|---|
| Technoethical N150 HGA | 예 | 아니요 | 패치된 드라이버/펌웨어 | 패치된 드라이버/펌웨어 |
| TP-Link TL-WN722N v1.x | 예 | 아니요 | 패치된 드라이버/펌웨어 | 패치된 드라이버/펌웨어 |
| Alfa AWUS036NHA | 예 | 아니요 | 패치된 드라이버/펌웨어 | 패치된 드라이버/펌웨어 |
| Intel Wireless-AC 8265 | 아니요 | 예 | 패치된 드라이버 | 예 |
| Intel Wireless-AC 3160 | 아니요 | 예 | 패치된 드라이버 | 예 |
| Alfa AWUS036ACM | 예 | 예 | 패치된 드라이버 | 예 |
| Netgear WN111v2 | 예 | 아니요 | 패치된 드라이버 | 예 |
| Alfa AWUS036ACH | 예 | 예 | 아니요 | 예 |
마지막 두 열의 의미는 다음과 같습니다:
혼합 모드: 네트워크 카드를 권장되는 혼합 모드에서 사용할 수 있는지 여부.
주입 모드: 네트워크 카드를 주입 모드에서 프레임을 주입하는 두 번째 인터페이스로 사용할 수 있는지 여부.
예 는 해당 모드에서 카드가 추가 설정 없이 바로 작동함을 의미합니다. 패치된 드라이버/펌웨어 는 해당 카드가 패치된 드라이버 및/또는 펌웨어와 함께 사용할 때 호환된다는 뜻입니다. 아니요 는 해당 모드를 네트워크 카드가 지원하지 않음을 의미합니다. 테스트 도구는 혼합 모드로 사용할 것을 권장합니다.
USB 장치는 가상 머신 안에서 사용할 수 있으며 수정된 드라이버 및/또는 펌웨어를 가상 머신에 설치할 수 있습니다. 다만 가상 머신을 사용하면 네트워크 카드의 안정성이 떨어질 수 있음을 발견했습니다. 수정된 드라이버/펌웨어를 네이티브로 설치할 수 없다면 라이브 USB 이미지 사용을 권장합니다.
위 네트워크 카드에 대한 제 경험은 여기에서 확인할 수 있습니다. 요약하면:
혼합 모드의 AWUS036ACM은 최신 드라이버에서 안정적으로 보이며 제가 권장하는 제품입니다. 더 저렴하지만 거의 동일한 장치로는 MT7612U 칩셋을 사용하는 제품이 있습니다. 자세한 내용은 여기를 참조하세요.
이전에는 혼합 모드에서 Technoethical N150 HGA를 권장했습니다. 이 동글은 TP-Link TL-WN722N v1.x와 동일하며 패치된 드라이버와 펌웨어를 사용해야 합니다. 가장 많이 테스트된 동글 중 하나이지만 구하기 어렵습니다. 그래서 지금은 AWUS036ACM을 권장합니다.
Intel 3160 및 8265는 지원되며 광범위하게 테스트되었습니다. 가끔 펌웨어가 충돌하지만 재부팅하면 네트워크 카드를 다시 사용할 수 있습니다. Intel AX200은 테스트 도구와 호환되지 않습니다.
WN111v2는 광범위하게 테스트하지는 않았지만 잘 작동하는 것 같습니다.
AWUS036ACH용 드라이버는 Linux 커널에 포함되어 있지 않으며 별도 드라이버를 설치해야 합니다. Kali에서는 패키지 관리자를 통해 이 드라이버를 설치할 수 있습니다. 이 카드는 광범위하게 테스트되지 않았습니다.
위 네트워크 카드 중 하나를 구할 수 없다면 작동할 가능성이 높은 대체 네트워크 카드를 검색할 수 있습니다. 명시적으로 지원되지 않는 네트워크 카드를 사용하는 경우, 사용 전에 먼저 주입 테스트를 실행하고, 알려진 취약 구현을 대상으로 도구를 실행하여 도구가 제대로 작동하는지 확인하는 것을 강력히 권장합니다.
테스트 도구는 커널 5.8을 사용하는 Ubuntu 20.04에서 테스트되었습니다. 다른 Linux 배포판을 사용하는 경우, 5.12 이하의 커널 버전만 지원된다는 점에 유의하세요.
Ubuntu 20.04를 사용하는 경우 먼저 다음과 같이 커널 5.8을 설치해야 합니다. 기존 커널은 계속 설치된 상태로 유지되며 기본적으로 계속 사용됩니다:
sudo apt install linux-image-5.8.0-63-generic linux-headers-5.8.0-63-generic linux-hwe-5.8-headers-5.8.0-63 \
linux-modules-5.8.0-63-generic linux-modules-extra-5.8.0-63-generic
이제 Ubuntu를 재부팅하고 부팅 중 Shift 키를 누른 채로 "Advanced options for Ubuntu"를 선택한 다음, "Ubuntu, with Linux 5.8.0-63-generic"을 선택하여 커널 5.8로 시작하세요. GRUB 설정을 편집하여 Ubuntu가 기본적으로 이 커널 버전을 사용하도록 할 수 있습니다. 이제 실행 중인 이 커널에서 다음 지침을 계속 진행하세요.
필요한 의존성을 설치합니다:
sudo apt-get update
sudo apt-get install libnl-3-dev libnl-genl-3-dev libnl-route-3-dev libssl-dev \
libdbus-1-dev git pkg-config build-essential macchanger net-tools python3-venv \
aircrack-ng rfkill firmware-ath9k-htc
# Note: on Kali linux use the package firmware-atheros instead of firmware-ath9k-htc
이제 이 저장소를 클론하고 도구를 빌드한 다음 가상 python3 환경을 구성합니다:
git clone https://github.com/vanhoefm/fragattacks.git fragattacks
cd fragattacks/research
./build.sh
./pysetup.sh
위 지침은 한 번만 실행하면 됩니다. git을 사용해 새 코드를 가져온 후에는 ./build.sh와 ./pysetup.sh를 다시 실행해야 합니다.
패치된 드라이버는 다음 명령으로 설치합니다:
sudo apt-get install bison flex linux-headers-$(uname -r)
git clone https://github.com/vanhoefm/fragattacks-drivers58.git fragattacks-drivers58
cd fragattacks-drivers58
make defconfig-wifi
make -j 4
sudo make install
이 명령은 Linux가 지원하는 대부분의 네트워크 카드용 드라이버를 컴파일합니다. 제가 명시적으로 테스트한 네트워크 카드용 드라이버만 컴파일하려면 make defconfig-experiments를 대신 사용하세요. 다음과 같은 경고가 표시될 수 있습니다:
make defconfig-wifi를 실행할 때 -Wyacc 및 -Wformat-overflow 관련 경고가 표시될 수 있습니다. 드라이버가 성공적으로 컴파일되면 이러한 경고는 무시해도 됩니다... needs unknown symbol ..를 포함하는 여러 경고. /lib/modules/*/updates/ 디렉터리를 포함하지 않고 컴파일된 드라이버가 작동한다면 이러한 경고는 무시해도 됩니다.SSL error와 sign-file 명령을 포함하는 반복 경고. 이는 커널 모듈의 디지털 서명이 실패했음을 의미합니다. 보통 무시해도 됩니다.cat /sys/module/mac80211/parameters/fragattack_version를 실행하여 수정된 드라이버가 설치되었는지 확인할 수 있습니다. 이 파일이 존재하면 수정된 드라이버가 성공적으로 설치된 것입니다.이제 패치된 ath9k_htc 펌웨어를 설치합니다:
cd research/ath9k-firmware/
./install.sh
# Now reboot
./install.sh 스크립트는 ath9k_htc 펌웨어 이미지가 /lib/firmware/ath9k_htc 디렉터리에 있다고 가정합니다. 시스템에서 이 경로가 다르다면 htc_7010.fw와 htc_9271.fw를 적절한 디렉터리에 직접 복사해야 합니다.
패치된 드라이버와 펌웨어를 설치한 후에는 Wi-Fi 동글을 분리하고 시스템을 재부팅해야 합니다. Linux 커널이 업데이트되거나 패치된 드라이버가 업데이트되면 위 지침을 다시 실행해야 합니다.
장치가 기본적으로 바로 작동하더라도 수정된 드라이버를 설치할 것을 권장합니다. 커널 및 드라이버 코드에 예상치 못한 회귀가 없는지 보장할 수 있기 때문입니다.
수정된 드라이버/펌웨어를 네이티브로 설치할 수 없는 경우, 수정된 드라이버/펌웨어와 테스트 도구가 포함된 **라이브 USB 이미지**를 다운로드할 수 있습니다. 또는 USB 네트워크 카드와 함께 가상 머신을 사용할 수도 있지만, 가상 머신을 사용하는 것은 실제로 덜 안정적이라는 것을 발견했습니다.
테스트 도구를 사용할 때마다 먼저 루트 권한으로 가상 python 환경을 로드해야 합니다. 다음 명령으로 수행할 수 있습니다:
cd research
sudo su
source venv/bin/activate
이제 네트워크 관리자에서 Wi-Fi를 비활성화하여 테스트 도구를 방해하지 않도록 해야 합니다. 또한 다른 네트워크 서비스가 나가는 트래픽을 유발하지 않는지 확인하세요. ./droptraffic.sh를 실행해 iptables로 트래픽을 차단하면 이를 보장할 수 있습니다(재부팅하면 되돌릴 수 있습니다). 선택적으로 sudo airmon-ng check를 실행하여 무선 네트워크 카드를 사용 중이고 도구를 방해할 수 있는 다른 프로세스가 있는지 확인할 수 있습니다.
테스트 도구는 클라이언트와 AP를 모두 테스트할 수 있습니다:
research/client.conf를 편집하여 테스트할 AP를 구성합니다. 이는 표준 wpa_supplicant 구성 파일이며, 지원되는 모든 옵션에 대한 개요는 hostap 문서를 참조하세요.