john the ripperとssh-privkey-crack.cを使ってみた。 [Linux]
この二つを使うと、SSHの秘密鍵からパスフレーズを取れるので悪用厳禁なのだが、ペネトレーションテストなので仕方がないと自分に言い聞かせる。というか仕事なんだけどねw。仕事でクラッキングするとは思っていなかったが、危険性がどこまであるのかは知っておいた方がいい。
ググるとCentOS6のころの古い情報が結構たくさんあって、それだとyumとかでJohn the ripperとかはお手軽に入れられたんだけど、コンパイルしたところでそれほど面倒くさいことにはなっていないので、ソフトウェアリポジトリになかったら、ソースからコンパイルしたほうが早い。というか、今はもうないに等しいので、自分でコンパイルしましょう。ソフトなんてyumとかのソフトウェアリポジトリからしか入れたことないよ、という方も多いかとは思うけど、そこまで難しいわけではないのでチャレンジしてみてほしい。
まず、ここのサイトを見てみたりしたが、
https://kaworu.jpn.org/security/ssh%E7%A7%98%E5%AF%86%E9%8D%B5%E3%82%92%E3%82%AF%E3%83%A9%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
最初のssh_privkey_crack.cがlusas.googlecode.comの場所にない。
ググったらGithubにあった。
https://github.com/Boran/lusas/blob/master/ssh-key-crack/ssh-privkey-crack.c
同じモノっぽい。これをコンパイルにかける。OpenSSLに依存しているからCentOSとかだと
で依存性を解消してからコンパイルしないといけない。というか、CentOS8も今年いっぱいなんだっけ? Ubuntuとかに変えちゃった方がいいよね、ふつう。
ソースに
でコンパイルしろと書いてあるので、そのままコピペで実行。ssh-privkey-crackという実行ファイルができる。パス張ったりが面倒なのであとでJohn the ripperと同じディレクトリに持っていって使う。
次にJohn the ripperを入れる。これも以前はyumとかで簡単に入れられたみたいだけど、最近はそうでもないみたい。あるにはあったけど逆に手足を縛られそうなので、ソースを持ってきて使った方がいい気はする。
http://www.openwall.com/john/
ここからソースは手に入れることはできるようだ。
これは特に依存性はないみたいなので、コンパイル作業は面倒じゃない。あ、OpenSSLがないといけないみたいだけど、さっきssh-privkey-crackで入れたので気にしない。
https://kaworu.jpn.org/security/John_the_Ripper#john_.E3.82.92.E3.83.93.E3.83.AB.E3.83.89.E3.81.99.E3.82.8B
解凍してmakeファイル動かして終わり、ですね。makeは少し違って
にしました。とりあえず仮想マシンだったので良く分からなかったので、一般的と言われるものにしました。
パスが通ったところまでインストールしてくれなくてrunディレクトリに実行ファイルができるだけですね。まぁシステムにガッツリ入れる方法もあるかもしれないですが、そこまで頻繁にやるわけじゃないからいいか…。
runディレクトリに、先ほどのssh-privkey-crackの実行ファイルと、クラックしたい秘密鍵を入れます。めんどうなので同じところに全部入れちゃいます。実行は
四文字の”test”なパスフレーズだったので、4秒で開けちゃってますね。
ちなみに英数字8文字のパスフレーズだと12時間以上かけても開けませんでした(夜中じゅうやっていても無理だったので途中で止めた)。これはきちんとしたハードでやれば一日かからず開けてしまうはず。仮想マシンでCPUの設定も控えめにしたので、そこそこ遅いはずです。
コマンドを見た感じ、john the ripperからざらざらパスワードを流して、パイプでssh-privkey-crackが受け取って処理している感じ? ソースを読めば細かいことはわかるけど、面倒くさくて読みませんw。結局秘密鍵をブルートフォースでクラックするという方法であることに違いはないと思う。
とにかく、そんなに苦労しなくてもSSHの秘密鍵のパスフレーズを解読するにはそこまで手間はかからないので、秘密鍵は漏らさないようにしないとあかんねという事でした。というか、余程のことがない限りは、秘密鍵を手にすることなんてないと思うので、そういう立場にならない限りはまず使うことなんてないのかもしれないけど、実際に使えるのかどうか知っているということと、たぶんできるんだろうと思っているだけのとは全然違うので、実際にやってみること自体で怖さを知る事は大切だとは思うけどね。
ググるとCentOS6のころの古い情報が結構たくさんあって、それだとyumとかでJohn the ripperとかはお手軽に入れられたんだけど、コンパイルしたところでそれほど面倒くさいことにはなっていないので、ソフトウェアリポジトリになかったら、ソースからコンパイルしたほうが早い。というか、今はもうないに等しいので、自分でコンパイルしましょう。ソフトなんてyumとかのソフトウェアリポジトリからしか入れたことないよ、という方も多いかとは思うけど、そこまで難しいわけではないのでチャレンジしてみてほしい。
まず、ここのサイトを見てみたりしたが、
https://kaworu.jpn.org/security/ssh%E7%A7%98%E5%AF%86%E9%8D%B5%E3%82%92%E3%82%AF%E3%83%A9%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
最初のssh_privkey_crack.cがlusas.googlecode.comの場所にない。
ググったらGithubにあった。
https://github.com/Boran/lusas/blob/master/ssh-key-crack/ssh-privkey-crack.c
同じモノっぽい。これをコンパイルにかける。OpenSSLに依存しているからCentOSとかだと
sudo yum install -y openssl-devel
で依存性を解消してからコンパイルしないといけない。というか、CentOS8も今年いっぱいなんだっけ? Ubuntuとかに変えちゃった方がいいよね、ふつう。
ソースに
$ gcc -Wall -O2 -o ssh-privkey-crack ssh-privkey-crack.c -lssl -lcrypto
でコンパイルしろと書いてあるので、そのままコピペで実行。ssh-privkey-crackという実行ファイルができる。パス張ったりが面倒なのであとでJohn the ripperと同じディレクトリに持っていって使う。
次にJohn the ripperを入れる。これも以前はyumとかで簡単に入れられたみたいだけど、最近はそうでもないみたい。あるにはあったけど逆に手足を縛られそうなので、ソースを持ってきて使った方がいい気はする。
http://www.openwall.com/john/
ここからソースは手に入れることはできるようだ。
これは特に依存性はないみたいなので、コンパイル作業は面倒じゃない。あ、OpenSSLがないといけないみたいだけど、さっきssh-privkey-crackで入れたので気にしない。
https://kaworu.jpn.org/security/John_the_Ripper#john_.E3.82.92.E3.83.93.E3.83.AB.E3.83.89.E3.81.99.E3.82.8B
解凍してmakeファイル動かして終わり、ですね。makeは少し違って
$ make clean linux-x86-64
にしました。とりあえず仮想マシンだったので良く分からなかったので、一般的と言われるものにしました。
パスが通ったところまでインストールしてくれなくてrunディレクトリに実行ファイルができるだけですね。まぁシステムにガッツリ入れる方法もあるかもしれないですが、そこまで頻繁にやるわけじゃないからいいか…。
runディレクトリに、先ほどのssh-privkey-crackの実行ファイルと、クラックしたい秘密鍵を入れます。めんどうなので同じところに全部入れちゃいます。実行は
$ ./john -stdout -incremental | ./ssh-privkey-crack ./id_rsa ssh-privkey-crack v0.3 made by anonymous@echo.or.id, enhanced by michu@neophob.com keyheader: Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,ほにゃほにゃなんとか Press 'q' or Ctrl-C to abort, almost any other key for status trying 467250 keys/s, # of tested keys: 1869001. ------------------------------------------------------------------------ -- - Passphrase match:. Found password after 4 seconds and 1869158 tries. -------------------------------------------------------------------------- -- -
四文字の”test”なパスフレーズだったので、4秒で開けちゃってますね。
ちなみに英数字8文字のパスフレーズだと12時間以上かけても開けませんでした(夜中じゅうやっていても無理だったので途中で止めた)。これはきちんとしたハードでやれば一日かからず開けてしまうはず。仮想マシンでCPUの設定も控えめにしたので、そこそこ遅いはずです。
コマンドを見た感じ、john the ripperからざらざらパスワードを流して、パイプでssh-privkey-crackが受け取って処理している感じ? ソースを読めば細かいことはわかるけど、面倒くさくて読みませんw。結局秘密鍵をブルートフォースでクラックするという方法であることに違いはないと思う。
とにかく、そんなに苦労しなくてもSSHの秘密鍵のパスフレーズを解読するにはそこまで手間はかからないので、秘密鍵は漏らさないようにしないとあかんねという事でした。というか、余程のことがない限りは、秘密鍵を手にすることなんてないと思うので、そういう立場にならない限りはまず使うことなんてないのかもしれないけど、実際に使えるのかどうか知っているということと、たぶんできるんだろうと思っているだけのとは全然違うので、実際にやってみること自体で怖さを知る事は大切だとは思うけどね。
コメント 0