Duqu - шкоднасная матрошка

Увядзенне

1 верасня 2011 г., з Венгрыі, на сайт VirusTotal быў адпраўлены файл з імем ~DN1.tmp. На той момант файл дэтэктаваўся як шкоднасны толькі двума антывіруснымі рухавікамі – BitDefender і AVIRA. Так пачыналася гісторыя Duqu. Забягаючы наперад, трэба сказаць, што сямейства ВПО Duqu было названа так па імені гэтага файла. Аднак гэты файл з'яўляецца цалкам самастойным шпіёнскім модулем з функцыямі кейлоггера, усталяванага, верагодна, з дапамогай шкоднаснага загрузніка-дропера, і можа разглядацца толькі ў якасці "карыснай нагрузкі", загружанай ВПО Duqu падчас сваёй працы, але не складовай часткай (модулем) Duqu . Адзін з кампанентаў Duqu быў адпраўлены на сервіс Virustotal толькі 9 верасня. Яго адметная асаблівасць – гэта драйвер, падпісаны лічбавым подпісам кампаніі C-Media. Некаторыя эксперты тут жа прыняліся праводзіць аналогіі з іншым знакамітым узорам СПА – Stuxnet, які таксама выкарыстоўваў падпісаныя драйверы. Агульная колькасць заражаных Duqu кампутараў, выяўленымі рознымі антывіруснымі кампаніямі па ўсім свеце, вылічаецца дзясяткамі. Многія кампаніі сцвярджаюць, што зноў галоўная мэта - Іран, аднак мяркуючы па геаграфіі размеркавання заражэнняў, гэтага нельга сцвярджаць напэўна.
Duqu - шкоднасная матрошка
У дадзеным выпадку варта ўпэўнена казаць толькі аб чарговай кампаніі з навамодным словам. APT (advanced persistent threat).

Працэдура ўкаранення ў сістэму

Расследаванне, якое праводзіцца спецыялістамі Венгерскай арганізацыі CrySyS (Венгерская лабараторыя крыптаграфіі і сістэмнай бяспекі Будапешцкага ўніверсітэта тэхналогіі і эканомікі), прывяло да выяўлення ўсталёўшчыка (дропера), з дапамогай якога адбывалася заражэнне сістэмы. Ён уяўляў сабой файл фармату Microsoft Word з эксплоітам уразлівасці драйвера win32k.sys (MS11-087, апісаная Microsoft 13 лістапада 2011 г.), які адказвае за механізм рэндэрынгу TTF шрыфтоў. Шаўкод эксплоіту выкарыстоўвае ўбудаваны (embedded) у дакумент шрыфт з назвай 'Dexter Regular', у якасці стваральніка шрыфта указана кампанія Showtime Inc. Як відаць, стваральнікам Duqu не чужое пачуццё гумару: Dexter – серыйны забойца, герой тэлевізійнага серыяла з аднайменнай назвай, які здымаецца кампаніяй Showtime. Dexter забівае толькі (па магчымасці) злачынцаў, гэта значыць пераступае закон у імя законнасці. Верагодна, такім чынам, распрацоўшчыкі Duqu іранізуюць, што яны займаюцца супрацьпраўнай дзейнасцю з добрымі мэтамі. Адпраўка лістоў па электроннай пошце вялася мэтанакіравана. Для адпраўкі, хутчэй за ўсё, выкарыстоўваліся скампраметаваныя (узламаныя) кампутары ў якасці пасярэдніка для цяжкасці адсочвання.
У дакуменце Word, такім чынам, знаходзіліся наступныя кампаненты:

  • тэкставае змесціва;
  • убудаваны шрыфт;
  • шаўкод эксплоіту;
  • драйвер;
  • усталёўнік (бібліятэка DLL).

У выпадку паспяховага спрацоўвання шаўкод эксплоіта выконваў наступныя аперацыі (у рэжыме ядра):

  • праводзілася праверка на паўторнае заражэнне, для гэтага ў рэестры па адрасе 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsZones4' правяралася наяўнасць ключа 'CF1D', калі гэта было дакладна, шаўкод завяршаў сваё выкананне;
  • расшыфроўваліся два файла - драйвер (sys) і ўсталёўнік (dll);
  • драйвер инжектировался ў працэс services.exe і выконваў запуск усталёўніка;
  • у завяршэнні шоўкод заціраў сябе нулямі ў памяці.

Дзякуючы таму, што win32k.sys выконваецца ад імя прывілеяванага карыстальніка 'System', распрацоўшчыкамі Duqu была элегантна вырашана задача як несанкцыянаванага запуску, так і павышэння правоў (запуск з-пад акаўнта карыстальніка з абмежаванымі правамі).
Усталёўнік пасля атрымання кіравання расшыфроўваў у памяці змешчаныя ў ім тры блока дадзеных, якія змяшчаюць:

  • падпісаны драйвер (sys);
  • асноўны модуль (dll);
  • дадзеныя канфігурацыі ўсталёўніка (pnf).

У дадзеных канфігурацыі ўсталёўніка быў зададзены дыяпазон дат (у выглядзе двух часавых пазнак - пачатковай і канчатковай). Усталёўнік правяраў, ці пападае бягучая дата ў яго, калі няма – завяршаў сваё выкананне. Таксама ў дадзеных канфігурацыі ўсталёўніка былі паказаны імёны, пад якімі захоўваліся драйвер і асноўны модуль. Пры гэтым асноўны модуль захоўваўся на дыску ў зашыфраваным выглядзе.

Duqu - шкоднасная матрошка

Для аўтазапуску Duqu стваралася служба, якая выкарыстоўвае файл драйвера, які расшыфроўваў асноўны модуль на лета, пры дапамозе ключоў, захаваных у рэестры. Асноўны модуль утрымоўвае ў сабе свой уласны блок дадзеных канфігурацыі. Пры першым запуску ён расшыфроўваўся, у яго занасілася дата ўсталёўкі, пасля чаго ён зноў зашыфроўваўся і захоўваўся асноўным модулем. Такім чынам, у здзіўленай сістэме пры паспяховай усталёўцы захоўваліся тры файла - драйвер, асноўны модуль і яго файл дадзеных канфігурацыі, пры гэтым апошнія два файла захоўваліся на дыску ў зашыфраваным выглядзе. Усе працэдуры расшыфроўкі праводзіліся толькі ў памяці. Такая складаная працэдура ўстаноўкі прымянялася для мінімізацыі магчымасці дэтэктавання антывірусным праграмным забеспячэннем.

Асноўны модуль

Асноўны модуль (рэсурс 302), па інфармацыі кампаніі Kaspersky Lab, напісаны з выкарыстаннем MSVC 2008 на чыстым З, аднак з выкарыстаннем аб'ектна-арыентаванага падыходу. Гэты падыход з'яўляецца нехарактэрным пры распрацоўцы шкоднаснага кода. Як правіла, такі код пішацца на C, каб паменшыць памер і пазбавіцца ад няяўных выклікаў, уласцівых C++. Тутака ж назіраецца нейкі сімбіёз. Плюс выкарыстоўвалася падзейна-арыентаваная архітэктура. Супрацоўнікі Kaspersky Lab схіляюцца да тэорыі, што асноўны модуль быў напісаны з выкарыстаннем перадпрацэсарнай надбудовы, якая дазваляе пісаць код на C у аб'ектным стылі.
Асноўны модуль адказвае за працэдуру атрымання каманд ад аператараў. У Duqu прадугледжана некалькі спосабаў узаемадзеяння: з выкарыстаннем пратаколаў HTTP і HTTPS, а гэтак жа з дапамогай найменных каналаў (pipe). Для HTTP(S) паказваюцца даменныя імёны камандных цэнтраў, пры гэтым прадугледжвалася магчымасць працы праз проксі-сервер - для іх задаваліся імя карыстальніка і пароль. Для канала задаюцца IP адрас і яго імя. Указаныя дадзеныя захоўваюцца ў блоку дадзеных канфігурацыі асноўнага модуля (у зашыфраваным выглядзе).
Для выкарыстання найменных каналаў запускалася ўласная рэалізацыя RPC сервера. Яна падтрымлівала выкананне наступных сямі функцый:

  • вярнуць устаноўленую версію;
  • выканаць інжект dll у паказаны працэс і выклікаць паказаную функцыю;
  • загрузіць dll;
  • запусціць на выкананне працэс з дапамогай выкліку CreateProcess();
  • чытаць змесціва зададзенага файла;
  • запісаць дадзеныя ў зададзены файл;
  • выдаліць зададзены файл.

Найменныя каналы маглі выкарыстоўвацца ўсярэдзіне лакальнай сеткі для распаўсюджвання паміж заражанымі Duqu кампутарамі абноўленых модуляў і дадзеных канфігурацыі. Акрамя таго, Duqu мог выступаць у якасці проксі-сервера для іншых заражаных кампутараў (у якіх не было доступу да Інтэрнэту з-за налад сеткавага экрана на шлюзе). У асобных версіях Duqu функцыянал RPC адсутнічаў.

Вядомыя "карысныя нагрузкі"

Кампаніяй Symantec было выяўлена сама меней чатыры выгляду "карыснай нагрузкі", загружанай па камандзе ад кіраўніка цэнтра Duqu.
Пры гэтым толькі адна з іх была рэзідэнтнай і скампіляванай у выглядзе выкананага файла (exe), які захоўваўся на дыск. Астатнія тры былі выкананы ў выглядзе dll бібліятэкі. Яны загружаліся дынамічна і выконваліся ў памяці без захавання на кружэлку.

Рэзідэнтная "карысная нагрузка" ўяўляла сабой шпіёнскі модуль (infostealer) з функцыямі кейлоггера. Менавіта з адпраўкі яго на VirusTotal і пачалася праца па даследаванні Duqu. Асноўны шпіёнскі функцыянал знаходзіўся ў рэсурсе, першыя 8 кілабайт якога змяшчалі частку фота галактыкі NGC 6745 (для маскіроўкі). Тут трэба нагадаць, што ў красавіку 2012 года ў некаторых СМІ публікавалася інфармацыя (http://www.mehrnews.com/en/newsdetail.aspx?NewsID=1297506), што Іран падвергся ўздзеянню нейкага шкоднаснага праграмнага забеспячэння "Stars", пры гэтым падрабязнасці інцыдэнту не раскрываліся. Магчыма, менавіта такі ўзор "карыснай нагрузкі" Duqu быў знойдзены тады ў Іране, адсюль і назва - "Stars" (зоркі).
Шпіёнскі модуль збіраў наступную інфармацыю:

  • спіс запушчаных працэсаў, інфармацыю аб бягучым карыстальніку і дамене;
  • пералік лагічных дыскаў, у тым ліку сеткавыя;
  • здымкі экрана;
  • адрасы сеткавых інтэрфейсаў, табліцы маршрутызацыі;
  • лог-файл націскаў клавіш клавіятуры;
  • імёны адчыненых вокнаў прыкладанняў;
  • пералік даступных рэсурсаў сеткі (sharing resources);
  • поўны спіс файлаў на ўсіх дысках, у тым ліку здымныя;
  • спіс кампутараў у "сеткавым асяроддзі".

Яшчэ адзін шпіёнскі модуль (infostealer) уяўляў сабой варыяцыю ўжо апісанага, але скампіляванага ў выглядзе dll бібліятэкі, з яго былі прыбраныя функцыі кейлоггера, складанні спісу файлаў і пералічэнні кампутараў, якія ўваходзяць у дамен.
Наступны модуль (разведка) збіраў сістэмную інфармацыю:

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

Апошні модуль (lifespan extender) рэалізоўваў функцыю павелічэння значэння (захоўвацца ў файле дадзеных канфігурацыі асноўнага модуля) колькасці дзён, якія засталіся да завяршэння працы. Па змаўчанні гэтае значэнне ўсталёўвалася роўным 30 ці 36 дням у залежнасці ад мадыфікацыі Duqu, і памяншалася на адзінку кожны дзень.

Камандныя цэнтры

20 кастрычніка 2011 г. (праз тры дні пасля распаўсюджвання інфармацыі аб выяўленні) аператары Duqu правялі працэдуру знішчэння слядоў функцыянавання камандных цэнтраў. Камандныя цэнтры размяшчаліся на ўзламаных серверах па ўсім свеце - у В'етнаме, Індыі, Германіі, Сінгапуры, Швейцарыі, Вялікабрытаніі, Галандыі, Паўднёвай Карэі. Цікава, што ўсе выяўленыя серверы працавалі пад кіраваннем АС CentOS версій 5.2, 5.4 ці 5.5. АС былі як 32-бітнымі, так і 64-бітнымі. Нягледзячы на ​​тое, што ўсе файлы, датычныя працы камандных цэнтраў, былі выдаленыя, адмыслоўцам Kaspersky Lab атрымалася аднавіць частку інфармацыі LOG файлаў з slack space. Найбольш цікавы факт, што зламыснікі на серверах заўсёды замянялі пакет OpenSSH 4.3, усталяваны па змаўчанні, на версію 5.8. Гэта можа паказваць на выкарыстанне для ўзлому сервераў невядомай уразлівасці ў OpenSSH 4.3. Не ўсе сістэмы выкарыстоўваліся ў якасці камандных цэнтраў. Некаторыя, мяркуючы па памылках у логах sshd пры спробах перанакіравання трафіку для партоў 80 і 443, выкарыстоўваліся ў якасці проксі-сервера для злучэння з канчатковымі каманднымі цэнтрамі.

Даты і модулі

Дакумент Word, які рассылаецца ў красавіку 2011 гады, які даследавалі ў Kaspersky Lab, утрымоўваў у сабе драйвер загрузкі ўсталёўніка з датай кампіляцыі 31 жніўня 2007 гады. Аналагічны драйвер (памер – 20608 байт, MD5 – EEDCA45BD613E0D9A9E5C69122007F17) у дакуменце, які трапіў у лабараторыі CrySys, меў дату кампіляцыі 21 лютага 2008 года. Акрамя гэтага, экспертамі Kaspersky Lab быў знойдзены драйвер аўтазапуску rndismpc.sys (памер – 19968 байт, MD5 – 9AEC6E10C5EE9C05BED93221544C783E) з датай 20 студзеня 2008 года. Не было знойдзена ніводнага кампанента з адзнакай 2009 года. Зыходзячы з часавых адзнак кампіляцыі асобных частак Duqu яго распрацоўка магла ставіцца да пачатку 2007 гады. Найбольш ранняя яго праява злучана з выяўленнем часавых файлаў выгляду ~DO (верагодна ствараным адным са шпіёнскіх модуляў), дата стварэння якіх 28 лістапада 2008 гады (артыкул "Duqu & Stuxnet: Timeline of Interesting Events"). Найбольш позняя дата, якая адносіцца да Duqu – 23 лютага 2012 года, яна ўтрымлівалася ў драйверы загрузкі ўсталёўніка, выяўленым супрацоўнікамі Symantec у сакавіку 2012 года.

Выкарыстаныя крыніцы інфармацыі:

цыкл артыкулаў аб Duqu ад кампаніі Kaspersky Lab;
аналітычная справаздача кампаніі Symantec "W32.Duqu The precursor to the next Stuxnet", version 1.4, November 2011 (pdf).

Крыніца: habr.com

Дадаць каментар