공유 이메일 제공 업체 (Gmail) 용 SPF / DMARC-이 이메일이 어떻게 SPF를 통과 했나요?

Dec 14 2020

우리는 최근에 우리 조직에서 보낸 것처럼 자칭 "화이트 햇 해커"로부터 이메일을 받았습니다.

메일 헤더에 따르면 spf, dmarc, dkim 및 arc는 모두 정상적으로 전달되었으며 gmail은 어쨌든 플래그를 지정하지 않았습니다.

이메일에 Google 도메인을 사용하고 도메인에 대한 문제의 spf / dmarc 레코드는 다음과 같습니다.

SPF v = spf1 include : _spf.google.com -all

DMARC _dmarc.companyX.com v = DMARC1; p = 없음; pct = 100; rua = mailto : [email protected]

(DMARC 설정이 현재 아무 격리도하지 않는다는 것을 알고 있지만 모든 검사가 통과되었으므로 이것이 도움이되었다고 생각하지 않습니다.)

SPF 패스 (그 중 두 개가 있습니다. 하나는 도메인에서, 다른 하나는 원래 발신자 도메인에서 가져옴)

Received-SPF : pass (google.com : domain of [email protected]은 209.85.220.69를 허용 된 발신자로 지정) client-ip = 209.85.220.69;

Received-SPF : 통과 (google.com : [email protected]의 도메인은 허용 된 발신자로 195.216.236.82를 지정 함) client-ip = 195.216.236.82;

내가 이해할 수있는 바에 따르면 _spf.google.com (및 관련 IP)을 허용 된 발신자로 지정 했으므로 해당 서버를 사용하여 (즉, 모든 gmail 사용자가) 보낸 모든 이메일은 유효합니다. 제 이해는 분명히 틀렸지 만, 왜 / 어떻게, 또는 더 중요한 것은이 스푸핑이 통과되지 않도록하기 위해 무엇을 변경해야하는지 잘 모르겠습니다.

공격자가 인바운드 게이트웨이를 사용하여 내부 SPF 검사를 우회하는 Gmail의 취약성에 대한 언급을 찾았지만이 문제는 8 월에 수정되었으며 제가 볼 수있는 한 실제로 SPF 검사가 이루어지고 있습니다. - https://ezh.es/blog/2020/08/the-confused-mailman-sending-spf-and-dmarc-passing-mail-as-any-gmail-or-g-suite-customer/ 과 https://www.forbes.com/sites/leemathews/2020/08/20/google-fixed-a-dangerous-gmail-bug-that-allowed-email-spoofing/

비슷한 질문이 있습니다 . 피싱 이메일이 SPF, DKIM 및 DMARC를 어떻게 통과 했나요? 하지만 그 질문의 이메일이 실제로 다른 도메인 (From : Bank of America 대신 From : uber)에서 왔기 때문에 관련성이 없다고 생각합니다. From :이 이메일의 From :이 명시 적으로 CompanyX였습니다.) 이와 같은 발신자를 차단하는 방법에 대한 질문에 대한 해결책이 없습니다.

질문

  1. Gmail 사용자가 _spf.google.com을 발신자로 승인하는 다른 회사를 사칭하지 못하도록하는 이유는 무엇입니까?

  2. 이런 일이 발생하지 않도록 설정에서 무엇을 변경할 수 있습니까?

감사


반 완성 헤더-공간상의 이유로 관련이 없다고 생각하는 일부를 제거했습니다.

Delivered-To: [email protected]
Return-Path: <[email protected]>
Received: from mail-sor-f69.google.com (mail-sor-f69.google.com. [209.85.220.69])
        by mx.google.com with SMTPS id a77sor4025261wme.15.2020.12.10.15.34.18
        for <[email protected]>
        (Google Transport Security);
        Thu, 10 Dec 2020 15:34:19 -0800 (PST)
Received-SPF: pass (google.com: domain of [email protected] designates 209.85.220.69 as permitted sender) client-ip=209.85.220.69;
Authentication-Results: mx.google.com;
       dkim=pass [email protected] header.s=20150623 header.b="xcnlWAQ/";
       arc=pass (i=2 spf=pass spfdomain=inbox.eu dkim=pass dkdomain=inbox.eu dmarc=pass fromdomain=inbox.eu);
       spf=pass (google.com: domain of [email protected] designates 209.85.220.69 as permitted sender) [email protected];
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=companyX.com
ARC-Authentication-Results: i=1; mx.google.com;
       dkim=pass [email protected] header.s=20140211 header.b=OQtRvw0v;
       spf=pass (google.com: domain of [email protected] designates 195.216.236.82 as permitted sender) [email protected];
       dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=inbox.eu
Received: from eu-shark2.inbox.eu (eu-shark2.inbox.eu. [195.216.236.82])
        by mx.google.com with ESMTPS id v7si6670766wra.295.2020.12.10.15.34.17
        for <[email protected]>
        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
        Thu, 10 Dec 2020 15:34:17 -0800 (PST)
Received-SPF: pass (google.com: domain of [email protected] designates 195.216.236.82 as permitted sender) client-ip=195.216.236.82;
Received: from eu-shark2.inbox.eu (localhost [127.0.0.1])
    by eu-shark2-out.inbox.eu (Postfix) with ESMTP id B3004442C39
    for <[email protected]>; Fri, 11 Dec 2020 01:34:16 +0200 (EET)
Received: from localhost (localhost [127.0.0.1])
    by eu-shark2-in.inbox.eu (Postfix) with ESMTP id A70E64428EF
    for <[email protected]>; Fri, 11 Dec 2020 01:34:16 +0200 (EET)
Received: from eu-shark2.inbox.eu ([127.0.0.1])
    by localhost (eu-shark2.inbox.eu [127.0.0.1]) (spamfilter, port 35)
    with ESMTP id CNGUsZY_Hba1 for <[email protected]>;
    Fri, 11 Dec 2020 01:34:16 +0200 (EET)
Received: from mail.inbox.eu (eu-pop1 [127.0.0.1])
    by eu-shark2-in.inbox.eu (Postfix) with ESMTP id 08A1B440DC5
    for <[email protected]>; Fri, 11 Dec 2020 01:34:16 +0200 (EET)
Received: from DESKTOPR10AFHO (unknown [39.34.131.177])
    (Authenticated sender: [email protected])
    by mail.inbox.eu (Postfix) with ESMTPA id 36E2F1BE00DA
    for <[email protected]>; Fri, 11 Dec 2020 01:34:14 +0200 (EET)
From: "'Mr White Hat' via Sales & Enquiries" <[email protected]>
To: <[email protected]>
X-Original-Sender: [email protected]
X-Original-Authentication-Results: mx.google.com;       dkim=pass
 [email protected] header.s=20140211 header.b=OQtRvw0v;       spf=pass
 (google.com: domain of [email protected] designates 195.216.236.82
 as permitted sender) [email protected];
       dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=inbox.eu
X-Original-From: "Mr White Hat" <[email protected]>
Reply-To: "Mr White Hat" <[email protected]>```

답변

2 AdamKatz Dec 21 2020 at 23:38

수정 한 헤더를 Google의 Messageheader 도구가 읽을 수있는 내용 으로 마사지하는 방법을 알 수는 없지만 좋은 첫 번째 단계입니다. Google은 내가 가진 것보다 약간 더 많은 권한을 가지고 (특히 귀하의 편집을 통해) 수행 한 작업을 안내합니다.

헤더를 수동으로 읽고 (위조 된 것이 없다고 가정) 이것은 inbox.eu를 통해 전달되고 SPF를 전달합니다. ARC-Authentication-Results사용 헤더, 인증받은 체인을 말한다 부분 참고 : (구글에 구글이 경우) 신뢰를 확장 할 수는 몇 가지 흥미로운 데이터가 header.from=inbox.eu - 헤더부터 어떻게 든 변경 이 헤더가 추가되었지만 전에Authentication-Results 헤더가 추가되었다.

ARC가 원래 From 도메인이라고 말하는 것을 사용하면 SPF 및 원래 From 헤더 와의 정렬 덕분에 inbox.eu의 DMARC를 전달 합니다. 그러면 해당 헤더가 마술처럼 회사로 변경되고 (아마도 공격자의 계정에있는 GMail 필터를 통해?) 이미 Google 인프라에 있기 때문에 SPF를 통과합니다.

이것은 당신이 참조한 패치 된 vuln과 매우 유사합니다.


SPF는 공유 호스트에서 좋지 않습니다. 구글은 SMTP를 확인하여 그을 완화하려고 mail from명령과 From당신이라도 유용하다 헤더 주소를하지만, 뭔가 (맨 위의 것을, 아크 헤더 후 그 최종 홉의 잘못 Authentication-ResultsReceived-SPF최상위에 묶여 Received헤더).

Google에 v=spf1 ?all속하지 않고 SPF 레코드 ( "SPF는 통과도 실패도 안 됨")를 설정하고 대신 DKIM을 사용하는 것이 좋습니다. DMARC는 DKIM 또는 SPF 중 하나 가 필요 하므로 Google 인프라 내에서 From 헤더 도메인을 조정할 수있는 공격은 DMARC에서 고개를 끄는 SPF 패스를 만드는 데 도움이되지 않습니다. DKIM을 위조하려면 암호화를 깨거나 도메인을 대신하여 서명 할 권한이있는 일부 서버를 속 여야합니다.

DKIM없이 메일을 보내야하는 호스트가있는 경우 해당 SPF 레코드에 명시 적으로 (IP 주소 또는 매우 엄격한 IP CIDR로) 추가하되 DKIM에 도메인을 사용하도록 Google을 구성 할 수 있다고해서 모든 Google을 축복하지는 마십시오. .

모든 책임있는 이메일 서비스 제공 업체 와 이메일 마케팅 시스템은 DKIM도 지원합니다. DMARC로 돌아가 p=none실제로 집계 로그를 모니터링하여 놓친 이메일 시스템을 파악하는 것을 잊지 마십시오 .