Zurück zum Blog

22. September 2026

Diese UPS-Mail hat SPF bestanden - weil eine fremde Domain jeden durchlässt

Tobias Wilke

Tobias Wilke

@wilketob

Diese UPS-Mail hat SPF bestanden - weil eine fremde Domain jeden durchlässt
#phishing#ups#spf#dmarc#paket-betrug#kmu-security

Kurz gesagt: Eine aufwendig gestaltete niederländische UPS-Mail behauptet, eine Sendung brauche Zollangaben, und führt über einen Button in einen Datensammel-Funnel. Die Authentifizierung besteht sie sauber und sogar doppelt (spf=pass und SPF_HELO_PASS) - nicht durch einen Trick, sondern weil der SPF-Record der missbrauchten Domain auf +all endet und damit jede IP der Welt autorisiert. Der Spamfilter kam auf 6,2 von 7,0 und ließ sie durch; gefehlt hat ausgerechnet die Reputationsabfrage der Link-Domain, die Spamhaus nicht beantwortet hat. Dass der +all ein Versehen war, lässt sich zeigen: Dieselbe Organisation betreibt eine zweite Domain, die korrekt auf -all steht.

Die meisten Phishing-Mails scheitern an der Absenderprüfung. Diese hier besteht sie - sauber, zweifach, ohne Trick. spf=pass, dazu SPF_HELO_PASS. Für den Spamfilter sah sie damit besser authentifiziert aus als so manche echte Mail.

Der Grund steht in einer einzigen DNS-Zeile, und zwar nicht bei den Angreifern, sondern bei einer US-Tierklinik, die mit der Sache nichts zu tun hat. URLs und bösartige Domains sind im Folgenden defangt, damit nichts aus Versehen angeklickt wird.

Die Phishing-Mail im Mailclient: Absender „UPS T&T“, Betreff „Re. UPS leveringsupdate | actie vereist“. Die Mail ist auf Niederländisch, zeigt einen UPS-Schriftzug in Lila und Gelb, ein Warnfeld mit dem Datum 06-08-2024 und dem Zusatz „Gepland voor vandaag“, eine vierstufige Fortschrittsleiste mit zwei bereits aktiven Schritten, die Tracking-Nummer AU000251682507 in einem eigenen Kasten und einen violetten Button „Douane-informatie verstrekken“. Absenderdomain, Empfängeradresse und der fremde Anrede-Alias sind unkenntlich gemacht.

Was in der Mail steht

Betreff: „Re. UPS leveringsupdate | actie vereist" - also Lieferupdate, Handlung erforderlich. Das Re. soll einen laufenden Austausch vortäuschen; In-Reply-To oder References gibt es natürlich keine.

Der Text ist niederländisch, fehlerfrei und idiomatisch, bis in die Zollbegriffe:

Uw zending met trackingnummer AU000251682507 heeft aanvullende informatie nodig voor de douaneafhandeling. Zonder deze gegevens kan de levering vertraging oplopen.

Die Sendung braucht also Zusatzangaben für die Zollabfertigung. Dann zwei Fristen: „Reageer vóór 23:59 vandaag" und am Ende „na 48 uur wordt uw pakket teruggestuurd". Der Button heißt „Douane-informatie verstrekken".

Gestalterisch ist das die aufwendigste Mail, die ich bisher hier zerlegt habe - aber nicht die überzeugendste Fälschung. Das ist ein Unterschied, und er ist der Rede wert. (Korrigiert am 22.09.2026 - siehe Nachtrag am Ende.)

Aufwendig ist sie zweifellos: eine vierstufige Fortschrittsleiste, ein eigener Kasten für die Tracking-Nummer samt funktionierendem Kopier-Button, die Wortmarke als Text nachgebaut statt als Bild, sauberer Umbruch auf dem Handy.

Nur sieht sie nicht nach UPS aus. Die Hausfarbe von UPS ist Pullman Brown, ein sehr dunkles Braun (#351C15). In dieser Mail kommt Braun kein einziges Mal vor. Stattdessen dominiert Violett: #50158e zehnmal, #2a007c achtmal. Richtig ist allein das Gelb (#FFB500), das ist tatsächlich UPS-Gold.

Und der übrige Stil passt zum Violett: vier Farbverläufe, sieben Schlagschatten, Eckenradien von 14 bis 60 Pixeln ohne erkennbares System, fünf Emoji im Fließtext. Das ist die Optik generischer Baukastenvorlagen, nicht die einer Logistik-Transaktionsmail. Wer UPS-Mails kennt, stutzt bei dieser hier zuerst wegen der Farbe - nicht wegen des Inhalts.

Ein technischer Befund zeigt in dieselbe Richtung: Die Mail benutzt achtmal display: flex, dreimal :hover und zweimal transition. Nichts davon funktioniert in Mailclients zuverlässig, und Hover-Effekte in einer E-Mail feuern schlicht nie. Wer regelmäßig Transaktionsmails baut, weiß das und arbeitet mit Tabellen. Hier hat jemand eine Webseite gebaut und sie in ein Postfach geschickt.

Die Fortschrittsleiste ist der stärkste Hebel der ganzen Mail. Sie zeigt zwei bereits erledigte Stufen und verschiebt damit die Frage von „Ist das echt?" zu „Was muss ich noch tun?". Wer glaubt, ein Vorgang laufe schon zur Hälfte, prüft nicht mehr, ob es ihn überhaupt gibt.

+all - die Generalvollmacht

Jetzt zum eigentlichen Befund. Der Absender lautet auf UPSUPSUPS[@]<tierklinik-us>[.]com, und die Authentifizierung sagt:

spf=pass (sender IP is 103.98.215.36)
    smtp.mailfrom=ups63x421933@<tierklinik-us>.com
    smtp.helo=<tierklinik-us>.com

Versendet wurde aus 103[.]98[.]215[.]36 - ein Billig-VPS bei Kamatera in Toronto, der mit der Tierklinik nichts zu tun hat. Trotzdem: bestanden. Warum, steht im SPF-Record der Domain:

v=spf1 +ip4:66.226.77.38 +include:spf.mailjet.com +all

Das letzte Element ist +all. Ein SPF-Record wird von links nach rechts abgearbeitet, und all passt auf alles. Mit dem Qualifier + heißt das: jede IP-Adresse der Welt darf für diese Domain senden. Was davor steht - eine eigene IP, Mailjet als Versanddienstleister - ist damit bedeutungslos.

Richtig wäre -all (Hardfail) oder übergangsweise ~all (Softfail). Das Tückische an +all ist, dass er nie auffällt: keine Zustellstörung, keine Fehlermeldung, keine Beschwerde. Er bricht nichts, er öffnet nur. Deshalb überlebt so ein Record jahrelang.

Dazu DMARC auf p=none - kein Durchsetzungsauftrag und keine Report-Adresse. Die Tierklinik erfährt nicht einmal, dass unter ihrem Namen versendet wird.

Dass das ein Versehen war, lässt sich zeigen

Der Mailserver der Absenderdomain zeigt auf eine zweite Domain desselben Betreibers. Deren SPF-Record lautet:

v=spf1 include:spf.protection.outlook.com -all

Sauber geschlossen. Derselbe Betreiber, zwei Domains, gegenläufige Einstellung - die eine gepflegt, die andere vergessen. Vermutlich ein Rest aus einer Testphase oder von einem früheren Dienstleister.

Das ist der Normalfall, nicht die Ausnahme. Eine Tierklinik hat keine IT-Abteilung, die SPF-Records auditiert, und nichts im Betrieb weist je darauf hin, dass etwas offen steht. Die Einrichtung ist hier selbst Opfer: nicht gehackt, kein Zugriff auf ihre Systeme, ihre Domain bei VirusTotal mit 0 von 89 völlig sauber. Es genügt, dass jemand den SPF-Record ausliest - und der ist öffentlich.

Der Filter war 0,8 Punkte davon entfernt

Das Postfach, in dem die Mail gelandet ist, filtert scharf - SpamAssassin mit Schwellwert 7,0. Die Bewertung ist also eine echte Entscheidung:

X-Spam-Status: No, score=6.2 required=7.0 tests=DOS_BODY_HIGH_NO_MID,
	HTML_MESSAGE,MIME_HEADER_CTYPE_ONLY,MIME_HTML_ONLY,MISSING_MID,
	RCVD_IN_BL_SPAMCOP_NET,RDNS_NONE,SPF_HELO_PASS,SPF_PASS,
	URIBL_DBL_BLOCKED

6,2 von 7,0. Zugestellt, aber knapp. Gepunktet hat durchweg die Struktur: keine Message-ID, keine Rückwärtsauflösung der Versand-IP, die IP auf SpamCop, reines HTML ohne Textteil. Entlastet haben SPF_PASS und SPF_HELO_PASS - das +all hat also aktiv geholfen.

Der interessanteste Eintrag ist der letzte: URIBL_DBL_BLOCKED. Das heißt nicht „Link-Domain sauber", sondern: Die Abfrage gegen die Spamhaus Domain Block List wurde abgewiesen - typischerweise, weil der fragende Resolver als offener Resolver gilt.

Der Filter hat die Reputation der Link-Domain also nie erfahren. Und die ist einschlägig: groups[.]id steht bei VirusTotal auf 12 von 89, elfmal mit dem Label „phishing". Ein DBL-Treffer bringt typischerweise 1,7 bis 2,5 Punkte - genug, um aus 6,2 eine 7,9 zu machen und die Mail zu stoppen. Nach dem cPanel-Webmail-Fall ist das der zweite Fall in dieser Reihe, in dem eine unbeantwortete Spamhaus-Abfrage den Ausschlag gibt.

Der Entwickler hat seine Notizen dringelassen

Im HTML-Quelltext stehen zehn Kommentare, die den Aufbau gliedern - alle auf Niederländisch:

<!-- Header met UPS branding -->
<!-- Persoonlijke begroeting -->
<!-- Tijdlijn / voortgang -->
<!-- CTA knop - leads generatie -->
<!-- extra geruststelling / urgentie -->
<!-- tracking pixel -->

Der vierte ist der aufschlussreiche. leads generatie - der Ersteller nennt seinen eigenen Button ein Lead-Generierungs-Element. Das ist kein Credential-Phishing und will auch nicht ans Konto, sondern ist ein Datensammel-Funnel: Name, Anschrift, Telefonnummer, mit hoher Wahrscheinlichkeit anschließend eine kleine „Zollgebühr" per Karte. Solche Datensätze werden pro Stück vergütet. (Die Kommentare sind übrigens niederländisch, nicht englisch - das Template wurde in der Zielsprache gebaut, nicht übersetzt.)

Dazu passt die Telemetrie: ein 1×1-Pixel auf /track/, und alle drei URLs tragen dieselbe Empfänger-ID 421933, die auch im Envelope-Absender UPS63x421933@… steht. Öffnung, Klick, Abmeldung und Bounce laufen damit auf denselben Datensatz. Das baut niemand für einen Einzelversuch.

Und der „afmeldlink" im Footer? Führt auf dieselbe Domain mit derselben ID wie der Button. Wer sich abmelden will, bestätigt nur, dass die Adresse aktiv ist. Der RFC-konforme Weg über den List-Unsubscribe-Header wäre sauberer - nur löst dessen Domain auf NXDOMAIN auf.

Vier Risse in der Fassade

So gut die Gestaltung ist, so schlampig ist der Versand. Vier Dinge sieht man ohne jedes Werkzeug:

Das Datum ist zwei Jahre alt. Im Warnfeld steht 06-08-2024 mit dem Zusatz „Gepland voor vandaag" - für heute geplant. Versandt wurde am 19. September 2026, und die Fußzeile trägt „© 2024". Ein nicht befüllter Platzhalter.

Die Anrede gehört jemand anderem. Begrüßt wird „Beste <fremder-alias>", der Empfänger ist aber eine ganz andere Adresse. Der Name stammt also nicht aus der Zustelladresse, sondern aus dem eingekauften Verteiler - ein direkter Beleg für Adresshandel.

Der angekündigte Anhang existiert nicht. Die Mail sagt ausdrücklich „Bekijk het bijgevoegde bestand", sehen Sie die beigefügte Datei an. Es gibt keine, stattdessen kommt ein Button. Das Template stammt erkennbar aus einer Variante mit Anhang.

Die Tracking-Nummer ist keine. AU000251682507 - echte UPS-Sendungsnummern beginnen mit 1Z und haben 18 Stellen.

Dazu die Postanschrift in der Fußzeile, „1013 Beards Hill Rd, Aberdeen, MD": eine US-Adresse in einer niederländischsprachigen Mail angeblich von UPS. Standard-Dekoration aus dem Bulk-Mailer-Baukasten.

Die Kampagne kostet fast nichts

Die Absender-Identität ist geschenkt. Der Landing-Name pylook[.]groups[.]id ebenfalls: eine kostenlose Subdomain bei FreeDNS, einem öffentlichen Dienst, bei dem man sich Subdomains unter fremden Sammeldomains anlegen kann - kein Registrar, kein WHOIS, keine Zahlungsspur. Bezahlt wurden nur zwei VPS, der Versandserver in Toronto und die Landing auf 84[.]252[.]101[.]181 bei einem Anbieter in Moskau. Damit kommt die Kampagne ohne eine einzige registrierte Domain aus: kein Typosquat, kein Zertifikat, alles über unverschlüsseltes http://.

Ein Detail am Rande: Die Rückwärtsauflösung der Landing-IP lautet deepcoppe.example.com. example.com ist nach RFC 2606 reserviert und darf nie im echten Netz auftauchen. Da musste jemand ein Pflichtfeld ausfüllen und hat Müll eingetragen.

Was hier nicht geholfen hätte

Die üblichen Ratschläge der Reihe nach: „Achtet auf SPF und DMARC" - SPF besteht, doppelt sogar. „Achtet auf frisch registrierte Domains" - die Absenderdomain ist von 2021, der FreeDNS-Pool existiert seit Jahren. „Prüft das WHOIS" - für eine kostenlose Subdomain gibt es keins. „Achtet auf Rechtschreibfehler" - das Niederländisch ist fehlerfrei, inklusive Zollfachsprache.

Immerhin: „Zeitdruck ist ein Warnsignal" stimmt hier. Aber die OpenAI-Mail von gestern hat bewusst auf jeden Druck verzichtet, um eben nicht wie Phishing zu wirken. Das Signal taugt zur Bestätigung, nicht zum Ausschluss.

Was tatsächlich hilft

Schaut euren eigenen SPF-Record an. Endet er auf +all - oder auf all ohne Qualifier - steht eure Domain jedem offen. Ihr merkt das nie von selbst, weil es nichts kaputt macht. Die eigene Domain könnt ihr durch den Mail-Check hier auf der Seite schicken, der zeigt SPF, DKIM, DMARC und MX auf einen Blick.

Setzt DMARC mit einer Report-Adresse. Schon p=none mit rua= bringt Berichte darüber, wer unter eurem Namen versendet - der Tierklinik hätte das den +all vermutlich verraten. Erst auswerten, dann schrittweise auf quarantine und reject hochziehen.

Paketstatus immer beim Zusteller selbst nachsehen. Nummer notieren, Seite selbst aufrufen, Nummer eingeben. Das bricht die Kette an der einzigen Stelle, an der sie auf eine Handlung angewiesen ist - und dort fällt sofort auf, dass AU000251682507 kein UPS-Format ist. Merksatz: Zollgebühren kommen per Brief, an der Tür oder in der App des Zustellers, nicht als E-Mail-Formular mit Frist bis 23:59.

Klickt bei Betrugsmails nicht auf „Abmelden". Der Abmeldelink führt hier auf dieselbe Domain mit derselben Empfänger-ID wie der Button. Für den Betreiber ist das ein Lebenszeichen, das die Adresse wertvoller macht. Als Spam markieren und löschen. Bei seriösen Newslettern gilt das Gegenteil.

Wer einen Mailserver betreibt: Schaut in die Header, ob dort URIBL_DBL_BLOCKED oder *_BLOCKED_OPENRESOLVER steht. Dann laufen eure Reputationsabfragen ins Leere - und genau die hätten hier den Unterschied gemacht.

Fazit

Zwei Kampagnen an zwei Tagen, zwei gegensätzliche Strategien: Gestern eine unscheinbare Mail, deren Trick tief im DNS lag. Heute viel sichtbarer Aufwand, der an der falschen Stelle landet - eine Fassade in der falschen Markenfarbe, dazu ein Versand, der vor Schlampigkeit strotzt: zwei Jahre altes Datum, fremde Anrede, erfundene Sendungsnummer, ein Anhang, der nicht existiert.

Was beide verbindet, ist die Absenderdomain. Einmal eine, die es im DNS gar nicht gibt, einmal eine, die jeden hereinlässt. In beiden Fällen hat kein Angreifer irgendetwas kompromittiert. Sie haben nur gelesen, was ohnehin öffentlich im DNS steht, und sich das Passende herausgesucht.

Der Aufwand für die Gegenseite ist ein dig auf die eigene Domain.

Nachtrag, 22. September 2026

In der ersten Fassung stand hier, die Mail habe „korrekte UPS-Markenfarben". Das war falsch, und ein Leserhinweis hat mich darauf gestoßen.

UPS' Hausfarbe ist Pullman Brown (#351C15), ein sehr dunkles Braun. Die Mail enthält keinen einzigen Braunton. Sie ist durchgehend violett gehalten (#50158e zehnmal, #2a007c achtmal); allein das Gelb #FFB500 stimmt mit UPS-Gold überein. Ich hatte das Violett in der Analyse sogar als „Dunkellila" notiert - und in derselben Zeile als korrekt bezeichnet. Ein Fehler, der beim Schreiben ungeprüft aus meinen eigenen Notizen in den Artikel gewandert ist.

Der Hinweis ging weiter: Die Optik erinnere eher an generische, maschinell erzeugte Vorlagen als an UPS. Das hält der Überprüfung stand, und es führt zu einem besseren Befund als dem ursprünglichen. Farbverläufe an vier Stellen, sieben Schlagschatten, sieben verschiedene Eckenradien zwischen 14 und 60 Pixeln, fünf Emoji im Fließtext - kein Transaktionsmail-Design einer Logistikmarke, sondern Baukasten-Ästhetik.

Dazu passt, dass achtmal display: flex, dreimal :hover und zweimal transition im Markup stehen. Das sind Werkzeuge für Webseiten. In Mailclients greifen sie größtenteils nicht, Hover-Effekte in einer E-Mail feuern nie. Wer Transaktionsmails baut, arbeitet mit Tabellen.

Damit verschiebt sich die Einschätzung: Der Aufwand ist real, die Markentreue aber schwach. Das passt zu dem, was dieser Artikel ohnehin über die Kampagne sagt - veraltetes Platzhalterdatum, fremde Anrede, erfundene Sendungsnummer, angekündigter aber fehlender Anhang. Die Mail sieht auf den ersten Blick teuer aus. Bei der zweiten Frage - sieht sie aus wie UPS? - fällt sie durch.

Der Abschnitt „Was in der Mail steht" ist entsprechend korrigiert. Danke für den Hinweis.


Die missbrauchte Absender-Domain ist redigiert (<tierklinik-us>[.]com), ebenso der Anrede-Alias aus dem Verteiler. Die Einrichtung ist hier selbst Opfer - ihre Systeme wurden nicht angetastet, es genügte ein SPF-Record, der auf +all endet, und solche Records einzurichten oder zu korrigieren erfordert Fachkenntnisse, die ein Betrieb ohne eigene IT nicht vorhalten kann. Die vollständigen IOCs liegen intern.