Open Source/BackTrack

[BackTrack5 R3] Rainbowcrack

DarkSoul.Story 2013. 2. 21. 14:28
반응형


 


1. 개요


RainbowCrack는 Philippe Oechslin's의 time-memory trade-off 기술을 이용하여 구현하였으며, Hash를 크랙하는데 time-memory tradeoff 알고리즘을 이용한다. 일반적인  brute force를 이용하는 해쉬 크래커는 주어진 조건에서 가능한 많은 평문(plaintexts)을 만들고, 만든 평문들에 대해 Hash 값을 계산한다. (주어진 조건이란?  알파벳 소/대문자, 숫자, 특수문자 또는 이들을 결합한 형태, 문자열의 길이 등) 크래커가 만든 평문의 Hash값과 크랙하고자 하는 패스워드의 Hash값을 비교하여, 일치하는 해쉬값이 있으면 패스워드 크랙에 성공한 것이고 없으면 실패한것이 된다.


RainbowCrack은 time-memory trade-off 기술을 이용하기 때문에 일반적인 brute force 크래커보다 훨씬 빠르고 강력하게 해쉬를 크랙한다.

time-memory trade-off는 실제 Hash 값을 크랙하기 전에 선계산 (pre-computation) 단계에서 해쉬 알고리즘, 주어진  조건 안에서의 모든 평문과 그에 대한 Hash 쌍을 계산한다. 그 결과를 레인보우테이블 (Rainbow Table)에 저장하여, Hash 크랙에 사용된다. 


2. 테스트 환경


 운영 체제 (OS) : BackTrack5 R3

 테스트에 사용된 버전 : RainbowCrack 1.5


3. 상세 분석


RainbowCrack을 사용하기 위해서는 Rainbow Table이 필요하다. Rainbow Table은 Rainbow Crack Project에서 비용을 주고 구입 (http://project-rainbowcrack.com/buy.php) 하거나, Google 등에서 검색하여 다운로드 받을 수 있다.


RainbowCrack 버전 1.5 이상부터는 레인보우테이블 생성기를 지원한다. RainbowCrack에서 제공하는 레인보우테이블 생성기를 이용하여, 레인보우테이블을 생성하고 Hash 값 크랙을 진행 해 보자.


RainbowCrack에서 제공하는 레인보우테이블 생성기는 아래와 같이 RainbowCrack과 같이 존재하며, 이름은 rtgen 이다.



tgen을 이용하여, 레인보우테이블을 생성하기 위해서는 다음과 같이 진행한다. 


rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len 
chain_num part_index
예 : rtgen md5 loweralpha 1 7 0 1000 1000 0


여기서 cahrset은 문자열 형식을 의미하는데, 형식은 아래와 같이 정해져 있다.


numeric = [0123456789]
 
alpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
alpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
 
loweralpha = [abcdefghijklmnopqrstuvwxyz]
loweralpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789]
 
mixalpha  = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
mixalpha-numeric   = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
 
ascii-32-95  = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]
                       ^_`abcdefghijklmnopqrstuvwxyz{|}~]
ascii-32-65-123-4  = [ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW
                                 XYZ[\]^_`{|}~]
alpha-numeric-symbol32-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*
                                                      ()-_+=~`[]{}|\:;"'<>,.?/ ]
 
oracle-alpha-numeric-symbol3 = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#$_]

참고 : http://project-rainbowcrack.com/charset.txt


레인보우테이블 생성 command를 입력하기 어렵다고 생각하면, RainbowCrack Project에서 제공하는 레인보우테이블 생성 command를 사용하면 된다. (http://project-rainbowcrack.com/table.htm)



형식에 맞게 command를 입력하면, 아래와 같이 레인보우테이블을 생성하기 시작한다.



root@bt:/pentest/passwords/rainbowcrack# ./rtgen md5 loweralpha 1 7 0 1000 1000 0
rainbow table md5_loweralpha#1-7_0_1000x1000_0.rt parameters
hash algorithm:         md5
hash length:            16
charset:                abcdefghijklmnopqrstuvwxyz
charset in hex:         61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 
charset length:         26
plaintext length range: 1 - 7
reduce offset:          0x00000000
plaintext total:        8353082582
 
sequential starting point begin from 0 (0x0000000000000000)
generating...
1000 of 1000 rainbow chains generated (0 m 0.6 s)


생성되는 레인보우테이블은 *.rt 포맷으로 생성되며, 이 레인보우테이블은 RainbowCrack에서만 사용이 가능하다. 이제 생성된 레인보우테이블을 가지고 Hash 크랙을 하게 된다. Hash 크랙을 하기전에 rtsort를 이용하여, 레인보우테이블을 쉽게 조회할 수 있도록 생성된 레인보우테이블의 체인의 끝점을 정렬해야 한다. 만약 정렬하지 않은 상태에서 Hash 크랙을 시도하면 아래와 같이 경고메시지를 출력하면서, Hash 크랙이 이루어지지 않는다.



root@bt:/pentest/passwords/rainbowcrack# ./rcrack md5_loweralpha#1-7_0_1000x1000_0.rt -l /root/Desktop
/test.txt 
md5_loweralpha#1-7_0_1000x1000_0.rt is not sorted

 

rtsort를 이용하여 레인보우테이블 끝점을 정렬하면, 이제서야 Hash 크랙에 이용할 수 있게된다.



이제 rcrack을 이용하여, Hash 값을 크랙해 보자. rcrack에서 사용하는 옵션은 아래와 같다.


  

  

-h hash

입력한 Hash값만 크랙

-l hash_list_file

Hash 값들이 저장되어있는 파일

-f pwdump_file

LM pwdump 파일

-n pwdump_file

NTLM pwdump 파일


저자는 rcrack에 Hash 값들이 저장되어 있는 파일을 아래와 같이 이용하였다.



위 그림은 레인보우테이블과 Hash 값이 저장되어 있는 파일을 디스크가 읽고 있는 그림이다. Hash 크랙이 완료되면 아래와 같은 결과를 출력해 준다. 


결과값 확인 중!!!!! 


 

참고 URL 및 도서

http://project-rainbowcrack.com/index.htm

반응형

'Open Source > BackTrack' 카테고리의 다른 글

[BackTrack5 R3] DotDotPwn  (0) 2013.03.27
[BackTrack5 R3] Creddump  (0) 2013.03.04
[BackTrack5 R3] Wifi-Honey  (0) 2013.02.19
[BackTrack5 R3] HTExploit  (0) 2013.02.14
[BackTrack5 R3] Uberharvest  (0) 2013.02.12