kép: Sascha Kohlmann , CC BY-SA 2.0
vannak olyan rendszerek, amelyekhez az egyszerű halandók alapértelmezés szerint nem férnek hozzá. És az ilyen rendszerek fejlesztői naiv módon úgy vélik, hogy védettek a behatolástól és a kutatók éles szemétől.
vegyen legalább ATM-eket (ATM). Nem ritka, hogy ismeretlen emberek megközelítik az ATM-eket, csatlakoztatnak egy laptopot, pénzt vesznek el és távoznak anélkül, hogy naplókat hagynának a rendszerben. A “cutlets” (a Cutlet Maker nevű rosszindulatú program ) legújabb történetei pedig még inkább megerősítik, hogy nincsenek sebezhetetlen rendszerek – vannak alul kutatott rendszerek.

kutatás megkezdése

véleményünk szerint az egyetlen módja annak, hogy pénzt lopjunk egy ATM-ből, hogy megérkezzünk egy billenőkocsiba, vegyünk fel egy ATM-et egy horoggal, és tépjük ki gibletekkel, majd használjuk a darálót, a törmeléket és a gázhegesztőgépet. De van egy másik módszer.
az Ebay-en végzett rövid keresés után az asztalomon volt egy NCR USB S1 adagoló zsebkendő firmware-rel. A célok a következők voltak:

  • keresse meg a számítógép által USB-n keresztül magának az adagolónak küldött parancsok titkosításának megkerülését, különösen a bankjegyek kibocsátásához
  • Ismerje meg, hogyan lehet megkerülni a széfhez való fizikai hozzáférés szükségességét hitelesítés céljából (a kazetta zsonglőrködése) az előző bekezdés parancs titkosítási kulcsainak előállításához.

Firmware

a firmware egy ELF fájl az NXP ColdFire processzorhoz ( Motorola 68040 , a kedvenc processzorom), amely a VxWorks v5.5.1 rendszeren fut .

az ELF fájlt az érdeklődés két fő részből áll – .szöveg és .adatok :

  • az egyik tartalmaz egy kódot, amely az egész fő időt (nevezzük a fő firmware-nek) fordítja, amikor az adagoló az ATM tetején lévő rendszeregységhez csatlakozik.
  • a másodikban a rendszerbetöltő kód a zlib használatával van csomagolva (helyi neve USB Secure Bootloader), amely felelős a firmware feltöltéséért és a fő kód futtatásáért.

és a legjobb az egészben, hogy vannak vágatlan karakterek a fájlban – fogd és keress valami érdekeset.

a fő firmware belső eszköze

ha a kódot a fő összetevőkre osztja, akkor a következő sémát kapja (a benyújtás sorrendjében):

  1. olyan adatfolyam, amely az USB-csomagok fogadásával és a szolgáltatások közötti elosztással foglalkozik.
  2. a szolgáltatások az alapvető teljesítő egységek, mindegyiknek megvan a maga szerepe és mindegyiknek megvan a maga feladata (osztálya).
  3. osztályok – itt ezek olyan feladatok, amelyeket a szolgáltatás a vezérlők segítségével végezhet.
  4. az irányítók valójában “munkások” ( munkások), akik a nekik küldött feladatok validálásával, végrehajtásával, válaszcsomagok kialakításával foglalkoznak.


mivel a firmware-ben sok kód van, úgy döntöttek, hogy az összes lehetséges szolgáltatás keresésével kezdik, majd megnézik, hol kerülnek át a feladatok.
ennek eredményeként a következő szolgáltatásokat találták meg, amelyeknek csak azt kell tenniük, amit keresek:
1) DispTranService (adagoló tranzakciós szolgáltatás) : titkosított parancsokkal való munka, bankjegyek kötegeinek előállítása, hitelesítés. Azt lehet mondani, a legérdekesebb-itt.

2) securityService: az adagoló oldalán történő hitelesítés után létrejön egy munkamenet-kulcs, amelyet a számítógép kérésére titkosított formában küld a számítógépre. Ezzel a kulccsal minden fontos parancs titkosítva lesz-kibocsátás,egy halom bankjegy.

ezt követően egy másik szolgáltatás megakadt a szemem: UsbDownloadService. Feladata, hogy csatlakoztassa az adagolót a számítógéphez, valamint az adagoló firmware verziójának az ATM számítógépen tárolt verzióját, hogy menjen a rendszerbetöltőbe annak érdekében, hogy feltöltse a firmware-t, amellyel az operációs rendszernek működnie kell (ez a mappában van a gyártó szoftverével a számítógépen). Ez a szolgáltatás képes információt adni a firmware verziójáról is.

fizikai hitelesítés

a fizikai hitelesítés a legmagasabb szinten valósul meg, és megvédi az ATM-et attól, hogy egyszerűen USB-parancsokat küldjön engedély nélkül. Ebben az esetben abban a tényben rejlik, hogy csak pénzzel nyitott széfnél kell végrehajtania az alábbi műveletek egyikét:

  • távolítsa el és helyezze be az alsó kazettát,
  • kapcsolja be az állvány hátulján található kapcsolót az adagolóval.


de mindez csak akkor szükséges, ha a hozzáférési szint a maximálisra van állítva, azaz fizikai. Ezek közül három van: USB (0), logikai (1) és fizikai (2). A fennmaradó kettőt a szolgáltatók és a fejlesztők használják a firmware hibakeresésére és tesztelésére. Nos, a fizikai készüléket az eladó alapértelmezés szerint erősen ajánlja.

biztonsági rés

az alábbiakban ismertetjük a kritikus biztonsági rést (amelyet az eladó a cikk közzétételekor már rögzített), amely, ha van hozzáférés a szolgáltatási területhez, de a széfhez való hozzáférés nélkül (például az ATM előlapján lévő lyukon keresztül), hajtsa végre az adagoló bármely parancsát, beleértve a készpénzt is.

mint kiderült, az UsbDownloadService olyan parancsokat fogad el, amelyek nem igényelnek titkosítást. Csábítóan hangzik. De akkor minden tovább védett, és a Secure Bootloader név igazolja magát?
(Spoiler: nem indokolja!)

mélyebbre kell mennünk

mint már említettük, a .adatszakasz van egy csomagolt bootloader kód, amely sokáig nem keltette fel az érdeklődésemet, kollégáim pedig, amikor megvizsgálták a firmware-t, nem figyeltek rá.


míg a bootloader jelenléte titkos volt, a kérdés nyitva maradt: hogyan töltötte be a számítógépen lévő szoftver a firmware-t? Végül is semmit sem találtak a fő firmware-ben.

tehát a rendszerbetöltő kicsomagolva van, betöltve az IDA-ba az offset 0x100000-nél-most felfedezheti … Csak nincsenek karakterek!
nem számít: összehasonlítva a fő firmware – t a bootloader kóddal, elolvasva a vezérlő adatlapját-és egy bizonyos kép kezd megjelenni.

kiderült, hogy a firmware feltöltése, bár úgy tűnik, hogy védett, valójában nem. Csak tudnia kell, hogyan kell helyesen kitölteni.
elég sok erőfeszítést és időt fordítottunk ennek a folyamatnak a teljes megértésére (további részletekért lásd a ” Blackbox is dead — Long live Blackbox!”A Black Hat 2018 konferencián Las Vegasban). Mennyibe kerül az NVRAM memóriájának forrasztása, biztonsági másolat feltöltése a teljes vezérlő “megszórása” érdekében … Köszönet Alexey kollégának a türelméért!
az eredmény a következő algoritmus volt a firmware feltöltéséhez az adagolóba:
1) Hozzon létre egy pár RSA kulcsot, majd öntse a nyilvános kulcsot a vezérlőbe.

2) Írja egymás után a .adatok és .szöveges szakaszok az ELF-től a fizikai címeikig a szakaszfejlécekből.

3) Számítsa ki az SHA-1-et a rögzített adatokból, titkosítsa a kivonatot egy privát kulccsal, küldje el a vezérlőnek.

4) számolja meg és küldje el az összes rögzített firmware szó összegét.

ezt követően, ha mindent kiszámítanak és sikeresen rögzítenek, a fő firmware letöltésre kerül.
kiderült, hogy a firmware írásakor csak egy korlátozás van: a firmware verziójának nem szabad alacsonyabbnak lennie, mint a jelenlegi. De végül is senki sem zavar minket, hogy a firmware verzióját az adataiban helyettesítsük.
ennek eredményeként a speciális firmware-t az anti-biztonsági javításokkal elárasztották és sikeresen elindították!
ezen a ponton jól tanulmányozták a fő firmware kódját, találtak parancsokat a bankjegyek kibocsátására. Most titkosítatlanul küldhetők el, és az adagoló boldogan végrehajtja őket.

kiadatási

miután minden, amit tapasztalt a kutatás során (például egy igazi ATM zakirpicheny), az eredmény annyira kellemes, és kompenzálja az erőfeszítéseket, hogy az algoritmus akarta ismételni egy másik nagy szállító.

az igazi ATM kezdett whir és szívesen megosztott velünk friss ropogós jegyzetek (ebben az esetben eladó “candy wrappers”). Nem volt varázslat: csak egy laptop, egy agy és egy USB-kábel.

megállapítások

ismét meg voltunk győződve arról, hogy a homályon keresztüli biztonság elve alapján lehetetlen megfelelő védelmet biztosítani. A kód vagy a firmware megfelelősége egyáltalán nem jelenti azt, hogy a támadó egy ponton nem fér hozzá, és nem fogja kihasználni a talált sebezhetőségeket. Minden, ami az önző célok megvalósításához szükséges, egy bizonyos összeg jelenlétében megszerezhető.
a fejlesztőknek foglalkozniuk kell a kóddal, a biztonsági szakembereknek pedig meg kell védeniük. Éppen ezért úgy tűnik, hogy a legtermékenyebb megközelítés az információbiztonsági vállalatokkal való együttműködés, amelyek elegendő tapasztalattal rendelkeznek a különböző rendszerek biztonságának biztosításában, ami minden egyes esetben megfelelő védelmet nyújt.
a PS szállítója megerősítette a biztonsági rést (a jogsértést egy másik modellben is megtalálták – S2), amelyet a 2018.év februári javításában módosítottak.
CVE lista:

  • CVE-2017-17668 (NCR S1 adagoló),
  • CVE-2018-5717 (NCR S2 adagoló).

köszönöm

előttem kollégáim, Dima Sklyarov és Misha Tsvetkov már dolgoztak a firmware-en (bár adagoló tábla nélkül) . Eredményeik sokat segítettek nekem a tanulmányban, amiért nagyon köszönöm nekik! A” vas ” részéről Alexey Stennikov sokat segített nekem .

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.