Metody na hackowanie (tricki), które dzisiaj opiszemy nie są nowe, bo niektóre pojawiły się w 2013 roku, ale są wykorzystywane i działają ze współczesnymi przeglądarkami. Dlatego postanowiliśmy zwrócić na nie uwagę i je dokładnie opisać. Pokażemy jak za pomocą specjalnego kodu w przeglądarce można oszukać i zhackować użytkownika podczas klikania przez niego na link lub w sytuacji, kiedy kopiuje on i wkleja komendy opublikowane na stronach internetowych.


Jak łatwo oszukać użytkownika?

Odpowiedź jest prosta – widzimy tylko szczegół całości pod którym czai się zagrożenie. To taka iluzja bezpieczeństwa, w której na szczęście obowiązują sprawdzone schematy działania. Musimy je poznać i wiedzieć, że w obszarze technologii internetowych cyberprzestępcy zaszczepili podobne triki, aby oszukać użytkownika. Na pozór dobrze wyglądająca strona może kryć w sobie wiele zagrożeń. Dlatego powinniśmy przyjąć zasadę, że:

Nie należy do końca ufać informacjom, które widzimy na stronie internetowej, w szczególności, jeśli w coś na niej klikamy lub z niej kopiujemy.

Wykorzystywane przez atakujących sztuczki oszukiwania użytkownika dotyczą zarówno prawidłowo wyświetlanych nazw domen stron internetowych, które w rezultacie są fałszywe (np. poprzez użycie innego kodowania) oraz ich treści (fałszywie wyświetlany link lub komenda).
O sztuczkach wyświetlania nazw domen pisaliśmy wcześniej tutaj, natomiast dzisiaj skupimy się bardziej na sposobach ukrywania złośliwego kodu w treści takich stron.

Zacznijmy od pierwszej, naszym zdaniem ciekawszej metody/prostej sztuczki, która sprawi, że zastanowisz się dwa razy przed skopiowaniem i wklejeniem tekstu ze stron internetowych.


1. Metoda pierwsza – sztuczka z kopiowaniem i wklejaniem komend z Internetu

Pierwsza omawianą kwestią są komendy publikowane na witrynach WWW.
Zapytaj dowolnego programistę lub administratora, czy kiedykolwiek skopiowali do wiersza linii poleceń komendy lub fragment kodu z sieci? Odpowiedź prawdopodobnie brzmiałaby TAK. Można by założyć, że to, co skopiowałeś, jest tym, co wklejasz, prawda? Cóż, nie!
Dlatego NIGDY nie należy kopiować poleceń i wklejania ich bezpośrednio do wiersza linii poleceń, terminala lub innego programu przetwarzającego komendy.

Zastosowana tutaj iluzja polega na tym, że myślisz, że kopiujesz jedną rzecz, ale zastępuje ją coś innego, na przykład złośliwy kod. Wystarczy jeden wiersz kodu, który skopiowałeś, aby jego wstrzyknięcie do terminala utworzyło backdoora do Twojej aplikacji.


Jak to możliwe?

Tak naprawdę, to nie jest żadna magia, a specjalny kod na stronie Internetowej, który potajemnie zastępuje kopiowany tekst w przeglądarce internetowe podczas przenoszenia go do zawartości schowka. W konsekwencji, to, co faktycznie zostanie skopiowane do schowka, będzie znacznie różnić się od tego, co zamierzałeś skopiować.
Co gorsza, bez należytej staranności deweloper/administrator może zdać sobie sprawę ze swojego błędu dopiero po wklejeniu tekstu, a wtedy może być już za późno.


Podmienianie skopiowanych komend – POC

Demo z Proof of Concept znajduje się poniżej:

Autor bloga, Gabriel Friedlander prosi czytelników o skopiowanie prostego polecenia, które zna większość administratorów i programistów:

sudo apt update

Osoby wklejające tekst mogły mieć wrażenie, że kopiują znajome, nieszkodliwe polecenie „sudo apt update”, które służy do pobierania zaktualizowanych informacji o oprogramowaniu zainstalowanym w systemie. Nic bardziej mylnego.
Po skopiowaniu komendy ze strony Gabriela i wklejeniu jej do specjalnego pola zobaczymy podmienioną komendę na:

Przy czym w opisywanym przypadku warto zwrócić uwagę, że wklejając skopiowaną komendę nie tylko otrzymujemy w schowku zupełnie inne polecenie, ale co gorsza, na końcu ma znak nowej linii (lub powrotu).

Oznacza to, że powyższy przykład zostanie wykonany, gdy tylko zostanie wklejony bezpośrednio do terminala Linux!

Powyższa metoda istniała już w 2013 roku i możecie ją znaleźć także na tej witrynie.

A to przykład z tej strony – polecenie „git” pobierające i instalujące z Internetu pakiety oprogramowania/aktualizacji.

Wynikiem skopiowanie tej komendy do terminala jest podmieniona inna komenda zamieniająca się w ciąg innych komend:

git clone /dev/null; clear; echo -n “Hello “;whoami|tr -d ‘\n’;echo -e ‘!\nThat was a bad idea.
Don'”‘”‘t copy code from websites you don'”‘”‘t trust!
Here'”‘”‘s the first line of your /etc/passwd: ‘;head -n1 /etc/passwd
git clone git://git.kernel.org/pub/scm/utils/kup/kup.git

Jej podgląd na Linux:

Skutek wklejenia jej do terminala jest taki, że na ekranie terminala wyświetli się przywitanie z aktualnym loginem użytkownika i prezentacja zawartość pliku z hasłami „passwd” oraz niektóre ostrzegawcze komunikaty. Na końcu dopiero zostanie wykonana skopiowana ze strony źródłowa komenda (git clone ..).


W czym tkwi tutaj źródło problemu?

W naszym przykładzie rolę iluzjonisty pełni przeglądarka internetowa zaś cała magia tkwi w kodzie JavaScript ukrytym w ustawieniach wyświetlanej strony w HTML.
Gdy podejrzymy kod źródłowy strony z powyższego, pierwszego przykładu z komendą „sudo apt update” to zauważymy, że tekst „sudo apt update” oznaczony w nim został elementem „span” i identyfikatorem „copy”.

Za skopiowanie i podmianę tekstu „sudo apt update” zawartym w elemencie HTML (o identyfikatorze “copy”) odpowiedzialny jest skrypt JavaScript wylistowany poniżej.

Zawarty powyżej JavaScript przechwytuje zdarzenie kopiowania (za pomocą metody addEventListener()) i zastępuje dane ze schowka złośliwym kodem w postaci innego tekstu.
Należy tutaj zwrócić uwagę, że detektory zdarzeń mają wiele uzasadnionych przypadków użycia w JavaScript, ale to tylko jeden przykład tego, jak mogą być niewłaściwie używane.


2. Metoda druga – sztuczka z ukrywaniem niewidocznego tekstu na stronie

W opisywanym, drugim przypadku sztuczka będzie polegać na ukrywaniu tekstu w wyświetlanej treści strony. Mogą to być też komendy opisywane powyżej.
Ciekawy przykład na ukrywanie tekstu możecie znaleźć tutaj. Na tej stronie możecie wygenerować i ukryć w kodzie różny tekst oraz komendy.

Źródło: jsfiddle.net

Użyta tutaj sztuczka nie wymaga zastosowania języka skryptowego JavaScript a cała magia niewidocznego tekstu uzyskiwana jest za pomocą stylów HTML i CSS, które są kopiowane do schowka podczas kopiowania widocznych części tekstu.

Kopiując do schowka poniższy tekst:

Po wklejeniu go do aplikacji na komputerze zobaczymy dodatkową (środkową) linijkę, która nie była widoczna na stronie (niewidoczny kod HTML jest pobierany podczas kopiowania i po wklejaniu pokazuje dodatkową linię.)

W źródle strony zobaczymy wymienioną ową dodatkową linijkę:

Problem nie polega tylko na tym, że strona internetowa może zmieniać zawartość schowka za pomocą JavaScript, ale może również po prostu ukryć polecenia w kodzie HTML, które są niewidoczne dla ludzkiego oka, ale zostaną skopiowane do schowka pamięci komputera.


3. Metoda trzecia – sztuczka z ukrywaniem linków do złośliwych stron i przekierowaniem

Klikanie w niedozwolone lub złośliwe linki to prawdziwa zmora Internetu i doskonały wektor ataku na użytkowników. W tej sztuczce pokażemy jak klikając na całkowicie legalny i dobrze wyglądający odnośnik (link w tekście do zewnętrznej strony) możemy przejść jeszcze do innej (złośliwej) strony.

Doskonały przykład znajdziesz na tej stronie.
Jej autor zachęca do odwiedzenia (kliknięcia na link) strony banku HSBC:

W kodzie źródłowym strony podany link wygląda na legalny, czyli https://hsbc[.]co[.]uk, więc wszystko z pozoru wygląda ok. Ale nie jest tak do końca.

Cała magia polega na tym, że kliknięcie w niego skutkuje przekierowaniem do innej strony (legalnej strony „phishtank”), która w innych warunkach mogłaby być złośliwa.

Autor publikuje także w tabeli test różnych przeglądarek w jaki sposób radzą one sobie z przedstawieniem tego linku użytkownikowi i wynikami kliknięć.
Zawarte w niej są:

  • rodzaje i wersje testowanych przeglądarek internetowych, 
  • podpowiedzi prezentowane użytkownikowi podczas najeżdżania kursorem myszy na powyższy link, 
  • możliwość przekierowania na docelową złośliwą witrynę podczas kliknięcia użytkownika na link
  • możliwość przekierowania na docelową złośliwą witrynę podczas skopiowania linka do schowka pamięci
  • przykładowy link do filmu z działania linku.
Źródło: mouselike.org

Na podstawie wyników widzimy, że przeglądarka Firefox z NoScript wygląda najlepiej.

Autor prezentuje też źródło do skryptu powodującego całe zamieszanie. Jak twierdzi: „kod jest używany do przekierowywania na amazon i innych linków na forach i innych stronach internetowych w celu skorzystania z ofert polecania bez pokazywania użytkownikowi, że jego link został przejęty.”

Autor nie ukrywa także zdziwienia „że strony phishingowe nie korzystały z tej metody, a jeszcze bardziej zdumiewające jest to, że wszystkie testowane przeze mnie przeglądarki pozwalają na to porwanie bez pokazywania użytkownikowi!”

Przetestujcie u Was jak zachowa się Wasza przeglądarka w przypadku tego linka. Wyniki są naprawdę ciekawe.


Jak sobie radzić z problemem?

Opisane powyżej formy ataku są bardzo proste, ale też bardzo szkodliwe. Działają z najnowszymi przeglądarkami, a więc mogą dalej atakować użytkowników.
Mamy nadzieję, że opisane przez nas przykłady to kolejny powód, aby nigdy ślepo nie ufać temu, co kopiujesz ze strony internetowej i w klikasz.
Pamiętaj o:

  • Sprawdzaniu wszystkiego po skopiowaniu. Lepiej najpierw wklej skopiowaną informację w edytorze tekstu i dokładnie sprawdź przed uruchomieniem. 
  •  W przypadku linków pamiętaj, aby zawsze sprawdzać zanim je klikniesz. Najedź na link i sprawdź, dokąd prowadzi docelowy link i dokąd Ciebie zaprowadzi. Oczywiście nie wszystko da się sprawdzić od razu.

Stosowanie w firmach odpowiednich narzędzi bezpieczeństwa monitorujących powyższe metody ma sens, ale wiedz, że nie są one w stanie do końca wszystkiego zabezpieczać. Pamiętaj, że to człowiek jest zawsze najsłabszym ogniwem. To, czy ulegniesz iluzji zależy tylko od Ciebie!

Podziel się z innymi tym artykułem!