2005. 6. 20. 09:08

[펌] [Password Crack] - John The Ripper

아주아주 유명한 Password Crack Tool을 소개하겠다.

바로 "존 더 리퍼(John the Ripper Version 1.6 Copyright (c) 1996-98 by Solar Designer)" 다.

존 더 리퍼는 Unix 계열의 시스템에서 사용자 계정의 Password를 암호화하여 저장한 "Shadow"

파일을 크랙하는데 주로 이용되었는데, 요즘에는 Windows 계열의 사용자 계정 Password를 크랙

하는데도 이용한다.

Unix 계열 시스템의 shadow 파일을 살짝 들여다 보면 아래와 같은 문자들이 나열되어 있다.

root:EMrs1Kz5cQ0/A:12405::::::
daemon:NP:6445::::::
listen:*LK*:::::::
nobody:NP:6445::::::
noaccess:NP:6445::::::
nobody4:NP:6445::::::
YeChan:6J8Cp/wjud.Ws:12405::::::
webservd:*LK*:::::::
ywson:*LK*:::::::
iscan:*LK*:::::::
weblogic:V0.N.LSc7E1B6:12611::::::

각 필드의 구분은 콜론(:)으로 되어 있고 계정이름, UID, PID, Password, Home Directory 등등..

맨 앞의 영문이 계정이름(ID)이고 바로 다음에 나오는 요상한 문자열이 암호화된 Password 다.

John은 바로 이 암호화된 스트링(문자열)을 해독하여 Password가 무엇인지를 보여준다.

Unix에서는 Shadow 파일을 이용하기 때문에 그냥 john 명령어만 사용하면 끝이다. 그런데 윈도우

시스템은 조금 다르다. Shadow 파일같은 그런게 없다.

Windows 시스템은 PWDump 라는 프로그램을 이용하여 Unix의 Shadow 파일과 같은 형식으로 만

들어줘야 한다.


사용법은 아주 간단하다.

C:>pwdump3 211.xxx.xxx.xxx

이게 끝이다. 그러면 위의 그림과 같은 메시지가 뜨면서 Unix의 Shadow 파일 형식으로 가져온다.

명령어 끝에 리다이렉션 ">" 을 사용하여 원하는 파일명으로 만들어주면 훨씬 편하겠다.

C:>pwdump3 211.xxx.xxx.xxx > PWD.txt

PWDump 프로그램을 이용하여 만든 파일을 열어보면 아래와 같은 문자열이 보인다.

GuaRDiaN:500:NO PASSWORD*********************:F1E37A8123F967125C3A8CE7E382AC0E:::
Guest:501:NO PASSWORD*********************:NO PASSWORD*********************:::
TEST:1006:B757BF5C0D87772FAAD3B435B51404EE:7CE21F17C0AEE7FB9CEBA532D0546AD6:::

자세히 보면 Unix의 Shadow 파일과 같은 형식이다. 콜론(:)으로 구분되어 있다.

역시 맨 앞이 계정이름(ID)이고 그다음이 UID, 그리고 암호화된 Password 이다.

그런데 암호화된 Password가 상당히 길다. 앞에 32자, 뒤에 32자로 총 64글자로 되어 있다.

TEST:1006:B757BF5C0D87772FAAD3B435B51404EE:7CE21F17C0AEE7FB9CEBA532D0546AD6:::

Unix는 8글자의 계정암호를 기본으로 제공하고, Windows 는 14글자의 계정암호를 제공한다.

(그런데 테스트를 해 본 결과, Windows에서는 암호 길이가 제한되어 있지 않았다!! 필자는 96글자

의 암호를 사용했었다-_-;)

아무튼 그건 그렇고. 여기서 주목해야 할것이 두가지가 있다.

먼저, 위의 암호화된 문자열을 보자. 콜론으로 구분해서 두 그룹이 있는데 그중에 앞의 그룹을 잘

보면, 17번째 ~ 32번째 문자가AAD3B435B51404EE 이렇게 되어 있다.

만일 이렇게 17번째 ~ 32번째 문자가 위와 같이 나와있다면, 그 계정의 암호길이는 8글자 이하라는

뜻이다!!

또한 "NO PASSWORD" 는 물론 암호가 없다는 뜻이다. 그런데 잼있는것이 있다.

위의 계정들은 필자가 사용하는 컴퓨터의 계정들인데 GuaRDiaN 계정이 바로 최고관리자 계정,

즉 필자가 사용하는 계정이고 암호가 분명히 설정되어 있다! 그런데도 NO PASSWORD 라고 찍혀

있다. 어찌된 걸까?

Windows 는 최대 14글자의 계정암호를 제공한다고 말했었다. 그러나 14글자가 넘어 버리면, 위와

같이 NO PASSWORD 라고 나온다. 때문에 John The Ripper는 아에 크랙을 시도하지도 않고 그냥

넘겨버린다. 보안상 아주 좋다. ㅎ.

암호는 양쪽 필드에 전부 NO PASSWORD 라고 되어 있어야만 실제로암호가 없는 것이다.

이제 John The Ripper 를 돌려서 암호를 알아내보자.

역시 명령어도 아주 쉽다.

C:>john PWD.txt

뒤의 파일은 Unix의 Shadow 파일이나 Windows의 PWDump 파일을 입력하면 된다.

위의 명령어를 입력하면 그림처럼 아무것도 보이지는 않는다. 만일 암호 크랙이 어디까지 진행되는

지 보고 싶다면 아무 키나 누르면 된다.


키를 누를때 마다 위의 메시지를 뿌려준다. trying: 이라는 부분이 문자열을 어디까지 조합하고 있는

지 알려주는 부분이다.

C:>john -show PWD.txt

-show 옵션은 현재까지 크랙된 Password를 보여주는 옵션이다. 역시 리다이렉션을 이용하여 파

일로 저장하면 되겠다.

C:>john -show PWD.txt > PWD_Crack.txt

위는 -show 옵션으로 크랙 결과를 본 것이다.

TEST 계정의 암호가 1234 라고 알려주고 있다. 뒤의 1006 은 위에서 말한 UID 이다. 헷갈리지 말자.

Guardian 계정은 NO PASSWORD라고 되어 있어서 아에 크랙을 시도하지도 않았다. Guardian 계

정의 암호는 21글자이다.

암호가 길면 길수록, 특수문자 및 숫자 조합이 많으면 많을 수록 john The Ripper의 크랙 시간은

오래 걸린다. 그러나 언젠가는 크랙되기 때문에 안심할 수가 없다.

단 몇가지의 설정으로 크랙을 예방할 수 있다. Windows 에서는 특수문자를 반드시 포함시키고

15글자 이상의 암호를 사용하자. 자신이 좋아하는 노래가사의 일부분이나, 시 어구 등의 외우기 쉬

운 문장을 암호로 사용하면 아주 좋다. 그리고 Windows 에서 PWDump 가 성공하려면 ADMIN$가

공유되어 있어야 하기 때문에 이 ADMIN$ 공유를 삭제해 주면 안전해진다.

(공유 삭제 방법은 SECURITY 블로그를 참고하자.)

Unix에서는 Shadow 파일의 권한을 400 으로 하면 되겠다.