web-dev-qa-db-ja.com

rootアクセス権がある場合、他のユーザーのパスワードを知ることができますか?

人が特定のRHELマシンへのrootアクセス権を持っている場合、他のユーザーのパスワードを取得できますか?

24
monu

TL; DR:いいえ、パスワードは(一般的に)復元できないハッシュとして保存されます。

Linuxはデフォルトでは平文のパスワードをどこにも保存しません。それらはハッシュされるか、さもなければさまざまなアルゴリズムを通じて暗号化されます。したがって、一般的には、これは保存されたデータでは不可能です。

/etc/passwdデータベース以外の場所にパスワードを保存している場合、これを可能にする方法で保存されている可能性があります。 htpasswdファイルには、暗号化されたパスワードを含めることができます。また、他のアプリケーションは、さまざまな(通常は悪い)理由で、弱いハッシュまたはプレーンテキストのパスワードを保存する場合があります。

また、ユーザー設定ファイルには、さまざまな理由で、暗号化されていないパスワードまたは脆弱に保護されたパスワードが含まれている可能性があります-別のサービスからコンテンツを取得するfetchmail、.netrc、または単純な自動化されたものにパスワードが含まれる場合があります。

パスワードが古い、弱いアルゴリズム(3DES、MD5)でハッシュまたは暗号化されている場合は、変換を逆にするだけでなく、データを攻撃することにより、パスワードを合理的かつ効率的かつ安価に計算することができます。 (例: http://project-rainbowcrack.com/ または http://www.openwall.com/john/ のようなもの)

Rootであるため、別のレベルでユーザーパスワードを攻撃することもできます。ログインバイナリ、Sudo、またはPAMの一部などを、入力時にパスワードを取得するものに置き換えます。

つまり、具体的には、いいえですが、一般にルートアクセスがあると、さまざまなサイドチャネルを介してユーザーの詳細にアクセスしやすくなります。

37
Daniel Pittman

ここでの他のいくつかの回答とは対照的に、これと「あなたがルートを持っている場合」で終わる他の多くの質問に対する単純な答えは「はい」です。

基本的に、rootはマシン自体でシステム自体が実行できるすべてのことを実行できます。システムはあなたのパスワードを受け入れることができるので、rootはあなたの代わりにあなたのパスワードまたは彼自身のパスワードを受け入れることができます。さらに重要なことに、彼は単にあなたのパスワードを変更することができます、またはあなたになります。

具体的には、パスワードは通常暗号化されています。これは通常、一種のいわゆる「一方向」アルゴリズムであり、パスワードをチェックするために使用できる番号(ハッシュ)を生成しますが、通常は番号を逆にしてパスワードを再度取得することはありません。したがって、ファイルを読み取って誰かのパスワードを取得するだけでは問題ありません。

とはいえ、シェルの履歴とログイン履歴を読むことができます。ある時点でユーザー名ではなくパスワードを入力したか、パスワードプロンプトではなくシェルに入力した可能性が高いです。その場合、それはプレーンテキストであるはずです。これは、テキストベースの端末ではよくあることですが、私が知っている良い解決策はありません。

ただし、その問題を別にしても、「一方向」の暗号化は実際には一方向ではありません。パスフレーズの多くの組み合わせを通過し、一致するものが見つかるまで、同じ一方向のプロセスでそれらを暗号化するツールがたくさんあります。その後、彼らはアクセス権を取得するパスワードを知っています(rootであっても、そのマシンではすでにアクセス権を持っています)。

さらに悪いことに、レインボーテーブルがあります。これは、上記のプロセスに対する事前に計算された回答です。特定の暗号化されたパスワードから元のパスワードがすでに生成されています。これらを使用すると、これは単純なルックアップです。時間のかかるクラッキングの試行は必要ありません。

繰り返しますが、ルートレベルのアクセスは保護すべきものです。これが危険にさらされると、マシン全体とその上のすべてが危険にさらされます。ビジネスを信頼してプライバシーを保護することができなくなったことをすべてのユーザーに通知するなど、最初からやり直す必要があります。そして、はい、それは廃業を意味する可能性があります。

13
user17534

rootがある場合は、/etc/shadowに対してパスワードクラッカーを実行できます(LDAPやKerberosなどではなく、ローカルパスワードを想定しています)。ユーザーが適切なパスワードを選択し、システムが強力なパスワードハッシュを使用するように構成されている場合、これは効果的ではありません。ただし、システムパスワードはプレーンテキストでは保存されません。 rootであっても、パスワードを直接使用することはできません。

8
geekosaur

すべてのパスワードは/etc/shadowファイルに保存されます。 rootアクセスを使用してこのファイルを開き、各ユーザー(rootユーザーも含む)のこれらのパスワードのhash valueを確認できます。

何らかの種類のパスワード復号化ソフトウェアがない限り、これらのハッシュ値を通常のテキストに戻すことはできません。

ただし、rootユーザーにアクセスできる場合は、次のコマンドを使用して通常のユーザーのパスワードを変更し、そのユーザーのアカウントにアクセスできます。

root@localhost$ passwd pradeep

これにより、ユーザーpradeepに設定する新しいパスワードが要求されます。この方法で、pradeepのpasswdを変更できます。

これで、彼のアカウントから次の方法でアクセスできます。

root@localhost$ su pradeep

これにより、pradeepユーザーに切り替わり、次のような端末が表示されます。

pradeep@localhost$

5
pradeepchhetri