rulesのすすめ


rulesのすすめ 投稿者:なのはな  投稿日:09月11日(木)14時16分45秒

StarCrackerのデフォルトrulesを解析して勉強しましょう。
今回は辞書を使わないパスワードアタックってことなんで
singleモードを使用したruleを作ります。
singleモードのrulesはstarcrak.iniの中の[rules:single]
セクションにあるので、ここにruleを追加するか、新しく
[rules:single]を作成して、元のrulesをrenameします。
ruleのデバッグもやってみるので今回はrenameしたとして
話をすすめますね。

さて、場所が分かったところで、現在のStarCrackerが
何をしているか、勉強ついでに見てみましょう。
まず、例題として
hack:RfB54ogcREM52:::Nano Hana:
とゆう1行のみのpasswdファイルを作成しときます。(^^;
で、[rules:single]セクションを
[rules:single]
$1
だけにしてみましょう。$1とゆうのは後ろに"1"を足せって
命令です。
準備が整ったので、実行してStarCrackerがなにをしているか
覗いてみましょう。
starcrak -single -list passwd
たくさん文字列が表示されて最後に
HanaN
hanan
Nano1
Hana1
NHana1
HNano1
HNano1
NHana1
hack1
v: 0  c: 76  t: 00:00:00:00  50%  c/s: n/a  w: ****DONE****
 と表示されたはずです。
ここで注目するのは、最後の1が付いたものですね。初めの
69個はSingleモードが勝手にやっているものです。興味が
あればじっくり確認してみてください。
Gecos情報を組み合わせたものと、Userそのものが試されて
ますね。Singleモードのruleはこれらに対して適用される
のです。(^o^)

さて、適用される単語が分かった所で、rule作りですね。
これは、過去にクラックしたパスワードなどをよーく観察
して、なんらかのruleを探すのです。 
今回のお題はなのはなが出しますが、次回からは皆さんも
考えて発表してくださいね。m(__)m

今回お題
イニシャル+月日(mmdd)

これはさっきのなのはなの場合、hn0401みたいな感じです。
ドキッとした人いるのではないでしょうか?
お題でヒットしそうなパスは変更しましょうね。(^^;

では、rule作りに取り掛かりましょう。
まず、イニシャル。これはさっきのSingleモードの結果
を見れば分かるように、最初の2文字を使えば十分ですね。
ついでにUIDや名字、名前までやってくれます。
最初と2文字を取り出すのは
x02
というruleです。これは1文字目(0から数える)から
2文字を取り出しなさいってコマンドです。
このルールで実行すると
Na
Ha
NH
HN
HN
NH
ha
が出てきます。NHとHNが2つ出てくるけど、今は気にしない
でください。(^^;
さて大文字小文字が混じってますね。小文字に統一するのは
lです。lx02になりますね。
つぎは月日ですね。これはプリプロセッサーを使って実現
します。[]で囲んだ中身はプリプロセッサーで自動的に展開
されるので、例えば[0-9]はその位置に0123456789のいずれか
が入った10行に展開されます。
ヒットしなければ全部やっちゃうんですが、[5-90-4]みたいに
展開の順番も指定できます。
日付の指定なんですが、0101から1231までなんで
[0101-1231]なんてできればらくちんなんですが、[]は1文字
なので、1文字ごと指定します。
lx02$[01]$[0-9]$[0-3]$[0-9]
簡単に書くとこうなります。
でも、1939なんて日付ありませんよね。(^^;
上で出た7種類の文字に対してそれぞれ無駄な数字がつくので
ruleでサボると莫大な時間を浪費することになります。
では最適化。
lx02$0$[1-9]$0$[1-9]
lx02$0$[1-9]$[1-2]$[0-9]
lx02$0$[13-9]$3$0
lx02$0$[13578]$3$1
lx02$1$[0-2]$0$[1-9]
lx02$1$[0-2]$[1-2]$[0-9]
lx02$1$[0-2]$3$0
lx02$1$[02]$3$[0-1]
条件分岐が出来ないので複数の行で対処します。
これで出来上がりです。

ruleとゆうのは、こうゆう数字の羅列など辞書に持つのは無駄。
プログラムで何とかならないか?ってゆう発想で生まれました。
(生まれたと思う、生まれたのかなぁ、たぶんね(^^;)
singleモードでは、辞書を使わずにヒットさせることもできる。
たまには、人が作った辞書じゃなくて、自分のrulesでヒット
させるってゆうのも、なかなかゲーム性があっておもしろいと
なのはな思う。

おまけ。
l$[if(a!=b);]$[if(b!=c);]$[if(c!=d);]@?v