Jste zde

Odeslani e-mailu z cizi adresy bez znalosti hesla

Jenom malo lidi si uvedomuje, ze jejich e-mail v Dorucene poste nemusi byt opravdu od toho, kdo je uveden v odesilateli. Poslat e-mail z cizi e-mailove adresy je velice jednoduche a rychle. Kdyz se to navic sikovne provede, nehrozi ani odhaleni.

Jak je to mozne? Jednoduse. SMTP protokol, ktery se stara o posilani e-mailu, zkratka moc neresi, co mu date za udaje. Co zadate, to posle. Dnes by se to mohlo zdat jako chyba, ale v roce 1982, kdyz SMTP vzniknul, to asi byla vlastnost (It's Not a Bug, It's a Feature!). Nekdy se to pouziva treba ve webovych redakcnich systemech. Uzivatel vyplni prihlasku/formular a ten mu prijde na jeho e-mail z adresy majitele webu. Redakcni system tedy nezna heslo k e-mailu.

SMTP server posloucha na TCP portu 25, prikazy se zadavaji ve forme "cisteho textu" (zadne binarni ani xml blbosti). Je tedy mozne si pomoci telnetu povidat s SMTP serverem. V linuxu telnet naleznete v zakladni instalaci, ve Windows XP muzete zkusit Hyperterminal (nedoporucuju). Nejuniverzalnejsi a nejlepsi je pouzit putty.

Ukazka odeslani e-mailu pres telnet

Kratka ukazka odeslani e-mailu (zdoj wikipedia.cz): C je klient a S je server.

1. C: navázání spojení se serverem (zpravidla na TCP portu 25)
2. S: 220 mail.example.com ESMTP Postfix
3. C: HELO example.net
4. S: 250 Hello example.net
5. C: MAIL FROM: <sender@example.net>
6. S: 250 Ok
7. C: RCPT TO: <friend@example.com>
8. S: 250 Ok
9. C: DATA
10. S: 354 End data with <CR><LF>.<CR><LF>
11. C: Subject: test message
12. C: From: sender@example.net
13. C: To: friend@example.com
14. C:
15. C: Hello,
16. C: this is a test.
17. C: .
18. S: 250 Ok: queued as 12345
19. C: QUIT
20. S: 221 Bye

Je to velice jednoduche na pochopeni:

  1. Navazeme spojeni pres telnet na SMTP server
  2. server nam odpovi 220 (ok, spojeni navazano) a posle svou verzi (na ukazce postfix)
  3. pozdravime server (je to slusne norma to vyzaduje)
  4. server odpovi 250 (ok, cekam na pozadavky)
  5. e-mailova adresa odesilatele e-mailu (vubec ji nemusime vlastnit, ani k ni mit heslo!!!)
  6. server adresu odsouhlasil :-)
  7. prijemce zpravy (komu mail poslat)
  8. server porad souhlasi :-)
  9. a nyni budeme posilat samotny e-mail - DATA
  10. server nam sdeli, ze mame psat mail a vkladani ukoncit znaky <cr><lf>.<cr><lf>
  11. predmet e-mailu
  12. odesilatel, zobrazi se prijemci v jeho e-mailovem klientu, SMTP server se timto neridi
  13. prijemce, zobrazi se prijemci v jeho e-mailovem klientu, SMTP server se timto neridi
  14. nechame jeden prazdny radek, tim serveru rekneme, ze konci hlavicky e-mailu a zacina samotny mail
  15. text mailu
  16. text mailu
  17. . (<cr><lf>.<cr><lf>) ukonceni zadavani mailu
  18. server uspesne prijal zpravu ke zpracovani
  19. rozloucime se
  20. a server se s nami taky rozlouci :-)

Veskery obsah e-mailu musi byt ve forme textu. Priloha se tak musi prevest taky na text. K tomu se pouziva base64 kodovani. Na prevod je spousta programu i online nastroju.
SMTP server potrebuje vedet MAIL FROM a RCPT TO, to mu rika od koho a komu mail je. Vsechno v sekci DATA slouzi pouze pro uzivateluv e-mailovy klient.
Server opravdu neresi adresu odesilatele. Pouze vlozi text adresy a odesle, pravy majitel e-mailove schranky se tak nikdy nedozvi, ze "odeslal" e-mail (v odeslane poste nic mit nebude).

Problem nastane, kdyz se budete chtit vydavat z nekoho jineho budete chtit otestovat odesilani e-mailu. Cilovy uzivatel, kteremu zprava dorazi uvidi jako odesilatele falesnou adresu (to chceme). A tak kdyz klikne na odpovedet, my se odpoved nedozvime (a pravy majitel mailu se bude divit, co mu to kdo odpovida). Resenim je pridat v sekci data hlavicku Reply-To. Jakmile klikne uzivatel na odpovedet, posle se odpoved automaticky na adresu uvedenou v Reply-To - uzivatel to ale uvidi!

 

E-mailove hlavicky

existuje jich hodne, uvedu pouze ty zajimave:

Received: by 10.143.168.15 with HTTP; Mon, 2 May 2011 15:00:55 -0700 (PDT)
X-Originating-IP: [1.2.3.4]
Date: Tue, 3 May 2011 00:00:55 +0200
Subject: =?ISO-8859-1?Q?Nasazen=ED_Ubuntu?=
From: = tux <hello@world.cz>
To: =linux <linus@domena.tld>
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
X-Original-Sender:
X-Original-Authentication-Results:
X-Google-Group-Id: 
X-Priority: 1

Vsechny hlavicky zacinajici X- jsou volitelne - muzete si dat jake chcete, pouzivaji to nektere programy.
Received - adresa a datum serveru, ktery zpravu zpracovaval. Protoze mame vsude neverejne IP  (muze byt slozitejsi jednoduse vystopovat puvod).
Date - datum odeslani. Sem muzeme uvest jakekoliv datum, ale musime dodrzet spravny format. Nekteri e-mailovi klienti jsou natolik hloupi, ze se ridi timto datem. E-mail pak ukazuji jako neprecteny, ale prisel treba pred rokem. To je ale vyjimka, vetsinou toto antidatovani neprojde.
Subject - predmet mailu.
From - adresa odesilatele, co se zobrazi uzivateli v jeho klientu.
To
- adresa prijemce, co se zobrazi uzivateli v jeho klientu.
X-Priority - priorita e-mailu.

 

Instalace vlastniho SMTP serveru

Kdyz budete chtit takto poslat mail a pouzijete SMTP server sveho poskytovatele internetoveho pripojeni, nebo e-mailove schranky, z 99,99999% se budete muset overit pres jmeno a heslo a vzdy zanechate svoji IP - anonymita tedy neni.
Mnohem lepsi je si na svuj pocitac nainstalovat vlastni SMTP server. Nebojte se vsech tech ruznych navodu, neni to slozite. Vy budete mit server pouze sami pro sebe a jeste z internetu nepristupny (nat, firewall). Proto staci nainstalovat postfix (mam s nim vyborne zkusenosti a nemusi se v zakladu vubec nastavovat - v Ubuntu). V Ubuntu:

sudo apt-get update && sudo apt-get install postfix

Tim ziskate vlastni smtp server na svem lokalnim pocitaci. Posloucha na adrese: localhost:25 a 127.0.0.1:25. Je to to same - proste lokalni pocitac. Jakmile z nej ale poslete mail, je mozne vas vystopovat pomoci IP adresy. Jestli chcete anonymitu pouzijte tor, nebo jineho anonymizera. Nebo vyuzijte internetovou kavarnu.

Zkusime si poslat mail:

A nyni si ukazeme, jak poslat mail ze sveho vlastniho SMTP serveru:

martin@eu:~$ telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 eu.vancl.eu ESMTP Postfix (Ubuntu)
HELO localhost
250 eu.vancl.eu
MAIL FROM: bill.gates@microsoft.com
250 2.1.0 Ok
RCPT TO: tux.martin@gmail.com
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: Ahoj, nechces penize?
From: bill.gates@microsoft.com
To: tux.martin@gmail.com
Reply-To: muj.mail.pro.odpoved@seznam.cz
Date: Tue, 3 Jan 1999 11:09:47 +0200

Ahoj,
mam moc penez. Rad bych ti daroval 1 000 000 USD.
Posli mi cislo uctu.
Bill :-)
.
250 2.0.0 Ok: queued as 344DB5F8CB
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
martin@eu:~$

 

A takhle to pak vypada v e-mailovem klientovi (na ukazce je webove rozhrani gmail.com).

Kdo necetl muj clanek, bude si myslet, ze mu pise pravy Bill Gates. Dokonce i po zobrazeni podrobnosti to vypada dobre.

Odesilatel vypada verohodne, datum je zvlastni, ale zobrazuje se tak, jak jsem chtel. Jedina divna je adresa pro odpoved.

Po zobrazeni originalu (primo to, co dorucil SMTP server):

Delivered-To: tux.martin@gmail.com
Received: by 10.229.238.210 with SMTP id kt18cs9338qcb;
Tue, 3 May 2011 01:08:17 -0700 (PDT)
Received: by 10.205.24.9 with SMTP id rc9mr744450bkb.92.1304410096519;
Tue, 03 May 2011 01:08:16 -0700 (PDT)
Return-Path: <bill.gates@microsoft.com>
Received: from eu.vancl.eu ([1.2.3.4]) by mx.google.com with ESMTP id k20si24448385bku.0.2011.05.03.01.08.15;
Tue, 03 May 2011 01:08:16 -0700 (PDT)
Received-SPF: softfail (google.com: domain of transitioning bill.gates@microsoft.com does not designate 1.2.3.4 as permitted sender) client-ip=1.2.3.4;
Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning bill.gates@microsoft.com does not designate 1.2.3.4 as permitted sender) smtp.mail=bill.gates@microsoft.com
Received: from localhost (localhost [127.0.0.1]) by eu.vancl.eu (Postfix) with SMTP id 344DB5F8CB for <tux.martin@gmail.com>; Tue, 3 May 2011 10:04:33 +0200 (CEST) Subject: Ahoj, nechces penize? From: bill.gates@microsoft.com To: tux.martin@gmail.com Reply-To: muj.mail.pro.odpoved@seznam.cz Date: Tue, 3 Jan 1999 11:09:47 +0200 Message-Id: <20110503080444.344DB5F8CB@eu.vancl.eu> Ahoj, mam moc penez. Rad bych ti daroval �1 000 000 USD. Posli mi cislo uctu. Bill :-)

Je jasne, ze jde o podvrh. Proc by taky Microsoft posilal e-maily pres muj server (eu.vancl.eu). Zaroven si muzete vsimnout, ze i SPF (o tom pisu nize) ma vyhrady o pravosti. Vidite i udaje o casu: mail by odeslan v roce 1999 ale server ho prijal v roce 2011 - to je horsi, nez Ceska Posta

Pri psani odpovedi uzivatel vidi adresu pro odpoved

 

Oznameni o doruceni e-mailu

Nekdy se take muzete setkat s potvrzenim o doruceni e-mailu. SMTP protokol toto nijak neresi, proto se pouzivaji nasledujici hlavicky:

X-Confirm-Reading-To: mail@domena.cz
Disposition-Notification-To: mail@domena.cz

Je dulezite si uvedomit, ze jde o nestandardni funkci. I kdyz si tedy zapnete ve svem Outlooku potvrzeni o precteni, neznamena to, ze ho dostanete. Vetsina e-mailovych klientu (treba Thunderbird) umoznuje odpoved na potvrzeni zakazat (sam to vzdycky zakazuju, nemam tuto funkci rad). Treba webovy gmail.com tuto funkci vubec nepodporuje.

Jak se branit?

Jiste vas zajima, jak se branit a jak poznat podvod. Velice tezko.
Je ale nekolik moznosti. Neco muzete ovlivnit jako uzivatel, ale neco musi implementovat spravce domeny.

Pro spravce domeny:

  1. Muzete pouzit SPF (Sender Policy Framework). Nadefinujete si, ze pouze server s adresou mail.seznam.cz muze posilat e-maily pro @seznam.cz. SPF je TXT zaznam v DNS domeny. Na rootu je o tom pekny clanek.
  2. Druhou moznosti je pouzit DKIM (DomainKeys Identified Mail). Zde se opet jedna o TXT zaznam v DNS domeny. V TXT zazamu je ulozen verejny klic. Jsou o tom pekne clanky na rootu a abclinuxu.

Na DKIM ani SPF se ale nemuzete spolehnout, musi je podporovat obe strany a pouzivani neni povinne.

Pro uzivatele:

Asi jedinym (a nejlepsim) resenim je pouzivat elektronicky podpis, nebo PGP/GPG sifrovani. Pak mate jistotu, ze odesilatel je opravdu odesilatel

 

Takze az vam priste prijde e-mail od banky a bude chtit poslat heslo, jeste to neznamena, ze e-mail opravdu psali v bance.

Komentáře

Martine,
díky za článek, googlil jsem tohle téma, protože z adresy mojí sestřenice chodí ... přesně takhle maily.
Dotaz na - nemůžete udělat nic:
Není nějaké policejní řešení ála normálně to napráskat. Jedná se přece o poškozováná dobrého jména (firemní mail).
Otázka je trochu mimo kódy, ale třeba znáš odpověď. Dost mě vadí to – nemůžete nic.
PS: Můžeš mi odp. pinknout i na mail?
Díky
A@

Dobry den,
muzete zkusit jit na policii ale obavam se, ze to nebude nic platne. Pokud chci posilat falesne e-maily, vyuziju nejakou anonymizacni sit (napr. TOR), nebo zavirovane Windows pocitace.
Predpokladam, ze kdyz se jedna o firemni e-mail, tak mate vlastni domenu. Pri dnesni nizke cene domen by firma s e-mailem na freemailu vypadalo dost amatersky.
U vlastni domeny doporucuji nastavit SPF a DKIM. Jednodusi asi bude nastavit SPF, je to zalezitost na 10 minut. 

Nejdriv si overte aktualni nastaveni prikazem nslookup -q=TXT vancl.eu dostanete podobny vypis:

Zjisteni SPF

jak je videt, domena ma SPF zaznam: 
v=spf1 a mx include:_spf.google.com ip4:93.89.146.5 ~all
odesilat e-maily z domeny vancl.eu tedy muzou pouze pouze pocitace s IP adresou uvedenou v A zaznamu a postovni (MX) servery, pak se zahrne nastaveni od googlu (protoze mam na domene google apps) a jeste se povoli IPv4 adresa 93.89.146.5. Zpravam od vsech ostatnich pocitacu se nastavi tzv. SOFTFAIL - zprava bude pouze oznacena. Kdyz zadate -all, tak zpravy mohou byt odmitnuty. SPF se pridava jako TXT zaznam do DNS domeny.
Neni to 100% reseni, ale prevazna vetsina antispamovych filtru (napr. spamassassin) na SPF bere ohled a zpravy automaticky oznaci jako spam. Utocnik tedy falesnou zpravu odesle, ale prijemci se oznaci jako spam.
Nastavujte opatrene, muzete si znefunkcnit postu!

Celkove pokud vim nelze zakazat falesne odesilani, jenom existuji zpusoby, jak sdelit prijemci, ze zprava je falesna.
Na urovni DNS: SPF a DKIM
Na uzivatelske urovni: PGP sifrovani a elektronicky podpis

Martine díky,
ano, jedná se o firemní doménu a placený hosting, nic sprostého ve falešných mailech nechodí ale i tak mi vadí, že např. nabídka na hubnutí chodí naším jménem.
Pošlu odkaz na Vaši stránku hosterovi, pro mě je to v pochopení už o level výše :-)

CMD s dotazem jsem zkusil podle návodu, výstřižek sem neumím vložit, pošlu ho mailem, pokud to někomu z googlících pomůže a pokud neobsahuje nic soukromého zveřejněte ho s tech. komentářem sem.

Laické zamyšlení - podvodné maily (mě) nechodí ze stejných domén viz. udávaná ukázka v článku (@microsoft.com), co jsem měl tu čest, pak vždy z podobné (např. @microsoft-public.com, @gemoney-survey.com ...), takže jen tak posílat, co se jim zlíbí asi nejde (resp. posílat možná, ale doručit). O el. podpisech a šifrování nevím nic, pokud je to jenom to, co tomu brání, je to trochu smutné :-(

MOC díky, minimálně jste mi pomohl objasnit záhadu.

PS: Změna hostera by nepomohla ...?

Díky
Alois

Samozřejmě to lze, je možné, že podle serveru ze kterého je to posláno to vyfiltruje fejklý maily např. microsoftu, ale obecně moc ochrana proti tomu neni. Oni to dělaj hlavně proto, aby webová stránka byla shodná s tou odesílací a nebyla pak podezřelá lidem, že za @ neni jména domény..

Přidat komentář