gefälschtes "Von" -Feld in einer E-Mail

9

Wie kann ich das Feld "Von" in einer E-Mail bearbeiten und den Benutzer "Bis" dazu bringen, etwas anderes als das tatsächliche zu sehen?

Beispiel:

wirklich aus

From: [email protected]

aber sie sehen

From: Tremayne "Top Dog" Stamper

Ich habe von der Manipulation von SMTP gehört, bin mir aber nicht sicher, wie genau das ist oder wie es gemacht werden kann

TStamper
quelle
2
Ich sehe dies als ein gültiges Problem. Wir tun dies die ganze Zeit (insbesondere lässt eine E-Mail von einer Software so aussehen, als würde sie für einen Benutzer gesendet).
C. Ross
Ich bin damit einverstanden, dass es ein gültiges Problem sein kann, wenn Sie das Feld Von ändern möchten, um so etwas wie einen echten Namen anstelle einer Adresse anzuzeigen. Das machen wir auch in unseren Systemen ständig. Aufgrund des Beispiels in der Frage ist es nur eine kleine Flagge, die von einer Adresse zur anderen wechselt. Spam-Köder.
Squillman
aktualisiert mit besserem Beispiel
TStamper
Deshalb haben sie SPF-Rekorde erstellt
Elijah Glover

Antworten:

14

SMTP ist an seiner Basis nur ein textbasiertes Protokoll ohne echte Überprüfung. Hier ist ein Beispiel:

=== Trying g3.example.net:25...
=== Connected to g3.example.net.
<-  220 home.example.net ESMTP Exim 4.68 Thu, 07 May 2009 11:03:21 -0400
 -> EHLO g3.example.net
<-  250-home.example.net Hello g3.example.net [192.168.0.4]
<-  250-SIZE 52428800
<-  250-PIPELINING
<-  250-AUTH CRAM-SHA1 CRAM-MD5 MSN
<-  250-STARTTLS
<-  250 HELP
 -> MAIL FROM:<[email protected]>
<-  250 OK
 -> RCPT TO:<[email protected]>
<-  250 Accepted
 -> DATA
<-  354 Enter message, ending with "." on a line by itself
 -> Date: Thu, 07 May 2009 11:03:21 -0400
 -> To: [email protected]
 -> From: [email protected]
 -> Subject: test Thu, 07 May 2009 11:03:21 -0400
 -> X-Mailer: swaks v20070921.0-dev jetmore.org/john/code/#swaks
 -> 
 -> This is a test mailing
 -> 
 -> .
<-  250 OK id=KJA4HL-0006M6-8T
 -> QUIT
<-  221 home.example.net closing connection
=== Connection closed with remote host.

Die Zeile "MAIL FROM:" definiert den Absender des SMTP-Umschlags, und die Zeile From: wird in der Nachricht DATA definiert. Es gibt Möglichkeiten, sich dagegen zu schützen, diese werden jedoch in der Mailserver-Logik und nicht im Protokoll selbst definiert.

Beispielsweise kann ich als E-Mail-Anbieter von einem Benutzer verlangen, dass er sich mit einem Benutzernamen vom Typ user @ domain authentifiziert. Dann erfordert mein Mailserver möglicherweise, dass jede von ihnen gesendete Mail einen Umschlagsender und einen From: -Header hat, der dem Benutzer entspricht, als den sie sich authentifiziert haben. Zusätzliche Technologien wie DKIM und SPF können auch in diesem Bereich helfen.

jj33
quelle
8

Hier sind einige verschiedene Dinge zu beachten. Wenn Sie nur einen anderen Namen oder eine andere E-Mail-Adresse anzeigen möchten, setzen Sie den "Von" -Header der Nachricht (die Nachricht von der Adresse) auf die E-Mail-Adresse mit dem Anzeigenamen in Klammern als solchen:

Von: Joe Beispiel <[email protected]>

Denken Sie daran, dass die Zeile "von" im Nachrichtenkopf nur zu Anzeigezwecken verwendet wird. Das eigentliche Routing erfolgt über die SMTP-Umschlagadresse. Dies ist, was die SMTP-Server tatsächlich verwenden, um die Nachricht zwischen Servern zu übertragen. Dies kann sich von der Nachricht "von" -Header unterscheiden. Wenn Sie eine benutzerdefinierte SMTP-Engine haben, verwenden Sie einfach eine Adresse im SMTP-Umschlag und eine andere im "Von" -Header der eigentlichen Nachricht.

Es gibt eine Reihe legitimer Gründe, warum Sie dies tun möchten, aber bitte unterlassen Sie schändliche Zwecke.

Beachten Sie, dass ein korrektes Syntaxbeispiel in RFC 5322 - A.2.1 zu finden ist

Justin Scott
quelle
1
Das
Klammerbeispiel
Fest; Es ist schon eine Weile her, dass ich so etwas implementiert habe.
Justin Scott
Ich habe es jetzt wieder aktualisiert, um RFC 822
Mike Graf
1
@ MikeGraf 822 wurde mindestens zweimal abgelöst, 5322 ist besser.
Patrick Mevzek
2
telnet some_smtp_server.com 25
ehlo whatsup
mail from: [email protected]
rcpt to: [email protected]
data
your message here
end with a dot on a single line like this:
.

Natürlich benötigen Sie einen SMTP-Server, der das Weiterleiten ermöglicht, was fast unmöglich zu finden ist ... oder Ihren eigenen zu rollen (verwenden Sie dieses Wissen nur nicht für Spam!).

Ivan
quelle
2

Die Adresse "wirklich von" stammt aus dem Dialogfeld "von:" in der SMTP-Konversation.

Die "Fälschung von" ergibt sich aus der Ausnutzung der in E-Mail-Clients üblichen Praxis, die verschiedenen Headerfelder anzuzeigen, die im Datenteil der SMTP-Konversation beschrieben sind. Zum Beispiel:

# telnet mail.example.com 25
Connected to mail.example.com.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix
helo fakeserver
250 mail.example.com
mail from: [email protected]
250 2.1.0 OK
rcpt to: [email protected]
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
from: [email protected]
to: [email protected]
subject: This is a subject
This is the body.
.
250 2.0.0 Ok: queued as 90D0F95A06
quit
221 2.0.0 Bye
Connection closed by foreign host.
#

Wenn Sie die Zeilen "from:" und "to:" im Datenbereich weggelassen hätten, hätte dies den tatsächlichen Absender und Empfänger des Umschlags angezeigt.

Beachten Sie, dass diese Art von Tricks häufig von Spam-Filtern gesucht werden und Sie mit Sicherheit keine dauerhaften Freunde finden. Dies funktioniert auch nicht auf allen E-Mail-Clients (nur den häufigsten).

sh-beta
quelle
1

Ja, dies geschieht durch manuelles Festlegen von SMTP-Headern und ist trivial. Google es. Aber lassen Sie sich nicht beim Spammen erwischen ......

Squillman
quelle
0

Dies ist mein 2c direkt aus dem Code - geschrieben in C #

    public static void SendSpam(string message, string to)
    {
        System.Net.Mail.MailMessage myMessage = new System.Net.Mail.MailMessage("Fake Name", to);
        myMessage.Subject = "SPAM";
        myMessage.Body = message;
        System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("mail.mailserver.com", 25);
        System.Net.NetworkCredential c = new System.Net.NetworkCredential("[email protected]", "realpassword");
        client.Credentials = c;
        client.Send(myMessage);
    }
Dani
quelle