지난 번 WPA 크래킹 글에 이어 이번에는 WEP(Wired Equivalent Privacy)을 크래킹해 보겠습니다. 1997년 재정된 802.11 표준에서 도입되었던 WEP는 한때 매우 보편적으로 사용되었으며 라우터의 보안 설정에서 가장 우선적으로 표시되는 대중적인 옵션이었습니다. 그러나 2001년 초, 암호학자들이 몇 가지 치명적인 취약점을 발견하였으며, 이를 악용하면 누구나 몇 십분만에 WEP를 크래킹할 수 있게 되었습니다. 이에 따라 WEP는 현재 권장되고 있지 않으며, WPA로 대체되었습니다. 2004년 발표된 802.11i 표준에서 IEEE는 WEP를 사용중단(deprecated) 선언했습니다.


이번에도 무선랜해킹의 대명사인 Aircrack-ng을 이용하여 WEP 크래킹을 수행해보겠습니다. 지난번 WPA의 경우, 특별한 크래킹 알고리즘이 없기에 사전공격(dictionary attack)을 통한 전수조사 방법만이 유일했습니다. 그러나 WEP의 경우 이미 해독법이 흔히 공개되어있습니다. 즉, 노가다를 통해 강제로 때려맞추는 것이 아니라 Aircrack에 내장된 복호화 기능을 수행하여 암호를 찾아내는 것입니다. 


준비물은 지난번과 같이 aircrack-ng suit와 usb타입 무선랜카드입니다.


이번 실습에서 사용되는 환경은 라즈베리 파이용 kali linux이며, Aircrack-ng 1.2 rc3 를 사용하였습니다. 다운로드는 이곳을 참조해주세요.

실습에 사용할 와이파이를 세팅합니다. 본인이 보유한 공유기를 wep 암호화로 선택하고 패스워드를 설정해줍니다. WEP는 현재 절대로 권장되지 않는 옵션이며, 요즘은 카페에서도 wep를 잘 사용하지 않습니다. 여기에서는 실습을 위해 의도적으로 wep를 설정하는 것이며, 실습종료후에는 반드시 WPA이상의 방법을 사용하시기 바랍니다.

인증방법을 개방모드로 하고, 암호화방법을 WEP64 혹은 128로..
인증방법을 개방모드로 하고, 암호화방법을 WEP64 혹은 128로..

이제 라즈베리 파이(칼리리눅스)에서 터미널을 열고, ifconfig 명령어를 통해 현재 네트워크 인터페이스 목록을 확인합니다. 아래의 경우에는 무선랜이 wlan0로 설정되어있음을 알 수 있습니다.(eth0등 다른 이름으로 되어있을 수 있음)

변경하기 전의 상태
변경하기 전의 상태

여기에서 HWaddr 부분의 F8:1A:67:0F:FD:54 라는 값을 복사해둡니다. 아래에서 aireplay-ng 할 때 -h 옵션에서 사용해야 하기 때문입니다.


이제 Airmon-ng 를 사용하여 해당 Wi-Fi 어댑터를 모니터 모드(Promiscuous Mode)로 변경해야 합니다. 이는 공중에 떠다니는 무선 트래픽을 모두 훔쳐볼 수 있게 하는 것입니다. 터미널에서  다음 명령어를 수행하여 모니터모드로 작동하도록 변경할 수 있습니다.

모니터 모드로 변경되었는지 여부는 iwconfig 명령어를 통해 다음과 같이 확인할 수 있습니다.

wlan0가 wlan0mon으로 바뀌고, Mode는 Monitor로 설정됨.
wlan0가 wlan0mon으로 바뀌고, Mode는 Monitor로 설정됨.

이제 airodump-ng를 사용해서 해당 네트워크 인터페이스로 유입되는 패킷들을 확인하고자 합니다.

명령어를 입력하면 아래와 같은 목록이 표출됩니다. 그 중 cpuu라는 이름의 와이파이를 보면 WEP를 사용하고 있음을 알 수 있으며, BSSID(MAC Address)를 확인할 수 있습니다. 부가적으로, CH 컬럼의 채널 숫자인 13을 기억해두시기 바랍니다.

이제 대상을 cpuu 와이파이로 한정해서 다시 한번 덤프를 떠서 파일로 저장하도록 합니다.

airodump-ng -c (channel) -w (file name) --bssid (bssid) wlan0mon 과 같은 형식으로 입력합니다. channel의 경우 위에서 13임을 알 수 있고, -w 파일명은 자유로 하되 여기에서는 WEP_TEST라고 붙였습니다. bssid는 공유기의 MAC 주소이며, 마지막에는 해당 인터페이스 이름인 wlan0mon을 지정하였습니다. 그리하면 아래와 같은 창이 뜹니다.

이 창을 띄워놓고(끄지 않고) 새로운 터미널 창을 엽니다.
이 창을 띄워놓고(끄지 않고) 새로운 터미널 창을 엽니다.

새로운 터미널에서 다음 명령어를 입력합니다.

이것은 패킷 인젝션을 수행하는 과정입니다. 이는 실제로 AP에 연결되어있지 않은 상태에서 임의의 fake 패킷을 유발하는 과정입니다. -1 옵션으로 fakeauth를 수행하는 것이며, -a는 AP의 맥주소, -h는 랜카드의 맥주소입니다.(아까 복사해둔 F8:1A:67:0F:FD:54) 마지막에는 인터페이스명을 입력합니다. 혹시 USB랜카드가 이 기능을 지원하지 않으면 오류메세지가 표출될 수 있습니다. 제가 사용한 TP-LINK모델은 이상없이 지원함을 확인하였습니다.

위와 같이 패킷 인젝션을 successful했다는 메세지가 나오면 다량의 패킷이 지나다니면서 수집되는 데이터가 금방 증가합니다. 다시 다음 명령어를 입력합니다.

-3 옵션은 arpreplay 인데, ARP_request replay 를 지속해서 보내겠다는 의미입니다.  이 역시 의도적으로 다량의 패킷을 유발하여 데이터를 수집하기 위한 작업입니다.

아까 수행해둔 airodump 창을 확인하면 이런식으로 데이터가 모이기 시작합니다.

#Data 컬럼
#Data 컬럼

아이폰에서 해당 ap에 붙은 후 뻘짓을 좀 해주면 조금 더 빨리 모아집니다. 전통적으로는 유튜브에 접속해서 동영상을 몇편 본다던가, 하는 방법이 있습니다. (저는 카카오톡 음성통화를 수행하였는데 꽤 빨리 되더라고요 ㅋㅋ)

만약 타인의 AP를 공격하려는 경우라면 위와같이 접속을 못하겠죠? 오래 기다리는 수밖에 없습니다.
만약 타인의 AP를 공격하려는 경우라면 위와같이 접속을 못하겠죠? 오래 기다리는 수밖에 없습니다.

해외의 aircrack 사용 글을 읽어보면 wep는 보통 Data를 10000개 이상은 모아야 효과가 있다고 합니다.

만개 이상?! 
만개 이상?! 

덤프를 수행하면 다음과 같은 파일들이 생겨있습니다.

이제 크랙을 시도해보겠습니다. -b옵션으로 AP의 맥 주소를 입력하고, 크랙하고자 하는 *.cap파일을 지정해줍니다.

아래와 같이 크래킹을 시도하게 됩니다.

6597개로 시도
6597개로 시도

하다가 실패하면 크랙작업이 잠시 중단되고, 키를 5000개 더 모을때마다 자동으로 재시도합니다.

결국 4만 5천개 쯤 모음;;
결국 4만 5천개 쯤 모음;;

계속 기다리다보니 어느새;; 5만개 가까이 모았습니다.

크래킹 성공!!! 
크래킹 성공!!! 

암호는 HEX값 형태로 :으로 구분되어 표시됩니다. 오른쪽에 괄호로() 아스키 코드로 변환한 문자열 값도 병행해서 출력해줍니다. 패스워드는 "aaa1234567890"라고 하네요! 크래킹 성공!


이것으로 WEP 크래킹 포스팅을 마치면서 당부의 말씀드립니다. 절대로 이 포스팅의 의도를 오해하시거나 악용하시면 안됩니다. 

  • WEP는 취약한 프로토콜이므로 카페에서 막 털어도 되는구나! (X)
  • WEP는 취약한 프로토콜이므로 절대로 사용해서는 안되는 구식이구나! WPA를 써야지 (O)

아시겠죠~? ㅎㅎ


출처가 되는 글들

  • BackTrack 5 Wireless Penetration Testing(백트랙 5로 시작하는 무선 해킹, 비벡 라마찬드, 에이콘 출판)
  • 공포의 해킹 툴 백트랙 4(샤킬 알리 / 에이콘 출판)
  • 해킹 초보를 위한 무선 네트워크 공격과 방어(브랜드 하인스, 김경곤 / 에이콘 출판)
  • http://lifehacker.com/5305094/how-to-crack-a-wi-fi-networks-wep-password-with-backtrack


CPUU님의 창작활동을 응원하고 싶으세요?