web-dev-qa-db-ja.com

sssd.confパスワードの難読化を解除する方法は?

LDAPを介してAWSDirectoryServiceに対してユーザーを認証するCentosを使用して多数のEC2インスタンスを継承しました。次に、いくつかの認証の問題をデバッグするために、同じアカウントを使用してldapsearchでいくつかの手動クエリを実行する必要があります。ただし、パスワードは次のように構成で暗号化されます。

[sssd]
domains = LDAP
services = nss, pam

[domain/LDAP]
id_provider = ldap
cache_credentials = True

ldap_schema = AD
ldap_uri = ldaps://...
ldap_search_base = ...
ldap_default_bind_dn = ...
ldap_default_authtok = AAAQAB3QDeZ7+...cBSpT0ZABu4AAQID
ldap_default_authtok_type = obfuscated_password

ldap_default_authtokを復号化/難読化解除する方法はありますか?多くのサーバーで使用されているため、ADで変更したくありません。

2
KeepLearning

私はたまたま約1年前にこれらのパスワードを復号化する小さなスクリプトを書きました。

興味深いことに、[〜#〜] sss [〜#〜]の開発者は、AES-256などですが、ランダムに生成された暗号化キーがバンドルされているため、最終的には簡単に解読できます。エンコードされた文字列内。奇妙な。

私はあなたのためにそれをGitHubに置きます: https://github.com/mludvig/sss_deobfuscate

使い方は簡単です:

$ ./sss_deobfuscate AAAQABagVAjf9KgUyIxTw3A+HUfbig7N1+L0qtY4xAULt2GYHFc1B3CBWGAE9ArooklBkpxQtROiyCGDQH+VzLHYmiIAAQID
Decoded password: Passw0rd

それが役に立てば幸い:)

7
MLu

@MLuの答えは仕事を成し遂げるでしょうが、私はいくつかの解説を追加します。

開発者がメソッドencrypt()およびdecrypt()を呼び出さないのは残念です。

python module(_src/python/pysss.c_)のソースを見ると、pysss.password.decrypt()メソッドがありますが、_#if 0..#endif_で囲まれています。 (およびc-pythonリンケージの周りの対応する_#if 0..#endif_)が削除され、ソースが再コンパイルされますdecrypt()を呼び出すことができます。例:

_import pysss

password = 'swordfish'
print(password)

obfobj = pysss.password()
obfpwd = obfobj.encrypt(password, obfobj.AES_256)
print(obfpwd)

decrypted_password = obfobj.decrypt(obfpwd)
print(decrypted_password)
_
3
Mark Wagner