Ok.. Ik gebruik hiervoor meestal een paar tools als
whois,
nslookup en
dig. Linux/BSD hebben deze standaard. Voor windows zijn er tools beschikbaar om te installeren maar er zijn ook websites waar je ze kan gebruiken. Bijv.
http://www.dnsstuff.com/Bekijk de bron van de e-mail. In thunderbird kun je dat doen met
ctrl-U. Zoek naar de regels met
Received:.
De received headers geven aan langs welke mailservers de e-mail is verzonden. Elke mailserver voegt er z'n eigen aan toe. Begin bij de Received headers van je eigen provider. Deze zijn meestal wel te vertrouwen en werk daar vandaan terug.
Received: from tapps.mail.dmdelivery.com (tapps.mail.dmdelivery.com [194.9.84.153])
by mxdrop32.xs4all.nl (8.13.8/8.13.8) with ESMTP id l5KEgTaj080716
for <sirdice@xs4all.nl>; Wed, 20 Jun 2007 16:42:36 +0200 (CEST)
(envelope-from [email]partnermailing@virusalert.nl[/email])
Received: from mail1 (unknown [192.168.98.169])
by kenny1.webpower.nl (Postfix) with SMTP id 5545320ACD8
for <sirdice@xs4all.nl>; Wed, 20 Jun 2007 16:42:29 +0200 (CEST)
De regels zijn als volgt opgebouwd:
from
HELO string (
dnsnaam [
ip adres ]) by
ontvangende_mailserver (
versienummers)
Er staat nog meer op z'n regel maar dat is voor het tracen niet zo interessant. Met het id zou je op de mailserver zelf de e-mail terug kunnen vinden. Als ontvanger kun je dat niet.
De HELO string wordt door de verzender opgegeven en is niet te vertrouwen. De dnsnaam hoeft niet altijd aanwezig te zijn. Het ip adres is het adres van de verzender. Dnsnaam en ip worden door de ontvangende mailserver gelogd.
Als je alleen al naar deze 2 regels kijkt dan zou de ontvangende mailserver kenny1.webpower.nl (in de tweede received) als verzender moeten staan in de eerste Received (van onder naar boven lezen). Hier klopt al iets niet. Als je verder kijkt naar die tweede received zie je daar als verzendend ip een RFC-1918 adres (private reeks) staan. En omdat het niet aansluit met de eerste received header kun je de tweede als fake beschouwen.
dig -x 194.9.84.153 geeft als resultaat
153.84.9.194.in-addr.arpa. 3600 IN PTR tapps.mail.dmdelivery.com.
Dat klopt dus. Een
whois dmdelivery.com laat zien wie de eigenaar is.
Domain Name: DMDELIVERY.COM
Registrar: TUCOWS INC.
Whois Server: whois.tucows.com
Referral URL: http://domainhelp.opensrs.net
Name Server: NS1.SITE4U.COM
Name Server: NS2.SITE4U.COM
Name Server: NS3.SITE4U.COM
Status: ok
Updated Date: 09-oct-2006
Creation Date: 07-nov-2001
Expiration Date: 07-nov-2007
Een
whois 194.9.84.153 laat zien wie de eigenaar is van dat ip adres.
inetnum: 194.9.84.0 - 194.9.85.255
netname: NL-TRUESERVER-2158
descr: Site4U
descr: Please use abuse@true.nl for spamreports.
country: NL
admin-c: TSAR1-RIPE
tech-c: TSTR1-RIPE
tech-c: WDB7825-RIPE
status: ASSIGNED PI
mnt-by: RIPE-NCC-HM-PI-MNT
mnt-lower: RIPE-NCC-HM-PI-MNT
mnt-by: TRUESERVER-MNT
mnt-routes: TRUESERVER-MNT
source: RIPE # Filtered
Een hosting bedrijf dus.
De whois info van het domain laat ook zien welke dns server "authoritive" zijn. Dit zijn de dns servers waar het domain op aangemaakt is. In dit geval servers van site4u.com. Creatief met nslookup
nslookup
> set querytype=any
> server NS1.SITE4U.COM
Default server: NS1.SITE4U.COM
Address: 194.9.84.2#53
> dmdelivery.com
Server: NS1.SITE4U.COM
Address: 194.9.84.2#53
dmdelivery.com nameserver = ns1.site4u.com.
dmdelivery.com mail exchanger = 10 virtualmail.dmdelivery.com.
dmdelivery.com mail exchanger = 150 backupmail.site4u.nl.
dmdelivery.com nameserver = ns3.site4u.com.
dmdelivery.com
origin = ns1.site4u.com
mail addr = hostmaster.site4u.com
serial = 2007061900
refresh = 28800
retry = 7200
expire = 1209600
minimum = 3600
Name: dmdelivery.com
Address: 87.233.5.129
dmdelivery.com text = "v=spf1 a mx a:kenny1.dmdelivery.nl a:kenny2.dmdelivery.nl ip4:194.9.84.128/26 -all"
dmdelivery.com nameserver = ns2.site4u.com.
Het vetgedrukte is wat ik ingetypt heb. De mail exchange adressen zijn de mailserver die e-mail kunnen ontvangen voor dat domain. Let wel op, de ontvangende mailservers hoeven niet dezelfde te zijn als de verzendende. Hier gaan een hoop, te strak afgestelde spamfilters meestal de mist in. Een mailserver die alleen maar e-mail verstuurt hoeft geen MX (Mail eXchange) record te hebben. MX records zijn uitsluitend voor ontvangende mailservers. Bij grote bedrijven is het normaal dat binnenkomend en uitgaande mail gescheiden verwerkt worden.
Wat weten we nu? De tweede received header is fake en kan buiten beschouwing gelaten worden. De e-mail komt bij dmdelivery.com vandaan, dit lijkt een marketing bureau te zijn ( http://www.dmdelivery.com ). Deze heeft z'n mailserver gehost staan bij Trueserver.
Spam werkt op een soortgelijke manier. Alleen zul je dan waarschijnlijk bij een consumenten ISP uitkomen. Over het algemeen kun je dit middels een reverse lookup
dig -x ipadres en
whois ipadres zien. Meestal staat daar ook een abuse adres. Daar zou je de bron van de e-mail heen kunnen sturen zodat zij die klant kunnen waarschuwen. Zet in de abuse e-mail verder geen whois, nslookup en/of andere traces. Dat doen ze zelf wel en door dat allemaal mee te sturen loop je het risico dat jouw abuse e-mail genegeerd wordt.
Het is een heel verhaal geworden en ik hoop dat het een beetje over komt. Door dit een paar keer zelf gedaan te hebben wordt het vanzelf duidelijk. Anders hoor ik het wel ;)
Edit: Nog even verder gekeken naar die kenny1.webpower.nl. Opvallend is namelijk dat in de SPF string van dmdelivery.com ook een kenny1 staat. Kenny1.webpower.nl resolved niet, kenny1.dmdelivery.com wel. Er is een dikke kans dat de tweede received header gegeneerd is door een interne server van dmdelivery. Dat verklaart ook het rfc-1918 adres. Leuk om te zien zo dat er op deze manier interne netwerk informatie wordt prijsgegeven, wat wel vaker voorkomt. Als security professional bij een bedrijf moet je hier dus ook op letten. Meestal kun je de uitgaande mailserver wel zo configureren dat de received headers van de interne mailservers verwijderd worden voordat de e-mail het internet op geslingerd wordt.