'WEP'에 해당되는 글 4건

  1. 2012.07.14 WEP 암호화 알고리즘 취약점 1
  2. 2012.06.29 [802.11] Phishing Attack 2
  3. 2012.06.29 [802.11] Dynamic WEP 1
  4. 2012.06.29 [802.11] WEP Crack 10

1999년의 IEEE 802.11무선 LAN 표준에 규정된 WEP(Wired Equivalent Privacy) 암호 방식을 무선 구간에서 전송되는 MAC 프레임들을 40비트 길이의 WEP 공유 비밀 키와 임의로 선택되는 24비트의 Initialization Vector(IV)  로 조합된 총 64비트의 키를 이용한 RC4 스트림 암호 방식 이다. 이러한 WEP에 의한 단말과 AP간 암호를 위하여 먼저 쌍방은 동일한 패스워드 문장으로부터 생성되는 4종류의 장기 공유 키를 자동 생성한다. 이 4개의 고유 키는 2비트의 KeyID로 각각 구분된다. 이후, 4개의 공유 키 중 하나를 선택하여 MAC 프레임에 대한 WEP 암호시 사용한다.


전송되는 MAC 프레임을 보면 암호화된 데이터뿐만 아니라 암호화시 사용된 IV(Initialization Vector : 3byte 길이의 RC4 암호용 IV값으로써 매 프레임마다 임의로 선택되거나 1씩 단순 증가 됨), KeyID(2bit의 길이를 가지며 송신측이 선택한 4가지의 WEP 비밀 키 중 하나의 KeyID 값을 명시하며, 이 키 ID는 세션 연결 후 변경되지 않음) , ICV(Integrity Check Value : 평문 데이터 영역에 대한 무결성 보호를 위한 값으로 WEP에서는 CRC(데이터의 신뢰성을 검증하기 위한 에러 검출 방법의 일종)-32가 쓰임) 값도 함께 수납된다. 그 결과 원래 MAC 프레임에 8byte가 더해진다.




WEP 암호화 방식은 64bit 암호화 방식인 40bit WEP와 WEP2인 128bit 암호화 방식인 104bit WEP가 있다.



1. 암호 및 복호절차

WEP는 대표적인 스트림 암호화 방식(평문을 1bit, 1byte 또는 word단위로 암호화 하는 방식)인 RC4 방식을 채택하여 사용한다.


WEP에 적용된 RC4 스트림 암호화 방식은 쌍방간에 미리 결정된 40bit 또는 104bit 길이의 WEP Key와 초기화 벡터(IV)를 이용하여 연속된 Key Stream을 생성하고 이것을 전송할 평문과 XOR(exclusive OR)연산을 수행하여 암호문을 생성하는 방식이다.





1.1.  암호화

WEP의 Packet frame 암호화 절차의 구성을 보면 그림 2와 같다. 






다음은 WEP 암호화 프로토콜의 암호화 절차이다.

1. MAC 데이터 부분에 대한  CRC-32계산의 결과 값인 32bit 길이의 Integrity Check Value(ICV)를 얻어 페이로드 끝에 추가한다. 

2. 3byte의 Initialization Vector(IV)를 랜덤하게 생성한다.

3.  seed(IV의 값과 WEP의 키 값을 머지(Merge)한 64bit의 길이로 구성된 키값) 값을 RC4 Pseudo Random Number Generator(PRNG)에 입력하여 키스트림을 생성한다.

4. ICV값이 더해진 평문과 키 스트림을 XOR하여 암호문을 생성한다.

5. 평문으로 구성된 IV 값을 추가하여 전송한다.


이와 같은 방법으로 WEP는 암호화를 진행하며 스트림 암호화 특성상 속도가 빠르고 구조가 간단하다.




1.2. 복호화

복호화는 암호화 유사한 방식으로 이뤄지면 Key stream을 암호화된 DATA에 XOR를 해주면 복호화가 된다.





암호문의 복호화 절차는 다음과 같다.


1. 평문으로 전달된 IV 값과 WEP 비밀키를 조합하여 키 스트림을 생성한다

2. 암호화 문과 키 스트림을 XOR하여 복호화 하며 평문과 ICV값을 획득한다

3. 복호화된 평문의 ICV’값과 복화된 데이터에서 나온 ICV값과 비교를 하여 같지 않다면 전송중에 에러가 발생한 경우로 단말기에 다시 재전송 요청을 한다.



2.  WEP의 문제점과 Break 원리


WEP는 보안상에 몇가지 문제점이 있다. 그 중에서도 Weakness IV의 문제점이 있으며 이 Weakness IV문제점을 이용한 FMS(Fluhrer, Mantin, Shamir) 공격 기법은 현재까지 알려진 가장 효율적인 방법이다.


2.1. 오프라인 브르투포스 공격(전수 조사 공격)

이 공격 방법은 WEP뿐만 아니라 모든 암호 시스템에 대해서 할 수 있는 공격 방법이다. 다만 이 공격 방법이 실질적인 효과가 있는지 여부의 문제이다.


WEP의 경우는 몇 개의 패킷을 캡쳐한 뒤 가능한 모든 키를 이용해 그 패킷을 복호화 해보는 방법이다. 그리고 복호화한 패킷의 체크섬을 계산하여 원본 체크섬과 비교하여 일치하면 그 키는 올바른 키일 가능성이 매우 높다. 일반적으로 2개 이상의 패킷에 대해서 확인해 보는 것이 더 정확하다. 일부의 경우 서로 다른 두 키로 복호화한 메시지가 체크섬이 같을 경우가 있기 때문이다.


다음은 브르투포스 공격의 시간적 연관 관계표이다.



Bit길이

키의 총계

성능

시간

40bit

1099511627776

10,000/s

3년 이상

200,000/s

1년 이상

104bit

20282409603651670423947251286016

200,000/s

불가



104bit의 경우는 천문학적인 숫자로 현실성이 없으며 40bit의 경우 Tim Newsham의 기법에 의해 21비트까지 줄일 수 있다. 그것은 대부분의 40bit Key와 AP(Access Point)에서 사용하는 비밀번호 기반 키 생성 알고리즘의 약점을 공격하는 효율적 크래킹 방법으로 이 키를 크랙하는데 걸리는 시간은 1초에 10,000개의 크랙할 수 있다고 가정할 경우 단 몇 분 또는 최신 컴퓨터에서는 몇 초에 가능하다.



2.2. 키스트림 재사용

WEP의 잠재적 문제점 중 하나는 키스트림을 재사용한다는데 있다. 다음과 같은 방법으로 이용하여 Key 값을 모르는 상태에서도 암호문을 복호화 할 수 있다.


2개의 평문{ P1, P2}에 대하여 동일한 키 스트림(ks)에 의해 생성된 암호문을 각각(C1, C2)라 하고, 이들을 해커가 수집하였다고 하자. 이 암호문은 다음과 같이 생성된 것이다.


C1 = P1 ⊕ ks

C2 = P2 ⊕ ks


해커는 평문과 이를 암호화할 때 사용한 키 스트림은 모르고 있다. 하지만 수집된 2개의 암호문에 대하여 다음과 같이 서로 XOR하면 평문을 서로 XOR한 결과 값과 같다.


C1 ⊕ C2 = (P1 ⊕ ks) ⊕ (P2 ⊕ ks) = P1 ⊕ P2


해커가 두 개의 암호문과 첫 번째 암호문에 대한 평문을 알고 있다면, 두 번째 암호문은 쉽게 복호화될 수 있다. 즉, 평문 P1을 알고 있다면 P2를 찾을 수 있다.


(C1 ⊕ C2) ⊕ P1 = P2


위의 방법을 이용하여 암호문을 쉽게 복호화 할 수 있다.


IV는 이러한 공격을 막기 위해 고안된 것으로 만약 IV가 없다면 모든 패킷은 동일한 스트림으로 암호화 될 것이며 쉽게 복호화 할 수 있다. 그러나 각 패킷마다 서로 다른 IV가 쓰인다면 각 패킷별 키스트림도 서로 다를 것이다.


WEP에 쓰인 IV의 길이는 24bit이며 IV가 무작위로 선택된다고 가정할 때 통계적으로 약 5000 개의 패킷을 사용 할 때마다 키스트림이 재사용이 된다. 이 것은 Birthday Paradox의 이론을 이용한 것이다. 공격자는 이렇게 재사용되는 IV를 찾았다면 두 암호문을 XOR 연산 한 뒤 평문 구조를 추측하여 원본 평문들을 찾아 낼 수 있다. 그리고 두 평문 중 하나를 알고 있다면 다르편 평문은 간단히 XOR연산으로 알아낼 수 있다.



2.3. IV-기반 복호화 사전 테이블

공격자가 캡쳐한 암호문의 평문을 알아내는데 성공했다면, 그 암호문을 만드는데 사용된 IV에 해당하는 키스트림도 알아낼 수 있을 것이다. 이 키스트림은 같은 IV를 사용하는 다른 패킷을 복호화하는데도 쓰일 수 있다. 그래서 오랜 기간동안 키 스트림 재사용 공격을 하면 가능한 모든 IV에 대한 키스트림 테이블을 만들수 있다. 가능한 모든 IV의 수는 224이며 각 IV별로 1,500byte의 키스트림을 저장한다면 전체 테이블 저장 공간은 약 24Gigabyte로도 충분할 것이다. 이렇게 테이블을 만들어 놓으면 암호화된 패킷을 매우 쉽게 복호화 할 수 있지만 현실적으로 이 공격 기법은 너무 시간이 많이 걸린다는 점에서 현실성이 없어 사용하기엔 부적절한 방법이다.


2.4. IP Redirection

암호화된 패킷을 복호화하기 위한 또다른 방법으로 AP를 이용하는 방법이다. 일반적으로 AP는 인터넷에 연결돼 있는 경우가 많아 IP Redirection 공격이 가능 할 수 있다. 공격자는 암호화된 패킷을 캡쳐한 다음 그 패킷을 복호화하지 않은 채로 목적지 주소를 공격자가 제어하는 컴퓨터의 IP주소로 변경하는 방법이다. 이렇게 수정된 패킷을 무선 AP로 전송하면 공격자가 제어하는 컴퓨터 IP로 보내진다.


이러한 공격이 가능한 이유는 CRC32 체크섬 알고리즘이 키를 필요로 하지 않는 선형 함수이기 때문이며 이것은 패킷을 수정하더라도 체크섬을 유지하는 방법이 존재한다.


이 공격은 출발지와 목적지의 IP주소를 공격자가 미리 알고 있다는 가정하에 가능한 경우이다. 공격자는 표준 내부 네트워크 IP주소 지정법을 이용하여 추측 하는 방법과 IV 콜리젼을 이용한 키스트림 재사용 공격을 이용하여 IP주소를 알아 낼 수 있는 방법 등이 있다.


공격자가 목적지의 IP 주소를 알아 냈다면 그 주소를 원하는 IP주소와 XOR를 수행한다. 그 다음 이 결과 값에 암호화된 패킷에 있는 값과 XOR하여 암호화된 패킷의 목적지의 IP 주소를 변경한다. 그리고 전체 체크섬을 그대로 유지하기 위해 출발지 주소를 수정하여 CRC32 체크섬을 유지한다. 이렇게하면 공격자가 원하는 목적지로 패킷을 전송 할 수 있으며 공격자는 복호화된 평문을 받아 볼 수 있다.


여기서 출발지 IP 주소와 목적지의 IP주소를 이진수로 변환하여 XOR하여 암호문에 XOR해주는 방법은 매우 간단하며 여기에선 CRC32 체크섬을 유지하는 것이 가장 중요하다. 다음은 CRC32의 체크섬을 유지하는 방법이다.


출발지 주소 : 192.168.2.57

목적지 주소 : 192.168.2.1

공격자 제어 컴퓨터 : 123.45.67.89 라고 가정한다면

출발지 IP = 192.168.2.57

SH = 192 ∙ 256 + 168 = 50344

SL = 2 ∙ 256 + 57 = 569


목적지 IP=192.168.2.1

DH = 192 ∙ 256 + 168 = 50344

DL = 2 ∙ 256 + 1 = 513


공격자 제어 IP = 123.45.67.89

AH = 123 ∙ 256 + 45 = 31533

AL = 67 ∙ 256 + 89 = 17241


체크섬은 NH + NL – DH – DL 만큼 변하게 되며 이 값을 패킷의 어딘가에서 빼줘야 한다. 패킷의 출발지 주소를 이미 알고 있고 출발지 주소를 바꾼다고 해도 문제가 되지 않기 때문에 출발지 주소의 16비트 워드를 바꿔 주면 된다.


S’L = SL – ( NH + NL – DH – DL )

S’L = 569 – ( 31533 + 17241 – 50344 – 513 )

S’L = 2652


이렇게 바뀐 출발지 주소는 192.168.10.92가 된다. 이렇게 바뀐 주소를 암호화된 패킷에 반영하면 CRC32 체크섬을 유지 할 수 있다. 위와 같은 방법으로 공격자는 복호화된 패킷을 캡쳐할 수 있다.



2.5. FMS 공격


Fluhrer, Mantin, Shamir(FMS) 공격은 WEP 공격에 가장 많이 쓰이는 방법으로 이 공격법은 AirSnort 등의 툴을 통해 널리 알려졌다. 이 방법은 RC4의 키 스케줄링 알고리즘과 IV 사용법의 약점을 이용한 방법이다.


IV값 중에는 키스트림의 첫번째 byte에 비밀키에 대한 정보를 노출시키는 Weakness IV가 있다. 패킷을 암호화할 때 IV는 계속 바뀌지만 이 비밀키는 바뀌지 않고 그대로 계속 쓰인다. Weakness IV를 사용하는 충분한 패킷을 수집했다면 키스트림의 첫번째 byte를 알고 있다면 이 비밀키를 알아낼 수 있다. 802.11b 패킷의 경우 첫번째 byte는 SNAP(Subnetwork Access Protocol의 약자로 이더넷에서 자료의 유형을 명시하기 위해 사용되는 프레임) 헤더에 속해 있고 이 SNAP 헤더의 첫번째 byte는 거의 모든 경우에 0xAA이다. 이것을 암호화된 패킷읜 첫번째 byte에 0xAA 연산하면 키스트림의 첫번째 byte를 알아낼 수 있다.


이제 Weakness IV를 찾으면 비밀키를 알아낼 수 있다. WEP에서 쓰이는 IV는 24비트, 즉 3byte이며 Weakness IV는 (A+3, N-1, X)와 같은 형태로 되어 있다. 여기에서 A는 공격 대상 스트림의 특정 byte이고, N은 256(RC4는 256법/modulo연산(나머지 연산을 의미하며 256법이란 모든 숫자를 256으로 나누고 그 나머지 값을 결과로 취한다는 뜻) 을 수행하기 때문)이며, X는 임의의 값이다. 공격 대상이 키스트림의 0번째 byte라면 Weakness IV는 (3, 255, X)의 형태를 띄고 총 256개의 값을 가질 수 있다.(X는 0~255임). FMS 공격의 중요한 점은 키스트림 byte는 순차적으로 공격을 수행해야 하기 때문에 0번째 byte를 알아야만 1번째 byte를 공격할 수 있다.


위 방법의 알고리즘은 매우 간단하며 KSA의 A+3단계까지 수행한 다음 S[0], S[1]의 값이 지난 단계에서 수정 되었는지 확인 하며 수정이 되었다면 작업을 중단하고 다른 Weakness IV를 선택해서 같은 방식으로 진행을 한다. 그렇지 않다면 J값과 S[A+3]의 값을 첫번째 키스트림 byte에서 빼주면 K[A]번째 키 값을 얻을 수 있다. 이렇게 계산하여 이 값이 올바른 확률은 5%이며 이 작업을 여러번(X값이 서로 다른 Weakness IV를 선택) 수행하면 올바른 키 값을 구할 수 있다. 약 60개의 IV를 시도하면 올바른 키를 얻을 확률을 50% 이상으로 높일 수 있으며 일단 키 byte 값을 얻어냈다면 전체 과정을 계속 반복하여 그 다음 키 byte를 얻을 수 있고 이 과정을 여러번 반복하면 전체 키를 얻을 수 있다.


대략적인 공격 순서는 다음과 같다.


1. 충분한 Weakness IV를 수집

2. Weakness IV에서 A번째인 IV를 선택

( 키의 0번째 byte 값을 모를경우 A =0이 됨 )

3. 첫번째 키스트림 byte을 추출

4. 키 스케줄링 알고리즘(KSA)의 A+3단계까지 수행

5. 첫번째 키스트림 byte 값 - J - S[A+3]는 K[A]번째의 키 값임

6. S[0], S[1]이 지난 단계에서 수정 됐는지 점검

(수정이 됐다면 작업을 중단하고 다른 Weakness IV를 사용, j > 2경우 수정됨)

7. 다음 A번째 키 값을 같은 방법으로 여러번 수행하여 전체 키값을 구할 수 있음


마지막으로 위 공격 알고리즘의 예제이다.


RC4에서는 256법/module로 사용했지만 예제에서는 설명의 편이를 위해 16법/module를 사용하며 모든 배열은 256byte가 아닌 16byte(4비트로 구성됨)이 사용된다.


첫번째 키스트림


byte =  9

A  = 0

IV  =  3,15,2

Key  =  1,2,3,4,5

Seed  = IV와 키를 결합한 값


K[] = 3 15 2 X X X X X 3 15 2 X X X X X

S[] = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15


공격자는 Key를 모르며 K배열에는 현재 알고있는 값(IV)만이 저장돼 있다. 그리고 S 배열은 0에서 15까지 값이 순차적으로 저장돼 있으며 J는 0으로 초기화 되어 KSA의 처음 3단계가 수행된다.


KSA 1단계 :

 I = 0

 J = J + S[I] + K[I]

 J = 0 + 0 + 3 = 3

 S[I]와 S[J] 바꿈


K[] = 3 15 2 X X X X X 3 15 2 X X X X X

S[] = 3 1 2 0 4 5 6 7 8 9 10 11 12 13 14 15


KSA 2단계 :

 I = 1

 J = J + S[I] + KI]

 J = 3 + 1 + 15 = 3

 S[I]와 S[J] 바꿈


K[] = 3 15 2 X X X X X 3 15 2 X X X X X

S[] = 3 0 2 1 4 5 6 7 8 9 10 11 12 13 14 15


KSA 3단계 :

 I = 2

 J = J + S[I] + K[I]

 J = 3 + 2 + 2 = 7

 S[I]와 S[J] 바꿈


K[] = 3 15 2 X X X X X 3 15 2 X X X X X

S[] = 3 0 7 1 4 5 6 2 8 9 10 11 12 13 14 15


A=0일 때 A+3을 수행하였다. Key[A] = 첫번째 키스트림 byte 값 - J - S[A+3]이며 그 결과 0번째 키 byte 값은 Key[0] = 9 - 7 - 1 = 1이 된다. 이 시점에서 J가 2미만이 아니기 때문에 다음 단계를 계속 진행 할 수 있다.


여기서 구한 0번째 키 byte는 다음 byte(1번째 byte)를 알아 내는데 쓰일 수 있으며 키의 1번재 byte를 알아내는 경우에는 IV가(4,15,X)의 형태를 띄며 KSA를 4단계까지 진행해야 한다. IV(4,15,9)를 사용할 경우 키스트림의 첫 byte는 6이 된다.


첫번째 키스트림


byte  =  6

A = 0

IV  =  4,15,9

Key  =  1,2,3,4,5

Seed  = IV와 키를 결합한 값

K[] = 4 15 9 1 X X X X 4 15 9 1 X X X X

S[] = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15



KSA 1단계 :

 I = 0

 J = J + S[I] + K[I]

 J = 0 + 0 + 4 = 4

S[I]와 S[J] 바꿈


K[] = 4 15 9 1 X X X X 4 15 9 1 X X X X

S[] = 4 1 2 3 0 5 6 7 8 9 10 11 12 13 14 15



KSA 2단계 :

 I = 1

 J = J + S[I] + K[I]

 J = 4 + 1 + 15 = 4

 S[I]와 S[J] 바꿈


K[] = 4 15 9 1 X X X X 4 15 9 1 X X X X

S[] = 4 0 2 3 1 5 6 7 8 9 10 11 12 13 14 15



KSA 3단계 :

 I = 2

 J = J + S[I] + K[I]

 J = 4 + 2 + 9 = 15

 S[I]와 S[J] 바꿈


K[] = 4 15 9 1 X X X X 4 15 9 1 X X X X

S[] = 4 0 15 3 1 5 6 7 8 9 10 11 12 13 14 2



KSA 4단계 :

 I = 3

 J = J + S[I] + K[I]

 J = 15 + 3 + 1 = 3

 S[I]와 S[J] 바꿈


K[] = 4 15 9 1 X X X X 4 15 9 1 X X X X

S[] = 4 0 15 3 1 5 6 7 8 9 10 11 12 13 14 2


A = 1 일때 A+3을 수행한 결과 Key[1] = 6 - 3 - 1 = 2로 올바른 키 byte를 알아 냈다. 여기에서는 X 값은 올바른 키 byte를 얻어내기 위해 의도적으로 선택한 값이다. 실제 키 byte를 알아내려면 여러 X값을 사용해서 결과를 뽑아 낸 뒤 통계적으로 분석하여야 올바른 키 값을 구할 수 있다.




3. FMS를 이용한 WEP 공격 절차


마지막으로 FMS공격 기법을 이용한 공격 절차는 설명한다. 위 공격 잘차는 AT&T 연구소의 기술 보고서 TD-4ZCPZZ(“Using the Fluhrer, Mantin, and Shamir Attack to Break WEP”)를 인용하여 설명하였다.


3.1. Packet 수집

특별한 몇몇의 단말기는 무선 네트웍으로부터 전송된 모든 데이터를 수신할 수 있는 기능이 있다. 우리는 이런 단말들을 이용하여 WEP로 암호화된 패킷 수집이 가능하다.


여기에는 다양한 종류의 소프트웨어 프로그램이 있는데 이런 프로그램을 통틀어 스니핑(Sniffing) 툴이라 부르며 이런 프로그램은 802.11 패킷을 캡쳐와 디코드(해독)를 할 수 있는 기능이 들어 있다. 대표적인 프로그램으로 NAI’s “Sniffer”, Wildpacket’s “AiroPeek”와 Open Source Woftware인 Ethereal 등등이 있다.


WNIC(Wireless Network Interface Card)로는 Intersil Prism, Aironet과 Orinoco Chipset 등등 Sniffing 기능이 지원되는 칩셑이 장착된 단말이 필요하다.


TomsNetworking의 How to Crack WEP – Part 2: Performing the Crack의 자료에 따르면 64bit의 WEP key를 크랙하기 위해서는 50,000 ~ 200,000 IVs 패킷을 수집해야하며 128bit WEP key를 사용할 경우는 200,000 ~ 700,000 IVs가 필요하다.


일반적인 상황에서는 충분한 패킷을 수집해 IVs 값을 얻기위해서는 많은 시간이 걸린다. 수집 시간을 단축하기 위해서는 몇몇의 방법이 쓰이는 가장 간단한 방법으로 무선 단말기에 Ping flooding 방법이 있으며 Aireply라는 툴을 이용하여 트래픽을 증가시키는 방법이 등등이 있다. 이와 같은 방법을 활용하여 우리는 WEP Crack하기 위한 충분한 IVs 값을 단시간에 수집할 수 있다.



3.2. IVs 값 추출

기본적인 공격에는 특별한 형태의 IVs만 필요하며 다른 패킷을 WEP 크랙에 영향을 주지 않는다. 필요한 IVs만 선별적으로 추출하여 공격을 더 수월하게 만들 필요가 있다.


현재는 몇몇의 프로그램은 이 과정을 자동 수행해 WEP를 크랙해주는 프로그램이 있다. 공격자는 이런 툴을 이용하여 별도의 IVs 추출 과정을 생력한다.



3.3.  Weakness IV를 이용한 비밀키 추측하기

공격절차에 대한 자세한 사항은 3.5의 FMS 공격을 참조한다. 여기에서는 비밀키 추측 절차만 나열한다.


1. 3.2에서 수집한 Weakness IV에서 A번째인 IV를 선택

( 키의 0번째 byte 값을 모를경우 A =0이 됨 )

2. 첫번째 키스트림 byte을 추출

3. 키 스케줄링 알고리즘(KSA)의 A+3단계까지 수행

4. 첫번째 키스트림 byte 값 - J - S[A+3]는 K[A]번째의 키 값임

5. S[0], S[1]이 지난 단계에서 수정 됐는지 점검

  (수정이 됐다면 작업을 중단하고 다른 Weakness IV를 사용, j > 2경우 수정됨)

6. 다음 A번째 키 값을 같은 방법으로 여러번 수행하여 전체 키값을 구할 수 있음



2005.11.18 유현수





'공부 > Network' 카테고리의 다른 글

NetBIOS Suffix  (0) 2012.07.19
UNC(Universal Naming Convention)  (0) 2012.07.17
WPA2 Vulnerability Hole196  (2) 2012.07.11
Well Known Port  (0) 2012.07.05
CCNA  (1) 2012.07.05
Posted by extr
:






무선 피싱 공격에 대해 알아보도록 하겠습니다.



무선 피싱 공격(wireless Phishing)이란??


무선해킹 피해사고 관련 뉴스: http://www.boannews.com/media/view.asp?idx=22344&kind=0


피싱(Phishing)이란 개인정보란 뜻의 (Private Data)와 낚시(Fishing)의 합성어로서 그냥 말 그대로 개인정보를 낚는다는 의미입니다.






피싱의 원리는 이러합니다.


AP와 연결된 Station을 DoS(서비스 거부 공격)을 이용하여 연결을 끊거나, 혹은 신호감도를 약해졌을 때



크래커가 만든 가짜AP에 접속하게 유도를 하는겁니다.


어떻게 유도를 할까요?



그건 로밍 트리거(Roaming Trigger)를 이용한 방법인데, 이종의 무선 네트워크의 특성입니다.



무선 네트워크는 연결이 끊어지거나, 신호가 약하면 더 강한 신호의 세기를 가진 네트워크에 연결하려는 특징이 있습니다.



이를 로밍 트리거라고하는데, 이를 이용하여 피싱을 하면 엄청나겠죠? 가령 자신이 더 높은 신호세기를 보내거나...



연결이 끊긴 후 station에게 기존 AP의 BSSID로 스푸핑을 하면?



 그러니까 이 그림 하나로 요약이 되는거죠.






그럼 본론에 앞서서 우선 전제 사항을 말씀드릴게요


[우선 이 모의해킹은 back track 4 final을 이용하여 진행하였습니다.]

[사용 가능한 무선 랜카드는 aircrack 홈페이지를 참고하시길 바랍니다.]






iwconfig


언제나 하던대로 우선 무선 네트워크가 연결되어있는지 확인합니다.







airmon-ng start <무선랜카드 명>


모니터 설정 모드로 모니터모드 1개를 만들어 줍니다.







한번 더 확인을 해서 성공적으로 모니터 모드가 만들어 졌다면 다음 단계로 진행합니다.








wget http://metasploit.com/users/hdm/tools/karma.rc


Web Get 명령을 통해 karma.rc파일을 다운로드 받습니다.


이 파일은 HTTP와 DNS서버를 연동시켜주는 역할을 합니다. 한마디로 가짜 AP에서도 인터넷이 되게하기위한 필수 요소겠지요.









vi <dhcpd.conf 파일의 경로>


dhcpd.conf 파일은 자동으로 아이피를 할당 받게. 그러니까 가짜 AP에 연결한 station들에게 자동으로 인터넷이 되게 


아이피를 자동으로 할당해주는 역할을 하는 기능을 합니다. 매우 중요한 역할을 수행하지요.


이 dhcpd.conf파일을 vi로 열어 다음과 같이 수정해줍니다 =)










수정하고 나시면 저장하시고 계속 진행됩니다.











airbase-ng -c <채널> -e "<ESSID>" -y -v <모니터링 무선 NIC>


airbase-ng는 가짜 AP를 만들어주는 프로그램입니다.


우선 위의 사진을 해석하자면 이렇습니다.


1번 채널로 "DCosAP"라는 SSID를 가진 AP를 만든다..


-y라는 옵션은 Probe Request에 대해 Response하지 않겠다는 의미입니다.


즉, 자동으로 연결하려는 station은 별도의 응답을 하지않고 바로바로 연결시켜주겠다는 뜻이 되지요.










명령어를 입력하시면 저렇게 뜨는걸 보실 수 있습니다.










ifconfig at0 up 10.0.0.1 netmask 255.255.255.0

route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1

ifconfig at0



이제 저렇게 명령어를 입력해서 가상 랜카드에 넷마스크와 게이트웨이를 설정해 줍니다.


이렇게 설정해야 접속된 station들에게 DHCP로 자동적으로 10.0.0.0 대역으로 아이피를 부여해줄 수 있기 때문이죠.









dhcpd3 -cf <dhcpd.conf 파일의 위치> at0


이제 저 명령어를 통해서 DHCP설정을 at0이라는 가상으로 만든 NIC에 활성화시켜 줍니다.


여기까지 과정이 되면 연결된 station은 자동으로 IP를 할당받게 됩니다.










msfconsole -r <karma.rc파일의 위치>


이 명령어는 DNS서버와 HTTP를 연결시켜주는 명령어입니다.


이렇게 함으로써 정상적인 인터넷을 할 수 있게 됩니다.(참고※크래커의 컴퓨터가 인터넷이 되지않는다면 무용지물입니다.)











카르마파일을 실행하고나면 위와같이 좌르륵뜨다가 서버가 스타트됩니다.













그리고 피싱AP가 실제로 등록된 모습을 확인하실 수 있습니다.





출처 - 옛날 블로그 2011/02/27 13:53


'공부 > Network' 카테고리의 다른 글

[802.11] Frame - Frame Control  (0) 2012.06.29
[802.11] 4가지 오해들  (0) 2012.06.29
[802.11] Dynamic WEP  (1) 2012.06.29
[802.11] WPA-PSK, AES, TKIP  (0) 2012.06.29
[802.11] WIPS  (1) 2012.06.29
Posted by extr
:

[802.11] Dynamic WEP

공부/Network 2012. 6. 29. 16:32 |

우선 WEP의 얘기를 다시 꺼내어 봅시다.



WEP(Wired Equivalent Protocol)은 유선랜에서 제공하는 것과 유사한 수준의 보안 및 기밀 보안을 무선랜에도 적용하기 위하여 Wi-Fi 표준에 정의해둔 보안 프로토콜입니다.




그러나 우수한 암호화 성능에도 불구하고 수동으로 WEP을 설정할 경우, 오류의 가능성이나 장시간 변경을 하지 않을 경우 크랙의 위험성을 안고

있는 반면, 



EAP-TLS 이상의 인증에서 제공하는 기능인 Dynamic WEP Key의 경우는 WEP이 자동으로 설정, 주기적으로 갱신되므로 오류나 크랙의가능성을 최소화할 수 있습니다.


또한 무선 데이터 구간을 암호화함으로써 높은 보안 성능을 보장합니다.   




그럼 여기서 EAP-TLS는 무엇이냐..



우선 이는 보안 알고리즘이라고 생각하시면 됩니다.




기본적으로 무선랜 카드의 고유한 번호인 MAC 주소를 이용한 MAC 인증 이외에, 포트 기반의 802.1X 인증 방식으로는 EAP-MD5,  EAP-TLS, EAP-TTLS, PEAP 등이 있습니다.



EAP-MD5는 사용자의 ID와 패스워드를 이용하여 무선랜에 접속하는 방식이며, EAP-TLS는 서버 인증서와 개인 인증서의 상호 인증을 통해 무선랜에 접속하는 방식입니다. 



EAP-TLS는 인증서 기반 인증 방식이므로 높은 보안 성능을 갖추고 있습니다.



또한 EAP-TTLS와 PEAP는 인증서가 설치된 서버와 개인 사용자간 터널을 이용하여 암호화된 인증 정보를 주고 받는 방식으로 높은 보안 레벨과 편리성을 갖춘 방식입니다. 



이를 WEP와 연관지어 설명해 보겠습니다.


WEP가 크랙된 이유는 RC4라고하는 암호화알고리즘이 10년전인 2001년에 그 알고리즘이 풀렸기 때문인데요.


WEP는 RC4라고하는 암호화 알고리즘을 사용합니다.






이 RC4의 동작 방식을 우선 쉽게 알아보겠습니다


우선 평문(평문은 cleartext 또는 plaintext라고도 합니다.)을 체크섬을 통해서 오류가 있는지 검사를 합니다.


그리고 그것을 RC4라고하는 믹서기에 넣어줍니다.


그리고 key값과, IV라고하는 암호화 뚜껑 역시 RC4라는 믹서기에 넣어줍니다.


그리고 XOR이라는 버튼으로 믹서기를 갈아줍니다.


그렇게 되면 사이퍼텍스트 즉, 암호문이 생성이 됩니다.




허나, 여기에는 문제점이 있었습니다. 그것은 그림에도 나와있지만 암호화뚜껑인 IV가 그대로 사이퍼텍스트와 함께 내려왔다는것!!


그럼 IV를 를 알고있으니까.. 키도 알 수 있고.. RC4도 뚫렸으니까 알수있을거고 encryption된 값도 알 수 있잖습니까?


바로 이러한 취약점으로 WEP는 위험한 무선 보안 프토토콜이였습니다.




하지만 여기서 KEY를 수시로 변경시켜버리면 어떻게 될까요?



우선적으로 IVs를 모은다..해도 key가 수시로 바뀌어버리니 데이터를 모으는 의미가 없어집니다.


RC4의 알고리즘이 풀렸다지만,IV를 아무리 모아서 키값을 얻는다 해도 이미 그 시점이 되면 또 키가 바뀌어 있을게 뻔하니까..


결론은 자신이 얻은 키 값과 현재의 키 값이 서로 다르기 때문에 매칭시키는게 다르잖아요? 쉬운 예를 들어볼까요??


WEP는 그냥 열쇠를 찾아서 열쇠 구멍에 끼우면 바로 열리게 되어있습니다.



하지만 Dynamic WEP는 열쇠를 찾아서 열쇠 구멍에 끼우면 열쇠구멍이 달라서 끼워지질 않게되고 이게 또 자꾸만 바뀝니다.. 


그러기때문에 Dynamic WEP는 크랙이 불가능하지는 않을지언정 매우 강력한 보안성을 지니고 있습니다.


Dynamic WEP가 궁금한데 자료를 찾지 못해서 제가 그냥 만들어서 올립니다.


저처럼 찾으시는 분들은.. 좋은 정보를 얻어가시길 바랍니다.




-이 글의 펌/복사/변조 등을 절대적으로 금지합니다-



출처 - 옛날 블로그 2011/02/21 13:49


'공부 > Network' 카테고리의 다른 글

[802.11] 4가지 오해들  (0) 2012.06.29
[802.11] Phishing Attack  (2) 2012.06.29
[802.11] WPA-PSK, AES, TKIP  (0) 2012.06.29
[802.11] WIPS  (1) 2012.06.29
[802.11] 802.11i  (0) 2012.06.29
Posted by extr
:

[802.11] WEP Crack

공부/Network 2012. 6. 29. 16:17 |




802.11 WEP 크랙에 대해서 알아보도록 하겠습니다.


우선 WEP가 무엇인지 알아야 하겠죠?


WEP(Wired Equivalent Privacy)란 쉽게말해서 802.11 즉, 무선랜의 암호화 방식입니다.


이 WEP는 이름의 의미 처럼 처음에 굉장히 자신하는 암호화 방식이였습니다(유선과 동등하단 의미니까..)


하지만 WEP는 뚫려버렸습니다. 왜냐?


RC4라고하는 암호화알고리즘이 10년전인 2001년에 그 알고리즘이 풀렸기 때문인데요.


WEP는 RC4라고하는 암호화 알고리즘을 사용합니다.





우선 평문(평문은 cleartext 또는 plaintext라고도 합니다.)을 체크섬을 통해서 오류가 있는지 검사를 합니다.


그리고 그것을 RC4라고하는 믹서기에 넣어줍니다.


그리고 key값과, IV라고하는 암호화 뚜껑 역시 RC4라는 믹서기에 넣어줍니다.


그리고 XOR이라는 버튼으로 믹서기를 갈아줍니다.


그렇게 되면 사이퍼텍스트 즉, 암호문이 생성이 됩니다.


허나, 여기에는 문제점이 있었습니다. 그것은 그림에도 나와있지만 암호화뚜껑인 IV가 그대로 사이퍼텍스트와 함께 내려왔다는것!!


그럼 IV를 를 알고있으니까.. 키도 알 수 있고.. RC4도 뚫렸으니까 알수있을거고 encryption된 값도 알 수 있잖아요?


결론적으로 4+x=10에서 x를 찾는것과 같은 이치가 되는겁니다.





사람들은 이러한 문제점 때문에 암호화의 글자 수를 늘린다거나 ARP필터링을 한다는 등 응급처치를 했습니다.


하지만 이미 4+x=10에서 x를 찾는 상황에서 그런 응급처치가 통할리가 있을까요.. 없습니다..


글자수를 늘리는건 뻔한얘기고 ARP필터링을 하면 스푸핑을 하면 되니까요..



그럼 한번 이 WEP 크랙을 직접 체험해봐야겠지요?


사용 OS환경은 





백트랙 4를 사용합니다.


내부 프로그램으로 aircrack-ng 1.1ver를 사용합니다.



처음에 모니터링을 하기위한 모니터링 모드 설정을 하나 만들어 줍니다.

(참고로 iwconfig를 치면 mode가 나오는데 여기서 managed가 일반 무선NIC모드이고, monitor가 모니터링 모드랍니다)


모니터링 설정을 만드는방법은 이런식의 명령어를 입력하시면 됩니다.


>airmon-ng start <무선 NIC 이름>




(무선 NIC이름은 iwconfig를 치면 나온답니다)

이렇게 설정하시고 한번 더 iwconfig를 쳐보시면 mon0가 monitor mode로 추가된 것을 확인하실 수 있습니다.


그리고 이제 공격할 대상을 스캐닝해야겠지요?


스캐닝을 수행하는 명령어는 다음과 같습니다


>airodump-ng -c <channel> --bssid <공격할 AP의 BSSID> -w <저장할 파일 명> <Monitoring mode 무선 NIC>


airodump-ng란 스캐닝을 하는 툴입니다.

저장할 파일 명에는 크랙된 키 값이 저장됩니다.

BSSID란 AP의 MAC을 의미합니다.




스캐닝을 해서 대상을 캡쳐했다면 이제 본격적인 작업을 수행해야합니다.


제가 아까 그림을 통해 설명했는데 IV를 통해 키를 알아낼 수 있다고 했습니다.


하지만 이 IV가 하나만있으면 되는게 아니라 여러개가 있어야하는데요. 이 IV는 스캐닝을 통해 모니터링을 하면





이런식으로 데이터라고 잡힙니다.(데이터는 IV와 인크립션된 값을 말합니다.)


이 데이터는 서로 통신을해서 DATA를 주고받아야하는데 그럴려면 결합이 되어야합니다.


뭐..이게 3만개정도 필요합니다..하지만 통신을하는 station이 적거나, 아예 없다면 답이없겠죠?


그래서 데이터를 빨리모으기 위해서 가짜 인증작업과 ARP인젝션이 필요합니다


이 가짜인증은 Fake Authentication이라고도 부릅니다.


명령어는 다음과 같습니다.



>aireplay-ng -1 5000 -e <SSID> -a <공격할 BSSID> -h <내 랜카드 MAC> <모니터링 NIC>



aireplay 내에도 많은 기능이 존재합니다. 가짜인증..ARP 주입..등등


그 기능을 구별하기위해서 번호를 지정해줍니다 가짜인증은 1번 주입은 3번..이렇게


그 번호중에서 fake authentication이 1번이라서 -1이라고 해준겁니다.


5000은 가짜인증 패킷을 5000번 날려서 절대로 AP와의 통신이 끊기지 않게 안전빵으로 달아주는 겁니다.


이는 실제로 동영상을 보시면 결합과정까지 가는 것을 볼 수 있습니다.



그 다음으로 ARP를 인젝션합니다.


ARP를 주입시키는 이유는 IV를 계속 주기위해서입니다. AP는 ARP를 받으면 다른 새로운 IV를 부여해주기 때문입니다.


그럼 계속 주입시키면..한 3만번 주입시키면 3만개의 데이터가 모이겠죠?


데이터가 어느정도 모였다 싶으면 이제 저장된 파일을 통해서 복호화된 키를 볼 수 있습니다.


명령어는 다음과 같습니다.


>aircrack -z <저장된 파일명>





이런식으로 16진수로 복호화가 완료된 것을 확인하실 수 있습니다.


저것을 아스키코드와 대조시켜서 입력시키면 해당 AP의 WEP를 뚫고 들어갈 수 있겠죠?




출처 - 옛날 블로그 2011/02/12 17:06 



Posted by extr
: