SMTP Pentesting Notes
Protocol Overview
Basic Information
Port: TCP 25 (default), TCP 587 (submission), TCP 465 (SMTPS)
Protocol Type: Application layer, client-server protocol
Purpose: Email transmission between servers and clients
Security: Base protocol is cleartext, can be encrypted with TLS
Protocol Components
Mail Transfer Components
MUA (Mail User Agent): Email client
MTA (Mail Transfer Agent): Server handling email routing
MSA (Mail Submission Agent): Initial mail acceptance
MDA (Mail Delivery Agent): Final delivery handler
Connection Types
Plain SMTP (Port 25)
SMTP with STARTTLS (Port 587)
SMTPS (Port 465)
Initial Enumeration
Port Scanning
Banner Grabbing
Authentication Testing
Testing Anonymous Access
Testing Open Relay
User Enumeration
VRFY Command
EXPN Command
RCPT TO Method
Common NSE Scripts
Brute Force Attacks
Using Hydra
Using Metasploit
SMTP Commands Reference
HELO/EHLO
Initiate session
HELO domain.com
AUTH PLAIN
Authentication
AUTH PLAIN base64(creds)
MAIL FROM
Set sender
RCPT TO
Set recipient
DATA
Start email content
DATA
RSET
Reset session
RSET
VRFY
Verify user
VRFY username
EXPN
Expand mailing list
EXPN listname
QUIT
End session
QUIT
Configuration Files
Server Configuration
Postfix:
/etc/postfix/main.cf
Sendmail:
/etc/mail/sendmail.cf
Exim:
/etc/exim4/exim4.conf
Security Files
TLS Configuration: Often in main config
Access Controls:
/etc/postfix/access
Relay Permissions: Defined in main configuration
Common Vulnerabilities
Misconfiguration:
Open relay
Weak authentication
Unencrypted transmission
User enumeration enabled
Version-specific:
Known CVEs
Default credentials
Buffer overflows
Command injection
Authentication Issues:
Clear-text authentication
Weak credentials
User enumeration
Missing rate limiting
Post Exploitation
Information Gathering
Enumerate valid users
Map internal network
Gather email addresses
Identify mail servers
Check for sensitive data
Privilege Escalation
Check for writeable directories
Test for command injection
Look for misconfigured permissions
Search for credentials in configs
Response Codes
220
Service ready
250
Requested action completed
354
Start mail input
421
Service not available
450
Mailbox busy
500
Syntax error
550
Action not taken
Best Practices for Pentesting
Initial Reconnaissance:
Identify SMTP service version
Test for open relay
Check for user enumeration
Banner grab for information
Deep Enumeration:
Run vulnerability scans
Test authentication methods
Check relay configurations
Test for user enumeration
Verify TLS/SSL setup
Documentation:
Record all findings
Note server configuration
Document vulnerabilities
Save evidence for reporting
Risk Assessment:
Evaluate impact of findings
Consider data sensitivity
Assess exploitation potential
Recommend mitigations
Additional Tools
Swaks:
smtp-user-enum:
Sendemail:
Metasploit Modules:
smtp_version
smtp_enum
smtp_relay