소개
airolib-ng는 사전 계산된 마스터 키 (PMK) 데이터베이스를 관리하고 사용하는 Aircrack-ng 도구 모음 내의 강력한 도구입니다. WPA/WPA2 핸드셰이크를 크랙하려고 시도할 때 가장 시간이 많이 소요되는 부분은 잠재적인 암호 (passphrase) 와 네트워크 이름 (ESSID) 으로부터 PMK 를 계산하는 것입니다.
일반적인 암호 및 네트워크 이름 목록에 대해 이러한 PMK 를 미리 계산하여 데이터베이스에 저장하면 크랙 프로세스를 극적으로 가속화할 수 있습니다. 공격 중에 각 암호에 대한 무거운 계산을 수행하는 대신, aircrack-ng는 데이터베이스에서 PMK 를 간단히 조회할 수 있습니다.
이 실험실에서는 PMK 데이터베이스를 생성하고 채우기 위한 airolib-ng의 기본 작업을 배우게 됩니다.
사전 계산된 마스터 키 데이터베이스 개념 이해
이 단계에서는 airolib-ng를 사용하기 전에 PMK 데이터베이스의 이론을 다룹니다. 이 단계에서는 실행할 명령이 없습니다.
WPA/WPA2 네트워크의 보안은 Pairwise Master Key(PMK) 를 사용하여 트래픽을 암호화하는 4-way 핸드셰이크에 의존합니다. 이 PMK 는 네트워크의 비밀번호 (passphrase) 와 네트워크 이름 (ESSID) 에서 파생됩니다. 공식은 다음과 같습니다.
PMK = PBKDF2(passphrase, SSID, 4096 iterations, 256-bit output)
aircrack-ng와 같은 도구와 단어 목록을 사용하여 캡처된 WPA/WPA2 핸드셰이크를 크랙하려고 할 때, 도구는 목록의 모든 개별 비밀번호에 대해 이 계산을 수행합니다. 4096 번의 반복은 이 프로세스를 계산적으로 비싸고 느리게 만듭니다.
이것이 airolib-ng가 등장하는 이유입니다. 이 도구를 사용하면 이러한 무거운 작업을 미리 수행할 수 있습니다. 일반적인 ESSID 목록과 대규모 비밀번호 단어 목록을 가져와 결과 PMK 를 모두 미리 계산할 수 있습니다. 이러한 PMK 는 효율적인 SQLite 데이터베이스에 저장됩니다.
핸드셰이크를 크랙할 시간이 되면 aircrack-ng는 이 데이터베이스를 사용할 수 있습니다. 각 비밀번호에 대한 PMK 를 계산하는 대신, 캡처된 핸드셰이크의 ESSID 와 단어 목록의 비밀번호에서 한 번 계산한 다음 미리 계산된 데이터베이스에서 결과를 조회합니다. 이 조회는 전체 계산보다 수천 배 빠르므로 크랙 시간을 대폭 단축합니다.
다음 단계에서는 이러한 데이터베이스를 생성하고 ESSID 및 비밀번호로 채우고 무결성을 확인합니다.
airolib-ng --new 를 사용하여 새 SQLite 데이터베이스 생성
이 단계에서는 PMK 를 저장할 새롭고 비어 있는 SQLite 데이터베이스를 생성합니다. 모든 작업은 ~/project 디렉토리에서 수행됩니다.
원하는 데이터베이스 이름과 --new 플래그를 사용하여 airolib-ng 명령을 사용합니다. 이 플래그는 airolib-ng에게 새 데이터베이스 파일을 초기화하도록 지시합니다.
pmk_db라는 데이터베이스를 생성해 보겠습니다. 터미널에서 다음 명령을 실행하십시오.
airolib-ng pmk_db --new
도구는 현재 디렉토리 (~/project) 에 pmk_db 파일을 생성하고 그 안에 필요한 테이블을 설정합니다. 데이터베이스 생성 및 초기화를 확인하는 출력이 표시됩니다.
예상 출력:
Database 'pmk_db' created.
Wrote 1 ESSIDs and 0 PMKs.
ls 명령을 사용하여 파일이 생성되었는지 확인할 수 있습니다.
ls -l pmk_db
예상 출력:
-rw-r--r-- 1 labex labex 8192 May 20 10:30 pmk_db
--import essid 를 사용하여 데이터베이스에 단일 ESSID 가져오기
이 단계에서는 새로 생성된 데이터베이스에 네트워크 이름 (ESSID) 을 추가합니다. 데이터베이스는 PMK 를 미리 계산하려는 ESSID 를 알아야 합니다.
--import essid 옵션을 사용합니다. 이 옵션은 명령줄에서 단일 ESSID 를 인수로 받거나 파일에서 ESSID 목록을 받을 수 있습니다. 이 실습에서는 MyHomeWiFi라는 단일 ESSID 를 가져옵니다.
다음 명령을 실행하여 pmk_db 데이터베이스에 ESSID 를 가져옵니다.
airolib-ng pmk_db --import essid MyHomeWiFi
데이터베이스가 읽히고 ESSID 하나가 기록되었음을 나타내는 출력이 표시됩니다.
예상 출력:
Reading file...
Wrote 1 ESSIDs and 0 PMKs.
Done.
이제 데이터베이스는 MyHomeWiFi 네트워크를 인식하고 해당 네트워크와 관련된 PMK 를 저장할 준비가 되었습니다.
해당 ESSID 에 대한 PMK 를 계산하기 위해 단어 목록 가져오기
이 단계에서는 비밀번호 목록 (단어 목록) 을 가져오고 이전 단계에서 가져온 ESSID 에 대한 PMK 를 계산하도록 airolib-ng에 지시합니다.
이 실습을 위한 설정 스크립트는 이미 ~/project 디렉토리에 wordlist.txt라는 작은 단어 목록 파일을 생성했습니다. 이 파일을 읽기 위해 --import pwd 옵션을 사용합니다. wordlist.txt의 각 비밀번호에 대해 airolib-ng는 MyHomeWiFi ESSID 에 대한 PMK 를 계산하고 결과를 데이터베이스에 저장합니다.
다음 명령을 실행합니다.
airolib-ng pmk_db --import pwd wordlist.txt
도구는 파일에서 비밀번호를 읽고 PMK 를 계산합니다. wordlist.txt에는 4 개의 비밀번호가 포함되어 있고 데이터베이스에는 1 개의 ESSID 가 있으므로 4 개의 PMK 를 계산하고 저장합니다.
예상 출력:
Reading file...
Wrote 0 ESSIDs and 4 PMKs.
Done.
이제 데이터베이스에는 wordlist.txt의 모든 비밀번호에 대한 MyHomeWiFi 네트워크의 미리 계산된 키가 포함되어 있습니다.
데이터베이스 무결성 검증을 위한 일괄 작업 실행
이 단계에서는 데이터베이스 내용을 확인하고 누락된 PMK 쌍을 계산하는 방법을 배웁니다. 이는 특히 대규모 데이터베이스의 경우 중요한 유지 관리 단계입니다.
--batch 옵션은 포괄적인 작업을 수행합니다. 데이터베이스에 있는 모든 ESSID 와 비밀번호의 쌍 조합을 찾고 아직 없는 쌍에 대한 PMK 를 계산합니다. 또한 기존 PMK 를 다시 계산하고 비교하여 무결성을 확인하는 방법으로도 사용됩니다.
pmk_db 데이터베이스에서 일괄 명령을 실행합니다.
airolib-ng pmk_db --batch
이전 단계에서 가능한 모든 쌍 (1 ESSID x 4 비밀번호) 을 방금 계산했기 때문에 명령은 새로운 PMK 를 계산할 필요가 없음을 확인합니다. 기존 PMK 를 단순히 확인합니다.
예상 출력:
All PMKs have been computed for all ESSIDs.
Nothing to do.
새로운 ESSID 또는 새로운 단어 목록을 추가하는 경우, --batch 명령을 실행하는 것이 모든 새로운 PMK 조합으로 데이터베이스를 업데이트하는 가장 효율적인 방법입니다.
요약
축하합니다! airolib-ng를 사용하여 미리 계산된 마스터 키 (PMK) 데이터베이스를 성공적으로 생성하고 관리했습니다.
이 실습에서는 다음을 배웠습니다.
- WPA/WPA2 크래킹 가속화를 위한 PMK 데이터베이스의 개념과 이점 이해하기.
airolib-ng --new를 사용하여 새롭고 비어 있는 데이터베이스 생성하기.airolib-ng --import essid를 사용하여 네트워크 이름을 데이터베이스에 가져오기.airolib-ng --import pwd를 사용하여 단어 목록을 가져오고 해당 PMK 계산하기.airolib-ng --batch를 사용하여 데이터베이스를 확인하고 업데이트하기 위한 일괄 작업 실행하기.
이 지식을 바탕으로 더 크고 포괄적인 PMK 데이터베이스를 구축하여 WPA/WPA2 보안 평가 속도를 크게 높일 수 있습니다. 생성된 데이터베이스 pmk_db는 aircrack-ng와 함께 다음과 같이 사용할 수 있습니다: aircrack-ng -r pmk_db your_capture_file.cap.



