По следам MS IE OBJECT tag exploit'а



            

Начинаем копать


Свой лог Др.Ватсон хранит в папке Documents&Settings\AllUsers\Документы\DrWatson, туда же попадает дамп памяти упавшего приложения. Дамп перезаписывается каждый раз, а лог по умолчанию сохраняет данные о 10 последних ошибках, в которые входят и сбои, вызванные нашими exploit'ми.

Открывем drwtsn32.log в FAR'е по <F4> и ищем строки, относящиеся к сбою в IE (см. листинг 4), произошедшему в заданное время (мы ведь не забыли посмотреть на часы, верно?)

Исключение в приложении:

       Прил.: iexplore.exe (pid=884)

       Время: 09.05.2006 @ 16:41:36.734

Листинг 4 при регистрации ошибки Доктор Ватсон запоминает время ее возникновения

Пропуская бесполезную информацию о запущенных процессах и загруженных динамических библиотеках, мы добираемся до дизассемблерного кода, расположенного в окрестностях сбоя exploit'а iedie2-2:

eax=0000001a ebx=0000001a ecx=01460610 edx=75b2c198 esi=01460610 edi=00000000

eip=75ad7e2e esp=0006da58 ebp=00000000 iopl=0   nv up ei pl nz na pe nc

       75ad7e23 e81b000000  call   DllGetClassObject+0x1f573 (75ad7e43)

       75ad7e28 8bd8        mov    ebx,eax

       75ad7e2a 3bdd        cmp    ebx,ebp

       75ad7e2c 740e        jz     DllGetClassObject+0x2806c (75ae093c)

СБОЙ ->       75ad7e2e 8b7b34      mov    edi,[ebx+0x34]       ds:00a7d5f0=????????

       75ad7e31 c1ef02      shr    edi,0x2

       75ad7e34 3bfd        cmp    edi,ebp

       75ad7e36 0f8fcf431300      jnle   75c0c20b

FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Function Name

00000000 00000000 00000000 00000000 00000000 00000000 mshtml!DllGetClassObject

Листинг 5 фрагмент дизассемблерного листинга Др. Ватсона, описывающего сбой IEdie2-2

Давайте, как археологи, попробуем восстановить хронологию событий и выяснить, что же здесь проиcходило. Нам известно, что инструкция MOV EDI, [EBX+0X34], расположенная по адресу 75AD7E2Eh и лежащая глубоко в недрах MSHTML.DLL, вызвала исключение типа нарушение доступа, поскольку регистр EBX содержал 1Ah, то есть указывал на первый 64 Кбайт регион памяти, доступ к которому строго запрещен как раз для отлова таким некорректных указателей.


Содержание  Назад  Вперед