Email spoofing is the creation of email messages with a forged sender address. It is easy to do because the core protocols do not have any mechanism for authentication. It can be accomplished from within a LAN or from an external environment using Trojan horses. Spam and phishing emails typically use such spoofing to mislead the recipient about the origin of the message.
When an SMTP email is sent, the initial connection provides two pieces of address information:
- MAIL FROM: – generally presented to the recipient as the Return-path: header but not normally visible to the end user, and by default no checks are done that the sending system is authorized to send on behalf of that address.
- RCPT TO: – specifies which email address the email is delivered to, is not normally visible to the end user but may be present in the headers as part of the “Received:” header.
Together these are sometimes referred to as the “envelope” addressing, by analogy with a traditional paper envelope.
Once the receiving mail server signals that it accepted these two items, the sending system sends the “DATA” command, and typically sends several header items, including:
- From: Joe Q Doe <[email protected]> – the address visible to the recipient; but again, by default no checks are done that the sending system is authorized to send on behalf of that address.
- Reply-to: Jane Roe <[email protected]> – similarly not checked
The result is that the email recipient sees the email as having come from the address in the From: header; they may sometimes be able to find the MAIL FROM address; and if they reply to the email it will go to either the address presented in the From: or Reply-to: header – but none of these addresses are typically reliable, so automated bounce messages may generate backscatter.
Use by spam and worms
Malware such as Klez and Sober and many more modern examples often search for email addresses within the computer they have infected, and use those addresses both as targets for email, but also to create credible forged From fields in the emails that they send, so that these emails are more likely to be opened. For example:
Alice is sent an infected email which she opens, running the worm code.
The worm code searches Alice’s email address book and finds the addresses of Bob and Charlie.
From Alice’s computer, the worm sends an infected email to Bob, but forged to appear to have been sent by Charlie.
In this case, even if Bob’s system detects the incoming mail as containing malware, he sees the source as being Charlie, even though it really came from Alice’s computer; meanwhile Alice remains unaware that her computer has been infected with a worm.
In the early Internet, “legitimately spoofed” email was common. For example, a visiting user might use the local organization’s SMTP server to send email from the user’s foreign address. Since most servers were configured as “open relays”, this was a common practice. As spam email became an annoying problem, these sorts of “legitimate” uses fell out of favor.
When multiple software systems communicate with each other via email, spoofing may be required in order to facilitate such communication. In any scenario where an email address is set up to automatically forward incoming emails to a system which only accepts emails from the email forwarder, spoofing is required in order to facilitate this behavior. This is common between ticketing systems which communicate with other ticketing systems.
The effect on mailservers
Traditionally, mail servers could accept a mail item, then later send a Non-Delivery Report or “bounce” message if it couldn’t be delivered or had been quarantined for any reason. These would be sent to the “MAIL FROM:” aka “Return Path” address. With the massive rise in forged addresses, Best Practice is now to not generate NDRs for detected spam, viruses etc. but to reject the email during the SMTP transaction. When mail administrators fail to take this approach, their systems are guilty of sending “backscatter” emails to innocent parties – in itself a form of spam – or being used to perform “Joe job” attacks.
Identifying the source of the email
Although email spoofing is effective in forging the email address, the IP address of the computer sending the mail can generally be identified from the “Received:” lines in the email header. In many cases this is likely to be an innocent third party infected by malware that is sending the email without the owner’s knowledge.
SSL/TLS in mail transfer software can be used to enforce authentication, but is seldom used for this in practice. However a number of effective systems are widely used, including:
Although their use is increasing, estimates vary widely as to what percentage of emails have no form of domain authentication: from 8.6% to “almost half”, but to effectively stop forged email being delivered, receiving mail systems also need to be configured to check this authentication.