zoukankan      html  css  js  c++  java
  • PartⅠ邮件伪造

    简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 即简单邮件传输协议,是在Internet传输email的事实标准。正如名字所暗示的那样,它其实是一个非常简单的传输协议,无需身份认证,而且发件人的邮箱地址是可以由发信方任意声明的,利用这个特性可以伪造任意发件人。

    RFC821:https://tools.ietf.org/html/rfc821
    • SMTP默认端口:25
    • SSL SMTP默认端口:465

    swaks 工具基本用法

    输出内容的含义
    ===: swaks输出的信息行
    *: swaks中产生的错误
    ->: 发送到目标的预期行(无错误)
    <- : 服务器的预期回复(无错误)
    <**: 服务器返回的错误信息

    swaks --to <要测试的邮箱> 用来测试邮箱的连通性

    swaks --to ******@qq.com
    === Trying mx3.qq.com:25...
    === Connected to mx3.qq.com.
    <-  220 newxmmxsza51.qq.com MX QQ Mail Server.
     -> EHLO kali
    <-  250-newxmmxsza51.qq.com
    <-  250-STARTTLS
    <-  250-SIZE 73400320
    <-  250 OK
     -> MAIL FROM:<kali@kali>
    <-  250 OK.
     -> RCPT TO:<******@qq.com>
    <-  250 OK 1
     -> DATA
    <-  354 End data with <CR><LF>.<CR><LF>.
     -> Date: Mon, 22 Mar 2021 22:03:58 -0400
     -> To: ******@qq.com
     -> From: kali@kali
     -> Subject: test Mon, 22 Mar 2021 22:03:58 -0400
     -> Message-Id: <20210322220358.001219@kali>
     -> X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
     -> 
     -> This is a test mailing
     -> 
     -> 
     -> .
    <** 550 Domain may not exist or DNS check failed [MAz3LfNr0S8JzuNjNLtpwmZUSRZisIHafHsJ/Fq33Wdo8+ze9yLN3dAcYpHgRxVRXQ== IP: ************].
     -> QUIT
    <-  221 Bye.
    === Connection closed with remote host.
    

    无法发送成功,具体原因见附录。

    选项说明:(更多高级功能请查man手册)

    --from  000@qq.com     //发件人邮箱;
    --ehlo  qq.com      //伪造邮件ehlo头,即是发件人邮箱的域名。提供身份认证
    --body "http://www.baidu.com"    //引号中的内容即为邮件正文;
    --header "Subject:邮件标题"   //邮件头信息,subject为邮件标题
    --data ./Desktop/email.txt    //将正常源邮件的内容保存成TXT文件,再作为正常邮件发送;
    –attach 添加附件
    

    附带选项的测试:

    swaks --to jqcanm56917@chacuo.net --from admin@********.com --ehlo ********.com --header "Subject:安全性警告" --body "您的邮箱密码已过期 请尽 快更改。"
    === Trying mx.chacuo.net:25...
    === Connected to mx.chacuo.net.
    <-  220 web1905 chcuo.net server 0.2
     -> EHLO *********.com
    <-  250 web1905
     -> MAIL FROM:<admin@********.com>
    <-  250 Ok
     -> RCPT TO:<jqcanm56917@chacuo.net>
    <-  250 Ok
     -> DATA
    <-  354 End data with <CR><LF>.<CR><LF>
     -> Date: Mon, 22 Mar 2021 23:49:33 -0400
     -> To: jqcanm56917@chacuo.net
     -> From: admin@********.com
     -> Subject:安全性警告
     -> Message-Id: <20210322234933.001791@kali>
     -> X-Mailer: swaks v20201014.0 jetmore.org/john/code/swaks/
     -> 
     -> 您的邮箱密码已过期 请尽快更改。
     -> 
     -> 
     -> .
    <-  250 Ok
     -> QUIT
    <-  221 Bye
    === Connection closed with remote host.
    

    邮件截图:

    email

    邮件伪造的困难

    伪造邮件的原理

    邮件为什么可以被伪造呢,最根本的原因就是SMTP协议不会验证发送者的身份,当邮件在两个不同的SMTP邮件服务器中被传输时,我们可以通过伪造来源欺骗接收者的SMTP服务器。

    没有配置SPF,邮件服务器就不会去验证发件人,就可以直接进行伪造了。这一点利用上述工具即可实现。

    也可以搭建自己的邮件服务器(见附录二),或者使用邮件伪造服务:http://tool.chacuo.net/mailanonymous

    钓鱼

    fake mailer:

    fake mailer

    主流邮件服务提供商是不会接收从未配置SPF的服务器发来的邮件的。

    QQ邮箱在接收到邮件时,会检查域名的SPF记录,未配置SPF的域名,邮箱容易被伪造并成功投递到目标邮箱;已经配置了SPF的域名,检验后会被投递到垃圾箱。

    简单的绕过方式

    申请一些和目标域名比较相似的域名,比如用0代替o,用1代替l,用vv代替w等等,这就需要发挥你的想象来寻找相似的域名:

    http://www.taoba0.com/
    http://www.a1iyun.com
    

    使用这些域名搭建相关邮件服务。

    高端玩法

    攻击者的域名为

    www.biṇaṇce.com
    

    用于替换字母n的字符为:ṇ
    Unicode编码为:U+1E47

    真正的字母n的Unicode编码为:
    U+006E,攻击者上演了一出障眼法骗过了那些受害者。

    这样的域名是怎么注册的呢?在了解怎么注册一个这样的域名前,需要先了解什么是国际域名(Internationalized domain name, IDN)。
    IDN是指在域名中包含至少一个特殊语言字母的域名,特殊语言包括中文、法文、拉丁文等。在DNS系统工作中,这种域名会被编码成ASCII字符串,并通过Punycode进行翻译。

    Punycode是一个根据RFC 3492标准而制定的编码系统,主要用于把域名从地方语言所采用的Unicode编码转换成为可用於DNS系统的编码。

    目前,因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中文域名解析,所有中文域名的解析都需要转成punycode码,然后由DNS解析punycode码。其实目前所说的各种主流浏览器都完美支持IDN域名,浏览器里面会自动对IDN域名进行Punycode转码,而地址栏依旧显示的是原始输入的IDN域名。

    所以,要想注册“币安”的这个域名:

    www.biṇaṇce.com
    

    其实只需要注册他经过punycode转码后的域名:

    www.xn--biace-4l1bb.com
    

    然后让目标访问www.biṇaṇce.com,在地址栏中就很难被发现。
    中文域名

    我遍历了unicode表,找了一些字母形似的unicode,可利用此表来注册一些钓鱼域名
    钓鱼

    仿冒的阿里云

    www.аlіyun.com
    
    0x456 і
    0x430 а
    
    经punycode转码:www.xn--lyun-43d3u.com
    

    5

    punycode在线转换工具:http://tools.jb51.net/punycode/index.php

  • 相关阅读:
    在PHP中如何获取来源URL
    函数中的static关键字
    ubuntu server 10.04 上安装oracle 10G 开发版
    ajax同步和异步提交的区别
    jQuery对Select的操作集合[终结篇]
    从IFARME中直接跳转到外层页面
    用mount命令挂载远程文件系统
    js小技巧(输入框提示信息自动消失)
    js 获取事件源
    Oracle PL/SQL中如何使用%TYPE和%ROWTYPE
  • 原文地址:https://www.cnblogs.com/chalan630/p/14894482.html
Copyright © 2011-2022 走看看