
※ WPA와 WPA2 방식에는 암호화 알고리즘에 차이가 있을 뿐, 해킹하는 방식을 동일하다.
WPA: WPA에서는 TKIP라는 암호화 프로토콜을 사용하여 데이터 패킷을 암호화하고, TKIP는 각 패킷에 대해 새로운 키를 생성하여 보안을 강화한다.
WPA2: WPA2는 AES(Advanced Encryption Standard) 기반의 CCMP를 사용하여 데이터 암호화를 수행한다. 이는 TKIP보다 더 강력한 보안을 제공한다.
WPA/WPA2 암호를 해킹하는 두가지 방법을 소개하겠다.
WPS는 Wi-Fi 네트워크에 쉽게 연결하기 위해 설계된 프로토콜이다. 일례로 무선 프린터키와 라우터간에 연결을 할 때 WPS 버튼을 통해 연결하는 방식을 생각해 볼 수 있겠다.
WPS를 사용하면 사용자는 PIN 또는 버튼을 통해 네트워크에 연결할 수 있다. WPS PIN은 8자리 숫자로 구성되어 있으며, 첫 번째 7자리는 사용자가 입력하고, 마지막 1자는 체크섬으로 사용된다. 이 구조 때문에 실제 가능한 조합 수는 10^7 (약 1,000만) 가지로 줄어든다.
WPS PIN을 찾게 되면, 공격자는 해당 PIN을 사용하여 Wi-Fi 네트워크에 접속하고, 이 과정에서 WPA/WPA2 암호를 알아낼 수 있게 된다.
※ WPS는, 활성화 되어있는 라우터도 있고 아닌 경우도 있고, 모든 라우터에 통하지 않을 수도 있으니 유의하자.
> wash --interface [무선 네트워크 어댑터 인터페이스]
LCK가 No일 경우, WPS가 활성화 되어있다는 의미로, WPS PIN 공격을 시도해볼만 하다.
reaver --bssid [액세스 포인트 MAC주소] --channel [액세스 포인트 채널 숫자] --interface [무선 네트워크 어댑터 인터페이스] -vvv --no-associate
reaver: PIN을 이용한 브루트포스 공격할 때 쓰이는 도구이다.
-vvv: 이 옵션은 출력의 상세 수준을 설정하는데 사용되며, -vvv는 매우 자세한 정보를 출력하도록 설정하여, 공격 진행 상황을 실시간으로 모니터링할 수 있게한다.
-no-associate: 이 옵션은 Reaver가 액세스 포인트에 인증 시뮬레이션 즉, 연결을 안하고 공격을 수행하도록 지시한다. reaver 에게 하면 실패하는 경우가 많으니 아래 명령어를 통해 수동으로 인증시뮬레이션을 할 것이다.
aireplay-ng --fakeauth 30 -a [액세스 포인트 MAC주소] -h [무선 네트워크 어댑터 MAC 주소] [무선 네트워크 어댑터 인터페이스]
위 명령어를 통해 인증 프로세스 시뮬레이션을 하는 이유는 WPS 공격을 수행하는 데 필요한 세션을 유지하기 위해서이며, --fakeauth 30 을 통해 30초 동안 가짜 인증을 수행한다.

위와 같이 쉽게 PIN 번호와 와이파이 암호도 획득한 걸 볼 수 있다.
워드리스트 브루트포스 공격이란? WPA/WPA2 핸드셰이크를 캡처한 후, 해당 핸드셰이크에 있는 MIC와 워드리스트를 대조하여 미리 준비된 암호 리스트를 사용하여 네트워크의 암호를 brute force 방식으로 알아내는 방식을 의미한다.
MIC는 비밀번호가 유효한지 아닌지 확인할 때 쓰이며, 워드리스트에서 하나하나 대입해서 핸드셰이크에 있는 MIC와 동일하다면 해당 문자열이 암호라고 알려준다.
airodump-ng --bssid [네트워크 MAC 주소] --channel [채널 숫자] --write [저장할 파일 이름] [무선 네트워크 어댑터 인터페이스]
위 명령어를 통해 특정 라우터를 스니핑하고 특정 클라이언트가 연결될 때까지 기다린다.
만약 연결이 된다면 위 사진과 같이 자동으로 WPA handshake가 나온다.
만약 나오기까지 기다리기 힘들다면 주변 기기를 짧은 시간 동안(예: --deauth 4) 강제로 연결해제하는 방법도 고려해볼 수 있다. (https://velog.io/@sg0xad/스니핑-및-주변-기기-와이파이-연결-해제하기)
crunch [최소길이] [최대길이] [포함돼야 할 문자] -t [패턴] -o [저장할 파일 이름]
예) crunch 6 8 123abc$ -o wordlist -t a@@@@b
-t 는 선택이다.
더 많은 매뉴얼을 보려면 man crunch 명령어를 이용해보도록 하자.
aircrack-ng [저장된 핸드셰이크 파일이름] -w [워드리스트 사전파일 이름]

컴퓨터의 성능, 암호 구성, 워드리스트 용량에 따라 시간이 오래 걸리겠지만 시간이 지나면 위 사진처럼 암호를 획득할 수 있는걸 볼 수 있다.