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

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

  •  1
     
  •   bootyshinehf · 9 天前 · 2701 次点击

    最近发现攻击者 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 条附言  ·  8 天前

    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 条附言  ·  8 天前
    联系上邮件系统专业人员了,导致这种情况的具体原因还在定位排查中,感觉不简单。。。

    附:黑产投递成功部分原始日志
    `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  
       9 天前
    是哪家的域名邮箱吗,还是公司自己管理的
    winterx
        2
    winterx  
       9 天前
    网关有多种判断识别方式,spf 只是其中一种,楼主要完全伪造相同邮件头才知道能不能过

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

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

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

    我查了邮件网关的「拦截再投递日志」,发现没有记录,意味着这封钓鱼邮件是没有被邮件网关拦截、直接被放行了的。
    bootyshinehf
        16
    bootyshinehf  
    OP
       8 天前
    @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  
       8 天前
    是变更过 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
       8 天前
    @retanoj

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

    换用 dig 工具,就是 ~all

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

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

    不对啊。。。

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

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

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

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

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

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

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

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

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

    感谢,我又仔细看了一遍,没有 sender 字段,可以看上面的「邮件源码」。
    retanoj
        32
    retanoj  
       8 天前
    em. 我还好奇他的访问入口
    litblue
        33
    litblue  
       8 天前
    你的 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  
       8 天前 via iPhone
    @litblue OP 事件的 SMTP 入口不是 cpibj 这个域名

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