Subscribe feed

Тэхнічнае апісанне бекдора ў банкаматах Diebold

27 сакавіка 2009

У якая склалася эканамічнай сітуацыі мы абвыклі чуць, як чарговы банк скарачае сваіх супрацоўнікаў і звяртаецца ў аўтсорсінгавыя кампаніі для распрацоўкі праграмнага забеспячэння.

Асноўнае пытанне, узмацняе гэтая практыка рызыка атрымання тайминговой бомбы, прашытых уліковых запісаў або проста бекдоров, утоеных уласнымі распрацоўнікамі.

Цікавы фрагмент кода, выяўлены Янкам Сватчером (Vanja Svajcer) з Sophos пацвярджае нашы асцярогі.

Паколькі да канца невядома (адсутнічаюць доказы), як гэты код патрапіў у банкамат, мы можам выказаць здагадку, што гэта зрабіў чалавек, дасведчаны архітэктуру і мелы фізічны доступ да апаратнага і праграмнага забеспячэння Diebold ATM. Прывілеяваны інсайдэр, які альбо жадаў забяспечыць страхоўку на «чорны дзень», маючы неабмежаваны доступ да гатоўкі, альбо планаваў правесці маштабны размеркаваны напад на слоікі.

http://4.bp.blogspot.com/_teq8tr511YQ/ScCkVoQr1SI/AAAAAAAAAzU/s69NDA0wreI/s320/diebold.jpg

У любым выпадку, бекдор старанна хавае сябе на сістэме. Чаму? Хутчэй за ўсё, для таго, каб заставацца незаўважаным падчас аўдытарскіх праверак.

Бекдор складаецца з «дроппера» і пакінутага кампанента.

Калі на сістэме выкарыстоўваецца файлавая сістэма NTFS, дроппер створыць 2 альтэрнатыўных струменя дадзеных:
%windir%greenstone.bmp:redstone.bmp
%windir%greenstone.bmp:bluestone.bmp

У адваротным выпадку, створыць 2 файла:
%windir%
edstone.bmp
%windir%luestone.bmp

Гэтыя файлы ствараюцца з гэтых дзід файлаў, калі яны выяўленыя на сістэме:
%windir% rl2
%windir%kl

Затым, дроппер падае сабе прывілеі ўзроўня SeDebugPrivilege і робіць 50 спроб завяршыць працэс lsass.exe.

Бекдор усталёўвае сябе наступным чынам:

  • Атрымлівае поўны шлях да бінарнага файла сістэмнай службы "LogWriter"
  • Спыняе службу "LogWriter"
  • Дадае да імя ":", за якім варта pwrstr.dll
  • Змяшчае ўласны рэсурс PACKAGEINFO у альтэрнатыўны струмень дадзеных [LogWriter_binary_filename]:pwrstr.dll
  • Запускае службу "LogWriter", разам з якой выконваецца бібліятэка з новай крыніцы.

Нарэшце, дроппер укараняе і запускае выдаленую нітку падчас explorer.exe, якая пералічвае і выдаляе ўсё Windows Prefetch файлы.

Пасля актывацыі, бібліятэка ўкараняе 2 ніткі: адна будзе ўкаранёная ў працэс mu.exe, іншая – у працэс SpiService.exe - асноўную службу ("Diebold XFS Service") прапрыетарнага ПА, які працуе на банкаматах Diebold. Гэтыя ніткі будуць адказныя за ўнутранае паведамленне з драйверам Diebold праз імянны канал "\.pipelsndbd".

Іншая нітка пачне периодичный выклік (раз у секунду) API SQReceiveFromServer(), экспартуемага sharedq.dll. Змесціва буфера, запоўненае гэтай функцыяй, будзе правярацца на наяўнасць тэгаў "TCS," і "HST,".

Калі значэнні, паказаныя ў тэгах, падзяляюцца знакам ";", нітка іх выме і запіша ў часопіс у файл %windir%greenstone.bmp:redstone.bmp на NTFS сістэме або ў файл %windir%
edstone.bmp на іншай файлавай сістэме.
Бо тэг "TCS," азначае транзакцыі, а тэг "HST," гісторыю, бекдор здольны збіраць дадзеныя аб карыстачах і транзакцыях у вышэйзгаданым файле.

У выпадку, калі працэс апрацоўкі транзакцыі выяўляе вызначаныя дадзеныя, меркавана ўнікальныя для атакаванага банкамата, бекдор пяройдзе ў графічны рэжым, які падасць атакаваламу поўны доступ да бекдору. У гэтым выпадку на дысплеі банкамата будзе адлюстравана дыялогавае акно з надпісам "Agent" і запрашэннем "Enter command:", і драйверу Diebold будуць перададзеныя каманды на актывацыю клавіятуры і чытанне ўваходных дадзеных праз паслядоўнасць каманд, прадстаўленых DbdDevExecute() API, экспартуемых DbdDevAPI.dll. напрыклад, драйвер атрымае наступныя каманды:
EPP4_ENCODE_DECODE, EPP4_ENABLE_KEYBOARD_READ.

Затым, атакавалы падае адну з 10 магчымых каманд шляхам уводу нумара на клавіятуры. Кожная каманда інструктуе бекдор для выканання вызначаных дзеянняў.

Напрыклад, каманда «2» праінструктуе бекдор прачытаць версію ўсталяванага ПА Diebold з ключоў рэестру:
HKLMSOFTWAREDieboldAgilis 91x Core
HKLMSOFTWAREDieboldAgilis 91x

Затым гэтая каманда прачытае змесціва часавых файлаў redstone.bmp і bluestone.bmp і апрацуе дэталі транзакцый з гэтых файлаў. Нарэшце, будзе адлюстравана апавяшчэнне з сабранай статыстыкай у наступным выглядзе:
Agilis [version number]
Agent [version number]
Transactions [number]
Cards [number]
KEYs [number]

Каманда 6 праінструктуе бекдор аднавіць "Key A" і "Key B" з файла redstone.bmp, які будзе раздрукаваны на чэку.
Каманда 8 дазволіць атакаваламу адлюстраваць унутраныя лічыльнікі ў дыялогавым акне (гэта можа патэнцыйна паведаміць аб колькасці гатоўкі ў банкамаце).

Каманда 7 згенеруе выпадковы лік і затым згенеруе на яго аснове пароль. Затым будзе адлюстравана дыялогавае акно "Autorization" (арфаграфія захаваная):
Request Code: [random number]
Enter Responce:

Будзе прадстаўлена 3 спробы для ўводу карэктнага пароля.
Калі пароль карэктны, будзе адлюстравана дыялогавае акно "Enter Command" (арфаграфія захаваная)
1..4 - dispense cassete
9 - Uninstall
0 - Exit

У выпадку 1-4 будуць выкананыя каманды AFD_DISPENCE, AFD_PRESENT і AFD_RESTORE, якія праінструктуюць Advanced Function Dispenser (AFD) модуль выключыць касеты з гатоўкай з банкамата.

З такім узроўнем вытанчанасці, улічваючы наяўнасць траянскага прыкладання ў яго класічнай форме ўсярэдзіне банкамата, нават такія паранаідальныя прыёмы не выратуюць вас ад крадзяжу:

http://2.bp.blogspot.com/_teq8tr511YQ/ScCqDptV5EI/AAAAAAAAAzk/TSOJnyLWYxc/s320/atm.jpg


рэкамендуем прачытаць таксама

Каментаванне не дазволенае.

Rambler's Top100