
लक्षित C# पोस्ट-एक्सप्लॉइटेशन टूल जो Microsoft SQL Server (MS SQL / MSSQL) के लिए है, जो किसी भी गहराई की लिंक्ड-सर्वर श्रृंखलाओं को हर हॉप पर कैस्केडिंग लॉगिन प्रतिरूपण के साथ पार करता है।
अपने लक्ष्य Microsoft SQL Server (MS SQL) DBMS में शान से उतरें, जैसे बिज़नेस क्लास की उड़ान में हाथ में शैंपेन का गिलास लेकर पहुँच रहे हों। 🥂

MSSQLand एक C# Microsoft SQL Server (MSSQL / MS SQL) पोस्ट-एक्सप्लॉइटेशन टूल है जो रेड टीम ऑपरेटरों के लिए बनाया गया है। इसे आपके बीकन के माध्यम से सीधे लक्ष्य वातावरण में चलाने के लिए डिज़ाइन किया गया है (उदाहरण के लिए, Cobalt Strike या Havoc में execute-assembly या किसी dotnet कमांड का उपयोग करके), यह आपको लिंक्ड सर्वर चेन को पार करने, रास्ते में मिलने वाले किसी भी लॉगिन का प्रतिरूपण करने और अंतिम हॉप से किसी भी वांछित कार्रवाई को निष्पादित करने की अनुमति देता है। यह सब न्यूनतम OPSEC फुटप्रिंट और बिना किसी बाहरी निर्भरता के।
OPENQUERY / EXEC AT रैपिंगEXECUTE AS LOGIN के साथ कैस्केडिंग मल्टी-उपयोगकर्ता प्रतिरूपणcm-* क्रियाएँ[!TIP] MSSQLand को
.NET Framework 4.8का उपयोग करके बनाया गया है, जिसमें वर्तमान संदर्भ का उपयोग करके असेंबली निष्पादन पर ध्यान केंद्रित किया गया है। यदि आपको NT/LM हैश या Kerberos टिकट का उपयोग करके कनेक्ट करने की आवश्यकता है, तो Pass-the-Hash देखें।
[!NOTE] बुनियादी बातों को न भूलें। सुरक्षा मूल्यांकन के दौरान, कभी-कभी SQL Server Management Studio (SSMS) का उपयोग करना आसान होता है।
MSSQLand.exe [options] <host> [options] <action> [action-options]
MSSQLand.exe <host> --probe
ग्लोबल फ़्लैग (-c, -l, --debug, आदि) किसी भी स्थान पर स्वीकार किए जाते हैं, जिसमें क्रिया नाम के बाद भी शामिल है; क्रिया के बाद अपरिचित टोकन क्रिया को शाब्दिक रूप से पास कर दिए जाते हैं।
[!NOTE]
<action>को छोड़ने पर केवल कनेक्शन परीक्षण होता है। यह प्रमाणित करता है और बिना कोई क्वेरी चलाए बाहर निकल जाता है। न्यूनतम OPSEC फुटप्रिंट के साथ क्रेडेंशियल सत्यापन के लिए आदर्श।
[!TIP] सभी RPC Out या OPENQUERY कॉल मैन्युअल रूप से टाइप करने से बचें। टूल को
-lतर्क के साथ किसी भी लिंक्ड सर्वर चेन को संभालने दें, ताकि आप बड़ी तस्वीर पर ध्यान केंद्रित कर सकें।
स्वरूप: server:port/user@database या कोई भी संयोजन server/user@database:port।
server (अनिवार्य) - SQL Server होस्टनाम या IP:port (वैकल्पिक) - पोर्ट नंबर (डिफ़ॉल्ट: 1433, सामान्यतः: 1434, 14333, 2433)/user (वैकल्पिक) - इस सर्वर पर प्रतिरूपित करने के लिए उपयोगकर्ता ("execute as login")
/user1/user2/user3 EXECUTE AS LOGIN = 'user1'; EXECUTE AS LOGIN = 'user2'; EXECUTE AS LOGIN = 'user3'; निष्पादित करता है/user सुरक्षा स्टैक पर एक नया प्रतिरूपण संदर्भ जोड़ता है@database (वैकल्पिक) - डेटाबेस संदर्भ# कनेक्टिविटी प्रोब: बिना प्रमाणीकरण के जाँचता है कि सर्वर जीवित है या नहीं
MSSQLand.exe localhost --probe
# केवल कनेक्शन परीक्षण (कोई क्रिया निष्पादित नहीं, प्रमाणित करता है और बाहर निकलता है)
MSSQLand.exe localhost -c token
# विशिष्ट क्रिया निष्पादित करें
MSSQLand.exe localhost -c token info
MSSQLand.exe localhost:1434@db03 -c token info
MSSQLand.exe LAB-SQL01@AdventureWorks -c token tables -n Customer
-l फ़्लैग का उपयोग करके अर्धविराम (;) को विभाजक के रूप में कई SQL सर्वरों को चेन करें:
-l SQL01;SQL02/user;SQL03@database
सिंटैक्स:
;) - चेन में सर्वरों को अलग करता है/) - प्रतिरूपित करने के लिए उपयोगकर्ता निर्दिष्ट करता है ("execute as login")
/user1/user2 क्रमिक प्रतिरूपण निष्पादित करता है@) - डेटाबेस संदर्भ निर्दिष्ट करता है[...]) - सर्वर नाम को हमारे विभाजकों द्वारा विभाजित होने से बचाने के लिए उपयोग किया जाता हैउदाहरण:
# सरल चेन
-l SQL01;SQL02;SQL03
# प्रतिरूपण और डेटाबेस के साथ
-l SQL01/admin;SQL02;SQL03/manager@clients
# कैस्केडिंग प्रतिरूपण (SQL01 पर user1 को प्रतिरूपित करें, फिर user2 को)
-l SQL01/user1/user2;SQL02;SQL03
# मिश्रित कैस्केडिंग (SQL01: user1→user2, SQL03: user3→user4→user5)
-l SQL01/user1/user2;SQL02;SQL03/user3/user4/user5@database
# सर्वर नाम में हाइफ़न, डॉट हो सकते हैं (ब्रैकेट की आवश्यकता नहीं)
-l SQL-01;SERVER.001;HOST.DOMAIN.COM
# ब्रैकेट केवल तभी आवश्यक हैं जब सर्वर नाम में विभाजक वर्ण हों
-l [SERVER;PROD];SQL02;[SQL03@clients]@clientdb
[!NOTE] पोर्ट विनिर्देश (
:port) केवल प्रारंभिक होस्ट कनेक्शन पर लागू होता है। लिंक्ड सर्वर चेन (-l)sys.serversमें कॉन्फ़िगर किए गए लिंक्ड सर्वर नामों का उपयोग करती है, न किhostname:portसंयोजनों का।
इन मोड में किसी प्रमाणीकरण की आवश्यकता नहीं है और ये क्रेडेंशियल्स से पहले काम करते हैं।
SQL Server Browser सेवा UDP 1434 पर सुनती है और डिस्कवरी अनुरोधों पर एक होस्ट पर चल रहे SQL Server इंस्टेंस की सूची, उनके नाम, संस्करण और TCP पोर्ट के साथ प्रतिक्रिया देती है। यह तब उपयोगी है जब लक्ष्य डायनामिक पोर्ट पर नामित इंस्टेंस चला रहा हो, अनुमान लगाने या स्कैन करने की आवश्यकता नहीं है।
# किसी विशिष्ट होस्ट पर SQL Browser सेवा को क्वेरी करें (UDP 1434)
MSSQLand.exe LAB-SQL03 --browse
Active Directory कंप्यूटर और सेवा खातों पर संग्रहीत सर्विस प्रिंसिपल नेम (SPN) के माध्यम से SQL Server पंजीकरण प्रकट करता है। MSSQLand, LDAP के माध्यम से MSSQLSvc/* SPN के लिए AD को क्वेरी करके डोमेन में SQL Server इंस्टेंस या ग्लोबल कैटलॉग के माध्यम से पूरे फ़ॉरेस्ट को गणना करता है।
# Active Directory में LDAP के माध्यम से SQL सर्वर खोजें (वर्तमान डोमेन)
MSSQLand.exe --findsql
# किसी विशिष्ट डोमेन को लक्षित करें
MSSQLand.exe --findsql pgd.lab
# ग्लोबल कैटलॉग (पोर्ट 3268) के माध्यम से फ़ॉरेस्ट-व्यापी खोज
MSSQLand.exe --findsql pgd.lab --gc
खोज बहु-स्तरीय है। अधिक जानकारी के लिए FindSqlServers.cs देखें।
SQL Server Browser UDP 1434 पर UDP ब्रॉडकास्ट पैकेट का भी जवाब देता है, जिससे स्थानीय सबनेट पर स्वयं विज्ञापित सभी SQL Server इंस्टेंस की खोज संभव होती है।
# स्थानीय नेटवर्क पर ब्रॉडकास्ट खोज (UDP 1434)
MSSQLand.exe --broadcast
MSSQLand.exe --broadcast --timeout 5
[!TIP] यह विशेष रूप से तब उपयोगी होता है जब SQL Server डोमेन से जुड़े नहीं मशीन पर चल रहा हो और इसलिए यह किसी LDAP या SPN क्वेरी में दिखाई नहीं देगा। स्टैंडअलोन सर्वर, डेवलपर मशीन, या आंतरिक VLAN पर चालू किए गए दुष्ट इंस्टेंस के बारे में सोचें।
TDS प्रोटोकॉल हैंडशेक (केवल TCP SYN नहीं) का उपयोग करके लाइव SQL Server इंस्टेंस के विरुद्ध खुले पोर्ट को मान्य करता है। एक पोर्ट केवल तभी रिपोर्ट किया जाता है यदि वह TDS प्री-लॉगिन पैकेट का जवाब देता है।
MSSQLand.exe LAB-SQL03 --portscan
MSSQLand.exe LAB-SQL03 --portscan --all # सभी इंस्टेंस खोजें (पूर्ण एफेमरल रेंज)
MSSQLand.exe LAB-SQL03 --portscan 65184 # एकल पोर्ट
MSSQLand.exe LAB-SQL03 --portscan 65180-65190 # पोर्ट रेंज
MSSQLand.exe LAB-SQL03 --portscan 1433,5000,65184 # कॉमा-सेपरेटेड सूची
MSSQLand एक बीकन के अंदर .NET असेंबली के रूप में चलता है और हमेशा वर्तमान निष्पादन संदर्भ (-c token) का उपयोग करके प्रमाणित करता है। जब आपके पास हैश हो, तो सही दृष्टिकोण पहले बीकन स्तर पर एक टोकन बनाना और फिर सामान्य रूप से MSSQLand चलाना है। System.Data.SqlClient उस टोकन को पारदर्शी रूप से प्राप्त कर लेता है, और किसी कस्टम TDS कार्यान्वयन की आवश्यकता नहीं है।
MSSQLand के अंदर NTLMv2 को स्क्रैच से लागू करने का मतलब होगा:
System.Data.SqlClient को हाथ से बने TDS 7.x स्टैक से बदलना (बहुत अधिक सॉकेट, TLS और NTLM कोड की पंक्तियाँ)।यदि आपको बाहरी स्थिति से Kerberos टिकट या NT/LM हैश के साथ प्रमाणित करने की आवश्यकता है, तो mssqlclient-ng सही उपकरण है। यह एक Python 3 क्लाइंट है जो Unix-साइड एक्सेस के लिए बनाया गया है, जिसे आपके बीकन से स्थापित SOCKS5 प्रॉक्सी के साथ आसानी से जोड़ा जा सकता है।
यदि आप अपने Windows होस्ट पर MSSQLand चला रहे हैं लेकिन Linux वातावरण (Hyper-V VM, VMware, या WSL) के माध्यम से SQL Server लक्ष्य तक पहुँचने की आवश्यकता है, तो आप socat का उपयोग करके कनेक्शन को आसानी से फ़ॉरवर्ड कर सकते हैं:
sudo socat TCP4-LISTEN:1433,fork,reuseaddr TCP:10.10.11.90:1433
यह कमांड आपकी Linux मशीन पर पोर्ट 1433 पर सुनता है और सभी ट्रैफ़िक को लक्ष्य SQL Server 10.10.11.90:1433 पर फ़ॉरवर्ड करता है। फिर आप अपने Windows होस्ट से MSSQLand को अपने Linux VM के IP से कनेक्ट कर सकते हैं।
-h या --help - सभी उपलब्ध क्रियाएँ दिखाएँ-h search_term - क्रियाओं को फ़िल्टर करें (उदा., -h adsi सभी ADSI-संबंधित क्रियाएँ दिखाता है)localhost -c token createuser -h - किसी विशिष्ट क्रिया के लिए विस्तृत सहायता दिखाएंMSSQLand में Microsoft Configuration Manager (पूर्व में SCCM / MECM) शोषण और पुनर्संरचना के लिए व्यापक समर्थन शामिल है। जब आपके पास ConfigMgr डेटाबेस सर्वर तक पहुँच हो, तो आप डिवाइस इंटेलिजेंस (जैसे, cm-devices) या इन्फ्रास्ट्रक्चर मैपिंग के लिए विशेष क्रियाओं का लाभ उठा सकते हैं।
सभी ConfigMgr क्रियाएँ Microsoft के आधिकारिक PowerShell cmdlet नामकरण सम्मेलन (Get-CM*, Set-CM*, आदि) के साथ संरेखित करने के लिए cm- उपसर्ग का उपयोग करती हैं।
टूल का आउटपुट, टाइमस्टैम्प और मूल्यवान प्रासंगिक जानकारी से समृद्ध, देखने में आकर्षक और पेशेवर परिणाम उत्पन्न करने के लिए डिज़ाइन किया गया है, जो आपकी किसी भी रिपोर्ट (जैसे, ग्राहक डिलीवरेबल, आंतरिक रिपोर्ट, रेड टीम मूल्यांकन) के लिए उच्च-गुणवत्ता वाले स्क्रीनशॉट कैप्चर करने के लिए आदर्श है।
सभी आउटपुट तालिकाएँ Markdown-अनुकूल हैं और बिना किसी फ़ॉर्मेटिंग परेशानी के सीधे आपके नोट्स में कॉपी और पेस्ट की जा सकती हैं।
[!TIP] आप
--format csvविकल्प का उपयोग करके.csvसंगत आउटपुट भी प्राप्त कर सकते हैं:MSSQLand.exe localhost -c token --format csv --silent procedures > procedures.csv
योगदान का स्वागत है और सराहना की जाती है! चाहे वह बग फिक्स करना हो, नई सुविधाएँ जोड़ना हो, दस्तावेज़ीकरण में सुधार करना हो, या प्रतिक्रिया साझा करना हो, आपके प्रयास को महत्व दिया जाता है और यह फर्क पैदा करता है। ओपन-सोर्स सहयोग और मान्यता पर फलता-फूलता है। योगदान, बड़ा या छोटा, टूल और इसके समुदाय को बेहतर बनाने में मदद करता है। आपके समय और प्रयास की वास्तव में सराहना की जाती है।
यहाँ, किसी को Git इतिहास से मिटाया नहीं जाएगा। यहाँ डरने की कोई बात नहीं है। कोई भी आपके कोड को ओपन-सोर्स के सहयोगी लोकाचार का पालन किए बिना कॉपी-पेस्ट नहीं करेगा।
कृपया शुरू करने के तरीके पर विस्तृत दिशानिर्देशों के लिए CONTRIBUTING.md देखें।
यदि आप सोच रहे हैं कि यह क्यों मौजूद है और अन्य SQL सर्वर परियोजनाओं में योगदान के रूप में नहीं, तो ORIGIN.md देखें।
यह टूल कड़ाई से रक्षात्मक सुरक्षा अनुसंधान, शिक्षा और अधिकृत पेनिट्रेशन टेस्टिंग के लिए प्रदान किया गया है। किसी भी ऐसे सिस्टम के विरुद्ध इस सॉफ़्टवेयर को चलाने से पहले आपके पास स्पष्ट लिखित प्राधिकरण होना चाहिए जो आपके स्वामित्व में नहीं है।
यह टूल केवल शैक्षिक उद्देश्यों के लिए डिज़ाइन किया गया है और इसका उद्देश्य सुरक्षा पेशेवरों को अधिकृत एंगेजमेंट में SQL Server वातावरण की सुरक्षा को समझने और परीक्षण करने में सहायता करना है।
स्वीकार्य वातावरणों में शामिल हैं:
इस परियोजना के दुरुपयोग के परिणामस्वरूप कानूनी कार्रवाई हो सकती है।
वास्तविक दुनिया के वातावरण में या सिस्टम स्वामी की स्पष्ट अनुमति के बिना सिस्टम के विरुद्ध इस टूल का कोई भी अनधिकृत उपयोग कड़ाई से निषिद्ध है और कानूनी और नैतिक मानकों का उल्लंघन कर सकता है। इस टूल के निर्माता और योगदानकर्ता किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं हैं।
जिम्मेदारी और नैतिकता से उपयोग करें। हमेशा कानून का पालन करें और उचित प्राधिकरण प्राप्त करें।