Глюк EnumDeviceDrivers или руткит?

Тема в разделе "WASM.BEGINNERS", создана пользователем Sharp, 19 апр 2006.

  1. Sharp

    Sharp New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    143
    Адрес:
    Ukraine
    ОС: WinXP SP2, которой нет и недели

    EnumDeviceDrivers говорит, что у меня есть 3 драйвера, файлы которых мне не удается найти на жестком диске, даже с помощью командной строки загрузочной дискеты Win98.

    Самый странный из них это драйвер, загруженный (?) по адресу 0xf994c000. Для него функции GetDeviceDriverBaseName и GetDeviceDriverFileName возвращают 9 пробелов. Два других - это:

    [0xf7f2e000] dump_atapi.sys \SystemRoot\System32\Drivers\dump_atapi.sys

    [0xf9f49000] dump_WMILIB.SYS \SystemRoot\System32\Drivers\dump_WMILIB.SYS

    Я встретил упоминания о них в каком-то немецком каталоге вредоносных программ.

    Как их обнаружить, если они есть на самом деле, и может ли такое быть, что таких драйверов у меня никогда и не было?
     
  2. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
  3. Sharp

    Sharp New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    143
    Адрес:
    Ukraine
    Мне эти ссылки показались более правдоподобными:

    http://www.spionfrei.de/items/-/19/D/6/

    http://www.spionfrei.de/items/-/18/D/6/

    Ведь первое место в гугле еще не значит, что информация точная?

    И как быть с драйвером " "? Раньше нормально ставившийся софтайс отказался загружаться - уж не его ли это происки?
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Ведь первое место в гугле еще не значит, что информация точная?



    Не значит, но и не значит, что неточная.



    А тебя не смущает, что в приведенном дампе твой неизвестный имеет имя

    f994c000 f994ef00 amsint amsint.sys Fri Aug 17 13:52:01 2001 (3B7D83F1)



    Как говорит Алекс Экслер, Вы уже поимели вирус в лице Windows!
     
  5. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Что касается немецких источников, то когда я вижу сообщение



    Click on here if you want to use Spyware Browser to look for infections in your PC.



    То я начинаю думать всякие нехорошие вещи про навязчивую рекламу...



    А так, конечно, вопрос требует дополнительных усилий.
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257




    Не пробовал замапить dll и вызывать GetDeviceDriverBaseName из замапленой dll, а не из подгруженой в процесс (чтобы избавиться от вероятного хука и подмены/затирания данных)

    Или посмотреть в PsLoadedModulesList?
     
  7. Sharp

    Sharp New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    143
    Адрес:
    Ukraine
    Если это руткит, то наверно, он все же патчит таблицу системных вызовов, а не просто хукает функции, но я проверил - возвращает то же самое и первые байты функций совпадают (или скрыты от просмотра).

    Про PsLoadedModulesList можно подробнее? Гугл дает 2 ссылки, одна на испанском, а другая малоинформативна.
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    PsLoadedModuleList - связанный список модулей ядра (ntoskrnl, ntdll и все драйвера).

    Из юзера не пробовал, в драйвере список получается так:


    Код (Text):
    1.  
    2. //====================================================================
    3. NTSTATUS DriverEntry(PDRIVER_OBJECT  DriverObject, PUNICODE_STRING RegistryPath ){
    4.     ....
    5.     g_PsLoadedModuleList = GetPsLoadedModuleListAddr (DriverObject);
    6.     ....
    7. }
    8.  
    9. //====================================================================
    10. PMODULE_ENTRY GetPsLoadedModuleListAddr (IN PDRIVER_OBJECT DriverObject){
    11.     PMODULE_ENTRY                firstEntry, currentEntry;
    12.     PMODULE_ENTRY                result=0;
    13.  
    14. __try{
    15.     if (NULL == (currentEntry = *((PMODULE_ENTRY*)((DWORD)DriverObject + 0x14))) )return 0;
    16.     firstEntry = currentEntry;
    17.     do {
    18.         if(!MmIsAddressValid(currentEntry)) break;
    19.         if (!MmIsAddressValid((PVOID)currentEntry->entryPoint) ||
    20.             !MmIsAddressValid(currentEntry->drvPath.Buffer) ||
    21.             !MmIsAddressValid(currentEntry->drvName.Buffer))
    22.             break;
    23.         currentEntry = (MODULE_ENTRY*)currentEntry->link.Flink;
    24.     }while (currentEntry != firstEntry);
    25.     result = currentEntry;
    26. }
    27. __except (EXCEPTION_EXECUTE_HANDLER) {
    28.     DbgPrint ("EXCEPTION EXECUTE HANDLER");
    29. }
    30.     return result;
    31. }
    32.  
    33. //====================================================================
    34. NTSTATUS GetPsLoadedModuleList (){
    35.     PMODULE_ENTRY               firstEntry, currentEntry;
    36.     NTSTATUS                    Status = STATUS_UNSUCCESSFUL;
    37.  
    38. __try{
    39.     if ( !g_PsLoadedModuleList )return Status;
    40.     firstEntry = currentEntry = g_PsLoadedModuleList;
    41.     currentEntry = (MODULE_ENTRY*)currentEntry->link.Flink;
    42.    
    43.     while (currentEntry != firstEntry){
    44.         if(!MmIsAddressValid(currentEntry)) break;
    45.         DbgPrint("%.8X %.8X %.8X %S\n",
    46.                     currentEntry,
    47.                     currentEntry->link.Flink,
    48.                     currentEntry->link.Blink,
    49.                     currentEntry->drvPath.Buffer);
    50.         currentEntry = (MODULE_ENTRY*)currentEntry->link.Flink;
    51.     }
    52.     Status = STATUS_SUCCESS;
    53. }
    54. __except (EXCEPTION_EXECUTE_HANDLER) {
    55.     DbgPrint ("EXCEPTION");
    56. }
    57.     return Status;
    58. }




    Проверить патч таблицы системных сервисов можно чем-нибудь типа утилиты rootkit revealer.

    Или в аттаче моя программка (as is :)

    Запустишь, на листе правой мышью зови меню и пункт Check SDT Table

    Можешь попробовать также пункт Show Services. Остальные пункты пустые.







    [​IMG] 91051261__pKiller.exe
     
  9. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    хм...., cresta, твоя прога упала с такой подписью ошибки:

    AppName: 91051261__pkiller.exe AppVer: 0.0.0.0 ModName: unknown

    ModVer: 0.0.0.0 Offset: 0000bf08

    трабля в проге, или это мои руткиты не разрешают? %)
     
  10. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Я ж предупредил: as is - как есть (читай экспериментальный вариант), только на ХР. Eё пробовали SaintGerman, Ms-Rem, ещё несколько человек - всё запускалось и работало.

    Так что смотри свою систему :)