Русский / Russian English / Английский

Сейчас на форуме: hrcpin (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› sys or exe ?
Посл.ответ Сообщение

Ранг: 3.1 (гость)
Статус: Участник

Создано: 9 мая 2012 12:48 New!
Цитата · Личное сообщение · #1

Здравствуйте
хочу спросить по каким признакам можно гарантированно различить драйвер и программу
подразумевается что у файла нет разрешения и ресурсов


Ранг: 105.6 (ветеран)
Статус: Участник

Создано: 9 мая 2012 12:53 New!
Цитата · Личное сообщение · #2

QQQ глядите в PE заголовок и импортируемые функции.

Ранг: 3.1 (гость)
Статус: Участник

Создано: 9 мая 2012 12:56 New!
Цитата · Личное сообщение · #3

это понятно что туда смотреть,а на что именно


Ранг: 105.6 (ветеран)
Статус: Участник

Создано: 9 мая 2012 13:09 New!
Цитата · Личное сообщение · #4

SubSystem параметр в PE хидере + FileAligment + SectionAligment. Для драйвера выставляют обычно маленьким, а для обычного exe файла эти параметры у меня выставить не получалось(видимо мало пытался).
Дёргает ли функции из ядра. Дёргает ли функции с началом Ke...

Ранг: 3.1 (гость)
Статус: Участник

Создано: 9 мая 2012 13:21 New!
Цитата · Личное сообщение · #5

субсистем не канает ибо нативный может быть как у драйвера так и у программы типа ntoskrnl
по поводу "маленький" тоже както не очень,например у тогоже ntoskrnl и драйвера видюхи atikmdag.sys они абсолютно равны, 200 и 1000 соответственно
по поводу импорта интересно что может импортировать драйвер обязательно и чего из этого точно не юзает прога?


Ранг: 105.6 (ветеран)
Статус: Участник

Создано: 9 мая 2012 13:28 New!
Цитата · Личное сообщение · #6

QQQ, прога вы имеете ввиду Ring3?

Ранг: 3.1 (гость)
Статус: Участник

Создано: 9 мая 2012 14:09 New!
Цитата · Личное сообщение · #7

ехе


Ранг: 105.6 (ветеран)
Статус: Участник

Создано: 9 мая 2012 14:16 New!
Цитата · Личное сообщение · #8

кольцо защиты у программы какое? Ring3 или Ring0?


Ранг: 675.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 9 мая 2012 14:23 New!
Цитата · Личное сообщение · #9

Да, бывают такие службы, которые тоже имеют Subsystem Native, как и драйвера, но это - редкость. По поводу таблицы импорта - для драйверов характерными являются импорт из hal.dll и ntoskrnl.exe, что для обычного ринг3 софта неприемлимо. Хотя, конечно, дровину можно собрать и вообще с пустой таблицей импорта, как, впрочем, и ринг3 ехе. Более мелкое выравнивание, как было написано в цикле статей Four-F, возможно. Но носит рекомендательный характер, т.е. если требование не соблюдается, то дровина грузиться всё равно будет. А вот ресурсы и расширение как раз не являются показателями, так что если они и есть, то не стоит на них полагаться. В качестве простой эвристики я бы посоветовал смотреть поле Subsystem, и если оно Native, то искать в таблице импорта ntosktrnl.exe. Следует учесть, что он может иметь и другое имя в зависимости от системы.

Ранг: 3.1 (гость)
Статус: Участник

Создано: 9 мая 2012 14:24 New!
Цитата · Личное сообщение · #10

без понятия,нужно однозначное определение любого варианта,только чтением из файла

Ранг: 3.1 (гость)
Статус: Участник

Создано: 9 мая 2012 14:27 New!
Цитата · Личное сообщение · #11

ARCHANGEL пишет:
то искать в таблице импорта ntosktrnl.exe

а что ехешник не может импортить ntosktrnl.exe?


Ранг: 675.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 9 мая 2012 14:47 New!
Цитата · Личное сообщение · #12

QQQ
Теоретически можно добавить в таблицу импорта IMAGE_IMPORT_DESCRIPTOR, который опишет импортируемые функции для ntosktrnl.exe, но это будет значить, что такое ринг3 приложение должно статически подгрузить ntosktrnl.exe в своё адресное пространство. Раз так, значит ни о каком DONT_RESOLVE_DLL_REFERENCES не может быть и речи, т.е. загрузчик вызовет обычную LoadLibrary для загрузки в адресное пространство модуля ntosktrnl.exe. Это приведёт к тому, что все модули из таблицы импорта ntosktrnl.exe тоже начнут подгружаться. Т.е. для какого-то из этих модулей будет выполнен его DllMain. Это приведёт к тому, что произойдёт попытка обращения к коду, который расположен в ринг0, т.е. произойдёт исключение, и модуль подгружен не будет, и так будет со всеми модулями, юзающими код, расположенный в ринг0. Так что работать такой софт не будет. Мы же предполагаем, что код, который вы анализируете - рабочий, т.е. может быть запущен без модифкаций.

Ранг: 3.1 (гость)
Статус: Участник

Создано: 9 мая 2012 15:09 New!
Цитата · Личное сообщение · #13

брр...
ничего никуда добавлять нельзя и запускать темболее!!!
анализ файла только чтением, ибо это плохие файлы


Ранг: 105.6 (ветеран)
Статус: Участник

Создано: 9 мая 2012 15:14 New!
Цитата · Личное сообщение · #14

тогда поищите в файле функции, которые вызываются на IRQL>passiive. Если такое есть - то вроде драйвер.

QQQ пишет:
анализ файла только чтением, ибо это плохие файлы

пишите антивирус?

Ранг: 411.8 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 9 мая 2012 15:39 New!
Цитата · Личное сообщение · #15

Секции INIT, возможны PAGE/PAGE_... + entry point >> 1000h
DLL Flags - 00000400 в XP/2k3
Косвенно - драйвер.

Ранг: 3.1 (гость)
Статус: Участник

Создано: 9 мая 2012 15:59 New!
Цитата · Личное сообщение · #16

не это тоже не то
Dart Sergius пишет:
пишите антивирус?

не, другое, пока не уверен
а в винапи разве нет функции по определению типа бинарника ? чета гдето очень смутно помню видел

Ранг: 411.8 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

Создано: 9 мая 2012 16:13 New!
Цитата · Личное сообщение · #17

QQQ
Скорее всего смутно помните DWORD WINAPI GetFileType(HANDLE hFile);
которая возвращает FILE_TYPE_CHAR, FILE_TYPE_DISK, FILE_TYPE_PIPE, FILE_TYPE_REMOTE, FILE_TYPE_UNKNOWN, но в данном случае она ничем не поможет.

Ранг: 3.1 (гость)
Статус: Участник

Создано: 9 мая 2012 16:28 New!
Цитата · Личное сообщение · #18

не скорей чтото типа SHGetFileInfo но более конкретно


Ранг: 481.4 (мудрец)
Статус: Участник
Тот самый :)

Создано: 9 мая 2012 16:32 New!
Цитата · Личное сообщение · #19

Code:
  1. /DRIVER:UPONLY causes the linker to add the IMAGE_FILE_UP_SYSTEM_ONLY bit to the characteristics in the output header to specify that it is a uniprocessor (UP) driver. The operating system will refuse to load a UP driver on a multiprocessor (MP) system.
  2.  
  3. /DRIVER:WDM causes the linker to set the IMAGE_DLLCHARACTERISTICS_WDM_DRIVER bit in the optional header's DllCharacteristics field.

Но если обычный драйвер, не WDM и не UP, то только эмпрически: импорт, базовый адрес, секции, alignment

| Сообщение посчитали полезным: mak



Ранг: 667.6 (! !)
Статус: Участник
CyberMonk

Создано: 9 мая 2012 16:56 New!
Цитата · Личное сообщение · #20

+ проверка чексуммы как одна из дополнительных проверок.
и как было сказано Subsystem = 1

А если хидер потерт?! Что тогда?

Можно взять обыкновенный блокнот и драйвер пустышку, накатать свой SysLoader и далее смотреть что происходит на MmCheckSystemImage ... так как будет выдана ошибка error code 2001
(ERROR_BAD_DRIVER) - The specified driver is invalid ... если его пускать как ограниченные права плюс запуск при старте, до рестарта системы он не запустится, зато будет ясно кто он. Уже зная что там происходит напишите свой Эмулятор для теста на Системный файл. Как один из вариантов ...


Ранг: 675.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 9 мая 2012 17:05 New!
Цитата · Личное сообщение · #21

QQQ пишет:
ничего никуда добавлять нельзя и запускать темболее!!!

Мы как на разных языках говорим. Это ж не вы будете добавлять, а добавлять будет автор драйвера или приложения, котороы вы в дальнейшем хотите анализировать. Всё и определяется чистым чтением.

mak пишет:
Уже зная что там происходит напишите свой Эмулятор для теста на Системный файл

Ну да, конечно. А потом он убьёт гидру, расчистит конюшни, ну, и дальше там по списку...


Ранг: 667.6 (! !)
Статус: Участник
CyberMonk

Создано: 9 мая 2012 17:38 New!
Цитата · Личное сообщение · #22

Вопрос в том, чтобы не изобретать костыли, а использовать то, что уже есть, или модифицировать под себя.
Драйвера скрывают весьма удачно.

Из исходников вин2к

Code:
  1.     Status = ZwOpenFile (&FileHandle,
  2.                              FILE_EXECUTE,
  3.                              &ObjectAttributes,
  4.                              &IoStatus,
  5.                              FILE_SHARE_READ | FILE_SHARE_DELETE,
  6.                              0 );
  7.  
  8.         if (!NT_SUCCESS(Status)) {
  9.  
  10. #if DBG
  11.             if (NtGlobalFlag & FLG_SHOW_LDR_SNAPS) {
  12.                 DbgPrint ("MiLoadImageSection: cannot open %wZ\n",
  13.                     ImageFileName);
  14.             }
  15. #endif
  16.             //
  17.             // Don't raise hard error status for file not found.
  18.             //
  19.  
  20.             goto return2;
  21.         }
  22.  
  23.         Status = MmCheckSystemImage(FileHandle);
  24.         if ((Status == STATUS_IMAGE_CHECKSUM_MISMATCH) ||
  25.             (Status == STATUS_IMAGE_MP_UP_MISMATCH) ||
  26.             (Status == STATUS_INVALID_IMAGE_PROTECT)) {
  27.             goto return1;


Что частично уже указал Hexxx. Детект по остальному лишь вероятный и одним чтением не обойтись.

{ Атач доступен только для участников форума } - sysload.c
 eXeL@B —› Основной форум —› sys or exe ?

Видеокурс ВЗЛОМ