Уязвимости класса Priviliege Escalation

Тема в разделе "WASM.RESEARCH", создана пользователем Ev0lwaves, 25 авг 2009.

  1. Ev0lwaves

    Ev0lwaves New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2008
    Сообщения:
    125
    Вот знаю, что в никсах, ценятся такие очень не плохо.
    А что насчёт винды.
    Кому-нибудь вообще нужны они для винды???
    Если только для "беспалевной" загрузки своего руткита в ядро, в обход всех хипсов/проактивок и прочего гуан.
    Вот к примеру ms09-040, создал тему в хипе, а просмотров меньше сотни, хотя там реальная информация для написания сплоетса на повышение привилегий до SYSTEM(имеем code exection в нулевом кольце) от win2k до висты.
    Или в винде ценятся только remote code execution?
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Ev0lwaves
    Так этоже закрытые уязвимости, для них заплатки выпущены.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Касательно этой дырки.
    Первую страницу в процессе выделяет зиродей либо вдм, другим не нужно. Поэтому MS следовало запретить вобще выделение памяти в первых 10 страницах, сразу закрылибы множество уязвимостей.
     
  4. Ev0lwaves

    Ev0lwaves New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2008
    Сообщения:
    125
    Clerk
    Ну есть и зирроудеи ;)
    А вообще, даже уязвимости к которым есть патчи, все равно много юзеров не устанавливают патчи.
    Да, если MS прикроют выделение памяти по NULL адресу эксплуатировать NULL pointer dereference станет намного сложнее.
    Да и в I/O manager'e недочёты есть, что позволяет уязвимости в IOCTL обработчиках легко эксплойтить.
     
  5. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    невозможно в основном. будут вместо privilage escalation DoS'ы да и все.
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Точнее не 10, а 16 первых страниц. В этом случае при обращении ось будет падать, эскалация привилегий просто обнулением указателя станет невозможной. Это если уязвимы функции в которых может выполняться загрузка нуля, длины и пр. небольших значений в произвольный адрес системного ап. Хотя возможность загрузить валидный адрес обработчика всёравно остаётся, например обнулив старшую часть ссылки, но всёравно это былобы хорошей защитой.
     
  7. Ev0lwaves

    Ev0lwaves New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2008
    Сообщения:
    125
    Freeman
    Да, почему-то I/O manager отдаёт NULL указатели IOCTL major ф-ии драйвера, зачем так было сделано - не знаю.
    Clerk
    Это Вы уже о pointer overwrite говорите, а не о NULL pointer dereference.
     
  8. Clerk

    Clerk Забанен

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

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Я в своей проактивке так и сделал:)
     
  10. Ev0lwaves

    Ev0lwaves New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2008
    Сообщения:
    125
    Clerk
    Не совсем, Вы объяснили ситуацию когда мы затираем какой-либо указатель на функцию нулём, то есть мы не контролируем значение, которым затираем указатель - это как раз NULL ptr dereference.
    А бывают случаи, когда мы контролируем значение, которым затраем указатель - ptr overwrite, и от таких уязвимостей простым запретом выделения памяти в первых страниц не защитишься.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Ev0lwaves
    От таких защита - DEP. Я не знаю ни одной уязвимости, где можно выбирать адрес в ядреной памяти и значение, записываемое по этому адресу. Обычно пишется фиксированное значение по произвольному адресу. И какая разница как это называется.
     
  12. Ev0lwaves

    Ev0lwaves New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2008
    Сообщения:
    125
    Clerk
    Разница принципиальная!
    Это классификация уязвимостей.
    Это memory corruption.
    ms09-040 - яркий пример такой уязвимости. Контролируется адрес, и значение которым мы затираем данные по этому адресу.Кстати мелкософт назвал эту багу как Null Pointer Vulnerability, реальность такова, что на самом деле - это memory overwrite.
    Выбираем память в ядре и затираем её, сплойтятся такие уязвимости на ура, путём затирания указателя в ф-ии HalQuerySystemInformation нашим значением, и последующим вызовом NtQueryIntervalProfile, что приведёт в квыполнению нашего шелкода только уже с CPL=0, автор этой замечательной техники Ruben Santamarta.
     
  13. Ev0lwaves

    Ev0lwaves New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2008
    Сообщения:
    125
    и DEP тут не поможет
     
  14. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Ev0lwaves
    Не буду с вами спорить. Замечу одно:
    Это не замечательная техника. Замечательная - в юзермоде получаем описатель текущего потока(PETHREAD) и загружаем туда указатель на нашу SDT, после чего наш код вызывается как сервис!
    http://files.virustech.org/indy/Code/gpepCSRSS/NtUserQueryInformationThread/Sdt/