28.12.2013 | 23:54

Adam Haertle

Hakowanie bankomatów przez port USB i dziurę w obudowie

Złośliwe oprogramowanie w bankomatach znajdowane jest już od kilku lat. Jak jednak tam trafia? Okazuje się, że jedną z metod używanych przez przestępców jest wyłamanie kawałka obudowy i podłączenie do bankomatu dysku USB.

Na trwającej właśnie konferencji 30c3 dwoje badaczy pokazało analizę ciekawego oprogramowania, infekującego bankomaty. Dzięki niemu złodziej, znający odpowiednie kody dostępu, może wypłacić z maszyny całą zawartość kasety z gotówką.

Odkrycie

W lipcu tego roku pewien brazylijski bank zauważył, że znienacka z kilku bankomatów zniknęły wszystkie banknoty o najwyższym nominale, a logi bankomatów nie wskazywały na ich wypłatę. Co ciekawe, okradane bankomaty wcześniej znikały na chwilę z sieci wewnętrznej banku, by wkrótce potem do niej powrócić. Przeglądnięcie nagrań z monitoringu i analiza logów nie dały im zbyt dużej wiedzy, jednak pilne obserwowanie kolejnych maszyn pozwoliło złapać złodziei na gorącym uczynku. Przy zatrzymanym, który wypłacał całą gotówkę z bankomatu, znaleziono napęd USB, a na nim nieznany wcześniej program, którego zadaniem było infekowanie kolejnych maszyn. Oprogramowanie to zostało poddane analizie przez ekspertów, którzy postanowili podzielić się swoją wiedzą z widzami.

Jak zainstalować konia trojańskiego w bankomacie

Analiza zarówno nagrań jak i przechwyconego oprogramowania pozwoliła na odtworzenie procesu instalacji. Zaczynało się od wyłamania kawałka plastikowej obudowy (później naprawianego), pod którym znajdował się port USB, używany do połączenia bankomatu z drukarką. Do tego portu podłączany był napęd USB, a następnie odłączany był kabel sieciowy bankomatu. Utrata łączności powodowała automatyczny restart maszyny, a po restarcie system uruchamiał się z podłączonego napędu USB (tak, to nie są najlepsze praktyki bezpieczeństwa).

Na dysku USB badacze znaleźli system operacyjny Hiren’s BootCD, wg Wikipedii oparty o Knoppixa, służący zazwyczaj do naprawy uszkodzonych systemów. Znajdowało się tam standardowe mini środowisko Windows XP, a w katalogu, z którego przy starcie uruchamiane były aplikacje, umieszczony był plik hack.bat. Badacze myśleli, że to pewnie fałszywy trop, bo nazwa była zbyt oczywista, jednak okazało się, że skrypt faktycznie uruchamiał proces infekcji, a konkretnie plik wykonywalny atm.exe. Skrypt umożliwiał także, w zależności od użytych parametrów, weryfikację, czy bankomat jest już zainfekowany, skopiowanie logów bankomatu na dysk USB czy usunięcie programu.

Fragment skryptu z prezentacji

Fragment skryptu z prezentacji

W pliku atm.exe badacze znaleźli zaszyfrowany zasób, zawierający plik DLL. W trakcie infekcji plik DLL był wypakowywany do odpowiedniego katalogu na dysku twardym bankomatu, a do klucza rejestru AppInit_DLLs dodawane były odpowiednie wpisy gwarantujące, że biblioteka zostanie wczytana przez każdą aplikację.

Co ciekawe, do „szyfrowania” zasobu użyto zwykłego XOR, jednak kluczem był m. in. numer seryjny dysku twardego bankomatu, przez co plik binarny mógł zadziałać tylko na konkretnym bankomacie. Skąd złodzieje mieli numery seryjne dysków? Albo odwiedzili bankomaty wcześniej, albo ich wiedza pochodziła z wewnątrz banku. Na dysku USB badacze znaleźli również logi z działania oprogramowania, wskazujące na to, że była to czwarta z kolei udana instalacja oprogramowania.

Co potrafi DLL

Po pierwsze, czemu DLL? Prawdopodobnie powodem użycia tej technologii (poza faktem, że bankomaty działały pod kontrolą systemu Windows XP) było użycie przez bank systemu białej listy dopuszczonych aplikacji. Niestety system ten nie sprawdzał, jakie biblioteki DLL ładowane są przez poszczególne aplikacje. To powodowało, że żadne z zabezpieczeń nie zadziałało, gdy aplikacja, odpowiedzialna za komunikację z urządzeniami bankomatu, wczytywała bibliotekę przestępców. Antywirus, zainstalowany w bankomacie, również nie rozpoznał nieznanego złośliwego pliku.

Podstawową funkcjonalnością biblioteki jest przechwytywanie klawiszy naciskanych na klawiaturze bankomatu – wykorzystuje to do komunikacji z przestępcami. Kiedy po zainstalowaniu oprogramowania wtajemniczony użytkownik poda kod 000507607999, zapisany na stałe w aplikacji, uruchomi ukryte menu.

Pierwsze menu

Pierwsze menu

Niestety na razie dysponujemy jedynie zrzutami ekranu takiej jakości, jak powyżej. Co prawda sami badacze nie chcieli określić nawet, w jakim kraju znaleziono infekcje, jednak waluta, jaką widać na ekranie, to brazylijski real, a komunikaty używają języka portugalskiego, zatem raczej nie ma wątpliwości co do tego, z jakiego kraju pochodzi przechwycona próbka.

Pierwsze menu przede wszystkim wyświetla informacje o tym, jakie banknoty i w jakiej ilości znajdują się w poszczególnych szufladach bankomatu. Na powyższym przykładzie widać, że bankomat został już opróżniony z banknotów o najwyższym nominale. Zapewne menu to służy do szybkiego zorientowania się, czy bankomat został już zasilony nową dostawą gotówki – z reguły urządzenia były okradane wkrótce po dostawie banknotów. Użytkownik ma także do wyboru dwie opcje – wyjście z menu lub przejście do kolejnego ekranu.

Sezamie, otwórz się

Drugie menu zawiera najważniejszą funkcję, czyli wypłatę gotówki. Ekran podpowiada nie tylko ile w bankomacie jest pieniędzy, ale także w ilu transakcjach będzie ją wypłacał (jedna wypłata to maksymalnie 40 banknotów).

Drugie menu

Drugie menu

Oprócz tego drugie menu zawiera takie opcje jak odinstalowanie programu i usunięcie wszelkich śladów oraz dezaktywację i aktywację połączenia sieciowego bankomatu. Pierwsza z tych opcji pozwala na pełne usunięcie śladów włamania – używane jest w tym celu oprogramowanie sdelete autorstwa SysInternals, które trwale usuwa pliki, nadpisując je. Najwyraźniej złodzieje nie chcieli, by ktokolwiek odnalazł ślady ich oprogramowania podczas analizy powłamaniowej. Opcja druga i trzecia prawdopodobnie używana jest przed wypłatą i jej zakończeniu – złodzieje odcinają na chwilę bankomat od sieci banku, by nikt nie przeszkodził im w wypłacie.

Jak złodzieje chronią swój interes

Co ciekawe, zarówno usunięcie oprogramowania jak i wypłata gotówki wymagają potwierdzenia kolejnym kodem. Tym razem jednak nie jest to kod zapisany na stałe w programie, a system typu pytanie – odpowiedź. Na ekranie bankomatu pojawia się ciąg znaków, na podstawie którego należy wygenerować prawidłową odpowiedź. Najwyraźniej jest to system, za pomocą którego zleceniodawcy zabezpieczają się przed oszustwem ze strony wykonawców transakcji. Do wypłaty gotówki z bankomatu wysyłani są przestępcy niższego szczebla, którzy muszą zadzwonić do swoich przełożonych, przedyktować kod wyświetlony na ekranie bankomatu i wpisać otrzymaną odpowiedź, by dokonać wypłaty. W ten sposób przestępcy uniemożliwiają wykonawcom transakcji samodzielne dokonywanie wypłat. Również unikatowy klucz szyfrujący plik infekujący zapewnia, że osoba wysłana do danego bankomatu może zainfekować tylko i wyłącznie wskazaną maszynę. Jak opowiedzieli badacze, policja dysponuje nagraniem, na którym widać osobę wypłacającą gotówkę, która dzwoni w trakcie tej operacji do swoich zleceniodawców i wpisuje otrzymany od nich kod.

Kolejny poziom ochrony

Przestępcy starali się również zabezpieczyć przed scenariuszem, w którym ktoś kopiuje złośliwe oprogramowanie i analizuje procedurę generowania odpowiedzi, stanowiącej kod odblokowujący funkcję wypłaty gotówki. Fragmenty aplikacji, odpowiedzialne za weryfikację poprawności kodu oraz za komunikację z oprogramowaniem bankomatu są bardzo sprytnie ukryte. Badacze spędzili podobno nad tym fragmentem kodu kilka tygodni i mimo tego nie udało im się go odtworzyć. Autorzy aplikacji stworzyli automat skończony, który odpowiada za generowanie odpowiedzi oraz za mapowanie wywołań poszczególnych funkcji w aplikacji. Jest to coś w rodzaju czarnej skrzynki, która decyduje o przepływie poleceń w trakcie wykonywania programu. Sam kod automatu skończonego zawiera mnóstwo niepotrzebnych funkcji oraz wykonuje mnóstwo kroków, co sprawia, ze jego analiza wymaga zaangażowania większych zasobów niż te, którymi dysponowali badacze. Praktycznie gwarantuje to zatem, że nikt nieautoryzowany nie przejmie gotówki ze zhakowanych bankomatów.

Kto stoi za tym biznesem

Do tej pory nie wiadomo, kto stworzył to oprogramowanie ani kto czerpie z niego zyski. Bez wątpienia autor (lub autorzy) programu musiał dysponować testowym bankomatem oraz ogromną wiedzą na temat funkcjonowania aplikacji zarządzającej bankomatem. Możliwości są dwie – albo przeprowadził jej pełną analizę wsteczną, albo miał dostęp do jej kodu źródłowego.  Oprogramowanie posiada także możliwość zbierania danych o kartach kredytowych, jednak ten fragment kodu nie jest aktywny – przestępców interesuje tylko gotówka.

Bank w odpowiedzi na to zagrożenie zmienił model bezpieczeństwa bankomatów, wdrażając pełne szyfrowanie dysków twardych (oraz pewnie także i inne procedury, które pozostają niejawne). Z kolei badacze na koniec prezentacji podali także drugi „magiczny kod”, który potrafi, omijając wszystkie zabezpieczenia przestępców, usunąć złośliwe oprogramowanie. Jeśli zatem po podejściu do bankomatu podacie kod 000507607999 i zobaczycie nieznane wcześniej menu, to możecie wklepać 000507607999000753951000 by spłatać figla przestępcom.

Nie pierwszy ani nie ostatni

Podobne oprogramowanie niedawno namierzyła firma Dr Web, działająca na rynku rosyjskojęzycznym. Opisywany przez nich koń trojański przeznaczony jest dla bankomatów firmy NCR z oprogramowaniem Aptra oraz bankomatów firmy Diebold z oprogramowaniem Agilis. Co ciekawe, program ten aktywowany jest poprzez włożenie do bankomatu specjalnie spreparowanej karty i potrafi nie tylko wydawać gotówkę, ale również dokonać aktualizacji, pobierając nowy plik z pamięci mikroprocesora na karcie. Inną ważną funkcją jest przechwytywanie danych kart wraz z kodami PIN i zapisywanie ich w pamięci karty mikroprocesorowej, posiadanej przez złodziei. Niestety nie wiadomo, w jaki sposób przestępcy instalują swoje oprogramowanie w bankomatach. Z kolei w Meksyku w bankomatach odnaleziono konia trojańskiego, nazwanego Plotous, który instalowany był z napędu CD, do którego udało się dobrać przestępcom.

Jeśli chcecie obejrzeć całą prezentację, to pliki z jej zapisem dostępne są tu (dwie części, ponieważ to dopiero surowy zapis z konferencji, który będzie później obrobiony).

Powrót

Komentarze

  • 2013.12.29 00:26 aaaaaah

    Przy takich manipulacjach w bankomatach phreaking https://www.youtube.com/watch?v=0lCZOlJm-_k to pikuś.

    Odpowiedz
  • 2013.12.29 10:59 Robin

    Swietny artykul. A teraz czekamy, az na niebezpieczniku pojawi sie wpis autorstwa niejakiego IgH. Przypadkiemna ten sam temat ;-)

    Odpowiedz
    • 2013.12.29 13:36 Adam

      Przepowiednia własnie się sprawdziła. Przysięgam, ja tam nie piszę :)

      Odpowiedz
      • 2013.12.29 17:49 Robin

        Wiem. Kiedys zauwazylem ta prawidlowosc. Chlopakom brak pomyslu na lans ;]

        Odpowiedz
        • 2013.12.29 19:06 Rafal

          A ja jeszcze wczesniej czytalem o tym na Wired (wired.com/threatlevel/2013/12/whos-robbing-atms-usb-stick/), wiec nie rozumiem skad to przescigiwanie sie kto oierwszy skoro i tak z3s i nbz nie sa pierwszym zrodlem tej wiadomosci :) Prywatnie uwazam ze im wiecej polskich i zagranicznych serwisow pisze o security tym lepiej, oba serwisy i z3s i nbz pokazaly sprawe od innego punktu rozbudowujac temat ponad material Wired i maja unikalne akapity, wiec skoro to nie plagiat ctrl+c/v to nie widze powodu do spinki. Howgh!

          Odpowiedz
          • 2013.12.29 23:27 Robin

            Nie chodzi o to, kto jest zrodlem tylko o wystepujaca prawidlowosc. Sam mozesz sprawdzic czy to sie ciagle powtarza. Dlaczego zgadlem? ;] Nikt sie nie spina, howgh! A ta regula tylko potwierdza jakosc Z3S :]

          • 2013.12.29 23:35 Robin

            A moj komentarz na niebezpieczniku nie przeszedl. Zwrocilem uwage, ze tu bylo wczesniej. Zenada! ;] Ide pykac w Diablo, tam wiadomo kto jest kim ;]

          • 2013.12.30 07:41 Adam

            Polityka komentarzy Niebezpiecznika (http://niebezpiecznik.pl/polityka-komentarzy/) wprost zakazuje wpisów, które „są próbą (krypto)reklamy innego serwisu”. My się aż tak konkurencji nie boimy ;)

          • 2014.01.02 10:00 steppe

            A ja czytuję nb, bo mój znajomy ignorant zna tylko tamten serwis. Dzięki temu wiem, jakim tematem będzie się wymądrzał w najbliższym czasie ;)

  • 2013.12.29 11:41 dexterxx

    Link do wiki o Hiren’sie błędny, BTW chociaż i wiki angielska tak twierdzi i parę losowych źródeł, to ja nie jestem przekonany co do tego, że niby jest na knoppixie oparty… toż to obraz ładujący dosowe menu, dorzucone windowsy, linuksy, ale chociażby samo główne menu aplikacji okienkowej jest dla windowsa… z mojej strony dement jakby ktoś się interesował, ale polecam wypróbować ;)

    Odpowiedz
    • 2013.12.29 11:44 dexterxx

      (chyba, że chodzi o to, że wywodzi się z knoppixa, bo coś mi świta że dawno dawno przed moim dotknięciem paluszkami mógł być oparty o knoppixa, ale to przed erą dinozaurów było… więc lepiej już nie pisać, że bazuje na knoppix’ie ;))

      Odpowiedz
    • 2013.12.29 12:29 Adam

      Dzięki, poprawione. Wzmianka o Knoppiksie rzeczywiście niepotwierdzona, dopisałem zatem źródło.

      Odpowiedz
  • 2013.12.29 13:31 adf88

    Dlaczego jest jak jest wiadomo – pieniądze. Zastanawia mnie jedno, czy na pewno się opłaca? Nie lepiej byłoby stworzyć i utrzymywać jakieś porządne, dedykowane oprogramowanie?

    Odpowiedz
  • 2013.12.29 13:37 prymityw

    A ja się uczę podstaw c++ dopiero :D Skąd Ci ludzie mają tak ogromną wiedzę ?

    Odpowiedz
  • 2013.12.29 15:23 Damian

    takich to ja podziwiam :3

    Odpowiedz
    • 2013.12.29 16:00 Policjant

      a ja ich ścigam

      Odpowiedz
    • 2013.12.30 10:24 steppe

      Nie ma co podziwiać. Jeśli ktoś używa swojej wiedzy i zdolności do okradania innych, a mógłby dobrze zarobić uczciwie, to jest debilem. Nie rozumie co się opłaca na dłuższą metę.

      Odpowiedz
  • 2013.12.29 16:57 pismak

    „Jeśli zatem po podejściu do bankomatu podacie kod 000507607999 i zobaczycie nieznane wcześniej menu” … i niedługo potem na własne oczy zobaczycie twarze smutnych panów ubranych na czarno :)

    A tak poważnie – ciekawe czy wybierają wyłącznie bankomaty na odludziach? Powiedzmy wybierając bankomat zainstalowany w sali banku to jesteśmy bezpieczni czy może i tak nikt nie przegląda taśm z tego co się działo w nocy?

    Bankomaty jak banknoty NBP powinny być identyczne + logo sieci tak by każdy był w stanie zauważyć nietypowe przeróbki.

    Odpowiedz
  • 2013.12.29 17:14 d33tah

    Widziałem ten wykład na żywo, był świetny. Pozdrowienia z 30c3! :)

    Odpowiedz
    • 2013.12.29 17:28 Adam

      Co jeszcze widziałeś wartego artykułu? Oglądanie transmisji jest bardzo czasochłonne :)

      Odpowiedz
  • 2013.12.29 17:39 d33tah

    The Year of Crypto, ZMap, Keynote, do you think that’s funny, The Tor Network, Bug Class Genocide. Póki co, pierwszy dzień był IMHO najciekawszy.

    Odpowiedz
    • 2013.12.29 18:01 Adam

      Dzięki!

      Odpowiedz
      • 2013.12.30 10:19 steppe

        Kolega do mnie pisał, że jest pod wrażeniem Zmapa. Może być ciekawe ;)

        Odpowiedz
  • 2013.12.29 17:46 d33tah

    (niemieckich jeszcze nie oglądałem, naprawdę nie mam tu jak słuchać tłumaczeń. Teraz słucham o Tamagotchi :P)

    Odpowiedz

Zostaw odpowiedź do Adam

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Hakowanie bankomatów przez port USB i dziurę w obudowie

Komentarze