匿名登录发送消息
telnet 192.168.165.55 25
helo smtp
lhale@victim
gesila@victim
Tharper@victim
mail from:rmurray@victim
rcpt to:Tharper@victim
data
subjcet:"urgent" and "patch"
send a phishing email from the IT person to the employee in sales that contains keywords "urgent" and "patch"
. 表示结束data发送消息
介绍:
SMTP为邮件协议,默认端口25,经常用来邮件伪造,钓鱼攻击。
经常SMTP帐号信息泄露,如github,oschinas的源码托管中的信息泄露。
建立TCP连接
知道了邮件服务器的地址,就可以与它建立TCP连接了SMTP协议的默认端口是25。使用Telneth或netcat命令,都可以连接该端口。
telnet xxxx.com 25 #windows下测试
或者
nc xxxx.com 25 #Linux下测试
服务器返回220状态码,就表示连接成功。
220 MAIL-SERVER Winmail Mail Server ESMTP ready
接下来,就可以使用 SMTP 协议各种命令与邮件服务器交互了。
HELO 命令和 EHLO 命令
SMTP 协议规定,连接成功后,必须向邮件服务器提供连接的域名,也就是邮件将从哪台服务器发来。
HELO xxxx.com
邮件服务器返回状态码250,表示响应成功。
250 MAIL-SERVER Winmail Mail Server
HELO 命令现在比较少用,一般都使用EHLO命令
邮件服务器收到EHLO命令以后,不仅会返回250状态码,还会返回自己支持的各种扩展的列表
250-MAIL-SERVER Winmail Mail Server
250-AUTH LOGIN PLAIN
250-SIZE 20971520
250 8BITMIME
MAIL FROM 命令
连接者要使用MAIL FROM 命令,向邮件服务器提供邮件的来源邮件
MAIL FROM:admin@xxxx.com #伪造管理员身份发邮件
上面代码表示,连接者将从admin@xxxx.com向邮件服务器发送邮件。邮件服务器返回250状态码,表示响应成功。
250 ok
RCPT TO 命令
使用RCPT TO 命令,验证邮件地址是否存在,如果查询的是一个真实的Email地址,邮件服务器就会返回250状态码,验证邮箱存在的话,还可以给这个接受者邮箱发送邮件。
RCPT TO:admin@xxxx.com
250 ok
一般来说,状态码250和251都表示邮箱存在,状态码5xx表示不存在,其它状态(4xx)则表示无法确定
DATA 伪造邮箱数据
使用DATA命令来伪造邮箱内容,客户端告诉服务器自己准备发送邮件正文
服务器返回码354,表示自己已经做好接受邮件的准备了
DATA
354 go ahead,end data with CRLF.CRLF
输入邮件伪造正文
用英文状态的双引号来修饰正文,正文结束后,发送结束符,表示正文结束
"这是一个test邮件"
.
250 ok message accepted for delivery
如果合理,服务端返回250状态码表示成功
退出 TCP 连接
邮件发送结束,客户端请求断开连接后,使用QUIT命令关闭TCP连接
服务器返回211,提示断开申请被采纳,并主动断开连接,整个邮件发送过程结束
QUIT
221 MAIL-SERVER Winmail Mail Server
Connection closed by foreign host.