Jak wysłać maila z dowolnego adresu |
|
|
|
|
E-mail należy do tych usług internetowych, które wymyślono w czasach, kiedy każdy każdemu ufał. Zakładano, że informacje podawane w e-mailach będą prawdziwe, a więc nie nałożono żadnych ograniczeń mających na celu sprawdzenie ich wiarygodności. Za to dziś płacimy wszyscy. Na tych prawidłach bowiem oparte są takie zjawiska, jak powszechność wirusów e-mailowych czy phishing. Faktem jest bowiem, że każdą informację zawartą w poczcie elektronicznej można sfałszować. Każdą, za wyjątkiem jednego adresu IP, czyli adresu komputera, z którego list został otrzymany przez serwer odbiorcy. Co gorsza, jest to dziecinnie proste. I choć czynione są kroki, by temu zapobiec, ich skuteczność jest bardzo ograniczona.
Celem tego wpisu jest pokazanie, jak łatwo sfałszować wspomniane informacje. Po to, abyście wiedzieli drodzy czytelnicy, że informacjom w e-mailach nie można ufać. Po to, abyście pokazali to i opowiedzieli wszystkim znajomym którzy używają poczty elektronicznej, a szczególnie osobom słabo zorientowanym w temacie. Być może pomoże to trochę ograniczyć ilość osób naciąganych przez oszustów („bo przecież to od mojego banku...”), czy też liczbę osób instalujących wirusy i trojany na swoich komputerach („bo przecież to przyszło od znajomego...”).
Protokół SMTP oraz magia telnetu
Do sfałszowania poczty elektronicznej nie jest potrzebne nic więcej, niż wchodzący w skład praktycznie każdego systemu operacyjnego program telnet. Za jego pomocą możemy bowiem połączyć się z innym serwerem i „udać” np. program pocztowy. Protokół, za pomocą którego przesyłana jest poczta, czyli SMTP (Simple Mail Transfer Protocol) jest wyjątkowo prosty i składa się z serii poleceń tekstowych o nieskomplikowanej składni. Słowem, nawet wspomniana w pierwszym akapicie małpa zapewne potrafiłaby się tą brzytwą posłużyć.
Zanim jednak wyślemy na swoje konto spreparowany list, dowodzący że wszystkie informacje w poczcie mogą być sfałszowane, musimy poznać pewne podstawowe zasady funkcjonowania protokołu SMTP. Musimy więc na początek wiedzieć: jaki serwer przyjmuje pocztę wysyłaną na dane konto (i dlaczego tylko ten serwer) jak ten serwer w prosty sposób znaleźć.
Krok 1. Wyszukiwanie serwera MX
Każda domena, w której istnieją konta pocztowe, ma określony serwer odpowiedzialny za przyjmowanie poczty. Serwerów może być kilka, ale mają one wtedy określony priorytet (czyli który jest preferowany, a który zapasowy). Wszystkie te informacje przechowywane są w serwerach DNS i możemy je uzyskać za pomocą narzędzi z linii poleceń takich jak nslookup. Nie jest to jednak wygodne, więc użyjmy do tego celu specjalnego serwisu internetowego, DNSstuff.
Na potrzeby tego wpisu załóżmy, że mamy konto pocztowe w domenie o2.pl. Aby wyszukać serwery odpowiedzialne za przyjmowanie poczty na adresy @o2.pl, na stronie DNSstuff wybieramy skrajny prawy górny formularz (oznaczony „DNS lookup”) i wpisujemy w pole tekstowe „o2.pl”, a z rozwijanej listy wybieramy „MX”. MX oznacza Mail eXchanger, czyli „wymiennik poczty” — serwer odpowiedzialny za przyjmowanie listów skierowanych do danej domeny. Następnie klikamy „Lookup”.
Wynikiem będzie tabela zawierająca spis serwerów MX dla domeny o2.pl oraz dodatkowe wpisy (w szarych polach), które nas w tej chwili nie interesują. Przy wpisach zauważymy „Preference = ...”. To wspomniany priorytet. Jeśli wszystkie serwery mają taki sam, nieważne który wybierzemy. Jeśli są różne, powinniśmy wybrać ten z najwyższym priorytetem (pozostałe są wtedy traktowane jako zapasowe, w razie awarii głównego). Załóżmy więc, że wybierzemy „mx6.go2.pl”. Mamy już serwer, z którym należy się łączyć, aby wysłać list na konto w o2.pl bez konieczności uwierzytelniania.
Dlaczego nie powinniśmy używać innego serwera? Otóż praktycznie każdy inny serwer pocztowy będzie wymagał od nas uwierzytelnienia. Wynika to z faktu, że serwer odpowiedzialny za pocztę w danej domenie (czyli MX) ma obowiązek przyjąć list na konto w tej domenie, natomiast serwer nie będący odpowiedzialnym za daną domenę może (a nawet powinien) wymagać uwierzytelnienia. Jeśli by go nie wymagał, spamerzy mogliby używać go do rozsyłania listów wszędzie i w dowolnej ilości. Byłby tzw. serwerem open relay. Krok 2. Połączenie z serwerem MX Teraz musimy połączyć się z serwerem MX za pomocą programu telnet. Uruchamiamy go z linii poleceń (Windows lub Linuksa) w następujący sposób:
telnet mx6.go2.pl 25 Liczba 25 na końcu oznacza, że łączymy się z serwerem na porcie 25, czyli porcie wykorzystywanym do wysyłania poczty. I tu uwaga — nie każdy wie, że wysyłanie listów z programu pocztowego i przesyłanie listów z serwera do serwera właściwie niczym się nie różni. Protokół jest ten sam. Tak więc serwer nie wie, czy łączy się z nim użytkownik programu pocztowego, inny serwer pocztowy, czy też ktoś korzystający z programu telnet.
Po połączeniu, otrzymamy komunikat powitalny z serwera: 220 mx6.go2.pl ESMTP Wita Teraz możemy rozpocząć przesyłanie listu. Krok 3. Dane kopertowe
Tak, jak przy wysyłaniu listu najważniejsze dane są zawarte na kopercie, tak i poczta elektroniczna ma coś co okreslane jest mianem koperty. Są to pierwsze dane przekazywane do serwera pocztowego, jeszcze przed właściwą treścią listu. Podobnie, jak w przypadku tradycyjnej poczty, dane na kopercie nie muszą być prawdziwe, można podać dowolny adres nadawcy. Ważne jedynie, by adres odbiorcy był prawidłowy, bo inaczej nie dostanie on listu.
Gdybyśmy np. do tradycyjnej koperty włożyli pocztówkę, na której byłby napisany zupełnie inny adres nadawcy i odbiorcy, adresat otworzyłby kopertę i zobaczył te informacje (i zastanawiał się, czemu są różne). W e-mailu jest tak samo. Adresy podane na kopercie i zawarte w liście mogą być zupełnie inne. Jest jednak podstawowa różnica między pocztą tradycyjną i elektroniczną. Otóż w programach pocztowych odbiorca nie widzi danych podanych na e-mailowej kopercie (!). Może je zobaczyć tylko, jeśli wyświetli źródło wiadomości (i wie, gdzie ich szukać).
Zanim jednak podamy adres nadawcy i odbiorcy, musimy się przedstawić serwerowi. Służy do tego polecenie HELO (lub jego rozszerzona wersja, EHLO — jednak nie musimy jej stosować). Nie musimy podawać naszego prawdziwego adresu IP ani symbolicznego. Jedynym wymaganiem jest, by adres był poprawny syntaktycznie, czyli był w formacie zgodnym ze standardami. Możemy więc użyć dowolnego, istniejącego lub nieistniejącego adresu, np.:
HELO nowhere.com
Serwer odpowie na nasze przywitanie:
250 mx6.go2.pl
Następnym krokiem po przywitaniu jest podanie kopertowego adresu nadawcy. Jak już wspomniałem, będzie on widoczny tylko w źródle wiadomości. Są jednak pewne ograniczenia co do tego adresu. Wynikają one z faktu, że wiele serwerów stosuje metodę ochrony zwaną SPF. Właściciel domeny może za pomocą tej metody określić, jaki adres IP ma prawo wysyłać listy posługując się adresem w tej domenie (ale dotyczy to tylko nadawcy kopertowego). Tak więc, aby wysłać list musimy wybrać taką domenę, której właściciel nie nałożył takich ograniczeń, a jednocześnie najlepiej taką, w której funkcjonuje poczta elektroniczna.
W tym celu znów posłużymy się stroną DNSstuff. Musimy wymyśleć nazwę domeny, która po pierwsze ma rekord MX, a po drugie nie ma rekordu TXT o zawartości zaczynającej się od „v=spf1”. W tym celu wpisujemy nazwę domeny, którą chcemy sprawdzić w tym samym polu co poprzednio, ale aby sprawdzić czy domena ma rekord TXT, wybieramy ten rekord z rozwijanej listy.
Jak się okazuje, taką domenę nietrudno wymyśleć. Chociażby mail.com spełnia te warunki. Wystarczy więc jako adres nadawcy podać dowolny adres z tej domeny (nieważne, czy istniejący), a serwer prawie na pewno przyjmie wiadomość. Aby podać adres nadawcy, musimy użyć polecenia MAIL FROM:, a sam adres podać w znakach < i >:
MAIL FROM: Serwer odpowie: 250 Ok Teraz nadszedł czas, by podać adres odbiorcy. Na ten adres wysłana zostanie wiadomość, choć adres ten wcale nie musi być widoczny w programie pocztowym (!), albowiem jest to jak już wspomniałem adres kopertowy. Spotkałem się z pytaniami użytkowników: „dlaczego dostaję spam, skoro w adresie odbiorcy jest adres inny, niż mój, na przykład z błędem lub dodatkowymi literami”? Właśnie dlatego, że adres, pod który została wysłana wiadomość jest niewidoczny w programie pocztowym, a adres widoczny w programie może być dowolny, zupełnie inny niż adresata, a nawet nieistniejący. Ba, może go w ogóle nie być!
Aby podać adres odbiorcy, używamy polecenia RCPT TO:. Adres również musi być podany między znakami < i >:
RCPT TO:
Serwer odpowie:
250 Ok
Uwaga, polecenia RCPT TO: możemy użyć wielokrotnie, w ten sposób prześlemy tę samą wiadomość pod wiele różnych adresów, oczywiście w tej samej domenie, a właściwie w domenach za które odpowiedzialny jest serwer z którym się łączymy.
Krok 4. Treść listu
Ostatnim krokiem jest przesłanie treści listu. W tym celu, wydajemy polecenie DATA (bez parametrów):
DATA
Serwer odpowie:
354 End data with .
co oznacza, że aby zakończyć wysyłanie listu, wystarczy wpisać kropkę w pustej linii. Jak jednak podać nagłówki listu, a jak jego treść? Nic prostszego. Zaczynamy od nagłówków, po czym robimy jedną linię przerwy i podajemy treść.
Nagłówki, które nas zainteresują przede wszystkim to:
Subject: — temat listu, From: — adres nadawcy widoczny w programie pocztowym, To: — adres odbiorcy widoczny w programie pocztowym.
Tak więc spróbujmy wysłać list od Świętego Mikołaja do Królika Wielkanocnego:
From: Swiety Mikolaj
To: Krolik Wielkanocny
Subject: Wielkanoc jest do niczego!
Krolik! Tyle razy ci mowilem, ze Wielkanoc jest do niczego!
Lepiej zjedz te jajka i przylaz mi tu pomoc z prezentami na Boze Narodzenie!
Swiety Mikolaj
Kropka w ostatniej linii oznacza zakończenie pisania listu. Serwer powinien odpowiedzieć, że list przyjął:
250 Ok: queued as 7935D619C94
Wystarczy teraz, że wydamy polecenie QUIT, aby grzecznie się rozłączyć i możemy sprawdzić swoją skrzynkę pocztową. Zaglądamy do skrzynki
Oto wiadomość, którą znajdziemy w skrzynce:
Od: Swiety Mikolaj
Do: Krolik Wielkanocny
Temat: Wielkanoc jest do niczego!
Krolik! Tyle razy ci mowilem, ze Wielkanoc jest do niczego!
Lepiej zjedz te jajka i przylaz mi tu pomoc z prezentami na Boze Narodzenie!
Swiety Mikolaj
A oto jej źródło:
Return-Path:
Received: by o2.pl (o2.pl mailsystem) with LMTP;
Mon, 10 Apr 2006 19:36:44 +0200
Received: by mx6.go2.pl (Postfix)
id 45536619E6E; Mon, 10 Apr 2006 19:36:44 +0200 (CEST)
Delivered-To: naszadresemail@o2.pl
Received: from mx6.go2.pl (localhost [127.0.0.1])
by mx6.go2.pl (Postfix) with ESMTP id 7935D619C94
for ; Mon, 10 Apr 2006 19:36:39 +0200 (CEST)
Received-SPF: none (mx6: nobody@mail.com does not designate permitted sender hosts)
Received: from nowhere.com (zyzor.com [66.66.66.66])
by mx6.go2.pl (Postfix) with SMTP
for ; Mon, 10 Apr 2006 19:36:33 +0200 (CEST)
From: Swiety Mikolaj
To: Krolik Wielkanocny
Subject: Wielkanoc jest do niczego!
Message-Id: <20060410173639.7935D619C94@mx6.go2.pl>
Date: Mon, 10 Apr 2006 19:36:39 +0200 (CEST)
Krolik! Tyle razy ci mowilem, ze Wielkanoc jest do niczego!
Lepiej zjedz te jajka i przylaz mi tu pomoc z prezentami na Boze Narodzenie!
Swiety Mikolaj
Jak widzimy: Adres, który podaliśmy jako adres nadawcy kopertowego (nobody@mail.com), jest w widocznym dopiero po wyświetleniu źródła wiadomości nagłówku Return-Path. Adres, który podaliśmy jako adres odbiorcy (naszadresemail@o2.pl), jest w widocznym dopiero po wyświetleniu źródła wiadomości nagłówku Delivered-To oraz w nagłówkach Received.
Adresy widoczne w programie pocztowym, to adresy podane w treści wiadomości, nie podlegające żadnej weryfikacji, całkowicie fałszywe. Jedyną informacją, jaka jest stuprocentowo prawdziwa i wskazuje, kto był nadawcą listu jest ta zawarta w nagłówku: Received: from nowhere.com (zyzor.com [66.66.66.66]), gdzie prawdziwy jest adres IP (oczywiście podmieniony przeze mnie na potrzeby tego wpisu), oraz w przypadku niektórych serwerów także poprzedzający go adres symboliczny (ten przed nawiasem jest jak widać sfałszowany i odzwierciedla parametr podany w poleceniu HELO). Stosowany również przez O2, wspomniany wcześniej system SPF wcale nie chroni przed sfałszowaniem adresu nadawcy. Oszuści mogą wysyłać listy również na „chronione” nim serwery. Wnioski? Wnioski są oczywiste. Poczta elektroniczna jest całkowicie niewiarygodna. Kolega z pracy może wysłać nam list, który będzie wyglądał jak list od szefa. Znajomy może zrobić nam kawał podszywając się pod naszą dziewczynę. Słowem, nic, absolutnie nic nie gwarantuje, że dane nadawcy i odbiorcy widoczne w programie pocztowym są prawdziwe.
Dlatego apeluję do wszystkich, którzy dopiero rozpoczynają przygodę z Internetem i którzy słabo go znają, aby uważali. Nie dajcie się nabierać! Nie wierzcie, że list pochodzący rzekomo z Waszego banku naprawdę został wysłany przez ten bank. Nie wierzcie, że list od kogoś znajomego z załącznikiem to naprawdę śmieszny wygaszacz ekranu (bo na 99% jest to wirus!). Bądźcie ostrożni, bo oszuści i spamerzy czyhają na frajerów. Obyście tymi frajerami nie byli wy.
Art zassany z www.hackme.pl |
To jest stopka
|
|