정보공간_1

[2기 강북 강정인] Aircrack-ng 소개 본문

IT 놀이터/Elite Member Tech & Talk

[2기 강북 강정인] Aircrack-ng 소개

알 수 없는 사용자 2012. 11. 29. 13:53

1.    Aircrack-ng 소개

Aircrack-ng 802.11 무선랜에 대해 패킷을 모니터링하거나, WEP, WPA-PSK암호화 방식의 키를 복호화 할 수 있는 프로그램 패키지 입니다. 패키지는 http://aircrack-ng.org/ 에서 배포되고 있습니다. 이 사이트에서는 프로그램의 사용법이나, 이용되는 알고리즘과 같은 기술적인 자료들을 매우 상세히 제공하고 있습니다. 기본적으로 이 프로그램의 복호화 기능은, WEP로 암호화 되어있는 대량의 패킷들을 캡쳐하여 분석함으로써 키를 계산해 내는 방법으로 동작합니다.

 

2.    WEP 소개

WEP이란 Wired Equivalent Privacy의 약자로써, IEEE802.11 무선네트워크에서 사용되는 표준 암호화 방식입니다. 1997년에 처음 등장하였으며, 2001년 몇분 내로 복호화를 가능토록 하는 심각한 취약점이 발견되어, 현재 802.11의 암호화 표준은 WPA2로 대체된 상태입니다

.

우리나라의 경우 유무선공유기가 활성화 되었지만, 보안기능이 꺼져있는 초기값을 그대로 사용하는 경우가 많고, 특히 국내 최대 인터넷전화 시장점유율을 보유하고있는 모 대기업에서는 전화와 무선공유기를 같이 배포하면서 기본 보안방식을 WEP으로 설정해 놓고 있는 상태였습니다. 비록 092월에 들어서야 행안부에서 국내 전체 사업자를 대상으로 WPA2사용을 권고하였지만 법적 효력이 없기 때문에 전반적으로 국내 거의 대부분의 무선인터넷이 여전히 취약한 상태입니다. 특히 최근 스마트폰의 보급과 함께 무선AP 보급이 증가되어 많은 장소에서 복수의 무선AP가 감지될 정도입니다. 다행히 최근들어 WEP의 취약성이 많이 알려져 그 사용률이 많이 줄어든 상태이지만, 여전히 많은 무선AP들이 여전히 무선구간을 암호화 하지 않거나, WEP같은 약한 암호화 방식을 사용하고 있는 상태입니다.

 

WEP 64bit / 128bit 의 비밀키를 이용하는데, WEP은 이를 stream cipher RC4를 이용하여 XOR방식으로 암호화를 진행합니다. 비밀키는 사용자가 미리 지정한 키(PSK)rc4 traffic key로 만들어지는 initialization vector(IV)로 이루어지며, 64bit의 경우 24bit IV , 40bit KEY, 그리고 128bit의 경우 24bit IV, 104bit KEY 로 이루어져있습니다.

Initial Vector는 고정된 PSK가 같은 내용의 원문에 대해 언제나 같은 암호화 결과를 내지 않도록 하기 위해 사용됩니다. 복호화를 하기 위해서는 반드시 이 IVPSK을 알고 있어야 합니다. 하지만 이 IV는 단순히 암호화되지 않은 평문으로 보내지며, 또한 24bit라는 짧은 값으로 이루어져 있음에 따라 패킷량이 많을 때 똑같은 IV를 이용하여 암호화하는 경우가 생기게 됩니다. 이는 결국 대량의 패킷을 수집하여 WEP PSK를 알아낼 수 있도록 하는 취약점을 제공하게 됩니다.

이 취약점을 보완하여 현재 표준으로 지정된 암호화 방식인 WPA2 CCMP 알고리즘을 사용하는데, 현재 이에 대한 취약점은 발견되지 않은 상태입니다. password brute force 방식은 여전히 유효하며, aircrack-ng 에서는 이 방법을 이용하여 WPA복호화를 시도합니다.

 

 

3.    Aircrack-ng 패키지 구성

A.     aircrack-ng

airodump-ng를 통하여 캡쳐된 암호화 패킷들을 이용하여 암호화에 사용된 키를 추출해낼 수 있는 프로그램입니다. WEP 암호화 키의 추출에는 PTW메소드, FMS/KoreK메소드가 사용되는데, 메소드의 알고리즘은 < http://aircrack-ng.org/doku.php?id=links#technique_papers> 에서 확인할 수 있습니다. aircrack-ng는 추가로 brute force Dictionary method를 지원하는데, WPA-PSK 암호화의 복호화는 현재 이 한가지 방법으로만 가능합니다. WPA-PSK 복호화는 클라이언트와 AP간 연결시 발생하는 4-way handshake 패킷을 캡쳐하여, 제공된dictionary의 특정 엔트리를 일일이 대입해 봄으로써 진행됩니다.

 

B.     airdecap-ng

airdecap-ngWEP/WPA/WPA2로 암호화된 패킷들을 복호화하거나, 복호화된 패킷들에서 무선 헤더들을 떼내는데 사용됩니다.

 

C.     aireplay-ng

aireplay-ng frame의 삽입, WEP WPA-PSK키의 복호화에 필요한 패킷을 ap에 전송하는데 이용됩니다. 이 도구가 지원하는 기능들은 다음과 같습니다.

 

                i.         Function 0: Deauthentication

이 기능은 AP와 이미 연결되어있는 클라이언트를 가장하여 연결해제 패킷(disassociate packet)을 보내는 것입니다. 패킷을 받은 클라이언트와 AP의 연결이 해제된다면, 클라이언트가 끊어진 연결을 다시 복구하려 하게 되고, 이때 패킷 전송자는 hidden ESSID 감지(ap essid broadcast되지 않는 경우), WPA/WPA2 handshakes 패킷 캡쳐, ARP request 생성(window의경우 연결이 끊어졌을 때 aprcache를 클리어하기때문) 등과 같은 기능을 수행할 수 있게 됩니다. 이 기능에는 AP MAC주소, 연결을 끊을 클라이언트의 MAC주소가 필요하며 MAC주소를 특정하지 않는 경우 AP에 연결된 모든 클라이언트의 연결을 해제시킬 수 있습니다.

 

               ii.         Function 1: Fake authentication

이는 OpenSystem Share Key 타입의 WEP 암호화를 사용하며, AP에 가짜 연결을 생성하는 기능입니다. 이 기능은 수행할 대상AP에 아무런 연결이 없어 패킷 캡쳐가 불가능한 경우 사용될 수 있으며 WPA/WPA2 AP에는 사용이 불가능합니다.

 

              iii.         Function 2: Interactive packet replay

이 기능은 대상에게 특정 패킷을 보내서 회신을 받을 수 있도록 하는 것입니다.

목적지가 broadcast MAC주소인 경우인 패킷 (ARP request와 같이), 혹은 to DS(distribution system) flag 1인 패킷들을 이용하거나, 그게 아니라면 아예 목적에 맞는 새로운 to DS 패킷을 생성하여 공격하며, 대상이 답변 패킷을 보내도록 함으로써 결과적으로 이를 복호화에 이용할 수 있도록 합니다.

 

              iv.         Function 3: ARP request replay Function

ARP request replay 기능은 새로운 initialization vector들을 생성하는데 가장 효과적이고 신뢰할 수 있는 방법입니다. 프로그램은 대상의 네트워크에서 ARP패킷이 생성되기를 기다리다가 이를 캡쳐한후 AP에 재전송을 여러 번 합니다. 이때 AP는 새로운 IV를 이용한 똑같은 ARP 패킷을 여러 번 반복 전송하게 됩니다. 이러한 방식으로 생성된 ARP패킷들은 WEP키를 쉽게 복호화할 수 있도록 합니다.

 

               v.         Function 4: KoreK chopchop Function

chopchop기능은 WEP키를 모르는상태로 WEP 데이터 패킷을 복호화 하는 것입니다. 이 기능을 통해 WEP키를 알아낼 수는 없지만, 평문을 해석해 낼 수 있습니다.

이러한 기능이 가능한 원리는 다음 링크에서 얻을 수 있습니다.

http://www.aircrack-ng.org/doku.php?id=chopchoptheory

 

 

              vi.         Function 5: Fragmentation Function

이 기능을 통해 WEP키 대신 PRGA(pseudo random generation algorithm) 를 얻을 수 있습니다.

PRGA는 약 1500byte, packetforge-ng에서 여러 인젝션을 위한 가짜 패킷을 생성하는데 사용됩니다. 기본적으로 이 프로그램은 패킷에서 몇가지 키가 될 수 있는 부분들을 추출한뒤, 그 내용을 알고 있는 ARP혹은 LLC혹은 두가지 패킷 모두를 AP에 보내고, 이에 반응한 AP에서 답신해온 패킷들을 통하여 많은양의 암호화정보를 추출해내는 방식으로 이루어집니다.

알고리즘에 대한 자세한 정보는 다음 링크에서 확인할 수 있습니다.

http://wiki-files.aircrack-ng.org/doc/Fragmentation-Attack-in-Practice.pdf

 

D.     airmon-ng

airmon-ng는 무선랜 인터페이스에서 Monitor mode를 활성화하는데 사용됩니다. Monitor modeairodump-ng에서 패킷 캡쳐링을 할 수 있도록 합니다.

 

E.      airodump-ng

Airodump-ng 802.11프레임 패킷들을 캡쳐할 수 있는 프로그램입니다. 이를 통해 주변 AP의 정보나 패킷량 등을 모니터링 하거나 저장할 수 있습니다. 또한 WEP IV를 수집하는데 적합하게 설계되었으며, 이는 aircrack-ng를 통하여 WEP key를 추출해 낼 수 있도록 합니다.

만약 컴퓨터에 GPS 수신기가 달려있다면, 모니터링중 찾아낸 AP들의 좌표를 기록할 수 있습니다.

 

F.      airtun-ng

Airtun-ng는 가상터널인터페이스를 생성할 수 있습니다.

이는 다음과 같은 기능을 위해 사용될 수 있습니다 :

-       wIDS (wireless intrusion detection system)

-       network에 임의의 트래픽 인젝션

 

wIDS 데이터수집을 위해, 모니터링할 네트워크의 bssid와 암호화키를 알고 있어야 합니다. Airtun-ng 는 가상 네트워크 인터페이스를 만든뒤, 네트워크의 트래픽을 모두 복호화하여 이 인터페이스로 복사함으로써 이를 snort, wireshark와 같은 전통적인 IDS에 넘길 수 있습니다.

 

트래픽인젝션은 WEP키를 가지고 있을 경우 송/수신 정보 모두를, PRGA만을 가지고 있을 경우 송신 정보만을 인젝션 할 수 있습니다.

 

G.     packetforge-ng

Packetforge-ng injection에 사용될 수 있는 암호화된 패킷을 만들어 낼 수 있습니다. Arp, UDP, ICMP 혹은 다른 종류의 패킷들을 생성할 수 있습니다.

암호화된 패킷을 생성하기 위해서는, 반드시 PRGA 패킷을 가지고 있어야 합니다.

 

H.     airdecloak-ng

특정 종류의 AP에서는 WIPS(Wireless intrusion prevention system)을 도입하여, WEP키 복호화를 방지합니다. 이는 가짜 WEP 프레임을 삽입함으로써 aircrack-ng WEP를 복호화하는것을 방해할 수 있습니다. Airdeclock-ng는 이러한 가짜 프레임을 구별해내어 필터링함으로써 결과적으로 aircrack-ng wep를 알아낼 수 있도록 합니다.

 

4.    복호화예시

A.     개요

Aircrack-ng.org 에서는 위 툴들을 조합하여 WEP키를 복호화해 낼 수 있는 튜토리얼을 만들어 놓았으며, 본문에서는 이 내용을 토대로 국내에서 쉽게 구할 수 있는 EFM Network IPTIME 공유기와 랜카드를 이용하여 테스트를 해 보았습니다.

 

B.     테스트환경

클라이언트OS

BackTrack4

클라이언트 랜카드

IPTIME G054U-A (Ralink rt73 chipset)

AP 기종

IPTIME N104

 

C.     진행

Aircrack-ng linux기반이며, 또한 Injection 을 위해서는 이를 위해 패치된 무선랜 드라이버가 필요합니다. 이는 BackTrack4이라는 OS를 사용함으로써 쉽게 해결할 수 있었습니다. BackTrack4은 백여개의 해킹툴이 내장되어있는 우분투기반의 리눅스로써, aircrack-ng의 경우 전체 패키지가 설치되어있을 뿐만 아니라, 지원되는 여러 무선랜들의 패치된 버전의 드라이버들을 제공합니다.

 

1.     일단, airmon-ng 를 이용하여 사용할 무선랜 인터페이스를 monitor mode로 설정하여 공중의 모든 패킷들을 캡쳐할 수 있도록 하였습니다.

 

2.     Airodump-ng를 이용하여 주변 네트워크와 패킷량을 검색합니다.


  대상 AP에서는 WEP 암호화를 사용중이고 BSSID 00:08:9F:CA:96:24 임을 확인할 수 있습니다.

 

3.     injection 이 제대로 작동할 수 있는지 aireplay-nginjection test모드를 이용하여 확인하였습니다.

 

4.     Airodump-ng를 이용하여 대상네트워크의 모든 패킷들을 캡쳐하여 저장하기 시작.

Airplay-ng 를 이용하여 AP와 가짜 연결을 만듭니다. 이는 AP에서 인젝션된 패킷을 무시하지 않도록 하기 위한 작업입니다. 자신이 가진 무선랜 인터페이스나 이미 연결되어있는 다른 클라이언트의 MAC address 둘중 하나를 사용할 수 있는데, 이 테스트에서는 자신의 MAC addr을 이용하였습니다.

 

5.     패킷량을 증가시켜 대량의 IV를 빠르게 얻기 위해 aireplay-ng ARP request 재생기능을 수행 하였습니다.

<클라이언트에서 보여지는 화면>

          

<다른 클라이언트에서 wireshark를 이용하여 캡쳐한 ARP 패킷들>

 

6.     Aircrack-ng로 캡쳐된 패킷들을 이용하여 WEP 키를 추출해 냅니다.


           복호화된 결과는 SCIUK로써, 설정해놓았던 값과 일치함을 확인할 수 있었습니다.

 

5.    결론

실제 복호화 작업에 이용된 시간은 5분정도로 매우 짧은 시간이며, 이를 통해 무선랜환경에서 암호화방식을 WEP방식으로 사용하는 것이 심각하게 취약하다는 것을 확인할 수 있습니다. 안전한 컴퓨팅 환경을 위해, 스마트폰 테더링, 무선공유기, 와이브로 단말 등 많은 무선 기기에서, 반드시 무선 설정을 WPA/PSK2 로 사용하기 바랍니다.

 
6.
참고문헌

http://en.wikipedia.org/wiki/Initialization_vector

http://en.wikipedia.org/wiki/Wired_Equivalent_Privacy

http://www.informit.com/guides/content.aspx?g=security&seqNum=85

http://www.aircrack-ng.org

http://aircrack-ng.org/doku.php?id=simple_wep_crack