ユーザー名とパスワードをクラックする

このような日頃使わない知識は次回必要とした時には必ず忘れているので、備忘録として書いておこう。
これは多くの一般ユーザーが必要とするような知識でもないので、細かい部分まで解説しないのはご容赦ください。
また、間違っている部分がありましたら、指摘していただけると幸いです。

まずpasswdファイルとshadowファイルを手に入れておく。

Webサーバーで一般的に使われているUNIX系OSの場合、etcディレクトリに格納されている。
つまり/etc/passwd/etc/shadowだ。
/etc/passwdで見れない場合は/etc/master.passwdかもしれない。
このあたりはUNIX系OSの種類によって少しずつファイル名が違うようなので調べる必要がある。

今回はこちらのサイト(だらだらセキュリティ様)からお借りしたpasswdファイルとshadowファイルを使用します。

passwdファイル

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
dhcp:x:101:102::/nonexistent:/bin/false
syslog:x:102:103::/home/syslog:/bin/false
klog:x:103:104::/home/klog:/bin/false
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
msfadmin:x:1000:1000:msfadmin,,,:/home/msfadmin:/bin/bash
bind:x:105:113::/var/cache/bind:/bin/false
postfix:x:106:115::/var/spool/postfix:/bin/false
ftp:x:107:65534::/home/ftp:/bin/false
postgres:x:108:117:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
mysql:x:109:118:MySQL Server,,,:/var/lib/mysql:/bin/false
tomcat55:x:110:65534::/usr/share/tomcat5.5:/bin/false
distccd:x:111:65534::/:/bin/false
user:x:1001:1001:just a user,111,,:/home/user:/bin/bash
service:x:1002:1002:,,,:/home/service:/bin/bash
telnetd:x:112:120::/nonexistent:/bin/false
proftpd:x:113:65534::/var/run/proftpd:/bin/false
statd:x:114:65534::/var/lib/nfs:/bin/false
snmp:x:115:65534::/var/lib/snmp:/bin/false

shadowファイル

root:$1$/avpfBJ1$x0z8w5UF9Iv./DR9E9Lid.:14747:0:99999:7:::
daemon:*:14684:0:99999:7:::
bin:*:14684:0:99999:7:::
sys:$1$fUX6BPOt$Miyc3UpOzQJqz4s5wFD9l0:14742:0:99999:7:::
sync:*:14684:0:99999:7:::
games:*:14684:0:99999:7:::
man:*:14684:0:99999:7:::
lp:*:14684:0:99999:7:::
mail:*:14684:0:99999:7:::
news:*:14684:0:99999:7:::
uucp:*:14684:0:99999:7:::
proxy:*:14684:0:99999:7:::
www-data:*:14684:0:99999:7:::
backup:*:14684:0:99999:7:::
list:*:14684:0:99999:7:::
irc:*:14684:0:99999:7:::
gnats:*:14684:0:99999:7:::
nobody:*:14684:0:99999:7:::
libuuid:!:14684:0:99999:7:::
dhcp:*:14684:0:99999:7:::
syslog:*:14684:0:99999:7:::
klog:$1$f2ZVMS4K$R9XkI.CmLdHhdUE3X9jqP0:14742:0:99999:7:::
sshd:*:14684:0:99999:7:::
msfadmin:$1$XN10Zj2c$Rt/zzCW3mLtUWA.ihZjA5/:14684:0:99999:7:::
bind:*:14685:0:99999:7:::
postfix:*:14685:0:99999:7:::
ftp:*:14685:0:99999:7:::
postgres:$1$Rw35ik.x$MgQgZUuO5pAoUvfJhfcYe/:14685:0:99999:7:::
mysql:!:14685:0:99999:7:::
tomcat55:*:14691:0:99999:7:::
distccd:*:14698:0:99999:7:::
user:$1$HESu9xrH$k.o3G93DGoXIiQKkPmUgZ0:14699:0:99999:7:::
service:$1$kR3ue7JZ$7GxELDupr5Ohp6cjZ3Bu//:14715:0:99999:7:::
telnetd:*:14715:0:99999:7:::
proftpd:!:14727:0:99999:7:::
statd:*:15474:0:99999:7:::
snmp:*:15480:0:99999:7:::

John the Ripperをダウンロード

今回、解析には「John the Ripper」というソフトを使用するので、こちら(http://www.openwall.com/john/)からダウンロードをする。
現在の最新バージョンは1.7.9らしい。
Windowsで使用する場合はzipファイルのものをダウンロードすればOKだ。
インストールは必要なく、解凍するだけで使用できる。(解凍後のフォルダ名:john179w2)

そして解凍するとdocフォルダとrunフォルダがある。
このrunフォルダの中に先ほどのpasswdファイルとshadowファイルを入れておく。

コマンドプロンプトでの作業手順

次に、コマンドプロンプトを起動する。
コマンドプロンプトはスタートメニュー内の「すべてのプログラム」の中にショートカットがあるが、「ファイル名を指定して実行」からcmdと入力すれば一発で起動できる。
以下の画像がコマンドプロンプトだ。
windows7のコマンドプロンプト

まずは前述のrunフォルダにcdコマンドで移動しておく。
例えばWindows7のデスクトップにjohn179w2フォルダがあるとするなら、

cd C:\Users\ユーザー名\Desktop\john179w2\john179\run

となる。

そして次にpasswdファイルとshadowファイルを結合する。
結合にはrunフォルダの中にあるunshadow.exeを使う。
今回は結合したファイルをpassfileというファイル名として出力することにするので、コマンドは、

unshadow passwd shadow > passfile

となる。
これでrunフォルダの中にpassfileが生成されているはずだ。

解析モードは3つあり、今回はもっとも単純な解析モードであるシングルモードを使用して解析するとします。
その場合のコマンドは、

john --single passfile

となる。
解析が成功すると以下のような表示になる。
john the ripperの解析成功画面

つまりIDがklogの人のパスワードは123456789、IDがsysの人のパスワードはbatmanということがわかる。