CTF。Firefoxのパスワード。Androidパスワード。ビットフリッピング攻撃。r0ot-miCryptoの問題を解決します。パート3

画像



この記事では、順列とVigenereの暗号を破り、Mozilla Firefoxブラウザーに保存されているパスワードを復号化し、Androidのブロックに対処し、ビットフリッピング攻撃に対処します。前のパート:



パート1-エンコード、シフト暗号、ブルートハッシュ、およびPILpythonを使用した画像作成。

パート2-暗号化、XOR、暗号化されていないZIPおよびPRNGクラッキング。



組織情報
, - , :



  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.


, , , .



, , Telegram . , , .



. , - , .





MozillaFirefoxパスワード







ユーザーのパスワードを見つける必要があります。.mozillaディレクトリを含むアーカイブをダウンロードして開きます。このディレクトリには、拡張子が付いたフォルダとブラウザの名前が付いたフォルダが含まれています。







拡張機能には興味がないので、diu-browserに移動します。プロファイル構成ファイルともう1つのディレクトリがあります。







フォルダに移動してファイルを表示します。







データベースに保存されているすべてのパスワードは暗号化されているため、そのように表示することはできません。このスクリプトを復号化に使用できます

python3 firefox_decrypt.py ~//.mozilla/firefox/o0s0xxhl.default/






Vigenère暗号







暗号化されたテキストが与えられたので、その作成者を見つける必要があります。これはVigenère暗号であるため、オンラインデコーダーを使用します







自動モードを選択します。







そして、プレーンテキストとキーを取得します。テキストをグーグルで検索し、作者を見つけることは残っています。



Androidのロックパターン







androidファイルシステムのダンプが与えられ、パスワードを見つけるように求められます。これは、ファイルシステムへのアクセスで非常に簡単に実行できます。パスワードハッシュ(SHA1)は、/ data / system /gesture.keyファイルにあります。







ハッシュを取得してツイストするか、androidpatternlockを使用できます。







パスワードとパターンの両方が見つかりました。



順列暗号







暗号化されたメッセージが表示され、復号化するように求められます。これはRailFence暗号であるため、すでにおなじみのオンラインデコーダーを使用します







そして今、提案された復号化の中から、意味のあるテキストを持つものを選択する必要があります。







そして、私たちは答えを得ます。



AESCBC-ビットフリッピング攻撃







接続するためのホストとポートが与えられます。 netcatを使って接続しましょう。







アクションのオプションが提供されています-登録またはログイン。まずは登録しましょう。







そして、部分的に開いた暗号化されたテキストが提供されました。次に、このトークンを使用してログインします。







ただし、ログイン後はグループのメンバーではないため、データにアクセスできません。







タスクを整理したら、ビットフリッピング攻撃に対処しましょう。この攻撃は通常、暗号化関数が何らかの入力を受け取り、ランダムな文字列を追加し、暗号化する前に別の文字列を追加するときに発生します(この場合)。



以下は、AESCBCアルゴリズムを使用してメッセージを復号化するための図です。







事実、暗号テキストの前のブロックは、テキストオーバーレイを削除するために、次のブロックとxorsされます。その結果、復号化されたテキストが作成されます。



したがって、前のブロックで1バイトの暗号テキストを変更すると、次のブロックで1バイトのプレーンテキストが変更されます。







それでは、タスクに戻りましょう。クリアテキストにはis_member = falseパラメータがあります。どのように変えるか想像するのは難しいです。しかし、方程式のシンボルがあるので、テキスト全体をブロックサイズの倍数にするために、復号化したときに文字列is_member = trueが取得されるようにそれらを変更できます。



これを行う方法を考えてみましょう。この行は、最後のブロックであるEvilP2の復号化中に取得する必要があります。これを行うには、EvilC1ブロックを収集する必要があります。







方法:CC1とPP2があります。それらを一緒にプロキシすることにより、DC2を取得できます。EvilP2には「; is_member = false]」が含まれていることがわかっており、DC2もわかっているので、それらを自分たちの間でプロキシして、EvilC1を取得できます。



再登録します。







初期パラメータを初期化します。







これで、わかっているブロックを取得できます。







これで、新しいブロックを取得します。







荷物を回収します。







ログインしようとします。







そして何も起こらなかった、彼らは私たちを見つけた。これは、2つの同一のパラメーターが存在することが原因である可能性があります。最初のものを殺しましょう。







これで、ログインしてトークンを取得できました。テレグラムに







参加できます..。ITの多くの分野に精通している人々がいるコミュニティを集めましょう。そうすれば、ITと情報のセキュリティの問題についていつでも互いに助け合うことができます。



All Articles