web-dev-qa-db-ja.com

自動暗号化されたWS_FTPSSH秘密SSHキーの暗号化「パスワード」はどこにありますか?

WS_FTPを使用して、FTPSを介してシステムと大銀行の間でファイルを自動的に転送しています。

C:\Documents and Settings\Username\Application Data\Ipswitch\WS_FTP\SSH\ClientKeyStoreを参照すると、秘密鍵と公開鍵がTXT形式で表示されます。

これらの生の鍵をエクスポートして新しいFTPSクライアントにインポートしようとしていますが、秘密鍵は入力したことのない秘密鍵を使用して保護されています。これを確認するために、新しいSSH鍵を作成しました。秘密鍵も、入力しなかった鍵を使用して作成されました。

SSH秘密鍵に必要なテキストパスワードはWS_FTP自体によって管理されていると推測できますが、テクニカルサポートに電話した後、彼らも私を支援することができませんでした。

WS-FTP SSHキーの秘密キーはどこで入手できますか?

2

パスフレーズは、Store.iniファイルのキーと同じフォルダに保存されているようです。

[____Item____0]
____ItemName____=mysite
PublicKey=C:\Users\martin\AppData\Roaming\Ipswitch\WS_FTP\SSH\ClientKeyStore\Pub262F.tmp
Pass=_uYIiwEW/JZFazUCvOd/TWbCmvzSdwu9aCmtFaVCSH51nomzGuvWAEAkti3EvnB+M0mTy6Z9CFma3nqAWO5IH1olwmyLYcJLoCOIUDLgd3/rA3LiiF4PUtT5saieLNBZZKHsJXOkzltW6/n4QhOJx/l345tmz079mEljhaN+2Dao=
PrivateKey=C:\Users\martin\AppData\Roaming\Ipswitch\WS_FTP\SSH\ClientKeyStore\Pri26BD.tmp

Base64でエンコードされたバイナリパスフレーズのようです。私はまだ鍵を解読することができませんでしたが。

バイナリパスフレーズを(PHP base64_decodeを使用して)デコードし、ファイルphraseに保存しました。128バイトのラウンドがあり、見栄えがします。

それから私は走ります:

openssl rsa -in Pri26BD.tmp -out key.decrypted -passin file:phrase

そして得た:

unable to load Private Key
139830511232840:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:596:
139830511232840:error:23077074:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 cipherfinal error:p12_decr.c:104:
139830511232840:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:p12_decr.c:130:
139830511232840:error:0907B00D:PEM routines:PEM_READ_BIO_PRIVATEKEY:ASN1 lib:pem_pkey.c:132:

したがって、これは実際には最終的な答えではありませんが、少なくとも一歩前進します。多分他の誰かがそれに基づいて構築することができるでしょう。

テストキー(投稿を完了するため):

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICzzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIKhkn8LKv5EACAggA
MB0GCWCGSAFlAwQBKgQQSOjD82fwWX4q8EHVC7TQKQSCAoAfnMulDagEiw3Sw2kT
gWVVxesbanCeLCbuHLg8IkF7vFM84xfAwv0te60fTLM1PGOzD3mDQK3xFbHNAXMI
6X+cblkpqBu3COqfOEW0Kwt5CX0g1GZwRAe7LrysQcstqw8dSxmdmgK/YcJLvIn6
cNpwPP6XD6Jrlp1Z2yBotCBj13hs6VUZCH9U5N5/XiGeyMxniTaQag+ITjipanYt
tjGGDYKeGZkLrbJjaXuQh4PyfS+PGd03LlMJsuXMFpEIvWvxiRnOKHXJoHYDF8Z0
cWgD/+dZ9prkgAjN6PtEej8RDQFeEcDn6/jr//SbV2zo/m6+peYg99cUkeokpUJX
04fssu0s3ZjNPF9WdaS19FDioH9wqffFvNtWRlLc8tAFALZmSZROz0RGNaTaiO61
uH3KnAtAo1vyQWJR3THX2ebecq603XlH8aWlshi7pONzXTSvdTbT8iP5VCPri7Yp
EqityjbrXT2skH2rCE0vDqXXuKwsxuNROMR6IpkedVyA+AFOTU8gFVOuyZ3uSgZm
9t5tHw5+4wzI5MMuh1BbuwvyxzZG+NlbLdDfehvRjm1kY99OaAL9kp14xm4zVsnz
dORnuNjLwvTCaxHDa/TJQonuiUu8M98VDT7H4dLA1/iTyLxieNlYp7DHP3zGO8Y6
5zZeRHJYkkIMhAqd7WYokCHJljwC9c6D49M9ISZThHgZLR1+DVa5f7g58MlliP3E
q2xgDf9oP7uBPnk5ZiVllkvOzrZ1ucfr4Is/0vp2wZ0AdOW72OsKOsxnorTuT/jb
Mce5i8UoJtRVeUrcnU/KY3yTZEB6mRgh9B6htYAySLvfVdwZd0EnanqN+pnVnN80
Yx9Q
-----END ENCRYPTED PRIVATE KEY-----
1
Martin Prikryl

これが古いスレッドであることは知っていますが、これを理解するために多くの時間を費やし、この投稿以外にオンラインでガイドを見つけることができませんでした。マーティンは、パスフレーズのbase64エンコーディングを除いて正しい道を進んでいました。エンコーディングはもう少し複雑であることがわかりましたが、それを乗り越えるためのツールがすでにあります: https://github.com/Ciastex/UniDec (このツールを使用することもできますサイトのパスワードを回復するには)

UniDecを使用してもパスフレーズを理解するのに時間がかかったため、Martinが投稿したサンプルキーを確認します。

Store.iniファイルから次の情報が得られます。

Pass=_uYIiwEW/JZFazUCvOd/TWbCmvzSdwu9aCmtFaVCSH51nomzGuvWAEAkti3EvnB+M0mTy6Z9CFma3nqAWO5IH1olwmyLYcJLoCOIUDLgd3/rA3LiiF4PUtT5saieLNBZZKHsJXOkzltW6/n4QhOJx/l345tmz079mEljhaN+2Dao=

WSFTP12プラグインでUniDecを使用します。

UniDec.exe wsftp12 dec _uYIiwEW/JZFazUCvOd/TWbCmvzSdwu9aCmtFaVCSH51nomzGuvWAEAkti3EvnB+M0mTy6Z9CFma3nqAWO5IH1olwmyLYcJLoCOIUDLgd3/rA3LiiF4PUtT5saieLNBZZKHsJXOkzltW6/n4QhOJx/l345tmz079mEljhaN+2Dao=

Unidecは以下を返します:

tgNEu9GS3zoj5aMqnzzLb7RuYxqyO8kaN0bVlndXXpTTT52DHcKdQIIYWAVN0ZIkPg3BpvTR2EstOGd+NOOf0Q== 0M0JDARAMFqcFpgfm76MAUSpWVurQfKNvKcRCg=

==の後のスペースに注意してください。返される文字列の最初の部分だけがパスフレーズです。残りの文字は、無視できるパディングの一種です。これで、PKCS#8秘密鍵ファイルを復号化するために必要なすべての情報が得られました。

openssl rsa -in Pri26BD.tmp -out decrypted.key
Enter pass phrase for Pri26BD.tmp: tgNEu9GS3zoj5aMqnzzLb7RuYxqyO8kaN0bVlndXXpTTT52DHcKdQIIYWAVN0ZIkPg3BpvTR2EstOGd+NOOf0Q== 
writing RSA key

そして、これが最後の鍵です。

-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDTSC7Y6bKJ5mVlJeTkcHF7H13+nRuldBHUgcuDcb6F3aDBIFch
SzkNwpfzWnNFMQu1KNIy2o/V2FepN8C7QnS6FJIYsZ5wwUAyGtmTSfi+xN/jKIiP
55m8fz0kj1Fg2MyRb7IMj474hi7WMem9AJf4HIhOw3QRo+RebN9kf27k4QIDAQAB
AoGBALs5vOHU/bR7qSBf2xyfk8AyRJ3q5OPSHja9KfX55oZDpj9dhDhpq05JQVOR
tJH8604GtXYA/fLW+p9mW3DVbA8XONUHOleG2gRtsrk3gnBsKmp8OjyMC3UPFp21
e0IbrTNeUVkCWkBZVll6EZykPwnV2dE5ue7rV7j8p9tqh+sBAkEA/+DM1ctAvJvL
NFGmqjkZNP7SRXQa/ZrgqIgU+9hU232seDBEGRZba9lA+9sahDybHq1f0NyNnmCE
iuacbiBYsQJBANNh8fSTI5mEy3EJdx7w9dpPfqDJrua5hx398fUpJcXQNuSy6gph
EAPNLNxmi+z/kHlnAS53XnoCYSpYNSTnWzECQQCRFb4PW3gReaT2vXVq/4Uzb2l6
yCKlubO427BKPJeg/NlWLMfwEaU0ubMHG20lnde2xUeW/feu3btJpwj7yIuBAkBT
7Y6o4gb/fFdeYTi3w0qKTIflhU55c25vfRWllpnVyc8RzOvaBSHbsIpAVEL4bZxK
Z5hzf5e2b91ud6laJrXxAkEA48kg0N7RorSZUoE03SWOqMMKteq5nIxMlUZsK4ho
cwUDlut23aBCVU2wMs8ySxr0o9n7Ix1FNVNlQA4k2Xu9Mw==
-----END RSA PRIVATE KEY-----

これが誰かを助けることを願っています。

1
PatrykB