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


24

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


4
はい、できます、彼らはあなたにきちんと尋ねられてそれを共有できます:)言い換えれば、あなたの質問は正確に入れられません。
-poige

回答:


37

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

Linuxは、デフォルトではプレーンテキストのパスワードをどこにも保存しません。それらは、さまざまなアルゴリズムによってハッシュ化または暗号化されます。したがって、一般的にいや、これは保存されたデータでは不可能です。

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

また、ユーザー構成ファイルには、さまざまな理由で、暗号化されていないパスワードまたは脆弱な保護パスワード.netrcが含まれている場合があります。

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

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

そのため、特にそうではありませんが、一般にルートアクセスを持っていると、さまざまなサイドチャネルを介してユーザーの詳細を取得しやすくなります。



2
ほとんどの場合、これは適切な答えですが、3DESとMD5は他のアルゴリズムよりも実際にはそれほど脆弱ではありません。ハッシュからパスワードを見つけるには、ブルートフォースが依然として唯一の方法です(レインボーテーブルは、MD5の弱点ではなく、あらゆるアルゴリズムのブルートフォースメソッドを加速する方法です)。パスワードのハッシュ方式を改善しているのは、それが遅く、十分な長さのソルトを使用していることです。
ジル「SO-悪であるのをやめる」

13

ここでの他のいくつかの答えとは対照的に、これと、「ルートがあれば」で終わる他の多くの質問に対する簡単な答えはYESです。

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

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

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

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

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

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


アカウントにアクセスすることは、パスワードを取得することとは異なります。あなたのマシンへのユーザーログインを許可し、すべてのマシンに同じパスワードを使用する場合(愚かですが一般的)、マシンのパスワードを変更できるだけですべてのマシンにアクセスできません。1つのアカウントからロックアウトされるだけです。
エモリー

さらに、機密データに暗号化されたファイルシステムを使用する場合、ルートアクセスの侵害は最初からやり直す時間を意味しません。
エモリー

@emory暗号化されたファイルシステムを使用していて、システムが侵害されている場合、暗号化されたファイルシステムを処理するコード、暗号化パスフレーズを読み取るコードなどを信頼できますか?定義上、ルート特権の妥協とは、システム上のすべてのもの(カーネルに至るまで)が手に入れることができることを意味するため、あなたはできないと言います。
CVn

@MichaelKjörling暗号化されたファイルシステムを処理するコードを信頼できますか?ほとんどの場合、いいえ。私の場合、はい。読み取り専用メディアに格納されています。ルートはそれに書き込むことができません。ログはWORMドライブに移動します。まったく同じように、ルートにキーを配っておらず、おそらく最初からやり直すでしょう。
エモリー

8

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


5

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

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

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

root@localhost$ passwd pradeep

これにより、userに設定する新しいパスワードを尋ねられますpradeep。このようにして、pradeepのpasswdを変更できます。

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

root@localhost$ su pradeep

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

pradeep@localhost$


1
rootユーザーで「SUのプラディープ」を行うときには、ログインするプラディープパスワードを入力する必要はありませんので、あなたは...、でも変更プラディープ・パスワードなし「のsuプラディープ」を行うことができます
Wolfy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.