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