SMTP
- port: 25/tcp
Connect
$ nc -nv $IP 25
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 10.11.1.217:25.
220 hotline.localdomain ESMTP Postfix
VRFY noone^M
550 5.1.1 <noone>: Recipient address rejected: User unknown in local recipient table
CRLF
SMTP servers often expect CRLF line endings, so use
^V^M
(Ctrl-V Ctrl-M) to enter carriage returns in the terminal; note that^V
does not get echoed.
VRFY Username Enumeration
Related:userenum See SecLists for username wordlists.
#!/usr/bin/env python
import socket
import sys
if len(sys.argv) != 3:
print("Usage: {} <ip> <usernames-file>".format(sys.argv[0]))
sys.exit(1)
with open(sys.argv[2]) as f:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect = s.connect((sys.argv[1],25))
banner = s.recv(1024)
for username in f:
username = username.rstrip('\n')
s.send(('VRFY ' + username + '\r\n').encode('ascii'))
result = s.recv(1024)
if b'rejected' not in result:
print(username)
s.close()
EXPN User and Mailing List Enumeration
Verify whether jacob
is a mailbox / jacob
is a valid user:
EXPN jacob
250 [email protected]
List all members of the users
mailing list / check whether users
mailing list exists:
EXPN users
[email protected]
[email protected]
[email protected]
250 [email protected]
The -
indicates that it’s not the last line.