[실습 전 준비사항] ※ 본 실습내용은 공부목적으로만 사용되어야 함을 알려드립니다!
칼리 리눅스에는 여러 유용한 툴들이 많습니다. 오늘은 이중에 aircrack-ng라는 툴을 사용하여 Wifi의 비밀번호를 유추하는 실습을 진행해보려고 합니다. 아래는 실습에 필요한 준비물입니다.
- 칼리 리눅스
- 랜카드(모니터 모드 사용가능해야 함)
이번 실습에서는 랜카드가 필요합니다. VMware 같은 가상머신으로 칼리리눅스를 돌리게 될 경우 가상머신에서 돌아가는 운영체제들은 무선랜 기능이 없는 상태입니다. 와이파이를 사용하지 못하는 데스크톱과 같은 상태인 것이죠. 따라서 칼리 리눅스가 와이파이를 잡을 수 있게 하려면 랜카드가 필요합니다. 또한 그냥 랜카드가 아닌 모니터 모드를 지원하는 랜카드를 사용하셔야 합니다.
모니터 모드가 뭔데?
무선 랜카드에는 Managed Mode와 Monitor Mode 가 있습니다.
- Managed Mode : 저희가 주로 쓰는 Mode로써 공유기와 연결하여 인터넷을 사용할 수 있는 상태입니다.
- Monitor Mode : 공유기가 주고받는 패킷들을 낚아채서 눈으로 볼 수 있는 상태입니다.
근데 이 모니터모드를 지원한다는 내용을 아예 상품페이지에 안 써놓거나 알려달라고 전화해도 안 알려주는 경우가 많습니다. 그래서 모니터모드가 지원된다고 잘 알려진 값싼 랜카드를 구매하시는 것이 합리적일 것 같습니다. 저는 iptime-N150UA2 제품을 구매하였습니다.
[실습]
1) 우선 와이파이 설정에서 와이파이의 비밀번호와 이름을 확인해 줍니다.
2) 칼리리눅스를 킨 후에 랜카드를 연결하면 다음과 같은 화면이 뜹니다. 여기서 Connect to a virtual machine을 선택한 후 ok 버튼을 눌러줍니다.
3) 명령어 창에 iwconfig를 사용하여 연결된 네트워크를 확인하시면 wlan0 부분에 Mode 옵션이 Managed로 된 것을 확인하실 수 있습니다.
4) 우선 다음과 같은 명령어를 입력하여 실습에 불필요한 서비스는 종료시켜줍니다.
> sudo airmon-ng check kill
5) 이후 다음과 같은 명령어를 입력한 후 iwconfig를 입력하면 Mode:monitor로 바뀐 것을 확인하실 수 있습니다.
> sudo airmon-ng start wlan0 ※모니터 모드로 변경하는 명령어입니다.
6) 모니터모드로 변경 후 아래와 같은 명령어를 입력하면 주위에 잡히는 와이파이 정보를 볼 수 있습니다. 저는 M.Home이라는 와이파이로 실습을 진행할 것입니다.
> sudo airodump-ng wlan0
출력되는 결과 중 위쪽 칼럼에 대한 설명은 다음과 같습니다.
- BSSID : 공유기의 Mac 주소
- PWR : 신호레벨. AP에 가까워질수록 수치가 높아짐. 평균적으로 -55
- Beacons : AP가 전송한 Beacon 프레임의 수
- #Data : 데이터 패킷의 수(패킷이 많으면 통신이 많이 이루어진다는 뜻이니 타깃으로 잡기 좋다)
- ENC : AP가 사용 중인 암호화 알고리즘
- ESSID : 와이파이의 이름
출력되는 결과 중 아래쪽 칼럼에 대한 설명은 다음과 같습니다.
- STATION: AP에 연결된 기기의 MAC주소
- Frames: 기기에서 전송한 데이터 패킷의 수
- Notes : "EAPOL (Extensible Authentication Protocol over LAN)" 혹은 "PMKID(Pairwise Master Key Identifier
)"와 같은 기기에 대한 추가정보
7) 너무 많은 신호가 잡히니 저희가 필요한 신호만 잡아줄 필요가 있습니다. 따라서 아래와 같은 명령어로 저희가 필요한 신호만 필터링할 수 있습니다. 아래 명령어를 설명해 보자면...
- airodump-ng : 와이파이가 보내는 패킷을 잡아라.
- -w hack1 : 캡처한 내용들은 hack1이라는 이름의 파일을 만들어서 저장해라.
- -c 2 : ch(채널)이 2 인 와이파이 신호만 잡히도록 필터링해라.
- -bssid [실습에 사용될 공유기 MAC 주소] : 적힌 MAC주소에 해당하는 신호만 잡히게 필터링해라.
- wlan0 : wlan0로 잡히는 신호를 뜻한다.
> sudo airodump-ng -w hack1 -c 2 --bssid [실습에 사용될 공유기 MAC 주소] wlan0
맨 아랫줄에 있는 STATION 은 와이파이에 접속된 기기의 MAC주소입니다. 현재 제 아이폰이 접속되어 있는 상태입니다.
8) 이후 기존입력하던 명령어 창말고 다른 명령어 창을 하나 더 열어준 후, aireplay-ng --deauth 명령어를 통하여 와이파이에 접속된 기기의 연결을 전부 끊어주겠습니다. 명령어는 다음과 같습니다.
> sudo aireplay-ng --deauth 0 -a [공유기의 MAC주소] -c [아이폰의 MAC주소] wlan0
9) 보시면 제 아이폰에서 와이파이의 연결이 끊어진 것을 확인하실 수 있습니다. 끊어진 것을 확인한 후에 다시 연결하려 해 보아도 연결이 불가능한 상태입니다.
명령어 실행 전 | 명령어 실행 후 |
10) 다시 이전 명령어창으로 돌아와 보면 WPA handshake라는 문구가 생긴 것을 확인하실 수 있습니다. 제가 와이파이가 끊어져 다시 연결을 시도하는 중에 인증을 위한 패스워드가 담긴 패킷을 보내게 되었고 그 인증패킷을 잡아챘다는 뜻입니다.
11) 이후 ls 명령어를 실행해 보면 hack1이라는 파일 여러 개가 만들어진 것을 확인할 수 있습니다. 저는 2번 실험해 봐서 2개의 hack1-01과 hack1-02 파일 두 개가 만들어져 있는데 만약 한 번만 실행하셨다면 hack1-01 파일들만 있으실 겁니다!... hack1-02.cap에는 저희가 필요한 인증비밀번호가 담겨있는데 암호화되어있기 때문에 사전대입공격을 통해서 암호를 찾아줄 것입니다.
12) 다음과 같은 명령어를 통해 사전대입공격을 실행하여 줍니다.
> aircrack-ng hack1-02.cap -w /usr/share/wordlists/rockyou.txt
rockyou.txt 는 칼리리눅스에 기본적으로 있는 1400만 가지의 password패턴이 있는 txt 파일입니다. 한 번도 안 써보셨다면 txt파일이 압축되어 있을 거니깐 /usr/share/wordlists/ 디렉터리에 들어가셔서 압축을 풀어주시고 진행하셔야 합니다.
13) 명령어를 입력하자 txt파일을 통해 hellohello라는 Wifi Password를 찾아낼 수 있었습니다!!
[보안 권장사항]
현재 사전대입공격 이외에는 WPA방식으로 암호화 된 패스워드를 알아낼 수 있는 수단이 없으므로 최대한 길고 특수문자를 포함한 복잡한 패스워드를 구성한다면 이 공격으로부터 안전할 수 있다.
[후기]
실습을 하다 보니 WPA 암호화 방식이 왜 복호화가 불가능한지, 패스워드 해킹 이외에 패킷분석을 하여 다른 사용자들의 비밀번호 평문을 얻을 수 있다는 방법은 무엇인지, 4 Handshake의 정의 등 여러 가지 궁금증이 생겼다. 그전에 일단 통신이란 것이 어떻게 이루어지는 지에 관하여 먼저 정리해 볼 생각이다. 기초를 확실히 알아놓아야 나중에 탑이 무너지지 않을 테니 말이다.
긴 글 읽어주셔서 감사합니다!
'Kail Linux' 카테고리의 다른 글
[System Hacking] Metasploit을 이용한 Metasploitable2 서버 익스플로잇 실습 (1) | 2024.09.13 |
---|