0

(最初に私の母国語ではないので私の英語で申し訳ありません) 私はwiresharkでssh2を理解しようとしています(wiresharkの記録はこちらにあります: https://dl.dropboxusercontent.com/s/e9ut8z6v8oldg7g/ssh_wireshark .pcap?token_hash=AAGtkPMwKLt4IIr1Rlrht5_21HpMwQZBfeEFjGoRA85cjQ&dl=1 ) と rfc 4253 ですが、いくつかの問題があります:

SSH_MSG_KEXINIT メッセージの後に、SSH_MSG_KEXDH_INIT (30) と SSH_MSG_KEXDH_REPLY (31) があります。

私の問題は、SSH_MSG_KEXDH_INIT と SSH_MSG_KEXDH_REPLY を理解することです。rfc4253 によると:

First, the client sends the following:

  byte      SSH_MSG_KEXDH_INIT
  mpint     e

The server then responds with the following:

  byte      SSH_MSG_KEXDH_REPLY
  string    server public host key and certificates (K_S)
  mpint     f
  string    signature of H

しかし、wiresharkを使用すると、次のように表示されます:

from Client:

-SSH Version 2 (encryption:aes128-ctr mac:hmac-md5 compression:none)
    Packet Length: 76
    Padding Length: 5
    -Key Exchange
            Msg Code: Diffie-Hellman Key Exchange Init (30)
            Payload: 0000004104e2d6ad26e76531efa9ea(...)
            Padding String: 0000000000




from Server:
-SSH Version 2 (encryption:aes128-ctr mac:hmac-md5 compression:none)
    Packet Length: 292
    Padding Length: 8
    -Key Exchange
            Msg Code: Diffie-Hellman Key Exchange Reply (31)
            Multi Precision Integer Length: 104
            DH modulus (P): 0000001365636473612d73686(...)
            Multi Precision Integer Length: 65
            DH base (G): 04ead7f3936361df10c39d7d(...)
            Payload: 000000650000001365636473612d(...)
            Padding String: 0000000000000000

「ペイロード」フィールドとは何ですか? ベース「G」とモジュラス「P」はどのようにネゴシエートされますか? ecdsa 公開鍵は素数ですか、それとも合成数ですか?

これは私の分析です:

a)wireshark が間違っています。

rfc が正しければ、ペイロード フィールドは 'e' と 'f' です。

しかし、問題があります: rfc が正しい場合、モジュラス p と基数 g は SSH_MSG_KEXDH_INIT の前に知る必要があります。したがって、Wireshark のデコードは間違っています。

そして、wireshark が間違っていることを教えてくれる何かがあります: /etc/....pub ファイルで見つかる base64 をデコードすると、wireshark DH_modulus フィールドの値を見ることができます。したがって、DH_modulus フィールドは実際には DH_modulus ではなく、サーバーの公開ホスト キーです。rfc は正しく、wireshark は間違っています。

この場合、ベースとモジュラスは「Diffie-Hellman Key Exchange Reply」によって送信されないため、「g」と「p」はどのように送信されるのでしょうか??すべての ssh クライアント/サーバーで「接頭辞」が付けられ、送信されませんか?

b)wiresharkは正しい

サーバーの公開ホストキーが素数であると仮定すると、DH_modulus と rfc および Wireshark が正しい可能性があります。

しかし、ここでも問題があります。ペイロードは DH_modulus と DH_base の前に送信されるため、クライアントからのペイロードを「e」にすることはできません...

ペイロードフィールドは何ですか?

「e」と「f」はいつ送信されますか? 「Diffie-Hellman Key Exchange Reply」の直後に、鍵交換の終了を示す「Newkeys メッセージ」があるためです。

しかし一方で、sshとしてデコードされていないポート22との間の4つのパケットがありますが、おそらく「e」と「f」ですか??

最初の 2 つのパケットは 48 バイトの長さで、残りの 2 つのパケットは 64 バイトの長さです。

「e」と「f」はこれら 4 つの TCP パケットで送信されますか? おそらくeとfは64 + 48 = 112バイトの長さですか?

ご覧のとおり、私は混乱しています。私を助けてくれませんか(すべての質問ではないかもしれませんが、いくつかの兆候が役立つ可能性があります)

ありがとうございました。

4

1 に答える 1

2

この場合、Wireshark が公開鍵アルゴリズムを誤って解釈しています。サーバーから送信されたパケット番号 13 は、RFC5656 ( https://www.rfc-editor.org/rfc/rfc5656 )に従って適切にフォーマットされています。q と r の 2 つの変数を持つ楕円曲線アルゴリズムである ecdsa-sha2-nistp256 アルゴリズムを使用しています。

Wireshark は、別の RFC を使用してこのパケットを不適切に解析しています (ただし、厳密には 4253 ではありません)。RFC5656 セクション 3.1 は、正しい軌道に乗るために必要な情報を提供します。参考までに、この応答で変数 r と s を投稿します。

実際には、含まれている情報は次のとおりです。

サーバーの公開ホスト鍵 (文字列 K_S): 文字列 "ecdsa-sha2-nistp256" (ここで、"nistp256" は [識別子] です) バイト[n] ecc_key_blob 文字列 "nistp256" (blob の [識別子] 部分として再び繰り返されます) 文字列 Q (Qは以下の通り)

Q (0073-00b3): 04 bb e6 6e 8e b6 b4 f8 29 8f e2 b1 ba a0 2f 24 a2 d6 33 74 d4 17 ce b2 17 73 da 95 1a ac c4 4b d7 a8 fc 92 6d c6 c1 38 95 a6 5b 1f da ec d2 29 df 2c 68 5c dc de 36 bc 8b 34 16 24 28 0c 57 e1 7e

サーバーの一時的な公開鍵オクテット文字列 (文字列 Q_S):

Q_S (00b8-00f8): 04 ea d7 f3 93 63 61 df 10 c3 9d 7d bb ff 4d 38 0d 78 53 ea 00 97 30 b9 f5 cb a0 ea 1f 59 68 5b c6 c6 de fb a8 16 f6 a9 e2 88 96 d8 e9 48 c4 c3 4a 24 bc 58 7f cd 6e b3 2f 4a 18 ac d7 68 d7 df 0b

交換ハッシュの署名 (文字列): 文字列 "ecdsa-sha2-nistp256" (ここでも nistp256 は [識別子] です) 文字列 ecdsa_signature_blob mpint r (011c-013c): 00 84 0a a1 08 cf e8 2b a9 77 80 f2 82 99 59 e4 bb e4 f0 e8 bf 56 f2 ca 70 7a 4d 53 b0 6e b1 fc 0a

           mpint s (0141-0161):

00 bb 2a 08 c1 3e 41 ec 27 db 24 e8 1f 57 06 db 55 9f 5d e9 fa 48 87 b2 2e 97 3c 46 59 7a 14 c9 40

うまくいけば、これが混乱を解消するのに役立ちます。RFC5656 についてはまだ少し調査が必要で、空白を埋めるために RFC4253 を参照する必要があるかもしれませんが、それはパケットの内訳です。

幸運を!

アメリカ、ニューヨークのスコット

于 2013-09-16T20:42:45.270 に答える