2010年11月1日月曜日

ローカルパスクラック

UNIXのログインパスワードクラック 

UNIX・Linux・BSD等Linux系のシステムではパスワードはDES、もしくはMD5という方式でハッシュされて格納されています。

過去はハッシュは基本的にユーザなら誰でも閲覧可能な/etc/passwdファイル内に書き込まれて保存されていたのですが、現在ではパスワード 部分だけがroot権限がないと閲覧できないファイル(Linux系だと/etc/shadow、BSDだと/etc/master.passwd が多い)に分離され、保存されていることが多くなっています。

例:最近の/etc/passwdファイル

xのところにかつてはパスワードハッシュが書き込まれていました。
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
bogus:x:501:501::/home/bogus:/bin/bash
yamamoto:x:502:502::/home/yamamoto:/bin/bash
takuji:x:503:503::/home/takuji:/bin/bash

例:/etc/shadowファイル 

1つめの:と2つめの:に挟まれたところがパスワードハッシュです。$1$なのでMD5ですね。次の8文字はsaltと呼ばれるもので、次の$は区 切りで、最後の22文字がsaltとパスワードを合わせてハッシュした値で、a-zA-Z0-9./ の64通りの文字からランダムに選ばれます。
root:$1$ikCRnArv$lQDcAyxYIMxy2rlr.5NS7/:12957:0:99999:7:::
bin:$1$wLHbZR8p$aqdhvM5TA6UMnOQHXkAVI1:12957:0:99999:7:::
bogus:$1$pheDVcKm$gA1Lmb3WzrdldmZc2wH3X.:12957:0:99999:7:::
yamamoto:$1$eHXYVxmy$p83O9Fkk.VXZzw26aZpOc0:12957:0:99999:7:::
takuji:$1$qQRiexyz$h5UgYwHci1Gfr4k0Hav3Q0:12957:0:99999:7:::
そのpasswd(もしくはshadow)ファイルを取得し、中に書かれているハッシュを解析することで、ユーザのパスワードを知ることができます。
パスワード解析の原理は原理は簡単なことです。自分が用意した「aaa」のようなパスワードをハッシュにしたものと、解析したいパスワードハッシュを照合し、その2つが同じであれば、自分が用意したパスワードは解析したいパスワードパスワードと言えるということです。
ただし、LinuxでもFreeBSDでも目の前にマシンがあるならばシングルユーザーモードで入れば、こんなかったるいことしなくてもrootになれるので、お忘れなく。

主なツール 

John the GUIを使ったJohn the Ripperの使い方(1)

Windowsのログインパスワードクラック 

WindowsではSAMファイルにパスワードハッシュが格納されています。
これを解析することでユーザのパスワードを知ることが可能です。

主なツール 

  • LC6/L0pht Crack
    L0phtによって作られたWindowsパスワードクラックツール。L0phtが買収されたせいで2006年に販売中止されたが、2009年になってLC6が発表されている。最安で295ドル。
  • Ophcrack
    Rainbow Tableを使用するWindowsパスワードクラッカー。
  • Ophcrack Live CD
    Windowsのログインパスワードクラックに特化した1CDLinux。これはRainbowTable?を利用している。8桁までの英数字パスワードにだけ対応。

その他ローカルファイルのパスクラック 

掲示板のパスワードやApacheの.htaccessファイルなどDESやRC5で暗号化されたパスワードについても、その暗号化されたパスワードを取得できれば、John the Ripperなどのパスワードクラッカーでクラックすることも可能。
そのほかに閲覧や変更にパスワードがかけられたzipやpdfファイルのパスワードを解析するツールも存在している。

ツール紹介 

  • Pikazip
    zipファイルのパスワードを解析する。
  • PicoZip
    zipファイルのパスワードを解析する。辞書も付属している。
  • Winrar Unlock rarファイルのパスワードを解析する。Windows版。
  • rarcrack rarファイルのパスワードをブルートフォース解析する。Linux版。rarの他、7z、zip形式にも対応しているようだ。
  • lhaplus
    zipファイルのパスワードをブルートフォース解析することが可能な圧縮解凍ソフト。

リモートパスクラック 

telnetやpop3サーバなど認証が必要なサーバをネットワーク経由でパスクラックすることも可能です。
サーバーに応じてそれぞれユーザ名、パスワードを推測して正規のリクエストを発行することでログインできることもあるのですが(ユーザーroot、 パスワードrootなんかをとりあえず入れてみたら当たったということもあると思います)、外部からなので速度に問題があるだけでなく、数回認証の失敗を 繰り返すとそれ以上そのホストからはアクセスできないようになるサーバも多いので、成功率はあまり高くないといえます。

主なツール 

  • Brutus
    POP3、SMTP、TELNETなどさまざまなシーケンスのリモートパスワードクラックが可能です。
  • THC hydra
    さまざまなリモートログインパスワードを解析する。Linux版。hydra-GTKを使うことでGUIから解析可能。
  • THC hydra(Windows版)
    Windows用にビルドしたものはこちら。GUIフロントエンドは同梱されていない。
  • Medusa
    さまざまなリモートログインパスワードを解析する。Linux。

パスクラックの手法 

ここではパスクラックの手法について説明していきます。
パスクラックのやり方として大きくはブルートフォースクラックと辞書クラックに分けられます。

ブルートフォースクラック 

ブルートフォースクラックは可能性のあるすべてのパスワードを総当たりで試す方法です。 自転車のチェーンロックなど数字を合わせるタイプの鍵の番号を忘れてしまったときに「0000」から「0001」、「0002」~「1234」と試していくやり方と原理的には変わりません。
この方法を使うと最終的には必ずパスワードを見つけることができるのですが、予測がつかないのと、方法とパスワードによっては死ぬまで終わらないということになりかねません。

辞書クラック 

辞書クラックはパスワードに使われてそうな単語を考えて辞書ファイルという形で持ち、その単語をパスワードとして当てはめていく方法です。ブルート フォースで目くら滅法に試すよりは効率がいいのですが、鉄オタの管理人の鉄道関連のパスワードにアニメ用語の辞書では当てられませんが、パソオタの付けて いるパスワードにPC用語辞書でクラックすると簡単に当てられる、というように、辞書の内容に左右されるのと、その対象が"$=rG(!5yY"のようなランダムなパスワードを使用していた場合、全くの無駄に終わる危険がありますが、passwordpasswodrpassowdrのように辞書の単語を変形させて当てはめていく手法もありますので、それで対応できる場合もあります。

Rainbow クラック 

これまでのパスワードクラックはリアルタイムに渡されたパスワードをパスワードクラッカーが暗号化して解析したいパスワードを照合するというという方式でしたが、リアルタイムに計算するので時間効率が悪いという欠点がありました。
その欠点を補うべく、先にパスワードを暗号化したものをテーブル(これをrainbow tableという)として持ち、それを用いてパスワードをクラックする方法があります。このテクニック(time-memory trade-off テクニック)を使ったクラック方法Rainbowクラックといいます。劇的な高速化が可能ですが、パスワードの桁が増えただけテーブルが莫大な大きさ (LMハッシュ用のすべての文字列で64ギガらしい)になるのが欠点です。

主なツール 

  • Rainbow Crack
    元祖レインボウクラックツール。さまざまな形式のハッシュをクラックできます。コマンドライン。
  • Cain and Abel
    Rainbow Tableを使ってパスワードクラックが可能です。
  • Ophcrack
    Rainbow Tableを使ってWindowsのログインパスワードをクラックします。
  • Free Rainbow Tables - MD5
    MD5のRainbow Tableをフリーで入手可能です。小文字+数字で8文字以下のパスワードに対応しているようです。

オンラインでパスワードクラックできるサイト