20:24
3/12/2012

Coraz więcej wycieków haseł z serwisów internetowych ostatnio — sami często o tym piszemy. Zazwyczaj pada wtedy pytanie – “gdzie opublikowano bazę?” oraz “czy ja jestem na liście kont, które wyciekły?” Oto jak w łatwy sposób można “zhackować” wszystkich ciekawych odpowiedzi na te dwa pytania…

Jak wykraść hasło do dowlnego konta ofiary?

Podsyłasz pełnej obawy ofierze link do strony, na której rzekomo znajduje się lista haseł z serwisu dotkniętego wyciekiem, na którym oczywiście ofiara ma konto. Co ofiara zrobi zaraz po wejściu na stronę? Zapewne spróbuje wyszukać (ctrl+F, ⌘+F) czy jej hasło jest na liście. I to będzie wielki błąd!

Fałszywa wyszukiwarka przesyła wpisane dane do autora strony

Imitacja paska wyszukiwania przesyła wpisane dane (tu hasło) do autora strony

Dlaczego? Bo podstawiona strona zawiera kod JavaScriptowy przechwytujący kombinację klawiszy CTRL+F lub ⌘+F i podstawiający swoje okno “wyszukiwania”, łudząco podobne do przeglądarkowego. Jeśli ktoś da sie nabrać, nie zauważy różnicy i zacznie wpisywać swoje hasło — powędruje ono do atakującego (właściciela strony).

Oto dwie takie przykładowe, złośliwe strony:

Celowo wyskakujące okienka na powyższych przykładach nie odwzorowują idealnie oryginałów (nic jednak nie stoi na przeszkodzie, żeby je dopracować). Dodatkowo, zauważcie, że cokolwiek nie wpiszecie, zawsze zostanie odnalezione w bazie, właśnie po to, aby ktoś nie zniechęcił się po 2 znakach i zawsze dopisał hasło do końca ;)

A to najważniejszy fragment kodu źródłowego tego ataku:

$(window).keydown(function(evt){
if((evt.which == "70" && (evt.metaKey || evt.ctrlKey))){
console.log("STRG+F");
evt.preventDefault();
/* display fake search */
$("#searchbox").slideDown(110);
$('#search').focus();

Ta technika ataku jest ciekawa z jeszcze jednego powodu. Przechwycenie skrótu ctrl+S może nakłonić użytkownika do podania hasła administratora (pod pretekstem wymogu dostępu do dysku).

Atak nie jest nowy — tego typu socjotechnikę omawiano już lata temu. Podobnym przykładem było spoofowanie całego górnego paska adresowego w przeglądarce mobilnej Safari na iPhone. Korzystali z tego phisherzy, którzy podstawiali zdjęcie “góry” Safari z wybranym przez siebie URL-em, wiedząc, że oryginalna “góra” przeglądarki schowana zostanie automatycznie tuż po załadowaniu się strony i aby spowrotem ją zobaczyć trzeba “smyrnąć w dół”.

Atak na Safari

Atak na użytkowników mobilnej przeglądarki Safari (phishing)

Ochrona?

Standardowa. Korzystanie z dodatków do przeglądarek NoScript dla Firefoksa lub ScriptNo dla Google Chrome. A także każde inne rozwiązanie, które “unieszkodliwi” wywołanie funkcji preventDefault(). Albo wyszukiwanie myszką (Edycja -> Szukaj).

A teraz zadaj sobie pytanie, czy kiedykolwiek wpisałeś swoje hasło w innym miejscu niż formularz logowania w serwisie, do którego było to hasło… ;-)

P.S. Jeśli chciałbyś zgłębić tematykę ataków na webaplikację, to zapraszamy na nasze szkolenie z Atakowania i Ochrony Webaplikacji – Kraków, 13-14 grudnia 2012 — pozostały ostatnie 3 miejsca. Szkolenie jest mocno praktyczne, sam przeprowadzasz ataki i uczysz się jak się przed nimi bronić.


Przeczytaj także:





100 komentarzy

Dodaj komentarz
  1. A jak ktoś ma opcję Find As You Type i brzydzi się wciskać Ctrl+F to już chyba nie podziała?

  2. A w Operze? :<

    • Właśnie przed chwilą sprawdzałem i ze względu na to, że jest to zbyt niszowa przeglądarka crakerzy nie trudzą się jej udawać. Inna sprawa, że większość hakerów używa Opery właśnie z powodu jej małej popularności.

    • U mnie działa, tzn no, pokazuje okienko, a w sumie jakieś filtry np. do reklam mam.

    • Pod Operą zawsze szukam za pomocą “/”, jakoś wygodniej pod palcem leży :)

    • Też używam / ale to nic nie znaczy na ten klawisz też może reagować skrypt, jak się komuś będzie chciało robić nie widzę problemu żeby zrobić skrypt który wyświetla pole wyszukiwania zależnie od przeglądarki inne żeby było łudząco podobne. Poza tym w ff i chrome można przeszukiwać po wciśnięciu tego klawisza wiec to tylko kwestia czasu gdy ktoś zacznie to przechwytywać.

  3. Opera jest odporna na takie ataki – tu wystarczy nacisnąć “/”, “,” albo “.” i jest wyszukiwanie. : )

    • if (window.opera)

      ;)

    • @Alaknár: Bo niby w Firefoksie ukośnik nie działa?

    • @m – skąd mam wiedzieć, skoro nie używam? : )

  4. A jeśli w moim Chromium mam w about:plugins wyłączoną jave , taki atak automatycznie nie zadziała i nie potrzebuje ScriptNo ?

    • Java != JavaScript

    • picie w Szczawnicy != szczanie w piwnicy :D

    • dobre, bo śmieszne.

  5. > Ochrona?
    > Standardowa. Korzystanie z dodatków do przeglądarek NoScript dla Firefoksa lub ScriptNo dla Google Chrome.

    To może w ogóle nie korzystać z Internetu? Będzie prościej.

    • Z JavaScriptem on demand nie da się korzystać? To chyba ja w takim razie nie korzystam z internetu od lat…

    • I pisze to właściciel/autor strony pełnej JavaScriptu ;-)

      Pewnie, że można “no script” itp… Ale obecnie to trochę kastrowanie Internetu (stron www), a chyba nie o to chodzi… Zwłaszcza, że akurat opisana metoda do tego nie przekonuje, a jej metoda działania opiera się raczej na “użyszkodniku”, a sam JavaScript jest tylko jednym z elementów pomagających w dotarciu do celu…

      Bo można by również zasugerować, że rozwiązaniem jest wyłączenie obsługi obrazków w przeglądarce – też opisana metoda nie zadziała (pomijam SVG :-))

      I tak – wiem – liczy się treść ;-)

      Ps. Równie dobrze można by napisać, że rozwiązaniem problemu wirusów na komputerach jest nieposiadanie na nich oprogramowania… A najlepiej nie uruchamianie ich – też rozwiązuje problem ;-)

    • A co, Niebezpiecznik z wyłączonym JavaScriptem nie działa? Nigdzie nie jest wymagany. Jest w nim kilka “bajerów” – ale spokojnie można bez nich żyć.

    • A to na niebezpieczniku jest JS? Nie zauważyłem potrzeby odklikiwania czegoś :)

    • Piotr – mimo wszystko, nie redukujmy internetu do niebezpiecznika ;)

    • Nie wiem po co ten flame. Nikt przecież nie twierdzi, żeby blokować js wszędzie, tylko włączyć go na stronach, do których mamy zaufanie. Nie widzę problemu, żeby wyłączyć blokowanie na nowej stronie, którą odwiedzam, jeśli jej ufam. Później już nie muszę tego robić, ale od nowych stron jestem bezpieczny względem takich ataków.

      NoScript jest tym przyjaźniejszy im dłużej się go używa – po jakimś czasie strony, które się odwiedza często już nie są blokowane. Za to przed nowymi, których działania nie możemy być pewni jesteśmy chronieni.

      Ja np. nie mam zwyczaju wyłączać blokady js tam, gdzie nie potrzebuję tego js, żeby skorzystać z jakiejś funkcjonalności.

      Tl,dr: blokowanie js jest sensowne i nie równa się “kastrowaniu internetu” z funkcjonalności. To chyba jakiś radykalny pogląd ;)

    • “kastrowaniu internetu”

      Nie kastrowanie Internetu, a stron – choć fakt, celowo napisałem… Hm… mocniej… :-)

      Flash, java – OK, to jednak inna “liga” niż JS…
      Obrazki/grafiki też można uruchamiać tylko na stronach którym ufamy – bo i w jpg nie wiadomo czy coś się nie przypląta…

      Zwłaszcza, że w opisanym tu “ataku” to nie po stronie samegoJS jest niebezpieczeństwo, a po stronie użytkownika… JS jest tylko narzędziem…

      Teraz JS, innym razem będzie coś innego… A do czasów lunxa (poza kilkoma wyjątkami) raczej nie zamierzamy wracać? ;-)

      Ps. I trzeba pamiętać, że celem tego ataku nie byli (raczej) bardziej zaawansowani, a “zwykli użytkownicy Internetu”, dla których takie “wynalazki” jak AdBlock czy NoScript to czarna magia… A mam wrażenie, że niektórzy gubią ten drobiazg ;-)

  6. Ciekawy atak, ale nie zawsze skuteczny bo np.ja zawsze używam opcji “Znajdź…” dostępnej w menu kontekstowym, ponieważ mam inną opcję przypisaną do skrótu CTRL + F.

    • W sensie CTRL + F(ap) u Ciebie przycisza głośniki, włącza okno incognito i wchodzi na redtube? ;p

  7. Hej, a używanie F3 na pececie w tym konkretnym przypadku może być zbawienne? Czy może w podobny sposób da się przechwycić również klawisze funkcyjne? ;)

    • Każde się da – wystarczy sprawdzić kod ASCII ;)

    • spróbuj przechwycić F11

    • @krogon – nie ma z tym problemu najmniejszego, sprawdzałem :) Co prawda bez prevent def. ale jest: http://www.quirksmode.org/js/keys.html [na końcu].

    • W sumie racja. Full-screena też można “emulować”: http://pearce.org.nz/fullscreen/

  8. Podpinam się pod pytanie wyżej gdyż zawsze na stronach wyszukuję by F3

  9. Dlatego szuka się po mailu/loginie :) To szybsze bo mam za dużo kombinacji haseł i nie pamiętam jakie gdzie mam.

  10. W Firefoksie polecam zaznaczyć opcję: Search for text when I start typing
    http://i.imgur.com/yW3PF.png

    Nie trzeba wtedy wciskać [ctrl+f] i atak się nie powiedzie.

    • Zadanie domowe za 100pkt.
      Przerobić kod ww. stron tak, aby zaadresować sposób wyszukiwania gnoma.

    • ej, byłem pierwszy z tym oszukisty :-P

    • @Piotr: przechwycić wszystko, co jest wpisywane od momentu wejścia na daną stronę?

    • @Piotr Konieczny
      No dobrze, ale co komu przyjdzie z trzech pierwszych znaków frazy “M1s14cz3k”? ;)

    • Zauwaz jak wyszukiwane jest haslo – zawsze to co wpiszesz jest znajdowane w srodku innego ciagu – tak abys wlasnie musial wpisac cale haslo (pelne dopasowanie)

    • Choroba, dobre to jest.

    • @Piotr Konieczny
      po prostu przechwytywać wszystkie keypressy i wysyłać do autora. z UI triggerowanym przy pierwszym naciśnięciu.

      (tak btw, to też jest sposób GNOME. takiego środowiska graficznego. co sie zeszmacilo z wersja trzecia.)

  11. Java =/= JavaScript ? Wyłączenie npjp2.dll i npDeployJava1.dll = Javy nie wyklucza działania JavaScriptu, który można wyłączyć / włączyć z chrome://chrome/settings/content ?

  12. Kurde, muszę pomyśleć nad nową przeglądarką, nawet złodzieje haseł nie wspierają już IE8 :/

  13. ale już f3 nie przechwytuje. na f3 można wyszukiwać bezpiecznie haha

  14. Wystarczy “zgasić focus” ze strony i wtedy używać ulubionego skrótu (F3, /, ., ctrl+f) np. przechodząc do paska adresu (ctrl + l) przed rozpoczęciem wyszukiwania albo zmapować tą funkcję na nietypową kombinację klawiszy (np. wyszukiwanie == ctrl+ ~ ).

    • Ja myślę że wystarczy nie wpisywać hasła tam gdzie nie trzeba, a w razie cienia wątpliwości po prostu je zmienić… a nie szukać

  15. Lepszy efekt byłby gdybyście zamieścili newsa o wykradzeniu jakiejś dużej bazy haseł, a następnie stworzyli podobny atak jak ten wykorzystywany przez wyżej wymienionych, zebrali liczbę wejść na stronę, liczbę osób, które wpisały swoje hasło i zamieścili statystyki :)

    • A dumpy zamieścili na PBMie :kaktuar: Lol, przecież nie mogą w ten sposob postępować. To chyba oczywiste

  16. A jakby tak zapisać całą stronę lokalnie, wyłączyć internet i wyszukać na tej lokalnie pobranej? Abstrakcyjne i bez sensu, ale chyba zadziała :D

    • Albo ctr+c, edytor ctr+v, zamykasz strone i szukasz bezpiecznie ;)

  17. co to jest ⌘ ?

    • Taki makowy ctrl

    • To jest oznaczenie przycisku “Command” – swojego rodzaju zamiennik znaku Windows na klawiaturze. Występuje na klawiaturach Apple.

    • To w makach jest takie cuś na klawiaturze http://kwidzinski.eu/wp-content/uploads/2012/03/mac-csb_450px.png

  18. Ortografia! Nie ma takiego słowa “spowrotem”.

  19. W Iceweasel (debianowa wersja Firefoksa) działa połowicznie. Tzn. nie otwiera się ani okienko oryginalne ani fałszywe.

  20. Można też mieć taką zasadę, że NIGDZIE nie wpisywać swojego hasła tylko do zalogowania w X i tyle (i oczywiście sprawdzić 10 razy czy jest się na X a nie na scamie Y, spojrzeć przez lewe ramie i splunąć 3 razy do księżyca).
    (tak na marginesie fejkowa strona byłaby bardziej wiarygodna z tym javascriptem jakby miała w urlu .txt)

    • .htaccess i już *.txt nie ma.

  21. Na FF wystarczy ustawić niestandardową skórkę. Oryginalny pasek wyszukiwania powinien być nią również pokryty (przynajmniej u mnie tak jest). Można tak łatwo odróżnić podróbkę od oryginału. Inna sprawa że przed przeczytaniem tego artykułu nawet nie zwróciłbym na to uwagi…

  22. Najnowszy FF, a ani pierwsza, ani druga strona u mnie nie działa. Pojawia się normalne okno szukania i po wklepaniu kilku losowych znaków szybko okazuje się, że ciągu znaków nie znajduje. Nie blokuje JS, jedynie inne wtyczki jak Flash, czy JRE ładują się na żądanie, ale to chyba nie o to chodziło :P .

  23. @patryk: Klawisz funkcyjny (Cmd) w Macintoshach: http://en.wikipedia.org/wiki/Table_of_keyboard_shortcuts

  24. Czyli zmianę skina w systemie można uznać za “security feature” bo okno wyszukiwania pojawia się w złym miejscu i w złym kolorze. :P

  25. do pana od komentarza ‘opery nie hakjerujom’:
    http://seclists.org/fulldisclosure/2012/Dec/54

  26. Przykładowe podane stronki, akurat są mało przekonywujące bo gdy przykładowo wpisze znaki ‘abcd’ wyników jest powiedzmy 100, gdy dopiszę ‘efgh’ i cały ciąg będzie ‘abcdefgh’ to wyników już jest więcej co jest niemożliwe i już to podpada.

    • Hm skąd niebezpiecznik wziął mojego avatara? Wpisałem tylko nick nie cały i maila :P ?

    • Wiemy wszystko. Wymyj w końcu te naczynia stojące w zlewie.

    • Ale bardzo prosto można ten problem rozwiązać.

    • Podejrzyj URL avatara, a wiele rzeczy powinno się wyjaśnić (podpowiedź: przyjrzyj się domenie).

    • @Ax: masz profil w serwisie Gravatar, w którym znajduje się ten avatar. Na wszelkich stronach wspierających Gravatar po wpisaniu swojego maila (tego, który jest sprzężony z Gravatarem) automagicznie wyświetla się Twój avatar. O to właśnie w Grav chodzi ;)

    • Więc to jest przyczyną, cały gravatar o którym zapomniałem, że mam tam konto :)

  27. Ctrl+A Ctrl+C otwieramy notatnik Ctrl+V i wtedy szukamy :D

  28. wszysto jedno czy działa wszędzie, czy nie (nie działa na IE8, ale w tej przeglądarce nie działa w zasadzie nic) – pomysł jest zajebisty; ten niby url z iphona – też fajny

  29. Na pierwszej z podanych stron mi nie dziala – pojawia sie oryginalny pasek wyszukiwania Firefoksa.
    Na drugiej dziala, ale (poza wygladem) z zachowania od razu widac ze to nie jest oryginalny pasek wyszukiwania, poniewaz oryginalna funkcja wyszukiwania nie wyswietla pop-upu ze tekst zostal znaleziony, tylko przewija stronę do tego miejsca, gdzie on został znaleziony…

    Poza tym kto wyszukuje przez Ctrl+F? Nigdy chyba tego nie robiłem, zawsze używam Edycja -> Znajdź z menu…

    • No własnie chyba większość szuka przez ctrl+F, a ty jesteś w mniejszości z wybieraniem z menu.

  30. Jak dobrze, że szukajka w Operze jest pod kropką ;)

    • Jak dobrze, że kropkę da się równie łatwo przechwycić.

  31. Bardzo zabawnie wyglądają te wszystkie komentarze nt. “jak obejść tę sztuczkę” – idę jednak o zakład, że większość piszących je osób również dałaby się nabrać, gdyby trafiła na taką stronę (tak, mówię tu również o sobie ;) )

    • Zgadzam się. Gdyby okienko wyszukiwania było lepiej dopracowane, w zależności od przeglądarki to mało kto by pomyślał o tym, że coś jest nie tak. Przerobienie podanego skryptu jest łatwe. Do tego hmm…”zaciemnienie” kodu i 98% użytkowników złośliwej strony ma po hasłach.

  32. Czy jeżeli podałem tam swoje prawdziwe hasło (tak wiem zachowałem się jak idiota, najpierw odpaliłem stronę, potem przeczytałem treść artykułu…) to moje hasło zostało zapisane? To jest przykładowa stronka prezentująca zjawisko, czy na prawdę kradnie hasła :/?

    • U góry tej strony jest link do bloga na tej samej domenie:
      http://h43z.blogspot.com/2012/11/whats-real-and-whats-not.html
      można więc domniemywać, że autor nie miał złych zamiarów.

      Poza tym, nic przecież nie stoi na przeszkodzie by zajrzeć w JS i sprawdzić co tam się naprawdę wykonuje.

    • Otóż zajrzałem. Patrząc powierzchownie zauważyłem taki fragment kodu: function send(pass){ /* save serverside :D */ console.log(“$$$: “+pass); Może zabrzmi to laicko, ale nie wiem czy to rzeczywiście coś wykonuje. Nie znam JS. Mam nadzieje, że ktoś pomoże bo nie powiem, że nieco się wystraszyłem :]

    • xEEx: zmień hasło. We wszystkich serwisach w którym używałeś tego hasła.

    • @xEEx: to był, oczywiście, żart. Ta funkcja którą przytoczyłeś nie robi nic innego poza wyświetleniem tego co wpisujesz jako swoje hasło w lokalnej konsoli JS. Nie wysyła niczego na żaden serwer. Twoje hasło jest bezpieczne :)

  33. “Atak, który wykradnie Twoje hasło do każdego konta…”

    Piotr please. My tu nie od wczoraj.

    NoScript lub [Ctrl]+([A],[C],[V]) do Notatnika i wyszukiwać tam. A jeśli już wyszukiwać się bezpośrednio w “wyciekniętej bazie”, to tylko po login’ie (w ostateczności po e-mail’u) – ze względu na charakterystykę tego przekrętu login (jakikolwiek on by nie był) też się znajdzie…

    … więc może jednak NoScript.

  34. Pierwszy link zdradza również brak encodingu. Dzięki temu, gdyby send() rzeczywiście wysyłała wpisywane dane, to twórcę strony można byłoby łatwo zaspamować, wpisując jako hasło np.: while(1){insert_fake(‘niebezpiecznik’);send(‘niebezpiecznik’);} otoczone w tagach script.

  35. No to ogłaszam konquerora najbezpieczniejszą przeglądarką świata, tam nie działa skrypt z żadnej z obu stron :)

    • A to Konqueror czasem na WebKicie nie jest?

  36. Czyli na stronie podanej w przykładzie zapisywanie haseł też działa?
    “console.log(“$$$: “+pass);”

    Na jakiej zasadzie działa takie dodawanie wpisu do – logu konsoli?

  37. A to cwaniaczki! Javascript! A swoją drogą, przecież jeśli ktoś wpisze powiedzmy 3-4 litery swojego hasła to już wie, że jego hasła nie ma w danej “bazie”. Marny ten atak.

    • Jeśli nie zwróciłeś uwagi, skrypt sam dorzuca do listy nowe hasła zawierające to, co wpisałeś – tak, by jednak skłonić cię do wpisania całości. Całkiem niezły ten atak ;)

  38. Ale fajne, znalazło mi moje “hasło” o treści: “fuckyouinyourassyoufuckinghackershahaha” całkiem przewidywane :D xD

  39. Hasła bym nie CTRL+Fował tylko username/email co najwyżej ;).

  40. Uff… na szczęście mojego super hasła “</admin.1" nie ma na liście ;]

  41. Ilość wyszukiwań dla zapytania “k” : 23
    Ilość wyszukiwań dla zapytania “ka” : 59

  42. Może trochę głupie pytanie, ale co daje poznanie samego hasła bez loginu i innych danych??

  43. Hmm, pod Operą grzecznie pyta czy wykonać skrypt, czy też zablokować wykonywanie skryptów na stronie. Jedno jest prawdą – gros userów “kupi temat” i nie ma się co wymądrzać, że ja to nie. Modyfikacja skryptu pod dowolną przeglądarkę nie jest problemem, jak już pisano powyżej. Klucz, to socjotechnika, a tu żaden program nie ochroni przed indolencją.

  44. […] na powyższej liście tylko ciągu “kasia666“. Dwa razy zastanów się, czy użyć skrótu CTR+F do wyszukiwania swojego loginu […]

  45. Zastanawiam się nad tym co z tego że pokazuje to te hasła
    skoro nigdzie ich nie zapisuje potem do pliku (przynajmniej nie
    znalazłem tego w kodzie)… Atak zadziała jedynie jeśli osoba
    “wyszukuje” hasło w naszej obecności…

    • A jaki problem dopisac troche kodu ktory bedzie wysylal hasło?? :D tylko dalej mnie meczy po co komu samo chasło bez reszty danych

    • Fajny sownik ktos sklada ;)

  46. Hmm.. atak ciekawy, ale jakoś kiepsko widzę jego skuteczność i przydatność jeśli ktoś by chciał rzeczywiście go wykorzystać do kradzenia haseł lub numerów kart.
    Po pierwsze w przypadku haseł, atakujący dostaje tylko hasło, żadnego maila, żadnego loginu(w przypadku karty brak numeru cvv lub jak on się tam nazywa), a więc przydatność jest tego minimalna (jest jedno użycie gdzie to by się przydało, ale i tak w przypadku pojedynczych osób które dały się nabrać niewiele zagraża.
    Po drugie, naturalną reakcją na widok, że moje hasło zostało wykradzione jest natychmiastowa zmiana hasła i zaprzestanie używania go, więc nawet jeśli jakoś włamywacz będzie miał dostęp do mojego loginu/maila to i tak kiedy będzie próbował się zalogować hasło będzie już inne.
    A w przypadku karty kredytowej również naturalnym jest po zobaczeniu, że jej numer został wykradziony, natychmiastowy telefon do banku i zablokowanie jej, więc autor strony z tym atakiem nie będzie miał pożytku z tej informacji, a wręcz gdy spróbuje wykorzystać ukradziony numer karty będzie łatwiej wykryć kim jest.
    Choć w sumie może nie dostrzegam zagrożeń jakie niesie ten atak i użytkownicy tej strony pomogą mi zrozumieć gdzie leży rzeczywiste zagrożenie z nim związane.

  47. […] bardziej użyteczny jest serwis zawierający każde wasze hasło lub ten pozwalający sprawdzić, czy ktoś nie wykradł naszego numeru karty kredytowej […]

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: