CrackSSH!

調査対象のサーバーで使われている公開鍵を入手した。噂によると、この鍵には問題があるらしいが…。なんとかして侵入しなければ。

Target: frt.hongo.wide.ad.jp Port: 30022

※対象のポート以外はアクセスしないようにしてください。

不備があるRSA暗号を解読させる問題はCTF頻出ですが、私は20年以上生きていて n = ○○ やe = xx という形でRSA暗号を扱ったことがありません。脆弱なRSA暗号を実際に解いてもらうことを目的として出題しました。

解法

公開鍵の先頭を見ると ssh-rsaと書かれているので、これがおそらくRSA暗号の公開鍵であることがわかります。ということは、この鍵の正体はnとeのはずです。また、鍵の末尾にはtsukushi@frt.hongo.wide.ad.jpと書かれているので、この鍵の所有者がtsukushiであろうことも推定ができます。

まず、この鍵が文字列のままではよくわからないので、ここからnとeを取り出します。AAAAから始まる鍵の本体をbase64でdecodeすると、公開鍵のフォーマットを定めたRCF4253に従うバイト列になるので、これをもとにnとeを計算します。 あるいは単にssh-keygen -f crackssh.pub -e -m pem | openssl asn1parseとしてもよいです。

n = 360925413365609656207284763303112593050686426607629131354843699618905677197872793512380288223361149508460688151102823348462592916817609977273908821217493993702786929282477487755465976082059834867631026295714550319202482180891845062064382568022072228888091051431136923983143306662931216184662445381040847666201 e = 248940659700671391171916045022225211367167934215525303038734152650593067612113589541083076628705613883775652505492831370527586438096113903892713520850387855997035509546247913887222055672708066391999421835495881798128330308530099218984443115901043292942963247939575084326452874538239309850357410618060448737279 であることがわかります。 eの値がとても大きいので、Wiener’s attackが可能なのではないか? と思えてきます。 Wiener’s attack は、RSA暗号の秘密鍵dの値が小さいときに成立する攻撃です。今回eが異常に大きいということは、相対的にdは小さいのではないかと期待できます。Wiener’s attackの実装はインターネットに落ちています。私はhttps://github.com/pablocelayes/rsa-wiener-attackを使わせていただきました。これにより、 d = 23740595481413555083001316385586537295798010164154043863363374388086679976575 であるとわかります。

これにて秘密鍵の情報が入手できたので、実際にsshが読めるカタチに鍵のフォーマットを整えていきます。 RFCを見ながら頑張ってもいいですし、https://github.com/ius/rsatool.gitとかを使ってもいいです。 最終的に鍵を作成したら、ssh -i <<復元した秘密鍵>> -p 30022 tsukushi@frt.hongo.wide.ad.jpとすることで、サーバーにログインできます。ログイン先にはflag.txtが置かれており、この中身が答えです。

TsukuCTF{D0nt_use_w34k_RS4_key_generat10n}
© 2021, SecHack365-Fans All Right Reserved.