본문 바로가기

보안/웹 해킹_보안

[해킹툴활용] John the ripper 를 이용한 패스워드 크랙

BackTrack5 시스템에서 실행


# cd /pentest/passwords/john

# ./unshadow /etc/passwd /etc/shadow  > passwords

# ./john passwords


Warning: detected hash type "sha512crypt", but the string is also recognized as "crypt"

Use the "--format=crypt" option to force loading these as that type instead

Loaded 2 password hashes with 2 different salts (sha512crypt [32/32])

toor             (root)

qqq111           (kim)

guesses: 2  time: 0:00:00:17 DONE (Tue Jul 22 01:10:14 2014)  c/s: 226  trying: qqq111

Use the "--show" option to display all of the cracked passwords reliably



패스워드 크랙을 실행한다.

# ./john -show passwords


root:toor:0:0:root:/root:/bin/bash

kim:qqq111:1001:1001::/home/kim:/bin/sh


2 password hashes cracked, 0 left



실행 결과를 확인하고, 크랙된, 즉, 암호가 깨진 사용자들에게 경고의 메일을 보낸다.
# ./mailer passwords

Sending mail to root...



L0phtcrack 가장 잘 알려진 윈도우 버전의 패스워드 크랙 툴
15일 트라이얼 버전을 아래 URL에서 다운로드 받아 사용할 수 있다.
http://www.l0phtcrack.com/download.html
<참고> 사용방법: http://web2.c2.cyworld.com/myhompy/board/retrieveBoard.php?home_id=a3652255&lmenuSeq=571742&smenuSeq=554105&postSeq=4182164


Rainblow 테이블과 패스워드 크랙

출처: http://c8korea.blogspot.kr/2012/12/rainbow-tables.html

원문:
레인보우 테이블에 대한 정보는 아래의 링크사이트를 참조 바란다.
http://project-rainbowcrack.com/

해당 프로젝트에는 다음과 같이 소개를 한다.


RainbowCrack is a general propose implementation of Philippe Oechslin's faster time-memory trade-off technique. Function of this software is to crack hash.
The straightforward way to crack hash is brute force. In brute force approach, all candidate plaintexts and corresponding hashes are computed one by one. The computed hashes are compared with the target hash. If one of them matches, the plaintext is found. Otherwise the process continues until finish searching all candidate plaintexts.

RainbowCrack은 해쉬값을 클랙하기 위해 사용되는 부분이다.

실제로 MD5와 SHA-1과 같은 암호화된 부분을 깬다는 것은 불가능에 가깝다고 하였지만 실제 가능한 모든 값을 테이블에 저장하여 역으로 깨부수는 그런 방법이다.

예를 들어 "a"라는 문자에 대한 해쉬값을 아래와 같이 얻을 수 있다.


만일 이러한 해쉬값을 역으로 저장을 하였다면 역으로 a라는 문자값을 얻어 내는 것은 가능하다는 결론이 나온다.

Rainbow Tables 프로젝트를 이러한 개요로 시작했지 않았을 까 한다.


Rainbow Tables의 생성 및 크기

그럼 이러한 Rainbow Table은 어떻게 만들어 질까? 해당 프로젝트에 보면 자세하게 설명이 나온다.
rtgen이라는 프로그램으로 다양한 옵션을 이용하여 Rainbow Table을 만들 수 있다고 나오다.

The rtgen program need several parameters to generate a rainbow table, the syntax of the command line is:

사용법: rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len chain_num part_index

예) rtgen md5 loweralpha-numeric 1 7 0 3800 33554432 0


사실 위와 같이 만들려면 dual core E7300에서 돌렸을 시 약 4시간이 소용된다고 하니 어느정도인지는 알 수 있듯 싶다. 여튼...이렇게 만들어진 Rainbow Table은 현재 인터넷(토렌트)에서 쉽게 구할 수 있다.

용량은 좀 크다. 작게는 수기가에서 수테라까지 이른다고 하니 디스크 공간의 여유가 되는 폐인은 다운해서 사용해 보길 바란다.


크랙방법

해당 프로젝트에도 나와 있듯이 다음과 같은 명령어로 크래킹을 시도한다고 나와있다.


The rcrack program is used to lookup the rainbow tables. It only accepts sorted rainbow tables. Assume the sorted rainbow tables are placed in c:\rt directory, to crack single hash the command line will be:

rcrack c:\rt\*.rt -h your_hash_comes_here


이외 2개 이상의 해쉬값을 크래킹 하는 부분, PWDUMP와 같은 패스워드 덤프파일을 이용한 크래킹 방법등이 올라와 있으니 참조바란다.


크래킹 시나리오

1. 웹서버의 DB 권한을 얻었으며 DB의 USERS 테이블에 사용자이름, 패스워드, 주민등록번호 필드가 보인다. password는 MD5로 암호화 되어 있다. 그래도 웹DB관리자는 어느정도 관리는 하나 보다. 여튼...해당 사용자의 암호부분을 해쉬값을 구한다음 크래킹을 할 수 있다.

2. 윈도 2003, 2000, XP의 사용자 암호화 방식은 LM(LanMan) 해쉬값을 가지고 있다. 따라서 해당 플랫폼의 command shell을 따 냈다면 pwdump를 이용한 사용자 패스워드 해쉬값을 따낼 수 있으며 당연히 패스워드 또한 크래킹이 가능하다.


방지책
방지책은 없다. MD5나 SHA-1 등으로 이루어진 패스워드는 무용지물이 된다는 말이다.
물론 대소문자, 숫자, 특수문자의 조합으로 12자리 정도 해 놓으면 안심할 수는 있지만 이또한 언젠가는 깨질 수 있다는 말이 된다.

현재 이러한 것을 방지하기 위해 "SALT"라는 변칙방법을 이용한 해쉬값을 사용하는 방법이 있다고 한다.

여튼...국내의 대부분의 모든 사이트는 위의 방법으로 거의 크래킹이 가능하다는 결론이다.
이때문에 C발민국의 IT 철밥통들도 DB암호화 한다고 지랄 염병을 떨고 있는 지도 모른다.
이미 개인정보, 주민번호는 중국으로 넘어간지가 언제인데  지금에 와서 DB암호화 하니 주민번호 없애니 하면서 지랄 하는 꼬리지를 보면 역시 IT 강국이라는 말에 헛웃음이 나온다.