1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Проэксплуатировать CVE-2015-1701

Тема в разделе "WASM.BEGINNERS", создана пользователем 2Hard2Forget, 18 май 2020.

  1. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    70
    Я пытаюсь увидеть эксплоит CVE-2015-1701 в действии, то есть увидеть LPE. Я нашёл на гитхабе пример кода, который должен запускаться.

    Изначально я ознакомился с бюллетеню по безопасности по этой ссылке , выяснил, что win7 SP1 имеет CVE-2015-1701 (Local Privilege Escalation) то есть я могу повысить уровень целостности до System.
    [​IMG]


    Я запустил бинарники из папки Compiled по этой ссылке. Запускал из cmd как администратор Taihou64.exe на win7 SP1 x64 и Taihou32.exe win7 SP1 x32 . Но эскалация уязвимости не была замечена ни на одной из этих ОС:
    upload_2020-5-18_22-50-33.png

    Если внимательнее рассмотреть исходники, можно увидеть OutputDebugString(TEXT(" Failed \r\n"));
    И действительно после запуска я в отладчике(Windbg) вижу эту запись:
    [​IMG]
    Ок, пробую скомпилировать самостоятельно (добавил свою отладочную фразу) и получившийся exe запустить - результат тот же:
    upload_2020-5-18_22-53-11.png


    [​IMG]
    Потом пробую искать в интернете и у кого-то всё-таки сработала уязвимость. Как видите, у меня с ним сборка в командной строке одна и та же, но почему у него работает , а у меня нет? Вот ссылка на него
    [Version 6.1.7601]:
    [​IMG]

    Если верить этому и этому сайту , на висте должно заработать.
    Проверяю на Vista SP2 готовые exe-шники из
    [​IMG]
    Но ни моя собственная компиляция под 32 и 64 , ни гитхабовские exe-шники 32 и 64 не заработали, режим совместимости не работает(не кликабельно)
    upload_2020-5-18_23-5-34.png
    upload_2020-5-18_23-6-37.png
    Почему на Vista не заработали бинарники ?
    Затем я попытался скомпилировать с измененной целевой платформой Visual Studio 2015 -Windows XP (v140_xp). Но появилась ошибка "не удалось открыть файл ntdll.lib".
    Почему не получается запуститься в win7 , хоть бюллетень безопасности майкрософт указывает win7 SP1 как уязвимую , а vista и вовсе выдаёт не понятные ошибки, и как тогда запуститься на висте ?
     
  2. njeen

    njeen Active Member

    Публикаций:
    0
    Регистрация:
    26 мар 2017
    Сообщения:
    107
    Адрес:
    Ташлинск
    У вас exe'шники собраны под OS Version 6.1, что соответствет win7 . У висты версия 6.0. Поэтому и не запускается. Можете попробовать пропатчить информацию о целевой оси в exe - вдруг заработает.
     
  3. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    70
    А как это сделать?
     
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    На 7 фейлит тут:

    Код (Text):
    1. MainWindow = CreateWindowEx(0, MAKEINTATOM(class_atom),
    Но если протрассировать, то бсодит:

    Код (Text):
    1. KERNEL_MODE_EXCEPTION_NOT_HANDLED_M (1000008e)
    2. Arguments:
    3. Arg1: 80000003, The exception code that was not handled
    4. Arg2: 001311f0, The address that the exception occurred at
    5. Arg3: 93a8f880, Trap Frame
    6. Arg4: 00000000
     
  5. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    70
    В Windbg трассировку делали ?
     
  6. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    2Hard2Forget,

    Зачем, это юзер апп. При вызове какого то сервиса гуя крэшит, значит сам пробив идёт. Наверно просто криво реализовано, это же poc.
     
  7. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    70
    Что означает "сам пробив идёт"?
     
  8. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    2Hard2Forget,

    Юзер код с правами ядра выполняется:

    Код (Text):
    1. 001311f0 cc              int     3
    2.  
    3. eax=00002948 ebx=00000024 ecx=93a8f948 edx=93a90000 esi=fea52110 edi=fdee7560
    4. eip=001311f1 esp=93a8f8f4 ebp=93a8f930 iopl=0         nv up ei pl nz na pe nc
    5. cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00000206
    6. 001311f1 8bec            mov     ebp,esp
    Отладчик при трассировке поставил останов, на нём крэш не обработанный ядерный: cs=0008 ss=0010. 0x2C11F0 -> int3 -> bsod. Там же в коментах написано:

    Код (Text):
    1. /*
    2. 290 * MainWindowProc
    3. 291 *
    4. 292 * Purpose:
    5. 293 *
    6. 294 * To be called in ring0.
    bp.png
     
  9. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    70
    я запустил трассировку в x32dbg и ничего не падало, вы в олли делали? Я изначально в олли запускал, но после странной ошибки с EIP типо "Don't know how to step because memory..." , не особо было ясно, что делать, поэтому x32dbg выбрал, но опять же - ничего не падало
     
  10. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    2Hard2Forget,

    Так нужно вручную трассировать, это когда отладчик пишет в память инструкцию приводящую к исключению. Тогда произвольная передача управления приведёт в любом случае к срабатыванию останова. А при пошаговой трассировке обратный вызов ядра будет пропущен(тк при возврате не будут загружены флажки, которые были при сервисном вызове), ничего не произойдёт. Вообще чего ты в сплойты полез с нулевыми знаниями :sarcastic:

    С твоими способностями есчо лет десять сраный аспротект отлаживать, только затем может созреешь для чего то большего :tease:

    Без обид, но это факт.
     
  11. njeen

    njeen Active Member

    Публикаций:
    0
    Регистрация:
    26 мар 2017
    Сообщения:
    107
    Адрес:
    Ташлинск
    любым редактором, который это может.
    Например, hiew .
    Открываете файл -> enter (в hex режим) -> f8 (появится окошко с инфой об exe, где показаны текущие OS version, subsystem version)
    -> f3 (появится список полей для редактирования, находите OS version minor, subsystem version minor) -> f3 (нужного пункта)
    -> меняете для обоих -> по f9 сохраняете изменения

    Ну или конкретно по x86 exe что менять надо (смещения от начала файла):
    0x0000011a 01 => 00 0x0000011a
    0x00000122 01 => 00 0x00000122
    --- Сообщение объединено, 20 май 2020 ---
    Важнее быть, чем уметь. Лучше что-то делать и двигаться дальше, чем со способностями и знаниями ничего не делать :) .
     
  12. Bedolaga

    Bedolaga Member

    Публикаций:
    0
    Регистрация:
    10 июл 2019
    Сообщения:
    130
    Вы даже не представляете, сколько людей только что, не заслуженно, оскорбили. И это не самый худший вариант, кста!
    Хуже если представляете, и гордитесь, к тому же...
     
  13. njeen

    njeen Active Member

    Публикаций:
    0
    Регистрация:
    26 мар 2017
    Сообщения:
    107
    Адрес:
    Ташлинск
    Жаль. Возможно, формулировка не лучшая была. Смысл был лишь в том, что не стоит заморачиваться наличием способностей/знаний, главное - двигаться.
     
  14. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    70
    Поменять через hiew получилось, ошибка win32 пропала, но приложение больше не запускается
    Потом (во втором способе по адресам)
    через Hex-редактор изменил по нужным адресам 01 на 00 (то есть сделал то же, что и в hiew - менял миноры). Но приложение так же не запустилось
     
  15. njeen

    njeen Active Member

    Публикаций:
    0
    Регистрация:
    26 мар 2017
    Сообщения:
    107
    Адрес:
    Ташлинск
  16. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    70
    #define _WIN32_WINNT_WIN6 0x0600 // Windows Vista
    #include <Windows.h>
    #include <ntstatus.h>
    Вставлял так, но миноры оставались такими же, поэтому не знаю, на что влияет этот макрос . Снова "не является win32"
     
  17. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.512
    2Hard2Forget,

    Так а где нерабочие бинари ?
     
  18. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    70
    Получилось запустить с системным уровнем целостности, разобрался, просто у меня руки кривые