С чего начать разроботку сплоита для IE7: как пример MS09-002?

Тема в разделе "WASM.BEGINNERS", создана пользователем s0bb0ta, 24 фев 2009.

  1. s0bb0ta

    s0bb0ta New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2009
    Сообщения:
    10
    День добрый!

    Я новичок в реверсинге (прочитал первые ~25 статей "Введение в крэкинг с нуля, используя OllyDbg")
    У меня конкретный вопрос по разработке эксплойта для последней дырки в IE7 (MS09-002)
    Вот DoS версия:
    obj=document.createElement('b');
    obj.click;
    var clone = obj.cloneNode();
    obj.clearAttributes();
    obj=null;
    CollectGarbage();
    clone.click;
    (На milw0rme уже появились несколько эксплойтов с шелкодом)
    Вопрос в следующем: С чего начинать исследование данной дырки?
    Я открыл IE в OllyDbg, но абсолютно не знаю куда поставить бряки.
    Если есть совет, что можно почитать по теме (и рядом), тоже спасибо.
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Сейчас устал после работы, чтобы посмотреть за дыра, но самое простое -- запустить IE, натравить на станицу с РоС и посмотреть, по какому адресу упадет. С этого адреса и начинать разбор полета. Это в общем случае.
     
  3. s0bb0ta

    s0bb0ta New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2009
    Сообщения:
    10
    Спасибо за ответ.

    Именно это я и делаю. Проблема в том, что падает каждый раз по рандомальному аддресу. Видимо из-за освобожденной памяти CollectGarbage.
    Я пытался вернуться в листинге назад, чтобы найти саму точку падения (до перехода по рандомальному аддресу), но у меня не получается это правильно сделать. А где поставить бряк ДО я не знаю.
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    bp KiUserExceptionDispatcher
     
  5. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Адрес инструкции, выполнившей некорректную операцию случаен, или адрес, по котрому она пыталась прочитать/записать?
     
  6. s0bb0ta

    s0bb0ta New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2009
    Сообщения:
    10
    Второе, адрес по которому она пытается прочитать.
    Как я догадываюсь, там находится что то типа:
    mov EDI, DWORD PTR[EAX]
    а сам поинтер содержит случайный адрес.
     
  7. s0bb0ta

    s0bb0ta New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2009
    Сообщения:
    10
    Clerk, спасибо! я попробую.
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    s0bb0ta
    Дамп стека в лонг формате при входе в диспетчер исключений в студию.
     
  9. planet

    planet New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    108
    shellcode with int 3
     
  10. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    наверно краш-дампы придется анализировать в любом случае?

    P.S. а такой вылет можно назвать уязвимостью?
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    t00x
    Нужно изнутри на неё смотреть.
     
  12. s0bb0ta

    s0bb0ta New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2009
    Сообщения:
    10
    Во-первых, "KiUserExceptionDispatcher" не сработал. Т.е. вылет произошёл не остановившись на кряке.

    Во-вторых, я нашёл точку вылета, поставив кряк на последний адрес возврата из стэка (4-ая остановка как-раз за два шага до вылета)

    Clerk, я выложу "Дамп стека в лонг формате", как только узнаю как его создать. В Олли я такой возможности не нашёл...
    Пока делаю аттач с картинкой Олли при вылете.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    s0bb0ta
    Руки кривые у тебя. Смотрим на скрине: Ss = 0x23, нормальный селектор. Esp - видимо регион адресуемый Ss:Esp доступен для чтения/записи, поэтому отсутствие вызова диспетчера исключений невозможно(разумеется ось чистая).
    ЗЫ: Прежде чем разбирать сплоеты, хотябы разобрался в элементарных базовых принципах.)
     
  14. s0bb0ta

    s0bb0ta New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2009
    Сообщения:
    10
    :)
    Ну, во-первых спасибо.
    Информации много, пошёл разбирать как Ss=0x23 связано с вызовом диспетчера исключений.
    Может посоветуешь, что почитать по "базовым принципам"?
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Посмотрел у себя на IE, к сожалению не могу сказать имя процедуры(отладочные символов нет).
    [​IMG]
    Код (Text):
    1. Executable modules, item 30
    2.  Base=43CD0000
    3.  Size=00374000
    4.  Name=mshtml   (system)
    5.  File version=7.00.6000.20900
    6.  Path=D:\WINDOWS\system32\mshtml.dll
     
  16. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    s0bb0ta
    Такие темы лучше не писать в Beginners. Это не для новичков. Даже мне до этого еще далеко :-0. Ведь одна малейшая ошибка - и твой сплоит не работает, а стало быть и пользы от него == NULL.
     
  17. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    AndreyMust19
    да ладно далеко... а кто уже умеет внедряться в объективные файлы и настраивать фаеры?
    вот, вот.. так что не скромничай ,))
     
  18. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Установилось автоматическое обновление и больше этот "эксплоит" не работает :)