W sieci pojawiło się niedawno nowe złośliwe oprogramowanie, które za cel obrało sobie konta klientów pięciu największych polskich banków. Metody jego działania są dość kreatywne, a jego twórcy bardzo pracowici.
Firma ESET wykryła i opisała nowe zagrożenie, nazwane BackSwap. Ten koń trojański pojawił się zaledwie kilka tygodni temu i ewidentnie jego działalność wymierzona jest tylko w użytkowników systemów bankowości elektronicznej polskich banków. Co więcej, jak dowiadujemy się od naszych Czytelników, przestępcy do kradzieży używają kont udostępnionych przez nieświadome tego faktu Polki i Polaków. Ale po kolei.
Metoda dostarczenia
Każdy koń trojański musi jakoś znaleźć się na komputerze ofiary. Przestępcy korzystają tutaj z obecnie najskuteczniejszej metody – wysyłają go pocztą elektroniczną. Do Waszych skrzynek regularnie trafiają złośliwe e-maile pod przeróżnymi postaciami. Zawierają one załączniki, które po uruchomieniu pobierają między innymi właśnie BackSwapa (dla bardziej technicznych czytelników – wehikułem infekcji jest najczęściej Nemucod). Poniżej przekład jednej z wiadomości, w których uruchomienie załącznika kończyło się zainfekowaniem BackSwapem.
Zanim przestępcy w połowie marca wypuścili na rynek wersję okradającą rachunki bankowe, eksperymentowali od stycznia z programem podmieniającym dane portfeli kryptowalutowych. Najwyraźniej jednak tamten projekt nie odniósł wielkiego sukcesu, ponieważ szybko został porzucony. Od półtora miesiąca obserwujemy za to regularny i dynamiczny rozwój bankowego konia trojańskiego. Przestępcy potrafią codziennie wypuszczać nowe wersje – robią sobie tylko przerwy w weekendy.
Warto także zaznaczyć, że na trop konia trojańskiego wpadł pracownik polskiego oddziału ESETa, Paweł Śmierciak. Brawo, Paweł!
Złośliwy kod
Co ciekawe, sam złośliwy kod dostarczany jest w niewinnym opakowaniu. Przestępcy odpowiednio modyfikują popularne aplikacje, dodając do nich swoje polecenia. Prawdopodobnie celem jest obniżenie wykrywalności. Wykorzystują do tego np. takie aplikacje jak TPVCGateway, SQLMon, DbgView, WinRAR Uninstaller, 7Zip, OllyDbg czy FileZilla Server (te aplikacje są bezpieczne – przestępcy pobierają ich specjalnie spreparowaną wersję już po zarażeniu komputera).
Po zainstalowaniu złośliwego kodu na komputerze czas na przejęcie kontroli nad sesją bankowości internetowej. Tu objawia się kreatywność przestępców. Do tej pory znakomita większość złośliwego oprogramowania atakującego konta bankowe, takiego jak Dridex, Ursnif czy Zbot, korzystała z wstrzykiwania kodu do procesów przeglądarki, następnie przechwytywała jej funkcje i monitorowała otwierane strony banków, by modyfikować je w pamięci procesu. Banki i ich dostawcy oraz producenci oprogramowania antywirusowego nauczyli się już wykrywać te działania, dzięki czemu walka z bankowymi koniami trojańskimi stała się nieco prostsza.
BackSwap omija te problemy, używając… interfejsu użytkownika przeglądarek. Monitoruje jedynie nazwy okienek przeglądarki, by wykryć sesję bankowości elektronicznej, a następnie w celu wstrzyknięcia kodu używa dwóch metod i odpowiednich skrótów klawiszowych. W starszej wersji otwiera konsolę przeglądarki (udaje naciśnięcia klawiszy CTRL+SHIFT+J w Chrome, CTRL+SHIFT+K w Mozilli) i wkleja odpowiedni kod JavaScriptu (wysyłając CTRL+V) do konsoli. Następnie powtarza pierwszą kombinację, by zamknąć konsolę. W czasie operacji okienko przeglądarki na chwilę zastyga, przez co użytkownik nie jest w stanie zauważyć, co dzieje się w tle.
W nowszej wersji ta metoda została zastąpiona inną: do przeglądarki wysyłane są klawisze CTRL+L (wybór paska adresu), następnie DELETE (skasowanie jego zawartości) oraz CTRL+V (wklejenie ciągu javascript: oraz złośliwego skryptu). Na końcu pasek adresu jest czyszczony, by usunąć ślady ingerencji.
Obie techniki mają same zalety dla przestępców:
- nie wymagają wysokich uprawnień – wystarczy działać z uprawnieniami użytkownika,
- omijają dodatkowe mechanizmy bezpieczeństwa wdrażane na poziomie przeglądarek (podszywając się na tym etapie pod użytkownika, można ominąć większość mechanizmów detekcji wstrzyknięć JavaScriptu używanych w systemach bezpieczeństwa banków),
- są niezależne od architektury przeglądarki (wstrzykiwanie procesów wymaga dostosowania do architektury 32- lub 64-bitowej, a przechwytywanie funkcji często wymaga dostosowania nawet do konkretnej wersji przeglądarki).
BackSwap obsługuje zarówno Chrome, Firefoksa jak i Internet Explorera. Wszystkie te przeglądarki mają mechanizm obrony przed podobnymi atakami (najczęściej wspartymi socjotechniką), wymuszający wpisanie ciągu javascript: ręcznie przez użytkownika. BackSwap problem rozwiązuje, wpisując ten fragment znak po znaku, udając użytkownika.
Wstrzykiwany JavaScript
Skrypt wstrzykiwany do przeglądarki musi być dostosowany do interfejsu konkretnego banku. Przestępcy do tej pory dostosowali swoje narzędzia do interfejsów PKO BP, BZ WBK, mBanku, ING i Pekao. W ostatniej wersji zrezygnowali z BZ WBK i Pekao, ale mogą je w każdej chwili przywrócić. Do wstrzyknięcia dochodzi w momencie, gdy klient zleca przelew. Złośliwy kod podmienia wtedy numer rachunku, na który ma zostać wysłany przelew ofiary. Na ekranie komputera tego nie widać – zmiana dotyczy informacji, które przeglądarka wysyła do banku. Przestępcy nie atakują wszystkich przelewów – definiują konkretny przedział kwotowy, który ich interesuje. Ostatnio celowali w kwoty między 10 000 a 20 000 PLN – jak na zrzucie ekranu poniżej.
Konta na nieświadome słupy
Numery kont, na które trafią przekierowane przelewy, BackSwap pobiera z serwera przestępców lub ma z góry zaszyte w swoim kodzie. Przestępcy eksperymentują z różnymi metodami, a numery rachunków potrafią zmieniać codziennie. Skąd zatem biorą tyle kont? Tym najprawdopodobniej zajmuje się druga część grupy, która rekrutuje nieświadome osoby pod pretekstem ciekawych ofert pracy. Uwierzcie, nadal są wśród nas osoby, które są skłonne uwierzyć, że przyjmowanie przelewów i odsyłanie ich na inny rachunek to praca warta kilka tysięcy złotych miesięcznie. Przestępcy nawet podpisują ze słupami papierowe umowy o pracę – są do tego całkiem nieźle przygotowani. Niestety wiele osób daje się namówić na taką „pracę”, a ich rachunki są potem wykorzystywane przez przestępców. Utrudnia to pracę bankom, ponieważ konta słupów nie wyróżniają się niczym szczególnym – mają historię, obroty i wiarygodność.
Jak nie zostać ofiarą
Mamy dla Was trzy kluczowe porady.
- Nie dajcie się namówić na łatwą i przyjemną pracę przyjmowania płatności na własny rachunek i odsyłania ich za prowizję. To nieuchronnie skończy się utratą „zarobków” i wieloma wizytami na komisariacie, a może i w sądzie.
- Zastanówcie się, zanim klikniecie w załącznik od nieznanego nadawcy. Lepiej zadzwonić niż klikać – przez telefon nie zainfekujecie komputera.
- Sprawdzajcie numery rachunków, na które wysyłacie przelewy, a które bank wysyła Wam SMS-em lub w aplikacji mobilnej. Porównujcie przedstawione cyfry z tymi, które miały znaleźć się na przelewie. Osoby, które robią to regularnie, łatwo bronią się przed takimi atakami.
IOC
Na VirusTotalu znajdziecie ich na pewno o wiele więcej, tu kilka pomagających zacząć poszukiwania:
9BC4C1D5403DDD90712CE87225490A21D1EDC516 JS/Nemucod.EAN trojan CF5A74C268661501156663F74CD5E20603B0F261 Win32/BackSwap.A trojan 6251F9AD0E5F551AC4A6B918EF366E86C4CCFDC4 Win32/BackSwap.A trojan 2DC9760A7C6E9D261C73EFB7B2604840734BC058 Win32/BackSwap.A trojan A68901D0D8C1247FF280F9453E3AE45687C57566 Win32/BackSwap.A trojan (JavaScript)
Komentarze
Uruchamianie javascript z poziomu paska adresu wydaje się być ziejącą dziurą w zabezpieczeniach. Ciekaw jestem, czy istnieje jakikolwiek praktyczny powód, że jest to możliwe?
Po prostu stosujesz komendy wciskania klawisza i zapisywania tekstu w schowku. To tak jakbyś sztucznie manipulował strumieniami cin i cout w C++ ukrywając to przed użytkownikiem
Dlaczego uwazasz ze jest to dziura w zabezpieczeniach? Czytales moze 'Splatana siec’? Jezeli nie to polecam przeczytac.
Może wydaje Ci się to luką w zabezpieczeniach, ale pozwala to stosować tzw „skryptozakładki” (bookmarklet).
Ziejąca dziurą jest konieczność używania javascript na stronach banku. Panom dyrektorom pomyliły się strony „bratanka” z wodotryskami java* / flash z funkcją serwisu bankowego.
Widać to dobrze po samej stronie logowania jak się wyłączy .
Może w końcu ten przypadek skłoni niektóre osoby do refleksji.
Czy używanie klienta poczty (Thunderbirda) faktycznie zablokuje auto-uruchomienie się skryptu/załącznika?
Cytat „Niestety wiele osób daje się namówić na taką „pracę” a ich rachunki są potem wykorzystywane przez przestępców. Utrudnia to pracę bankom, ponieważ konta słupów nie wyróżniają się niczym szczególnym – mają historię, obroty i wiarygodność.”
Otóż Niebezpieczniku NIE.
Banki same sobie utrudniają pracę na tym polu ułatwiając na innym.
Problemu by nie było gdyby banki zrezygnowały z potwierdzania tożsamości przelewem na złotówkę a do założenia rachunku każdorazowo potrzebna była by wizyta z dowodzikiem w placówce. W innym wypadku banki tak na prawdę ułatwiają pranie pieniędzy pochodzących z przestępstwa.
Nie chodzi przecież o słupy, które dopiero zakładają konto. Chodzi o ludzi, którzy konta mają i używają ich od lat. Właśnie dzięki temu, że mają historię wykonywanych przelewów, wykrywanie ich wcześniej, niż pojawienie się na nich pieniędzy z okradzionego konta (gdy ruszy procedura po zgłoszeniu okradzionego), jest problematyczne.
„Do wstrzyknięcia dochodzi w momencie, gdy klient zleca przelew. Złośliwy kod podmienia wtedy numer rachunku, na który ma zostać wysłany przelew ofiary. Na ekranie komputera tego nie widać – zmiana dotyczy informacji, które przeglądarka wysyła do banku.”
Przy potwierdzaniu przelewu (a to zdaje się jest obligatoryjne, przynajmniej w iPKO), bank raz jeszcze wyświetli numer rachunku na który idzie przelew, dodatkowo wyśle ten numer w smsie (przy takiej formie potwierdzenia).
Sęk w tym, że program podmienia tylko dane wysylane do banku, a wyswietlany przez strone jest ten sam numer
Czy rzeczywiście tak jest? Na logikę bank powinien wyświetlać faktyczny numer z żądania, inaczej po co to w ogóle robić?
Bank wysle do przegladarki rzeczywisty numer konta (zlodzieja) z tym ze skrypt js po stronie przegladarki zamieni go na ten co wpisal uzytkownik. Jedyna obrona jest weryfikacja konta w sms od banku
Wyświetla drugi raz aby user mógł zobaczyć zwykłą pomyłkę? JS pilnuje zdarzenia wyświetlania nr w html-u i podmienia, a przecież ten JS istnieje na kompie usera a nie banku? W sms jest na 95%? ten prawdziwy numer, bo przechwytywanie sms jest jeszcze mało praktykowane?
Skoro malware podmienił numer konta wysłany do serwera banku, to może też podmienić stronę potwierdzenia.
jak najbardziej, może. tylko to już wpływa na jego wykrywalność, a to w tym podobno ten malware się wyróżnia :) artykuł pozostawia pewne niedomówienia
Moment moment… Powiedzmy, że wirus w istocie podmienił numer konta „w ukryciu”, a klient banku widzi poprawny numer…. Jak to się ma do SMS’a przychodzącego na telefon osoby zlecającej przelew gdzie jak krowie na rowie wypisane są dane przelewu takie jak pierwsze i ostatnie cyfry konta, kwota przelewu? To co wirus podmieni dane w SMSie notabene wysyłanym przez system bankowy?
mBank wysyła w SMS fragment numeru konta docelowego (4 pierwsze cyfry i 6 ostatnich). Jak jest z bezpieczeństwem takiej „funkcji skrótu”? Czy atakujący dysponuje wystarczającą liczbą kont by liczyć na kolizje, czy też raczej bazuje na braku czujności użytkownika?
Czy ten kod obsługuje operę?
Złoßnik Adasiu złośnik! Nie koń trojański i nie firma a badacze
Właśnie oglądam wiadomości i przeglądam między innymi z3s a tam Adam o zhackowaniu finału LM :)
Sb zawsze prowadziło wiadomości, zastanawiałeś się kiedyś skąd się wziął pan adam i dlaczego mimo tego że jest tak chujowy wszyscy go kochamy. Dlaczego uważamy 70 letnią babkę w latexie za normalność i czyjm ona jest idolem?
Wygląda na dość zaawansowany technicznie atak. Codzienne releasy, do tego siatka słupów (chyba że outsourcuje koleś). Tak czy inaczej, mimo wszystko, chylę czoła.
Zapewne żaden z potencjalnych słupów nie czyta ZaufanejTrzeciejStrony, ani żadnej innej o podobnej tematyce. Niewiele się dzieje w kwestii uświadamiania typowego Kowalskiego
Myślę, że jedna z metod na utrudnienie tego ataku jest w miarę prosta do realizacji. Wystarczy tak napisać kod aplikacji PHP by nazwy poszczególnych obiektów w kodzie HTML dla klienta były losowe dla danej sesji. Wtedy proste wyszukiwanie po nazwach obiektów czy id-kach było by nieskuteczne. Dodatkowo dodać parę fałszywych kontrolek, by parsowanie zawartości na podstawie wzorca dawało kilka rezultatów.
Nic to nie zmieni, ponieważ i tak numer konta gdzieś trzeba wpisać/pokazać a skrypt może łatwo go rozpoznać.
Problem jest z przeglądarkami. Narzędzie deweloperskie powinny być całkowicie wydzielone i instalowane osobno przez użytkownika. Bez nich atak byłby prawdopodobnie niemożliwy.
Pasek adresu, którego trojan używa do wstrzyknięcia JS, to narzędzie deweloperskie?
ten screen z jsa to na amidze zrobiliście?
Wygląda jak zwykła konsola. Na Amidze było by GUI.
„byłoby” proszę. Widzę to już kolejny raz pod jednym tematem. Potem sam zaczynam piać: „po za” zamiast „poza”.
Całe szczęście błedy gramatyczne, ortograficzne i interpunkcyjne nie powodują kolapsu wszechświata, więc sugeruje zająć się czymś bardziej pożytecznym niż pielęgnowanie nielogicznych umiejętności.
A ilu z was tu komentujących chociaż raz wykrył tylko zwkłego spamera? :/
Sa narzedzia ktore zabezpieczyc moga klientow bankow przed tego typu atakami. Druga kwestia to banki same nie weryfikuja przelewow i prania pieniedzy.
Jesli mozna bankowi przeslac kod java wklejany z paska adresu to znaczy ze strona banku ten kod wykonuje. Wiec czemu bank tą samą javą nie szyfruje przesyłanych danych juz na urządzeniu uzytkownika. Podmiana danych była by wtedy dużo trudniejsza.
Nie znam sie az tak na tym ale jestem zakoczony że dane wklepywana w formulażach sa tak prymitywnie przesyłane ze można je podmienić bez zgody uzytkownika. Spobow na zabezpieczenie sie przed tym znalazło by się pewnie wiele chociazby porównanie ciągu cyferek wstukanych na klawiaturze z cyferkami przesyłnymi w tym wypadku wklejonymi z paska. Problem pewnie leży w samych programistach którzy tworzą stron korzystając z jakiś gotowców czy oprogramowania i interesuje ich wynik dzialania, nie rozumieja jak to działa?
Problem stary bo zaczoł sie od Microsoftu który do dziś nie potrafi rozpoznac danych wprowadzanych przez urzytkownika od danych wprowadzanych automatycznie prze skrypty funkcje itd.
Z tego co widzę wirus dostał się przez program pocztowy. Pomijając załączniki, których nie powinno się otwierać jeżeli pochodzą z nieznanego źródła to można przynajmniej w Windows 7 sprawdzić w lokalizacji AppData/Local/Microsoft/Windows/Temporary Internet Files/Content.IE5 najlepiej Total Comanderem. Można tam zobaczyć śmietnik pozostawiony przez Windows Live Mail i skasować pliki. A najlepiej mieć antywirusa, który załączniki mz automatu otwiera w piaskownicy.