Ubuntuのパスワードクラックを思い出す(失敗)

ubuntuアカウントのパスワードの問い合わせ

アカウント情報を表示する

cat /etc/passwd

上の図に示すように、各行のフォーマットは(例としてルートを取る)であり、各情報は次のように区切られています。

root:x : 0 :0 : root : /root : /bin/bash

rootアカウント名を示します

xパスワードを示します。これは、ユーザーの情報説明するために
0:0UIDおよびGID をプレーンテキストで表すことができず
root:/root、ホームディレクトリが/ rootでマークされていることを意味ます

/bin/bashユーザーがシェルコマンドを実行すると、/ bin / bashになります。

パスワードを表示

当然のことながら、上記のパスワードはクリアテキストでは表示されませんが、情報を確認すると、パスワードが含まれていることがわかり、/etc/shadowこのファイルを開くにはroot権限が必要です。ssozhこのユーザーのパスワードを確認するとします。

su root
cat /etc/shadow | grep ssozh

結果は次のとおりです。

ssozh:$6$pESj8oMO$F4CIfS3/G9TE5aQ34Ifvcq74wZQhiBc9AqGuxTUPfUyEJ6M1e/ZwIcmWjkbPvrmxt3xod4Z4XRo2lYNxgip4x/:18363:0:99999:7:::

上記のパスワードはどのように表示されますか?各情報は、以下:によって区切られています。

ssozh:ユーザー名
$6$pESj8oMO$F4CIfS3/G9TE5aQ34Ifvcq74wZQhiBc9AqGuxTUPfUyEJ6M1e/ZwIcmWjkbPvrmxt3xod4Z4XRo2lYNxgip4x/:暗号化されたパスワード
18363:最後にパスワードを変更してからの日数(1970年1月1
0日以降:パスワードを変更できるようになるまでの
99999日数:パスワードを変更する必要がある
7までの日数:パスワードの有効期限が切れるまでの日数

  • 次の数は、パスワードの有効期限が切れてからの日数、ユーザーアカウントが無効になる日、ユーザーが無効になる日付(1970年1月1日からの日数)、および将来の使用のために予約されているフィールドを示します

まず、MD5コードを順番に取得する方法を見てみましょう。

  • ハッシュ値の前半はソルト値です(2つの$記号を使用して分離します)。$6$pESj8oMO$
  • 後半はソルト値+パスワードハッシュ値

検証。額面価格$6$pESj8oMO$わかっていますが、パスワードは123456次のとおりです

import crypt 
if __name__ == '__main__':
    print(crypt.crypt('123456','$6$pESj8oMO$'))

明らかに正しい。

塩の値はいくらですか?

初期パスワードはデータベースに直接保存されます:

mysql> select * from User;
+----------+----------+
| UserName | PassWord |
+----------+----------+
| lichao   | 123      |
| akasuna  | 456      |
+----------+----------+

このような平文ストレージは、情報を漏らすのが非常に簡単です。データベースが漏洩すると、すべてのユーザー名とパスワードが漏洩し、非常に深刻な結果を招きます。「600万ユーザーのパスワード漏洩のCSDN詳細説明」をご覧ください

プレーンテキストストレージの欠点を回避するために、人々はストレージ後にmd5コード(SHA1)ハッシュを使用し始めました。今回はデータベースは次のとおりです。

mysql> select * from User;
+----------+----------------------------------+
| UserName | PwdHash                          |
+----------+----------------------------------+
| lichao   | 202cb962ac59075b964b07152d234b70 |
| akasuna  | 250cf8b51c773f3f8dc8b4be867a9a02 |
+----------+----------------------------------+

このハッシュ方式はもともと非常に優れているように設計されていましたが、一部の人々は一般的に使用されるパスワードを収集し、それらに対してMD5またはSHA1を実行してから、非常に大きなデータディクショナリ(rainbow table)を作成し、その後、データベースをリークしましたのパスワードが比較されます。残念ながら、元のパスワードがこのデータディクショナリに含まれていれば、元のパスワードと一致するまでに時間がかかりません。このデータディクショナリは簡単に収集でき、CSDNから漏えいした600wのパスワードは優れたオリジナル資料です。

ユーザーパスワードが単純すぎてソルト値が表示されるという事実に対処するために、データストレージフォームは次のようになります。

mysql> select * from User;
+----------+----------------------------+----------------------------------+
| UserName | Salt                       | PwdHash                          |
+----------+----------------------------+----------------------------------+
| lichao   | 1ck12b13k1jmjxrg1h0129h2lj | 6c22ef52be70e11b6f3bcf0f672c96ce |
| akasuna  | 1h029kh2lj11jmjxrg13k1c12b | 7128f587d88d6686974d6ef57c193628 |
+----------+----------------------------+----------------------------------+

ソルトには任意の文字、数字、または文字と数字の組み合わせを使用できますが、ランダムに生成する必要があります。各ユーザーのソルトは異なります。ユーザーが登録すると、データベースに保存されているパスワードは平文のパスワードではなく、単純でもありません平文パスワードをハッシュしますが、MD5(平文パスワード+ソルト)、つまり次のことを意味します。

MD5('123' + '1ck12b13k1jmjxrg1h0129h2lj') = '6c22ef52be70e11b6f3bcf0f672c96ce'
MD5('456' + '1h029kh2lj11jmjxrg13k1c12b') = '7128f587d88d6686974d6ef57c193628'

ユーザーがログインすると、同じアルゴリズムが認証に使用されます。

Saltの追加により、データベースがリークされても、Saltの追加後にパスワードがハッシュされるため、悪意のあるユーザーのデータディクショナリを直接照合することができなくなり、プレーンテキストのパスワードが解読される可能性が大幅に減少します。

リファレンス:https : //blog.csdn.net/sinat_30440627/article/details/53487076

MD5は、ダイジェストアルゴリズムに「復号化」がないことを主張しています。いわゆる復号化はブルートフォースクラッキングです。ブルートフォースクラッキングには多くの方法があります。ルックアップテーブルは最も高速ですが、事前にレインボーテーブルを準備する必要があります。あなたのように、ソルト値が固定されており、暗号化された文字の数が少ない場合。結果のレインボーテーブルはそれほど大きくありません。または、hashcatなどのツールを使用して、辞書やマスクなどを実行します。速度も非常に高速です。今日のGPUは、クラックされたパスワードをすばやく公開できます。

  • ハッシュアルゴリズムには「復号化」などはありません。それはすべてルックアップテーブルの爆発です。ブルートフォースクラッキングの難易度を上げるためだけに塩を追加しても、暗号化方式は本質的に変わりません。パスワード自体が複雑な複数桁のパスワードである場合。塩はほとんど違いがないことを知っていますか?

  • さらに、「塩の値」と「パスワード」を分離する方法はありません。塩の値を前面の中央または背面に配置できます。たとえば、上記のubuntuシステムでは、salt値は、$ $ギャップで区切られて、パスワードの前に直接ロードされます実際、MD5以降のデータからソルト値を知ることができます。さらに、分離できる場合、7桁のabcdefgパスワードを7つの別個のabcdefg 1桁のパスワードに分離して解読できると思いますか?

  • リファレンス:https : //www.52pojie.cn/thread-1042699-1-1.html

Java Security ShiroパスワードのMD5ソルト値暗号化

https://blog.csdn.net/changudeng1992/article/details/81914534

https://www.cnblogs.com/xiaowangxiao/p/10961384.html

おすすめ

転載: www.cnblogs.com/SsoZhNO-1/p/12678854.html