Аналіз руткита tdss

вступ

Руткіт TDSS також відомий під іменами Tidserv, TDSServ і Alureon. Окремі його компоненти детектируются антивірусами під іншими іменами, такими як Trojan.Win32.DNSChanger і Trojan.FakeAlert.

огляд сімейства

ТDSS відомий своєю видатною здатністю обходити активний захист (антивірус, HIPS, фаєрвол), сложноудаляемостью і rootkit-функціоналом. Його типові спостерігаються ознаки в системі - спливаючі вікна (pop-up), а також проблеми з запуском і оновленням антивірусних продуктів. На практиці може мати місце будь-який функціонал, що забезпечується динамічної підвантаженням додаткових модулів.

Сам по собі TDSS - не більше ніж потужний завантажувач (downloader) з модульною архітектурою. Його основне завдання - проникнути на машину користувача в обхід захисту, добре закріпитися в системі, і в подальшому забезпечувати віддалене управління ресурсами зараженої машини, включаючи завантаження додаткових функціональних модулів.

характерні особливості

внутрішньовидової різноманітність

Перші версії руткита використовували патчінга бібліотеки advapi32.dll, довантажувати сервісом Microsoft Installer, в ході інсталяції. Новіші версії використовують патчінга бібліотеки msi.dll. Можливо, це зміна - реакція на нові поведінкові сигнатури систем захисту.

аналіз коду

Загальний алгоритм функціонування TDSS, характерний для сімейства в цілому, вже описаний [10]. також як і основні механізми компонентів руткита в ring3. Сумарний високорівнева огляд функціоналу конкретного файлу можна знайти пошуком по MD5 в архіві будь-якої публічної пісочниці (наприклад, ThreatExpert). Тому я опишу тільки найважливіші механізми і функціонал рівня ядра.

Інсталяція руткита і обхід захисту

Процедура інсталяції руткита гідна згадки, оскільки забезпечує ефективний обхід поведінкових захистів і фаєрволом. Ключова ідея алгоритму обходу - виконання шкідливого коду в складі модифікованої системної бібліотеки, автоматично довантажувати легітимним системним сервісом. В результаті такої маніпуляції фаєрвол пропускає мережеву активність шкідливого коду в силу того, що його процес-джерело - системний сервіс Windows - за замовчуванням внесений в «білий список» і, як наслідок, має всіма можливими привілеями для завантаження та інсталяції файлів. Більшість проактивних захистів також пропускають поведінкову активність руткита, оскільки вона не вписується в типові патерни небажаного поведінки.

Технічно цей алгоритм реалізований наступним чином. Модифікація системної бібліотеки - advapi32.dll або, в більш пізніх версіях руткита, msi.dll - здійснюється в копії бібліотеки на диску, яка потім завантажується в директорію \ KnownDLLs в пам'яті. Після цього стандартними засобами запускається Microsoft Installer, який автоматично завантажує модифіковану бібліотеку з \ KnownDLLs. [11] У цій схемі модифікація коду msi.dll мінімальна, і забезпечує лише виконання коду з секції \ knowndlls \ dll.dll, що містить процедури інсталяції руткита. Сам патч - - елегантний:

Функціонал секції dll.dll відображений на Рис.1.

Мал. 1. Основне завдання цієї бібліотеки - завантаження та інсталяція драйвера руткита.

TDSS не має власного процесу в просторі користувача. Базові функції забезпечуються драйвером, який автоматично завантажується на старті. Додаткові високорівневі функції забезпечуються окремими DLL-модулями, які впроваджуються в задані процеси.

Функціонал драйвера включає в себе:
  • приховування руткита
  • забезпечення «порталу» в режим ядра
  • запобігання завантаження антивірусів, перерахованих в конфігураційному ключі реєстру
  • впровадження DLL-модулів в процеси, перераховані в конфігураційному ключі
  • інсталяція нових DLL-модулів.

Rootkit-функціонал

Руткіт перехоплює методом сплайсингу наступні функції в просторі ядра:
IofCallDriver
IofCompleteRequest
NtFlushInstructionCache
NtQueryVlaueKey
NtEnumerateKey

Портал в простір ядра

Перехоплення NtFlushInstructionCache кілька більш цікавий, оскільки він служить порталом в ring0 для призначених для користувача модулів руткита. Для того щоб скористатися порталом, дана функція викликається зі специфічним набором аргументів, які включають магічне значення, команду і параметр до неї. Набір команд, оброблюваних перехватчиком NtFlushInstructionCache, дуже обмежений і не дозволяє управляти руткітом. Доступні команди забезпечують передачу змінних з ядра в призначений для користувача модуль, зупинку заданого процесу або потоку з ядра (за допомогою впровадження відповідного завдання в чергу APC-викликів ядра), і запуск процедур інсталяції нового dll-модуля.

Стійкість в системі

Драйвер викликає функцію ExQueueWorkItem для запуску декількох потоків в ядрі. Потоки зациклені з періодом менше секунди. Таким чином забезпечується постійна перереєстрація драйвера в системі ( '\ registry \ machine \ system \ currentcontrolset \ services \ gaopdxserv.sys'), відключення системного фаєрвола ( '\ registry \ machine \ system \ currentcontrolset \ services \ sharedaccess \ parameters \ firewallpolicy \' ) та інші функції.

блокування антивірусів

Драйвер руткита допомогою PsSetLoadImageNotifyRoutine інсталює процедуру нотифікації, яка одержує управління по факту завантаження будь-якого модуля в пам'ять. Усередині процедури відбувається звірка імені завантаження модуля зі списком заборонених, перерахованих в ключі 'disallowed' налаштувань руткита в реєстрі. Завантаження заборонених модулів блокується.

Видалення TDSS вручну

Перераховані нижче інструкції складають універсальний алгоритм видалення будь-якого варіанту руткита TDSS. Для втілення алгоритму не потрібно ні спеціальних знань, ні специфічних утиліт.
  1. У Device Manager (Комп'ютер → Управління пристроями), в розділі Non-PnP Driver, відключити і видалити драйвер руткита. Його можна локалізувати на ім'я (tdsserv.sys, quadraserv.sys і т.д.). Оскільки покладатися на ім'я драйвера ненадійно - його краще визначити напевно за допомогою будь-якого антіруткіта (GMER або Rootkit Unhooker кращі; Avira Antirootkit також справляється із завданням). Після цих маніпуляцій всі файли і ключі реєстру руткита стають видимими і доступними для видалення вручну.
  2. Видалити файл, який відповідає цьому драйверу.
  3. Видалити всі ключі реєстру, що посилаються на даний драйвер, і файли додаткових модулів, перераховані в конфігураційному ключі.
  4. Видалити (при їх наявності) файли autorun.inf і RECYCLER \ *. Com на всіх дисках.
  5. Перезавантажитися.
  6. Використовувати антивірус для остаточного очищення системи від можливих пропущених файлів.
Кроки 1-4 повинні виконуватися без допомоги антивірусів, оскільки в разі відсутності сигнатури до якого-небудь файлу дезінфекція не буде успішною.

Висновки і висновок

додатки

Схожі статті