許可されたサービスで復元済みペアを検証する

LinuxBeginner
オンラインで実践に進む

はじめに

廃止されたポータルからパスワードを復元できても、それが現在の職員用アーカイブを開くとは限りません。古いレコードを許可された現在のユーザーに結び付け、その正確な関係を検証する必要があります。

現在の使い回し、拒否された旧認証情報、許可範囲外の人物、未解決のレコードを区別する、パスワードなしの影響一覧を作ります。John は実際のオフライン復元、Hydra は範囲を限定したオンライン認証を行い、SSH では受け入れられたアカウントを確認できます。架空の対象と Kali 監査環境は、1 つの VM のカーネルを共有する隔離コンテナーです。

前のガイド付きラボを完了するか、そこで扱う John、非公開ファイル、固定 ID の手順を理解している必要があります。この単元では Hydra と影響の判断を説明します。新しい環境に前の VM の結果は含まれません。読解や通常のミスへの対処を含め約 50 分という作者の見積もりです。

新しい環境で証拠を再作成する

このステップでは、正常なアクセスを確認し、この単元の元のエクスポートを復元します。Auditor を /home/auditor/project で開いてください。前の VM からコピーするものはありません。既知のデモログインから始めます。

ssh -o UserKnownHostsFile=/etc/reuse/known_hosts -o StrictHostKeyChecking=yes -p 12222 demo@staff-archive whoami

パスワードのプロンプトで welcome-7 を入力します。demo が表示され、ローカルのプロンプトに戻るはずです。パスワード入力は表示されません。旧認証情報の検証に先立ち、通常のサービスアクセスを確認できます。打ち間違えたら Ctrl+C で中止して再実行します。接続やホスト鍵の失敗は認証情報の拒否ではありません。厳密なホスト鍵検証を有効のままにしてください。

非公開の結果領域を作り、学習済みの復元手順を実行します。umask はセッション内だけで有効なので、再接続後に再実行します。findings がすでにあれば保持して続けます。

umask 077
mkdir -m 700 findings
cat inputs/legacy.txt
cat inputs/candidates.txt
OMP_NUM_THREADS=2 john --format=sha512crypt --wordlist=inputs/candidates.txt --pot=/home/auditor/project/findings/audit.pot --session=/home/auditor/project/findings/recovery inputs/legacy.txt
john --show --format=sha512crypt --pot=/home/auditor/project/findings/audit.pot inputs/legacy.txt > findings/recovered.txt
cat findings/recovered.txt

portal-17:cedar42、portal-23:pebble7、portal-41:birch81 と、要約 3 password hashes cracked, 1 left を確認します。再実行は pot を再利用できるので、新たな復元がないことを失敗と判断せず、--show を確認してください。この候補予算では portal-58 は未解決のままです。

ディレクトリーを間違えたら pwd と cd /home/auditor/project を使います。パスの誤字を修正し、該当コマンドを再実行します。chmod 600 findings/recovered.txt は広すぎる結果のアクセス権を直します。他の非公開ファイルにも必要に応じて同じ方法を使えます。入力やアーカイブの現在のパスワードは変更しないでください。

許可された正確なペアだけを検証する

このステップでは、検証可能な復元レコードを判断し、Hydra で 2 つの正確なペアを検証します。Auditor に留まり、ユーザーの対応関係と現在の許可を別々に読みます。

cat inputs/legacy-roster.tsv
cat inputs/scope.tsv

表示名ではなく employee_id でファイルを対応付けます。portal-17 は E101 で、現在のログイン名は mrivera です。portal-23 は E102 で、現在は ncho です。もう 1 人の Morgan Rivera は E103 で、許可された現在のユーザーはありません。ログイン名を作り上げてはいけません。E104 には許可された現在のログイン名がありますが、旧パスワードが未復元なので、この予算では検証する旧ペアがありません。

Hydra の -C は login:password のペアを 1 行ずつ読みます。全ログイン名と全復元パスワードを組み合わせる代わりに、各対応関係を保ちます。printf、\n、一重引用符、> の動作は前のラボと同じです。許可された復元済みの 2 ペアだけを保存します。

printf 'mrivera:cedar42\nncho:pebble7\n' > findings/pairs.txt
cat findings/pairs.txt

次のコマンドでは、-C がファイル、-s が SSH ポートを選びます。-t 1 は並行処理を 1 タスクに、-w 8 は応答待ち時間を制限します。-o は Hydra の検出結果を保存します。ssh://staff-archive はプロトコルと正確な対象を選びます。Hydra の通常のホスト処理は、鍵を固定して照合するネイティブ SSH の手順とは異なります。この準備済みの内部対象だけを使用してください。コースの許可は元の復元済み 2 ペアに対するもので、推測範囲を広げる許可ではありません。

hydra -C findings/pairs.txt -s 12222 -t 1 -w 8 -o findings/hydra.txt ssh://staff-archive

完了まで待ちます。mrivera と cedar42 の成功行、続いて 1 valid password found と対象の完了要約が表示されるはずです。ncho のペアは拒否されます。Hydra の出力には平文の認証情報が含まれるため、非公開で保ちます。終了ステータス 0 だけでは有効な認証情報を証明できません。有効なパスワードが 0 個でも、完了した実行が正常終了する場合があります。

cat findings/hydra.txt

未完了の実行、接続エラー、停止した対象は、パスワードの拒否を意味しません。まず正確なホスト、ポート、ペアファイルを確認します。完了した実行を意図的に繰り返す際に Hydra が hydra.restore について尋ねたら、同じコマンドに -I を追加して古い再開用ファイルを無視します。同じ 2 回の許可された試行を繰り返すだけで、範囲は広がりません。両ペアの判断が必要なので、最初の成功で停止するオプションは使わないでください。採点は、拒否も含め元の正確なペアの実際の認証判断を観測します。Hydra の成功行をコピーするだけでは不十分です。

ユーザーを確認し、範囲を限定した影響を記録する

このステップでは、受け入れられたユーザーを確認し、パスワードなしの引き継ぎ資料を作ります。Auditor に留まり、復元したパスワードでネイティブ SSH を使います。

ssh -o UserKnownHostsFile=/etc/reuse/known_hosts -o StrictHostKeyChecking=yes -p 12222 mrivera@staff-archive whoami

パスワードのプロンプトで cedar42 を入力します。mrivera が表示され、ローカルのプロンプトに戻ります。アーカイブの制限コマンドは、実際に認証されたアカウントを返し、対象のシェルは開きません。旧認証情報が到達する現在のユーザーを確認できました。ここで実証した影響は認証の成功であり、すべてのアーカイブ資源へのアクセスではありません。

findings/impact.tsv には record_id、employee_id、current_login、result、identity の 5 列が必要です。現在のログイン名がない場合や、認証成功でユーザーを確立できていない場合は - を使います。使用可能な結果値は次の意味です。

  • current-reused:許可された現在のアカウントが、その職員の復元済み旧パスワードを受け入れます。
  • current-not-accepted:その正確な復元済みペアがサービスに届き、拒否されました。そのアカウントにほかの弱いパスワードがない証拠ではありません。
  • out-of-scope:復元は成功しましたが、その職員には許可された現在のユーザーがありません。推測したユーザーで検証してはいけません。
  • not-recovered:この辞書では旧パスワードを復元できませんでした。現在の使い回しは不明です。

古いレコードごとに 1 行、パスワードを入れずに一覧を書きます。

printf 'record_id\temployee_id\tcurrent_login\tresult\tidentity\nportal-17\tE101\tmrivera\tcurrent-reused\tmrivera\nportal-23\tE102\tncho\tcurrent-not-accepted\t-\nportal-41\tE103\t-\tout-of-scope\t-\nportal-58\tE104\tlpark\tnot-recovered\t-\n' > findings/impact.tsv
cat findings/impact.tsv

ユーザーの対応関係と 4 つの異なる結論を確認します。誤字は printf のテキストを修正して再実行します。行の順序は変えても、すべての対応関係を保つ必要があります。pot、平文エクスポート、ペアファイル、Hydra の結果は非公開で保持し、影響一覧をパスワードなしの引き継ぎ資料とします。デモログインとすべての元のアカウント、パスワードを維持してください。この評価中にパスワードを変更しないでください。修復は別途の許可と計画を要する後続作業です。

まとめ

古いレコードを許可された現在のユーザーに対応付け、Hydra で正確な認証情報ペアを検証し、SSH で使い回しのあるアカウントを確認しました。一覧では、実証された使い回し、拒否されたペア、範囲外のユーザー、未解決のレコードを区別しています。これは範囲を限定した評価の結論であり、すべてのパスワードやサービスの安全性を保証しません。チャレンジでは同じ方法を別のワークショップ名簿と対象に適用します。