Duqu е злонамерена матрьошка

въведение

На 1 септември 2011 г. файл с име ~DN1.tmp беше изпратен до уебсайта на VirusTotal от Унгария. По това време файлът беше открит като злонамерен само от две антивирусни машини - BitDefender и AVIRA. Така започва историята на Duqu. Гледайки напред, трябва да се каже, че семейството на зловреден софтуер Duqu е кръстено на този файл. Този файл обаче е напълно независим шпионски модул с функции за кийлогър, вероятно инсталиран с помощта на злонамерен капкомер за изтегляне, и може да се разглежда само като „полезен товар“, изтеглен от зловреден софтуер Duqu в хода на неговата работа, но не и неразделна част част (модул) на Duqu . Един от компонентите на Duqu беше изпратен до услугата Virustotal едва на 9 септември. Неговата отличителна черта е драйвер, подписан с цифров подпис от C-Media. Някои експерти веднага започнаха да правят аналогии с друг известен пример за зловреден софтуер - Stuxnet, който също използваше подписани драйвери. Общият брой на компютрите, заразени с Duqu, открити от различни антивирусни компании по света, е десетки. Много компании твърдят, че Иран отново е основната цел, но съдейки по географията на разпространение на инфекциите, това не може да се каже със сигурност.
Duqu е злонамерена матрьошка
В този случай трябва уверено да се говори само за друга компания с новомодна дума APT (усъвършенствана постоянна заплаха).

Процедура за внедряване в системата

Разследване, проведено от специалисти от унгарската организация CrySyS (Унгарска лаборатория по криптография и системна сигурност на Университета по технологии и икономика в Будапеща), доведе до откриването на инсталатор (дропер), чрез който системата е била заразена. Това беше файл на Microsoft Word с експлойт за уязвимостта на драйвера win32k.sys (MS11-087, описан от Microsoft на 13 ноември 2011 г.), който е отговорен за механизма за изобразяване на шрифтове TTF. Шелкодът на експлойта използва шрифт, вграден в документа, наречен „Dexter Regular“, а Showtime Inc. се счита за създател на шрифта. Както можете да видите, създателите на Duqu не са чужди на чувството за хумор: Декстър е сериен убиец, герой от едноименния телевизионен сериал, заснет от Showtime. Декстър убива (ако е възможно) само престъпници, т.е. нарушава закона в името на закона. Вероятно по този начин разработчиците на Duqu са иронични, че се занимават с незаконни дейности за добри цели. Изпращането на писма по електронната поща беше целенасочено. За изпращането най-вероятно компрометирани (хакнати) компютри са използвани като посредник, за да се затрудни проследяването.
Така документът на Word съдържаше следните компоненти:

  • текстово съдържание;
  • вграден шрифт;
  • използване на silkcode;
  • шофьор;
  • инсталатор (DLL).

В случай на успешно изпълнение, шелкодът на експлойта изпълнява следните операции (в режим на ядрото):

  • извършена е проверка за повторно заразяване, за това съществуването на ключа 'CF4D' е проверено в регистъра на 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsZones1', ако е вярно, шелкодът е завършил изпълнението си;
  • дешифрирани са два файла - драйвер (sys) и инсталатор (dll);
  • драйверът беше инжектиран в процеса на services.exe и стартира инсталатора;
  • накрая шелкодът се изтри с нули в паметта.

Чрез стартиране на win32k.sys като root потребител „System“, разработчиците на Duqu елегантно решиха проблема както с неупълномощеното стартиране, така и с издигането (работи под потребителски акаунт с ограничени привилегии).
Инсталаторът, след като получи контрол, дешифрира три блока данни в паметта, съдържащи:

  • подписан драйвер (sys);
  • основен модул (dll);
  • конфигурационни данни на инсталатора (pnf).

В данните за конфигурацията на инсталатора беше посочен диапазон от дати (под формата на два времеви клейма - начало и край). Инсталаторът провери дали текущата дата попада в него, ако не, той завърши изпълнението си. Също така в данните за конфигурацията на инсталатора бяха посочени имената, под които бяха запазени драйверът и основният модул. В този случай основният модул е ​​записан на диск в криптирана форма.

Duqu е злонамерена матрьошка

За автоматично стартиране на Duqu е създадена услуга, която използва файл на драйвер, който декриптира основния модул в движение, използвайки ключове, съхранени в системния регистър. Основният модул съдържа собствен блок с конфигурационни данни. При първото стартиране той беше декриптиран, в него беше въведена датата на инсталиране, след което отново беше криптиран и запазен от основния модул. По този начин в засегнатата система, по време на успешна инсталация, бяха запазени три файла - драйверът, основният модул и неговият конфигурационен файл с данни, докато последните два файла бяха съхранени на диска в криптиран вид. Всички процедури за дешифриране бяха извършени само в паметта. Тази сложна инсталационна процедура беше използвана, за да се сведе до минимум възможността за откриване от антивирусен софтуер.

Основният модул

Основен модул (ресурс 302), от информация от Kaspersky Lab, написан с помощта на MSVC 2008 на чист C, но с използване на обектно-ориентиран подход. Този подход не е характерен при разработването на зловреден код. По правило такъв код е написан на C, за да се намали размерът и да се отървете от неявните извиквания, присъщи на C ++. Тук също има симбиоза. Освен това беше използвана архитектура, ориентирана към събития. Служителите на Kaspersky Lab са склонни към теорията, че основният модул е ​​написан с помощта на предпроцесорна добавка, която ви позволява да пишете код на C в обектен стил.
Основният модул отговаря за процедурата за получаване на команди от операторите. Duqu предоставя няколко начина за взаимодействие: използване на протоколите HTTP и HTTPS, както и използване на именувани канали (pipe). За HTTP(S) се посочват имената на домейни на командните центрове, докато беше възможно да се работи чрез прокси сървър - те получиха потребителско име и парола. На канала се дава IP адрес и име на канала. Посочените данни се съхраняват в блока с конфигурационни данни на главния модул (криптирани).
За да се използват наименувани канали, беше стартирана персонализирана реализация на RPC сървъра. Той поддържаше следните седем функции:

  • върнете инсталираната версия;
  • инжектирайте dll в посочения процес и извикайте указаната функция;
  • зареждане на dll;
  • стартиране на процес чрез извикване на CreateProcess();
  • прочетете съдържанието на посочения файл;
  • запис на данни в посочения файл;
  • изтрийте дадения файл.

Наименуваните канали могат да се използват в локалната мрежа за разпространение на актуализирани модули и конфигурационни данни между заразени с Duqu компютри. Освен това Duqu може да действа като прокси сървър за други заразени компютри (които нямат достъп до интернет поради настройките на защитната стена на шлюза). Някои версии на Duqu нямаха RPC функционалност.

Известни "полезни товари"

Symantec идентифицира най-малко четири „полезни товара“, заредени по команда от контролния център на Duqu.
Само един от тях обаче беше резидентен и компилиран като изпълним файл (exe), който беше записан на диск. Останалите три бяха внедрени като dll библиотеки. Те се зареждат динамично и се изпълняват в паметта, без да се записват на диск.

Резидентният „полезен товар“ беше шпионски модул (инфокрадец) с функции за кийлогър. Именно с изпращането му на VirusTotal започна работата по изследването на Duqu. Основната шпионска функционалност беше в ресурса, първите 8 килобайта от който съдържаха част от снимката на галактиката NGC 6745 (за маскиране). Тук трябва да припомним, че през април 2012 г. някои медии публикуваха информация (http://www.mehrnews.com/en/newsdetail.aspx?NewsID=1297506), че Иран е бил изложен на някакъв вид зловреден софтуер Stars, докато подробностите за инцидентът не е разкрит. Възможно е точно такъв образец от „полезния товар“ на Duqu да е открит тогава в Иран, откъдето идва и името „Звезди“ (звезди).
Шпионският модул събра следната информация:

  • списък на изпълняваните процеси, информация за текущия потребител и домейн;
  • списък с логически устройства, включително мрежови;
  • екранни снимки;
  • адреси на мрежови интерфейси, таблици за маршрутизиране;
  • лог файл с натиснати клавиши на клавиатурата;
  • имена на отворени прозорци на приложения;
  • списък на наличните мрежови ресурси (споделяне на ресурси);
  • пълен списък на файловете на всички устройства, включително сменяеми;
  • списък на компютрите в "мрежовата среда".

Още един шпионски модул (инфокрадец) беше вариант на вече описания, но компилиран като dll библиотека, функциите на keylogger, съставяне на списък с файлове и изброяване на компютри, включени в домейна, бяха премахнати от него.
Следващ модул (разузнаване) събрана системна информация:

  • дали компютърът е част от домейн;
  • пътища до системни директории на Windows;
  • версия на операционната система;
  • име на текущия потребител;
  • списък на мрежови адаптери;
  • системно и местно време, както и часовата зона.

Последен модул (удължител на живота) реализира функция за увеличаване на стойността (съхранена в конфигурационния файл с данни на главния модул) на броя дни, оставащи до края на работата. По подразбиране тази стойност е зададена на 30 или 36 дни в зависимост от модификацията на Duqu и намалява с един всеки ден.

командни центрове

На 20 октомври 2011 г. (три дни след оповестяването на откритието) операторите на Duqu проведоха процедура за унищожаване на следи от работата на командните центрове. Командните центрове са хоствани на хакнати сървъри по целия свят - във Виетнам, Индия, Германия, Сингапур, Швейцария, Великобритания, Холандия, Южна Корея. Интересното е, че всички идентифицирани сървъри работят с CentOS версии 5.2, 5.4 или 5.5. Операционните системи бяха както 32-битови, така и 64-битови. Въпреки факта, че всички файлове, свързани с работата на командните центрове, бяха изтрити, специалистите на Kaspersky Lab успяха да възстановят част от информацията в LOG файловете от празното пространство. Най-интересният факт е, че атакуващите сървъри винаги са заменяли пакета 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: Хронология на интересни събития“). Най-новата дата, свързана с Duqu, е 23 февруари 2012 г., съдържаща се в драйвер за изтегляне на инсталатора, открит от Symantec през март 2012 г.

Използвани източници на информация:

поредица от статии за Duqu от Kaspersky Lab;
Доклад на анализатора на Symantec „W32.Duqu Предшественикът на следващия Stuxnet“, версия 1.4, ноември 2011 г. (pdf).

Източник: www.habr.com

Добавяне на нов коментар