Назад | Перейти на главную страницу

поддельное поле «от» в электронном письме

Как я могу манипулировать полем «от» в электронном письме и заставить «кому» видеть что-то отличное от фактического?

Пример:

действительно из

From: TStamper@yahoo.com

но они видят

From: Tremayne "Top Dog" Stamper

Я слышал это от манипулирования SMTP, но действительно не уверен, насколько это точно и как это можно сделать.

По своей сути SMTP - это просто текстовый протокол без реальной проверки. Вот пример:

=== 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:<jj33@g3.example.net>
<-  250 OK
 -> RCPT TO:<jj33@g3.example.net>
<-  250 Accepted
 -> DATA
<-  354 Enter message, ending with "." on a line by itself
 -> Date: Thu, 07 May 2009 11:03:21 -0400
 -> To: jj33@g3.example.net
 -> From: jj33@g3.example.net
 -> 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.

Строка «MAIL FROM:» определяет отправителя конверта SMTP, а «From:» определяется в сообщении DATA. Есть способы защиты от этого, но они определены в логике почтового сервера, а не в самом протоколе.

Например, я, как почтовый провайдер, могу потребовать от пользователя аутентификации с использованием имени пользователя типа user @ domain. Тогда мой почтовый сервер может потребовать, чтобы любая отправляемая им почта имела отправителя конверта и заголовок From:, соответствующий пользователю, от имени которого они аутентифицировались. Дополнительные технологии, такие как DKIM и SPF, также могут помочь в этой области.

Здесь нужно учесть несколько вещей. Если вы просто хотите отобразить другое имя или адрес электронной почты, установите в заголовке «От» сообщения (сообщение с адреса) адрес электронной почты с отображаемым именем в скобках как таковым:

От: Джо Пример <joe@example.com>

Помните, что строка «от» в заголовке сообщения используется только для отображения. Фактическая маршрутизация выполняется по адресу конверта SMTP. Это то, что SMTP-серверы фактически используют для передачи сообщений между серверами. Это может отличаться от заголовка сообщения "от". Если у вас есть собственный механизм SMTP, просто попросите его использовать один адрес в конверте SMTP, а другой - в заголовке «from» фактического сообщения.

Есть ряд законных причин, по которым вы можете захотеть это сделать, но, пожалуйста, воздержитесь от гнусных целей.

Обратите внимание, что правильный пример синтаксиса можно найти в RFC 5322 - A.2.1

telnet some_smtp_server.com 25
ehlo whatsup
mail from: JohnBaker@yahoo.com
rcpt to: recipient@somewhere.com
data
your message here
end with a dot on a single line like this:
.

Конечно, вам понадобится SMTP-сервер, который позволяет ретранслировать, что практически невозможно найти ... или использовать собственный (только не используйте эти знания для спама!).

Адрес «действительно от» берется из диалога «от:» в диалоге SMTP.

«Подделка от» возникает из-за использования обычной практики в почтовых клиентах отображения различных полей заголовков, как указано в разделе «Данные» диалога SMTP. Например:

# 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: real@example.com
250 2.1.0 OK
rcpt to: real@example.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
from: fake@example.com
to: you@example.com
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.
#

Если бы вы пропустили строки «от:» и «кому:» в разделе «Данные», то отобразились бы фактические отправитель и получатель конверта.

Обратите внимание, что такого рода уловки часто ищут спам-фильтры, и они, конечно же, не сделают вас постоянными друзьями. Кроме того, это работает не для всех почтовых клиентов (только для самых распространенных).

Да, это можно сделать вручную, установив заголовки SMTP, и это несложно. Поищи в Гугле. Но не попадитесь спаму ......

Это мой 2c прямо из кода - написанный на 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("realusername@mailserver.com", "realpassword");
        client.Credentials = c;
        client.Send(myMessage);
    }