V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bootyshinehf
V2EX  ›  信息安全

关于黑产绕过邮件网关 SPF 发送钓鱼邮件的疑惑

  •  1
     
  •   bootyshinehf · 11 天前 · 2744 次点击

    最近发现攻击者 IP 180.103.12.117 通过 SMTP 端口向同事发送钓鱼邮件成功,没有经过任何认证,且发件 IP 不在 cpibj.com.cn 的 SPF 允许范围内。

    C:\>nslookup
    默认服务器:  public1.114dns.com
    Address:  114.114.114.114
    
    > set qt=txt
    > cpibj.com.cn
    服务器:  public1.114dns.com
    Address:  114.114.114.114
    
    非权威应答:
    cpibj.com.cn    text =
            "qqmail-site-verification=b72f361daa3048ca5b64be6b1670252f65ced90d851"
    cpibj.com.cn    text =
            "MS=D2EBDFFED7F601051E24E409E3F0F36697658F03"
    cpibj.com.cn    text =
            "v=spf1 ip4:123.117.136.189 ip4:114.255.252.30 ip4:114.255.252.17 -all"
    

    发送的钓鱼邮件如下: pkPmQUO.png

    相关邮件源码如下: pkPeqUS.png

    感觉碰到玄学了,攻击者能直接利用,我却复现不了。。。提示没通过 SPF 校验。。。

    pkPmE8J.png

    黑产是怎么实现这种方式的批量钓鱼邮件投递啊。。。求大佬解惑

    ===================== 更新

    下面是捕获到的伪造的发件人清单:

    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM:<[email protected]>
    MAIL FROM: <[email protected]>
    
    第 1 条附言  ·  11 天前

    1 、关于伪造钓鱼邮件相同邮件头进行复现:

    我这边回溯我们的全流量产品,有抓到的原始流量信息,源 IP ( 180.103.12.117 )直接连的我们这边的邮件网关( 10...131:25 )。

    TCP 日志还原后的部分交互内容,如下:

    220 smtp ready
    HELO cpibj.com.cn
    250 spic.com.cn HELO, pleased to meet cpibj.com.cn
    MAIL FROM: <[email protected]>
    250 OK
    RCPT TO: <chenhuan01@****.com.cn>
    250 OK
    DATA
    354 go ahead
    Date: T
    

    我按照以上格式,通过 telnet 命令还有 python 脚本去发件,都是提示「 556 remote ip check error.(SPF online: 发信 ip 与 Mail From 地址不一致)」,所以接下来不知道怎么办了。

    2 、关于邮件网关中的拦截问题

    目前这封邮件是没有被邮件安全网关拦截的,是「投递成功」状态,也没有被标记为垃圾邮件。

    pkP34gO.png

    第 2 条附言  ·  10 天前
    联系上邮件系统专业人员了,导致这种情况的具体原因还在定位排查中,感觉不简单。。。

    附:黑产投递成功部分原始日志
    `Thu Apr 25 10:14:31 2024 92177 sendtype=0 liLogType=0, ip:180.103.12.117(0), mail from:[email protected], rcpt to:chenhuan01@****.com.cn subject=各位同事请及时查收 size=109432,info=系统白名单,action=1 `

    附 2:本人复现投递失败原始日志
    `Fri Apr 26 11:03:55 2024 67953 gw error IP:221.**.**.71(0) mail from:[email protected] cause:556 remote ip check error. (SPF online:发信 ip 与 Mail From 地址不一致)`
    34 条回复    2024-04-26 20:14:33 +08:00
    1423
        1
    1423  
       11 天前
    是哪家的域名邮箱吗,还是公司自己管理的
    winterx
        2
    winterx  
       11 天前
    网关有多种判断识别方式,spf 只是其中一种,楼主要完全伪造相同邮件头才知道能不能过

    没有用过亿邮不太了解他家产品 ,如果能进网关后台就看具体过滤日志跟原因,如果不行就问客服吧
    chuckzhou
        3
    chuckzhou  
       11 天前
    可能是有人密码泄露了,有的邮件系统在 auth 通过之后,就可以冒充任何人。具体的还是要看日志。
    LaoDahVong
        4
    LaoDahVong  
       11 天前
    邮件相关的不大懂. 会不会是 relay 或者 forward 出去的? 马一个给楼主送小红心. 蹲个后续学习学习.
    lemonda
        5
    lemonda  
       11 天前
    https://xxb.ecust.edu.cn/2010/0304/c7630a52237/page.htm
    是否是队列中的邮件同事点了投递
    serafin
        6
    serafin  
       11 天前
    因为是从内网 IP 发的。10 开口的 IP 为什么要打马?
    miscnote
        7
    miscnote  
       11 天前
    spf 只是一个标记,通不通过是你的策略服务器的事。
    leonshaw
        8
    leonshaw  
       11 天前 via Android
    客户端地址跟 SPF 没关系,邮件提交和转发是两个过程。如果是提交到对方邮件服务器并转发的,从技术上看就是正常邮件。
    xcodeghost
        9
    xcodeghost  
       11 天前
    是你们域名使用的邮件系统对垃圾邮件过滤不严导致的,不是攻击者有多厉害。
    gtese
        10
    gtese  
       11 天前
    spf 是检查 发件域名是否域名所有者申请。
    域名本身没有做 sfp 申请,spf 就是无效的反垃圾策略。
    180.103.12.117 本身没有上过黑名单,投递到你们这里也算正常的。

    “10 开口的 IP 为什么要打马?” 10 是对方当时用的内网 ip ,打码确实没必要。
    lixingcong
        11
    lixingcong  
       11 天前
    据说某迪的内网邮箱收到过诈骗邮件:标题《 2024 年综合补贴申领通知》,还真的有人点进去填信息,老骗局。
    bootyshinehf
        12
    bootyshinehf  
    OP
       11 天前
    @1423 是公司本地部署自建的邮件系统,用的是亿邮的产品,不是那种 SaaS 化的企业邮箱。
    bootyshinehf
        13
    bootyshinehf  
    OP
       11 天前
    @winterx

    # 1 、关于伪造相同邮件头的问题:
    我这边回溯我们的全流量产品,有抓到的原始流量信息,源 IP ( 180.103.12.117 )直接连的我们这边的邮件网关( 10.**.**.131:25 )。

    TCP 日志还原后的部分交互内容,如下:

    ```
    220 smtp ready
    HELO cpibj.com.cn
    250 spic.com.cn HELO, pleased to meet cpibj.com.cn
    MAIL FROM: <[email protected]>
    250 OK
    RCPT TO: <chenhuan01@****.com.cn>
    250 OK
    DATA
    354 go ahead
    Date: T
    ```

    我按照以上格式,通过 telnet 命令还有 python 脚本去发件,都是提示「 556 remote ip check error.(SPF online:发信 ip 与 Mail From 地址不一致)」,所以接下来不知道怎么办了。

    # 2 、关于邮件网关中的拦截问题

    目前这封邮件是没有被拦截的,是「投递成功」状态,也没有被标记为垃圾邮件。
    bootyshinehf
        14
    bootyshinehf  
    OP
       11 天前
    @chuckzhou

    我查了这封邮件的流量交互情况,是不涉及 auth 认证环节的,详见 13
    bootyshinehf
        15
    bootyshinehf  
    OP
       11 天前
    @lemonda

    我查了邮件网关的「拦截再投递日志」,发现没有记录,意味着这封钓鱼邮件是没有被邮件网关拦截、直接被放行了的。
    bootyshinehf
        16
    bootyshinehf  
    OP
       11 天前
    @serafin

    根据邮件头信息「 Received: from 180.103.12.117 by 10.**.**.131 with SMTP; Thu, 25 Apr 2024 10:14:31 +0800 」来看,发件地址是 180.103.12.117 ,应该是很明确的。

    10.**.**.131 ,这个是我们的邮件安全网关。
    retanoj
        17
    retanoj  
       11 天前
    是变更过 SPF 记录了吗?
    我这边获得的结果跟 OP 贴的内容不一致

    dig @114.114.114.114 cpibj.com.cn txt

    ;; QUESTION SECTION:
    ;cpibj.com.cn. IN TXT

    ;; ANSWER SECTION:
    cpibj.com.cn. 600 IN TXT "v=spf1 ip4:123.117.136.189 ip4:114.255.252.30 ip4:114.255.252.17 mx a include:spf.protection.outlook.com ~all"


    ~all 是个软拒绝策略
    bootyshinehf
        18
    bootyshinehf  
    OP
       11 天前
    @retanoj

    没有做变更,我这边刚刚用 nslookup 查了一遍,显示的是 -all

    换用 dig 工具,就是 ~all

    这是什么操作。。。
    sleepm
        19
    sleepm  
       11 天前
    https://www.uriports.com/blog/introduction-to-spf-dkim-and-dmarc/
    spf dkim dmarc 都要配置
    不是太懂,反正我都加了
    wan4da
        20
    wan4da  
       11 天前
    from 是可以伪造的,看看 sender 是啥。https://www.cnblogs.com/xiaozi/p/12906040.html 可以看看这篇文章
    leonshaw
        21
    leonshaw  
       11 天前
    既然有流量回溯,就看看当时邮件服务器发起的 DNS 解析
    follow
        22
    follow  
       10 天前
    @bootyshinehf 你这内网和外网解析结果不一致,
    retanoj
        23
    retanoj  
       10 天前
    @bootyshinehf #18 #22
    同 22L ,找一台外网机器查吧

    你本地(可能是公司里?)的 DNS 估计有一些劫持或者什么问题
    bootyshinehf
        24
    bootyshinehf  
    OP
       10 天前
    @retanoj @follow

    不对啊。。。

    我用在线工具 Dig https://toolbox.googleapps.com/apps/dig/?lang=zh-CN

    还有在线 nslookup http://www.jsons.cn/nslookup/

    查询的结果也是不一致的。。。
    lemonda
        25
    lemonda  
       10 天前
    @bootyshinehf
    看下万网里是否设置了分线路解析不同的 SPF 记录
    retanoj
        26
    retanoj  
       10 天前
    @bootyshinehf #24
    # 25 +1

    查域名解析配置
    winterx
        27
    winterx  
       10 天前
    @bootyshinehf #13 不用查流量回溯这么复杂,smtp 都是先经过邮件网关再投递到服务器,你只需要查为什么网关会放行这封邮件

    首先你要知道没有网关能 100%拦截垃圾邮件

    1 、策略问题
    2 、识别问题
    broeeee
        28
    broeeee  
       10 天前
    27 是明白人,先看策略
    C0nvN3t
        29
    C0nvN3t  
       10 天前
    确实有点奇怪 按理 spf 应该直接就 deny 掉才对。。 插眼学习
    bootyshinehf
        30
    bootyshinehf  
    OP
       10 天前
    @winterx

    感谢,已查了策略,网关上配置了 @cpibj.com.cn 域为白名单,命中就投递。

    那么问题又来了:为啥黑产投递的钓鱼邮件会命中「白名单规则」,而我使用 telnet 或 Python 尝试复现时却没命中这条白名单规则。。。

    提示「 556 remote ip check error.(SPF online: 发信 ip 与 Mail From 地址不一致)」。
    bootyshinehf
        31
    bootyshinehf  
    OP
       10 天前
    @wan4da

    感谢,我又仔细看了一遍,没有 sender 字段,可以看上面的「邮件源码」。
    retanoj
        32
    retanoj  
       10 天前
    em. 我还好奇他的访问入口
    litblue
        33
    litblue  
       10 天前
    你的 mx 记录指向 mail.cpibj.com.cn 123.117.136.189
    telnet 123.117.136.189 25 后

    220 Welcome to chinapower
    ehlo cpibj.com.cn
    250-mailadmin.chinapower.hk Hello cpibj.com.cn [*], pleased to meet you
    250-SIZE 40000000
    250-AUTH PLAIN LOGIN
    250-AUTH=PLAIN LOGIN
    250-STARTTLS
    250-PIPELINING
    250-8BITMIME
    250 HELP
    MAIL FROM: <[email protected]>
    250 Sender <[email protected]> OK
    quit

    没有拒绝,还是查查网关的策略吧。
    retanoj
        34
    retanoj  
       10 天前 via iPhone
    @litblue OP 事件的 SMTP 入口不是 cpibj 这个域名

    尽管大部分都打吗了,但还是有漏点:)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3809 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 04:23 · PVG 12:23 · LAX 21:23 · JFK 00:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.