이 글은 필자 본인의 칼리리눅스 학습과정을 기록함과 동시에, 칼리리눅스를 통한 모의해킹을 학습하고자 하는 분들의 학습을 돕기 위한 것입니다. 대한민국에서 해킹은 불법이며 모든 모의해킹은 반드시 본인 소유의 컴퓨터, 또는 본인 소유의 서버에 실행하셔야 합니다. 이 경고를 무시했을 시 발생할 모든 일에 대해서 본인은 책임지지 않습니다.
-WPS (WI-FI Protected Setup) 란?
WPS (WI-FI Protected Setup)는 시스코(Cisco)사가 2006년에 개발한 기술로, 무선 네트워크 (IEEE 802.11, WI-FI) 보안에 대해 잘 모르는 사람이 쉽게 무선 디바이스를 무선 네트워크에 연결할 수 있도록 합니다.
WPS 연결에는 PIN 방식, PBC 방식, NFC 방식, USB 방식으로 크게 4가지 방식이 있습니다.
이 중 PIN 방식은 8자리의 숫자 암호를 통해 무선 디바이스를 인증하는 방법입니다.
8자리 암호 중 마지막 1자리 숫자는 무결성 검사를 위한 체크섬(checksum)에 해당하므로 실제 암호는 7자리 숫자인 셈입니다.
PIN을 통한 인증시 PIN의 앞 4개 자릿수와 뒤의 3개 자릿수의 유효성이 각각 따로 검증됩니다.
즉, PIN을 알아내고 싶은 공격자가 브루트 포스 (Brute Force, 무차별 대입 공격)를 통해 11000개의 경우의 수를 대입하면 3~4시간 안에 무선 네트워크의 보안이 뚫리게 됩니다.
칼리리눅스에 내장된 Bully가 바로 WPS의 PIN 탈취를 위한 브루트포스 공격툴입니다.
-WPS 브루트포스 (Brute Force) 공격
실습을 위한 준비물은 칼리리눅스, PIN 방식으로 WPS 기능을 제공하는 무선 라우터, 그리고 공격에 활용될 무선랜입니다.
본문에 앞서 양해를 구하자면.. 어쩔 수 없는 사정으로 실습은 Bully가 설치된 가상머신 우분투에서 진행했습니다. 하지만 사용된 명령어는 모두 동일하니 그대로 따라하셔도 아무 문제 없습니다.
# iwconfig
칼리리눅스의 터미널에 iwconfig를 입력하여 연결된 무선랜 인터페이스를 조회합니다.
설치된 공격용 무선랜의 인터페이스 이름을 확인합니다.
제 경우는 wlx88366cfdf799라고 뜨는군요.
# airodump-ng [인터페이스 이름]
인근의 모든 AP (Wireles Access Point, 무선 라우터를 의미함)를 검색합니다.
오류가 발생할 경우 airmon-ng start [인터페이스 이름] 명령을 입력해서 무선랜을 모니터 모드로 전환하고 다시 검색합니다.
목표 AP의 BSSID (MAC 어드레스) 와 ESSID (SSID), CH (채널) 를 확인합니다.
# bully -b [BSSID] -e [ESSID] -c [CH] [인터페이스 이름]
방금 확인한 목표 AP의 BSSID, ESSID, CH, 인터페이스 이름을 차례로 입력합니다.
명령을 실행하면 Bully가 공격용 무선랜을 통해 목표 AP에 브루트 포스를 시작합니다.
이제 Bully가 가능한 모든 경우의 수를 대입하여 3~4시간 안에 무선 네트워크의 PIN 암호를 출력할 것입니다.