Сейчас на форуме: rmn, exp50848 (+8 невидимых)

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

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

Создано: 09 мая 2012 12:48
· Личное сообщение · #1

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




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 09 мая 2012 12:53
· Личное сообщение · #2

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



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

Создано: 09 мая 2012 12:56
· Личное сообщение · #3

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




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

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

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



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

Создано: 09 мая 2012 13:21
· Личное сообщение · #5

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




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 09 мая 2012 13:28
· Личное сообщение · #6

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



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

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

ехе




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 09 мая 2012 14:16
· Личное сообщение · #8

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




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

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

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

-----
Stuck to the plan, always think that we would stand up, never ran.




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

Создано: 09 мая 2012 14:24
· Личное сообщение · #10

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



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

Создано: 09 мая 2012 14:27
· Личное сообщение · #11

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

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




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 09 мая 2012 14:47
· Личное сообщение · #12

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

-----
Stuck to the plan, always think that we would stand up, never ran.




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

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

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




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 09 мая 2012 15:14
· Личное сообщение · #14

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

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

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



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 09 мая 2012 15:39
· Личное сообщение · #15

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



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

Создано: 09 мая 2012 15:59
· Личное сообщение · #16

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

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



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 09 мая 2012 16:13
· Личное сообщение · #17

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



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

Создано: 09 мая 2012 16:28
· Личное сообщение · #18

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



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 09 мая 2012 16:32
· Личное сообщение · #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


Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 09 мая 2012 16:56
· Личное сообщение · #20

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

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

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

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 09 мая 2012 17:05
· Личное сообщение · #21

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

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

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

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

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 09 мая 2012 17:38
· Личное сообщение · #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. Детект по остальному лишь вероятный и одним чтением не обойтись.

1de1_09.05.2012_EXELAB.rU.tgz - sysload.c

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube



 eXeL@B —› Основной форум —› sys or exe ?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати