Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
debian-ssh — Debian OpenSSL の予測可能なPRNG (CVE-2008-0166) | Kitploit
ツール/GitHubGitHub/g0tmi1k/debian-ssh
偵察パスワード攻撃脆弱性分析エクスプロイト情報収集暗号化ペネトレーションテスト
GitHubg0tmi1k/debian-ssh

debian-ssh

Debian OpenSSL の予測可能なPRNG (CVE-2008-0166)

リポジトリを見る
4101093年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

Debian OpenSSL 予測可能なPRNG


リンク

元のURL: http://metasploit.com/users/hdm/tools/debian-openssl/ (ミラー)

エクスプロイト:

  • https://www.exploit-db.com/exploits/5622/ (Perl)
  • https://www.exploit-db.com/exploits/5720/ (Python)
  • https://www.exploit-db.com/exploits/5632/ (Ruby)

推奨ツール: Crowbar (SSH鍵の総当たり攻撃が可能)

テスト方法: ssh-vulnkey & dowkd.pl

CVE (CVE-2008-0166):

  • http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-0166
  • https://security-tracker.debian.org/tracker/CVE-2008-0166
  • https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2008-0166
  • https://www.cvedetails.com/cve/CVE-2008-0166

情報

バグ

2008年5月13日、Debianプロジェクトは、配布していたOpenSSLパッケージにLuciano Bello氏が興味深い脆弱性を発見したことを発表しました。問題のバグは、md_rand.c から以下のコード行を削除したことに起因します。

root@kitploit:~
	MD_Update(&m,buf,j);
	[ .. ]
	MD_Update(&m,buf,j); /* purify complains */

これらの行は、Valgrind や Purify ツールがOpenSSLにリンクされたコード内で未初期化データの使用に関する警告を生成する原因となっていたため、削除されました。そのような報告の1つがOpenSSLチームに送られたものはこちらで確認できます。このコードを削除すると、OpenSSL PRNGのシード処理が著しく低下する副作用が生じました。初期シードにランダムデータを混ぜる代わりに、使用される唯一の「ランダム」な値は現在のプロセスIDだけになりました。Linuxプラットフォームでは、デフォルトの最大プロセスIDは32,768であり、その結果、すべてのPRNG操作で使用されるシード値の数が非常に少なくなります。

影響

2006年9月から2008年5月13日までの間にDebianベースのシステム(Ubuntu、Kubuntuなど)で生成されたすべてのSSLおよびSSH鍵が影響を受ける可能性があります。SSL鍵の場合、生成されたすべての証明書を再作成し、認証局に送信して署名してもらう必要があります。Debianベースのシステムで生成された認証局の鍵は、再生成して失効させる必要があります。ユーザーがSSHと公開鍵認証を使用してサーバーにアクセスすることを許可しているすべてのシステム管理者は、それらの鍵を監査して、脆弱なシステムで作成されたものがないか確認する必要があります。OpenSSLのPRNGに依存して転送データを保護していたツールは、オフライン攻撃に対して脆弱になる可能性があります。脆弱なシステムで生成されたホスト鍵を使用するSSHサーバーは、トラフィックの復号化の対象となり、中間者攻撃がユーザーに気づかれずに行われる可能性があります。この欠陥は厄介です。なぜなら、Debianソフトウェアを使用していないシステムでも、Debianシステムで作成された鍵が使用されていないか監査する必要があるからです。DebianおよびUbuntuプロジェクトは、脆弱な鍵を特定するための一連のツールをリリースしました。これらは以下の参考文献セクションにリストされています。

おもちゃ

DebianとUbuntuが公開したブラックリストは、鍵空間がいかに小さいかを示しています。新しいOpenSSH鍵を作成する際、特定のアーキテクチャ、鍵サイズ、鍵タイプに対して可能な結果はわずか32,767通りです。その理由は、PRNGが使用する唯一の「ランダム」データがプロセスIDだからです。これらのブラックリストに一致する実際の鍵を生成するには、ターゲットプラットフォーム用の正しいバイナリを含むシステムと、特定のプロセスIDで鍵を生成する方法が必要です。プロセスIDの問題を解決するために、プリロード可能な共有ライブラリを作成しました。これは、getpid() libc呼び出しに対してユーザー指定の値を返します。

次のステップは、脆弱なシステムの実際のバイナリとライブラリを含むchroot環境を構築することでした。ローカルネットワーク上のUbuntuシステムのスナップショットを取得しました。chroot環境全体はこちらにあります。特定のタイプ、ビット数、プロセスIDでOpenSSH鍵を生成するために、chroot環境内で実行できるシェルスクリプトを作成しました。このシェルスクリプトはこちらにあります。このスクリプトは、展開されたUbuntuファイルシステムのルートディレクトリに配置されます。鍵を生成するには、次のコマンドラインでこのスクリプトを呼び出します。

root@kitploit:~
# chroot ubunturoot /dokeygen.sh 1 -t dsa -b 1024 -f /tmp/dsa_1024_1

これにより、getpid()の値が常に数値「1」を返す新しいOpenSSH 1024ビットDSA鍵が生成されます。これで最初の事前生成SSH鍵ができました。すべてのPID(最大32,767)に対してこのプロセスを続け、次に2048ビットRSA鍵に対して繰り返すと、x86システムでバグのあるバージョンのOpenSSLライブラリを実行している場合の有効な鍵範囲をカバーできます。この鍵セットを使用すると、authorized_keys ファイルに脆弱な鍵がリストされているユーザーアカウントを侵害できます。この鍵セットは、SSHサーバーが脆弱なホスト鍵を使用していた場合に、以前にキャプチャしたSSHセッションを復号化するのにも役立ちます。1024ビットDSAおよび2048ビットRSA鍵(x86)の事前生成鍵セットへのリンクは、以下のダウンロードセクションにあります。

これらの鍵の興味深い点は、プロセスIDにどのように結びついているかです。ほとんどのDebianベースのシステムは、順次プロセスID値(システム起動からインクリメントし、必要に応じて折り返す)を使用するため、特定の鍵のプロセスIDは、その鍵がシステム起動からどれだけ早く生成されたかを示すこともできます。その逆を考えると、攻撃対象に基づいてブルートフォース中に使用する鍵を決定できます。起動時に生成された鍵(SSHホスト鍵など)を推測しようとする場合、PID値が200未満の鍵がブルートフォースの最適な選択肢となります。ユーザー生成鍵を攻撃する場合、有効なユーザー鍵のほとんどはプロセスIDが500を超え10,000未満で作成されたと想定できます。この最適化により、SSHプロトコルを介したリモートユーザーアカウントへのブルートフォース攻撃を大幅に高速化できます。

近い将来、このサイトはブルートフォースツールで更新され、脆弱な鍵を使用した公開鍵認証を許可するSSHアカウントに迅速にアクセスできるようになります。以下のデータファイルの鍵は、次の命名規則に従っています。

root@kitploit:~
 / アルゴリズム / ビット数 / フィンガープリント-プロセスID
   および
 / アルゴリズム / ビット数 / フィンガープリント-プロセスID.pub

任意の公開鍵の秘密鍵ファイルを取得するには、鍵のフィンガープリントを知る必要があります。このフィンガープリントを取得する最も簡単な方法は、次のコマンドを使用することです。

root@kitploit:~
 $ ssh-keygen -l -f targetkey.pub
 2048 c6:7b:14:fa:ae:b6:89:e6:67:17:ee:04:17:b0:ec:4e targetkey.pub

エディタで公開鍵を確認すると、鍵タイプがRSAであることも推測できます。この公開鍵の秘密鍵を見つけるには、データファイルを展開し、次の名前のファイルを探す必要があります。

root@kitploit:~
 rsa/2048/**c67b14faaeb689e66717ee0417b0ec4e-26670**

上記の例では、フィンガープリントはコロンが削除された16進数で表され、プロセスIDは「26670」として示されています。この公開鍵を認証に使用する脆弱なシステムに認証したい場合は、次のコマンドを実行します。

root@kitploit:~
 $ ssh -i rsa/2048/c67b14faaeb689e66717ee0417b0ec4e-26670 root@targetmachine

よくある質問

Q: これらの鍵の生成にはどのくらいの時間がかかりましたか?

A: 2.33Ghzで動作する31のXeonコアを使用しました。x86用の1024ビットDSA鍵と2048ビットRSA鍵の生成には2時間かかりました。4096ビットRSA鍵の生成には約6時間かかりました。8192ビットRSA鍵の生成は現在のレートで約100時間かかるため、おそらく完了前に停止されるでしょう。


Q: 複数のプロセッサに鍵生成を分散するコードを共有しますか?

A: いいえ。コードはこの特定のクラスター用にハードコードされており、整理する価値がないほどひどく書かれています。


Q: これらの鍵を使用してSSHユーザーアカウントをクラックするのにかかる時間は?

A: これはネットワーク速度とSSHサーバーの構成に依存します。DSA-1024とRSA-2048の両方の32,767鍵すべてを数時間以内に試すことは可能ですが、ターゲットサーバー上のブルートフォース対策スクリプトに注意してください。


Q: 16384ビットRSA鍵を使用していますが、これらは破られる可能性がありますか?

A: はい、時間と処理能力の問題です。8192ビットRSA鍵セットの生成には、すべての32,767鍵を生成するのに約3100時間のCPU時間がかかります(現在使用している31コアで100時間)。16384ビットRSA鍵セットは、10万時間のCPU時間に近いと想像されます。留意すべき点は、ほとんどの鍵はプロセスIDシードに基づいてはるかに狭い範囲内にあり、ユーザー鍵の大部分をカバーするために全セットを生成する必要はないということです(ほとんどの鍵は最初の3,000のプロセスID内にあります)。

Copyright © 2008 H D Moore


ツールをダウンロード