スレッド リーダー アプリ上の @moyix によるスレッド – スレッド リーダー アプリ

1699736165
2023-11-11 19:59:39

私の @CSAW_NYUTandon の CTF チャレンジ、NERV センターに関するブログ投稿を引き続き試みるつもりですが、今のところ、重要なメカニズムを説明するスレッドがここにあります。 私は、重要なヒントを含むこのイースターエッグのクレジット シーケンス (すべて ANSI カラー + Unicode テキスト) のように、美観に多くの労力を費やしました。

@CSAW_NYUTandon (下部のクレジットに合わせたカラオケ字幕に注目してください 😁)

説明警告: select() は、FD_SETSIZE (1024) (多くの最新アプリケーションにとって不当に低い制限) 未満のファイル記述子番号のみを監視できます。この制限は変更されません。 すべての最新のアプリケーションでは、代わりに、この制限の影響を受けない、poll(2) または epoll(7) を使用する必要があります。

@CSAW_NYUTandon しかし、IMOのマニュアルページでは、問題の重大度が過小評価されています。 では、1024 を超える fds を監視しようとした場合はどうなるでしょうか? fd_set 構造体は、1024 ビット (128 バイト) の単なるビットセットです。 したがって、1024 を超える FDS を監視しようとすると、メモリ破損が発生します。

@CSAW_NYUTandonそして(私にとって)本当に素晴らしい点は、a)データ構造がビットセットであるため、破損はビット単位であり、b)範囲外に書き込まれる正確なビットはファイルの*状態*に依存するということです。記述子が監視されています。

@CSAW_NYUTandon したがって、fds が、たとえばネットワーク接続に対応している場合、攻撃者は多数の接続を作成し、それらが適切な状態になるように調整し、それによって書き込まれるビット パターンを正確に制御できるようになります。

bugzilla.redhat.com/show_bug.cgi?i…

@CSAW_NYUTandon select() は最大 3 つのビットセット (readfds、writefds、およびExceptfds) を取るため、それぞれがこのオーバーフローの影響を受けやすくなります。 意図したオーバーフローをExceptfdsで発生させることにしました。

@CSAW_NYUTandonなぜですか? 理由は 2 つあります。1) 引数リストの 3 番目にあるため、当然、たとえば構造体にリストされる最後の引数になります。 2) TCP 接続を使用すると、fd 状態をより簡単に制御できます。ただし、保留中の TCP 帯域外 (OOB) データとの接続を示すために fds が使用される場合を除きます。

@CSAW_NYUTandon これで、基本的な悪用戦略は明確になりました。サーバーに 1024 を超える接続を確立し、1024 より高い fds を持つサーバーに TCP OOB データを送信して、目的のビット パターンを設定します。 しかし、正確に何を上書きすればよいのでしょうか?

画像

@CSAW_NYUTandon 1024 ビット RSA 公開鍵 N の上位 64 ビットを制御できる機能を使って何ができるでしょうか? N = pq なので、因数分解するのは困難です。 しかし、*破損した* N’ は、多数の小さな素数の積である可能性が非常に高く、因数分解は簡単です。

usenix.org/conference/use…
画像

@CSAW_NYUTandon (CSAW CTF 決勝戦でこの課題を解決したプレイヤーの 1 人は、実際にこの脆弱性を悪用するさらに巧妙な方法を見つけました。N を *素* にするビット パターンを見つけ出し、それを設定します。すると、対応する秘密鍵 d は次のようになります。 pow(65537, -1, n-1)。滑らかです!)

画像

@CSAW_NYUTandon さて、ここからは重要な話、~美学~です。 チャレンジのテーマは、NERV の MAGI スーパーコンピューター クラスターをハッキングする使徒をフィーチャーする、新世紀エヴァンゲリオンの第 13 話に基づいています。

@CSAW_NYUTandon MAGI クラスター内の 3 台のコンピューター (Casper、Balthasar、および Melchior) が、3 つの fd_sets readfds、writefds、およびExceptds にきちんと対応していることに気付きました。 ということで、fd_sets の状態をリアルタイムに表示するかわいい UI を作ることができました。

画像
画像

@CSAW_NYUTandon チャレンジ内のビジュアルはすべて、プレーンな Unicode 文字と ANSI カラーを使用して作成されているため、テキスト ファイルを cat するだけで表示できます (またはネットワーク ソケット経由でダンプできます)。

github.com/moyix/csaw23_n…
画像
画像
画像

@CSAW_NYUTandon もう 1 つ手間がかかったのは、課題を一貫して解決できるようにすることでした。 select() を使用すると、fd_set に 1 を設定し、select を呼び出すと、カーネルがセットに実際の fd 状態を設定します。 しかし、それは、ビットではなくすべて 1 によってキーが破損する時間の 2 分の 1 であることを意味します。

画像
画像
画像
画像
github.com/moyix/csaw23_n…

@CSAW_NYUTandon 次に、私が試したチャレンジの 1 つのバリエーションで興味深い問題が発生しました。 プレイヤーが LSB のみを設定できるようにキーをバイトスワップすることを検討しました。 しかし、OpenSSL は奇数の係数を必要とするモンゴメリ乗算を使用するため、これらのキーの半分は使用できないことが判明しました。

画像
github.com/moyix/csaw23_n…

@CSAW_NYUTon @threadreaderapp アンロール

Read more:  写真:F1ドライバーがクリスマスを祝う方法、場所、人と

• • •

このスレッドにツイートがありませんか? 試してみることができます
強制的に更新する


#スレッド #リーダー #アプリ上の #moyix #によるスレッド #スレッド #リーダー #アプリ

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent News

Editor's Pick