Open Source/Kali Linux

[Password Attack - Online] phrasendrescher On Kali Linux

DarkSoul.Story 2013. 5. 3. 17:20
반응형



개요


phrasendrescher (p|d)는 플러그인을 이용한 모듈과 멀티 프로세싱을 이용한 패스워드 크래킹(Pass Phrase Cracking) 도구 이다. 기본적인 플로그인이 포함되어 있지만, 간단한 플러그인 API는 쉽게 새로 개발할 수 있다고 한다.  


특징은 아래와 같다.

- 플러그인을 이용한 모듈화

- 멀티 프레싱(Multi processing)

- 치환(permutations) 유무에 관계 없이 사전 공격 (Dictionary attack) : 대문자, 소문자, L33T등

- 증분/증가 무차별 공격 (Incremental brute force attack)

- 사용자 정의 문자열 지원

- FreeBSD, NetBSD, OpenBSD, MacOS, Linux에서 사용 가능



* L33T란?


리트(l33t, leet, 1337)는 컴퓨터 문서상에서 알파벳을 다른 기호로 치환해서 적는 방법으로, 주로 인터넷 상에서 사용한다.


최초의 탄생에는 여러가지 설이 있으나 Elite라는 단어에서 유래되었다는 설이 가장 설득력 있다. 해커들 사이에서 자신들만의 언어수단을 간구하던 중에 나타난 것이라는 설로, leet라는 단어 자체는 리트식으로 1337, l33t, l33+ 등으로 표기된다.

 

검색 엔진 가운데 구글은 검색 인터페이스에서 “해커어”라는 언어를 지원하고 있는데, 이 해커어가 리트를 의미한다.


출처 : 위키백과 

http://ko.wikipedia.org/wiki/리트_(인터넷) 


L33T 예시를 확인 하고 싶다면 위 출처 URL을 확인 하면 된다.

 

 

현재 기본적으로 포함되어 있는 플러그인은 아래와 같다.


- pkey

RSA-DSA 개인 키 패스워드를 크래킹할 때 사용


- mssql

MS-SQL 2000 / 2005 SHA-1 해시를 크랙할 때 사용


- ssh

원격 호스트의 SSH 서비스를 공격하여, 로그인 아이디나 패스워드를 알아낼 때 사용


- http-raw

raw HTTP 요청에 대한 간단한 플러그인으로, 요청은 인증서로 전달 된 파일에서 읽는다. 대상 호스트는 HTTP 요청 헤더에 HOST 필드로 부터 취득한다.  


- enc-file

GnuPG를 이용한, 대칭 암호로 암호화된 파일을 크랙할 때 사용

(3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH)


테스트 환경 

 운영 체제 (OS) : Kali Linux 1.0 

 테스트에 사용된 도구 버전 : v1.2.2


 

상세 분석


phrasendrescher를 사용하기 위해서는 도구명을 전부 입력하는 것이 아니라, pd 만 입력하면 바로 사용할 수 있다. phrasendrescher 도구가 어떤 옵션을 사용하는지 확인 하고자 한다면 [pd -h]를 입력하면 사용 가능한 모듈과 옵션 정보를 아래와 같이 확인 할 수 있다.





옵션 (General Options)

설명

h

Help

v

자세히 모드 (verbose mode)

i  from[:to]

증분/증가 모드 (incremental mode)에 사용하는 패스워드 길이 지정

from(최소 길이) : to(최대 길이)

ex) 패스워드의 길이가 최소 2자리에서 최대 5자리인 경우

      2:5

      패스워드의 길이가 3자리인 경우

       3

d file

사전 공격 모드에 사용되는 파일 지정

w number

스레드(threads) 수 지정. 기본 : 1

r rules

사전 모드에 사용되는 규칙 지정

A : 모든 문자를 대문자로

F : 첫 번째 문자만 대문자로

L : 마지막 문자만 대문자로

W : 각 단어의 첫 문자를 대문자로

a : 모든 문자를 소문자로

f : 첫 번째 문자만 소문자로

l : 마지막 문자만 소문자로

w : 각 단어의 첫 문자를 소문자로

D : prepend digit

d : append digit

e : 1337 문자 (L33T 문자)

x : 모든 룰 적용


환경 변수 (Environment Variables)

              

PD_PLUGINS

플러그인이 존재하는 경로 지정

기본 경로 : /usr/lib/phrasendrescher

PD_CHARMAP

증분/증가 모드에서 사용될 문자열을 정의

 

플러그인에 대해서 알아보기 전에 잠시 환경 변수를 먼저 보고 넘어가자. 환경 변수는 phrasendrescher를 이용함에 있어서 중요한 역할을 한다. 만약 플러그인을 새로 만들었는데, 기본 디렉토리가 아닌 다른곳에 저장하였다면 아래와 같이 PD_PLUGINS 환경 변수를 이용하여 플러그인 파일이 존재하는 경로를 지정해 주면 손쉽게 사용할 수 있다.

root@kali:~# export PD_PLUGINS=경로 지정


예)

root@kali:~# export PD_PLUGINS=/root/plugins/


환경 변수를 이용하여, 경로를 지정해 주면 이후 별다른 환경 변수 지정 없이 phrasendrescher를 사용할 경우 해당 경로에서 플러그인 파일을 찾게 된다.

PD_CHARMAP 환경 변수는 증분/증가  무차별 공격 모드에서 사용될 문자열을 정의할 때 사용하는 환경 변수로, 사용 방법은 아래와 같다.

root@kali:~# export PD_CHARMAP="사용하고자 하는 문자열"


예)

root@kali:~# export PD_CHARMAP="zyxwvutsrqponmlkjihgfedcba"


사용자 정의로 문자열을 지정하지 않고 기본적으로 사용하면, 아래와 같이 지원할 수 있는 모든 문자열을 사용한다.

root@kali:~# pd mssql -v -H 0x0100FBE4C16F0ED526885801C23B366965586A43D3DEAC6

DD3FD

phrasen|drescher 1.2.2 - the passphrase cracker

Copyright (C) 2008 Nico Leidecker; http://www.leidecker.info

 

[mssql] MS SQL Version:  2005

[mssql] Character set: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789_.,+:;!"$%^&*()[]{}@#~'?/\<>|

[mssql] Version:         0100

[mssql] Salt:            FBE4C16F

[mssql] Mixed-case SHA1: 0ED526885801C23B366965586A43D3DEAC6DD3FD

[mssql] MSSQL plugin by Mark Lowe (mrl@portcullis-security.com)

 

 

plugin mssql loaded. Running now (1 workers)...

 

이하 생략


지금 까지 환경 변수에 대해서 알아보았다. 다음으로 플러그인에 대해서 알아보자. 여기서는 모든 플러그인을 사용하지 않고, ssh / pkey / mssql 플러그인을 사용하여 phrasendrescher에 대해서 알아본다.

1. pkey 플러그인
pkey 플러그인은 앞에서도 언급했듯이, RSA-DSA 개인 키 패스워드를 크래킹할 때 사용한다. pkey 플러그인의 경우 사전 공격, 증분/증가 무차별 공격 모두 지원한다.

일반 옵션 이외에 pkey 플러그인이 지원하는 옵션은 아래와 같이 확인 할 수 있다.

root@kali:~# pd pkey -h

phrasen|drescher 1.2.2 - the passphrase cracker

Copyright (C) 2008 Nico Leidecker; http://www.leidecker.info

 

Usage: pd plugin [options]

 

 Plugin 'pkey' loaded!

 Version: 1.0

 Author: Nico Leidecker

 

 Plugin Specific Options:

    K key/directory : key file or a directory containing multiple key files. Keys must be in PEM format.


위에서 확인한 것과 같이 pkey 플러그인은 [K] 옵션을 지원한다. [K] 옵션은 크랙을 하고자 하는 인증서의 개인키 파일을 지정할 때 사용한다.

사전 공격 모드의 경우 [-d] 옵션을 적용하여, 사전 파일을 지정한 후 개인키 파일을을 지정해 준다.

root@kali:~# pd pkey -d /root/pass.txt -K /root/ssl/Boanproject.pem

phrasen|drescher 1.2.2 - the passphrase cracker

Copyright (C) 2008 Nico Leidecker; http://www.leidecker.info

 

password for /root/ssl/Boanproject.pem: boan

finished!

bye, bye...


사전 공격 모드로 저자가 준비한 SSL 인증서 개인 키 패스워드는 [boan]이라는것을 확인 하였다. 다음은 증분/증가 무차별 공격에 대한 사용 방법이다. 참고로 사전 공격 모드인 [-d] 옵션을 적용하지 않으면, 기본적으로 증분/증가 무차별 공격 모드로 동작한다.

아래는 문자열의 길이를 지정하지 않은 상태로  증분/증가 무차별 공격 모드를 사용하였다.
 

root@kali:~# pd pkey -K /root/ssl/Boanproject.pem

phrasen|drescher 1.2.2 - the passphrase cracker

Copyright (C) 2008 Nico Leidecker; http://www.leidecker.info

 

source not explicitely specified; assuming incremental from 1 to 8.

password for /root/ssl/Boanproject.pem: boan

finished!

bye, bye...


문자열의 길이를 지정하지 않는 경우 기본적으로 최소 1자리부터 시작하여, 최대 8자리의 단어를 생성하여 대입 시키는 것을 볼 수있다. 증분/증가 무차별 공격 모드에서도 동일하게 저자가 준비한 SSL 인증서 개인 키 패스워드는 [boan]이라는것을 확인 하였다.

2. ssh 플러그인
원격 호스트의 SSH 서비스를 공격하여, 로그인 아이디나 패스워드를 알아낼 때 사용한다. ssh 플러그인에서도 사전 공격, 증분/증가 무차별 공격 모두 지원한다. 

일반 옵션 이외에 ssh 플러그인이 지원하는 옵션은 아래와 같이 확인 할 수 있다.

root@kali:~# pd ssh -h

phrasen|drescher 1.2.2 - the passphrase cracker

Copyright (C) 2008 Nico Leidecker; http://www.leidecker.info

 

Usage: pd plugin [options]

 

 Plugin 'ssh' loaded!

 Version: 1.1

 Author: Nico Leidecker

 

 Plugin Specific Options:

    u user          : the name of the user (default user is `root')

    U user-file    : user names file

    P port          : port to connect to (default is 22)

    t host          : target host

    T host-file    : target host file

    p      : enforce password authentication

    n      : enforce keyboard interactive authentication

    k      : enforce key based authentication (keys must be stored in the dictinary file)

    e n|s|ns       : try empty passwords ('n') and/or usernames as password ('s')

 

  The authentication mechanism is chosen automatically if not enforced with

  -p, -k or -s. The choice depends on the servers configuration in the order

  password and keyboard-interactive.


       

              

u user

단일 유저 네임, 기본값 : root

U user-file

유저 네임 파일

P port

SSH 포트, 기본값 : 22

t host

단일 SSH 시스템 IP

T host-file

SSH 시스템 IP 목록 파일

p

암호 인증 적용

n

키보드 대화형 인증 적용

k

키 기반 인증 적용

e n|s|ns

n : 빈 암호 사용

s : 유저 네임과 패스워드 동일하게 사용

ns : n옵션 과 s 옵션 동시 적용


-암호 인증 (Passwordauthentication)

패스워드 기반인증 방식

 

- 키보드 대화형 인증 (Keyboardinteractive authentication)

   키보드로 직접입력하여 인증하는 방식

 

- 키 기반 인증(Key basedauthentication)

   공개 키 기반 인증 방식

사전 공격 모드의 경우 아래와 같이 [-d] 옵션을 적용하여 사용한다. [-v]옵션은 자세히 보기 위해 적용하였다.

root@kali:~# pd ssh -v -u boan -d /root/pass.txt -t 192.168.119.149

phrasen|drescher 1.2.2 - the passphrase cracker

Copyright (C) 2008 Nico Leidecker; http://www.leidecker.info

 

[ssh] Trying host 192.168.119.149:22...

[ssh]   Fingerprint: 17 75 07 A9 69 45 B7 CF F3 A4 72 28 F5 A8 63 4A

[ssh]   Authentication mechanisms: publickey,password (using: password)

[ssh] Complete List of targets:

[ssh]   192.168.119.149:22

[ssh] Users:

[ssh]   boan

 

plugin ssh loaded. Running now (1 workers)...

--------------------------------------------------

mode: dictionary (/root/pass.txt)

password for 'boan' on 192.168.119.149: project

bye, bye...


위에서 적용한 명령어를 풀어 보면 [-u] 옵션을 적용하여, boan 이라는 유저 네임을 사용하고, /root/pass.txt 파일에 존재하는 단어를 이용하여 192.168.119.149 서버에 접속을 시도하여 패스워드를 알아낸다. 만일 유저네임을 모를 경우 [-U] 옵션을 적용하여, 유저네임 파일을 지정하면 된다.

사전 공격을 이용하여, SSH 서버 (192.168.119.149)의 boan 계정의 패스워드는 [project]라는 것을 확인 하였다. 다음은 증분/증가 무차별 공격에 대한 사용 방법이다. ssh 플러그인에서는 무차별 공격 시간을 줄이기 위해 pkey 플러그인에서 적용하지 않았던, [-i]옵션을 이용 패스워드의 길이를 지정한 후 증분/증가 무차별 공격을 진행 하였다. 

root@kali:~# pd ssh -v -u boan -i 7 -t 192.168.119.149

phrasen|drescher 1.2.2 - the passphrase cracker

Copyright (C) 2008 Nico Leidecker; http://www.leidecker.info

 

[ssh] Trying host 192.168.119.149:22...

[ssh]   Fingerprint: 17 75 07 A9 69 45 B7 CF F3 A4 72 28 F5 A8 63 4A

[ssh]   Authentication mechanisms: publickey,password (using: password)

[ssh] Complete List of targets:

[ssh]   192.168.119.149:22

[ssh] Users:

[ssh]   boan

 

plugin ssh loaded. Running now (1 workers)...

--------------------------------------------------

mode: incremental from 7 to 7

password for 'boan' on 192.168.119.149: project

bye, bye...



증분/증가 무차별 공격에서도 boan이라는 계정의 패스워드가 [project]라는 것을 확인 하였다.

증분/증가 무차별 공격의 경우 생성될 수 있는 모든 단어를 이용하기 때문에 시간이 오래 걸린다는 점을 명심하기 바란다.

3. mssql 플러그인
mssql 플러그인은 MS-SQL 2000 / 2005 SHA-1 해시를 크랙할 때 사용한다. mssql 플러그인도 동일하게 사전 공격, 증분/증가 무차별 공격 모두 지원한다. 
 
일반 옵션 이외에 mssql 플러그인이 지원하는 옵션은 아래와 같이 확인 할 수 있다. 

root@kali:~# pd mssql -h

phrasen|drescher 1.2.2 - the passphrase cracker

Copyright (C) 2008 Nico Leidecker; http://www.leidecker.info

 

Usage: pd plugin [options]

 

 Plugin 'mssql' loaded!

 Version: 1.0

 Author: Mark Lowe

 

 Plugin Specific Options:

    H     : SHA-1 hash (mandatory)

 

  The mssql plugin can crack password hashes from SQL Server 2000 and SQL Server 2005

  For MSSQL 2000:

    Hash format:0x01006d75a401ba0a8bfc2beab5b86efc930300d1a2561a783aace62

37cf01f98b490ef56f57b2b8c0ed82b8675f9

    SQL query:   SELECT name, password from master..sysxlogins

 

  For MSSQL 2005:

    Hash format: 0x01006d75a401ba0a8bfc2beab5b86efc930300d1a2561a783aac

    SQL query:   SELECT name, password_hash FROM master.sys.sql_logins


mssql 플러그인에서 [H] 옵션을 지원하며, [H] 옵션은 sha-1 해시값을 지정할 때 사용한다.

사전 공격 모드의 경우 [-d] 옵션을 적용하여, 사전 파일을 지정한 후 해시값을 넣어 주면된다.

root@kali:~# pd mssql -v -d /root/pass.txt -H 0x01004086CEB6BF932BC4151A1AF1F13CD17301D70816A8886908

phrasen|drescher 1.2.2 - the passphrase cracker

Copyright (C) 2008 Nico Leidecker; http://www.leidecker.info

 

[mssql] MS SQL Version:  2005

[mssql] Character set:   abcdefghijklmnopqrstuvwxyz

[mssql] Version:         0100

[mssql] Salt:            4086CEB6

[mssql] Mixed-case SHA1: BF932BC4151A1AF1F13CD17301D70816A8886908

[mssql] MSSQL plugin by Mark Lowe (mrl@portcullis-security.com)

 

 

plugin mssql loaded. Running now (1 workers)...

--------------------------------------------------

mode: dictionary (/root/pass.txt)

password for BF932BC4151A1AF1F13CD17301D70816A8886908: toto

finished!

bye, bye...


사전 공격으로 확인 결과 저자가 지정한 MSSQL 2005 SHA-1 해시값은 [toto]라는 것을 확인 하였다.  다음은 증분/증가 무차별 공격에 대한 사용 방법으로 앞에서 사용한 방법과 다른점은 해시값을 넣어준다는 것이다.

root@kali:~# pd mssql -v -i 4 -H 0x01004086CEB6BF932BC4151A1AF1F13CD17301D70816A8886908

phrasen|drescher 1.2.2 - the passphrase cracker

Copyright (C) 2008 Nico Leidecker; http://www.leidecker.info

 

[mssql] MS SQL Version:  2005

[mssql] Character set:   abcdefghijklmnopqrstuvwxyz

[mssql] Version:         0100

[mssql] Salt:            4086CEB6

[mssql] Mixed-case SHA1: BF932BC4151A1AF1F13CD17301D70816A8886908

[mssql] MSSQL plugin by Mark Lowe (mrl@portcullis-security.com)

 

 

plugin mssql loaded. Running now (1 workers)...

--------------------------------------------------

using customized map: abcdefghijklmnopqrstuvwxyz

mode: incremental from 4 to 4

password for BF932BC4151A1AF1F13CD17301D70816A8886908: toto

finished!

bye, bye...


플러그인 제작 가이드

참고 URL 및 도서

- MSSQL 2005 SHA-1 해시값 (http://www.openwall.com/lists/john-users/2011/04/06/7)

- http://www.leidecker.info/projects/phrasendrescher


반응형