Поиск загруженных драйверов

Тема в разделе "WASM.NT.KERNEL", создана пользователем AlexCasual, 17 авг 2011.

  1. AlexCasual

    AlexCasual New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2009
    Сообщения:
    120
    Всем доброго времени!

    Интересуют способы получения всех загруженных драйверов в системе (на подобии Device Tree) не использующие ZwQuerySystemInformation.

    У Г.Хоглунда описывается некое недокументированное поле в структуре DRIVER_OBJECT по смещению 0х14 содержащий MODULE_ENTRY,загруженных драйверов...
     
  2. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Угумс, даже если очень сильно постараться, например, вбить в гугл DriverObject + 0x14, то даже код можно найти для перечисления, например из FU_Rootkit
    Код (Text):
    1. DWORD FindPsLoadedModuleList (IN PDRIVER_OBJECT  DriverObject)  
    2. {  
    3.     PMODULE_ENTRY pm_current;  
    4.    
    5.     if (DriverObject == NULL)  
    6.         return 0;  
    7.    
    8.     pm_current = *((PMODULE_ENTRY*)((DWORD)DriverObject + 0x14));  
    9.     if (pm_current == NULL)  
    10.         return 0;  
    11.        
    12.     return (DWORD) pm_current;  
    13. /*  gul_PsLoadedModuleList = pm_current;  
    14.     while ((PMODULE_ENTRY)pm_current->le_mod.Flink != gul_PsLoadedModuleList)  
    15.     {  
    16.         //DbgPrint("Module at 0x%x unk1 0x%x path.length 0x%x name.length 0x%x\n", pm_current, pm_current->unk1, pm_current->driver_Path.Length, pm_current->driver_Name.Length);  
    17.         // This works on Windows XP SP1 and Windows 2003.  
    18.         if ((pm_current->unk1 == 0x00000000) && (pm_current->driver_Path.Length == 0))  
    19.         {  
    20.             return (DWORD) pm_current;  
    21.         }  
    22.         pm_current =  (MODULE_ENTRY*)pm_current->le_mod.Flink;  
    23.     }  
    24.  
    25.     return 0;  
    26.     */  
    27. }
     
  3. AlexCasual

    AlexCasual New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2009
    Сообщения:
    120
    Ну а ещё есть какие-нибудь способы,которые применимы и к Win7?
     
  4. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Можно, к примеру, открыть и перечислить драйвера в папке "\\Driver"
     
  5. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    steelfactor
    Точнее проверить загружены ли они. Правда "левые" драйвера так не найдем :)
     
  6. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    valterg
    Да, точно
     
  7. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Ставь нотификатор на загрузку исполнямых образов, там и ядерные модули увидишь. Но это только после перезагрузки будет работать. И опять же, совсем левые модули так не поймаешь.
     
  8. zabej

    zabej New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2011
    Сообщения:
    14
    насколько левые смотря) если только ультра-левые ;)))
     
  9. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Такие встречаются, тем не менее. Отлавливать их можно либо через аппаратную виртуализацию, но это сложно, либо через перехват планировщика, например, с последующей раскруткой стека, т.е. анализа откуда пришёл вызов. Смотрим, если вызов пришёл из области памяти, которая не принадлежит ни одному из загруженных модулей, то явно имеем дело с руткитом. Хотя и это не панацея, ведь вызов может придти и из легального, но заражённого драйвера. В общем, поразмышлять есть над чем.
     
  10. AlexCasual

    AlexCasual New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2009
    Сообщения:
    120
    а можно подробнее про перехват планировщика?
     
  11. TermoSINteZ

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

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Ну некоторые просто через уязвимость мамять себя в ядро и сидят там. Нвйти тоже бывает порой очень непросто. Область может принадлежать загруженному модулю и даже сверка с образом на диске не спасет. Пичалька.
     
  12. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Сорри за оффтоп, навела на вопрос меня эта тема =)
    А вот просто из любопытства, наверняка же многие имеют постоянный доступ к свежей малвари, насколько распространены штуки уровня тдл4? Может я пропустил и появилось что-то более технологичное, ну т.е. концептуально, а не на уровне мелких усовершенствований, но тока не концепт, а в диком виде? Ну и вообще код использующий какие-нибудь нетривиальные техники скрытия, он вообще "вживую" есть?
     
  13. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Velheart
    VBR-руткит из новых