Получение "имени" модуля.

Тема в разделе "WASM.BEGINNERS", создана пользователем Riply, 19 июн 2009.

  1. Riply

    Riply New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    25
    Адрес:
    Petersburg
    Получение "имени" модуля.
    Здравствуйте !

    Попрбую обрисовать ситуацию.

    WinXP SP2 (возможно SP3 - компьютер не мой)

    Внешнее проявление:
    Среди модулей, возвращаемых ZwQuerySystemInformation(SystemModuleInformation, ...)
    имеется один, имя которого "затерто" пробелами.
    (Если вызвать ZwQuerySystemInformation в kernel mode) - результат тот же.
    Т.е. нам известен только его BaseAddress (ну и размер образа).

    Подскажите, пожалуйста, как можно получить "настоящее имя" этого чуда природы ?
    Хотелось бы познакимится с ним поближе, ну и прибить гада :)
    Алгоритм решения может быть как для user mode, так и для kernel mode.
    (Работаем под Delphi, если это важно)

    P.S.
    Если ловить будем из режима ядра, то посьба учтывать,
    что в этой области я делаю только первые шаги.

    P.S.S.
    Хотелось бы это сделать своими руками, а не при помощи сторонних утилит.
    (Их буду использовать если самолапно не смогу решить задачку)
     
  2. TermoSINteZ

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

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Из PEB модуля можешь найти его полный путь допустим.
    Можешь попробовать так: http://msdn.microsoft.com/en-us/library/ms683197(VS.85).aspx
    А для подстраховки поставь ProcessExplorer Руссиновича (хотя от него можно легко скрыться, то есть не факт, что он покажет ожидаемый результат)
     
  3. Riply

    Riply New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    25
    Адрес:
    Petersburg
    Эмн... А у System (ProcessID = 4) разве есть PEB ?
    Он нилл у него вроде.

    Неа, не показывает :dntknw:
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    TermoSINteZ
    Автору нужно ядерные модуля искать, PEB не причём. Нужно найти связанную с проекцией секцию, далее из обьекта секции извлечь связанный с ней файл и имя.
     
  5. Riply

    Riply New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    25
    Адрес:
    Petersburg
    Допустим, из объекта секции я смогу вытащить нужное (на сто процентов не уверена).
    А как мне найти связанную с проекцией секцию ?
     
  6. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    как вариант дополнительно отсканить ветку реестра \СurrentControlSet\Services\ на предмет "левых" ImagePath
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Еслибы можно было перечислить все обьекты в ядре. Это сложная задача, вобщем я полностью не знаю как реализовать. Вот суть:
    Код (Text):
    1. SECTION_OBJECT->SEGMENT<->CONTROL_AREA->FILE_OBJECT->SECTION_OBJECT_POINTERS+
    2.                                ^                                            |
    3.                                +--------------------------------------------+
    http://gl00my.chat.ru/nt/mem.txt
    http://gl00my.chat.ru/nt/ob.txt
    Базы данных хэндлов ни какого отношения к обьетам в данном случае не имеют, ибо описатель закрывается после маппинга. Нужно пождумать.
     
  8. Riply

    Riply New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    25
    Адрес:
    Petersburg
    Очень вероятно, что он прехватывает подобные попытки,
    да и как по имени узнать левое оно или нет ?

    А как работает ZwQuerySystemInformation(SystemModuleInformation, ...) ?
    Я к тому, что может попробовать исакть секцию аналогичным способом ?
     
  9. Clerk

    Clerk Забанен

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

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    эм.. да вроде бы лехко к примеру дров нвидии
    а вот дров Outpost-а
     
  11. Riply

    Riply New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    25
    Адрес:
    Petersburg
    До такого я не доросла еще :dntknw:

    Может есть другие пути ?
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Alcohol :))
     
  13. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    да, да, да... прям дровы пошли что писец, полвенды под перехватом держут, спасу нет!

    Riply попробуй снять лог хотябы простейшим скриптом http://pastebin.com/f27595ee8 , оч. интересно былобы посмореть =)
     
  14. megaaa

    megaaa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2009
    Сообщения:
    51
    bugaga
    это просто слишком :)
    лучше глянуть стоят ли хуки на реестр, если стоят то снять, а патом уже смотреть что грузиться.
     
  15. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    ааа.. вот еще хороший код скрипта http://pastebin.com/f610e0b14 , юзает NtQuerySystemInformation(DRIVER_INFORMATION
    выводит список загруженого добра с довольно подробные путями. вот к примеру какой у меня результат :
    http://pastebin.com/f77edaef4
     
  16. Riply

    Riply New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    25
    Адрес:
    Petersburg
    Если стоят, то вряд-ли из user-mode :)

    Насколько я понимаю, ZwQuerySystemInformation(SystemModuleInformation, ...),
    с которой я начинала, - то же самое :)

    Пока, решила попробовать повозится с таблицей Handle`ов (EPROCESS.ObjectTable).
    Чем черт не шутит - вдруг получиться :)
    Конечно, есть интересная ф-ия ExEnumHandleTable, но скорее всего
    бегать по этим таблицам придется вручную.
     
  17. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    ахха... кстати надеюсь боле-менее корректный вариант http://pastebin.com/f1f10746a по выводу SystemModuleInformation
    (нежели предыдущий, немецкий транслит с индийских плюсов (я просто в ужосе).

    описания структур брал из include\ddk\ntapi.h от MinGW

    ну а так да.. что Nt что Zw один хрен все пути идут в ntoskrnl.exe

    Have a nice day! ^_^
     
  18. megaaa

    megaaa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2009
    Сообщения:
    51
    я и имел ввиду что из ядра, или проблема их посмотреть?
     
  19. Riply

    Riply New Member

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    25
    Адрес:
    Petersburg
    Угу, ибо:
    :dntknw:
     
  20. megaaa

    megaaa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2009
    Сообщения:
    51
    ну а как тогда ты собралась делать?
    если там руткит уровня ядра, тебе в любом случае работать р0, отсюда юзать либо сторонний софт или курить исходники которые найдешь в интернете.