eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июня!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

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

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

 eXeL@B —› Вопросы новичков —› ZwDeviceIoControlFile параметры
Посл.ответ Сообщение

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

Создано: 11 июня 2019 13:50 New!
Цитата · Личное сообщение · #1

Приветствую.
Вкратце история: есть малварь, один из её модулей убивает процессы антивирей, как он их гасит - я понять не могу, также юзается драйвер kprocesshacker.sys, имеет ли он отношение к процессу убивания процессов АВ - понятия не имею, но то, что он грузится - это точно.

Дебажил в х64дбг, 2 раза вызывается ZwDeviceIoControlFile, во вреия второго вызова убивается процесс АВ... но смотрю на параметры и вот не ясно ровным счетом ничего

первый вызов:


второй:



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

Создано: 11 июня 2019 13:56 New!
Цитата · Личное сообщение · #2

Ну как бы DeviceIoControl и есть способ обмена с драйвером. Копаться в программе незачем, надо драйвер изучать.

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

Создано: 11 июня 2019 13:57 New!
Цитата · Личное сообщение · #3

add:
чуть выше в параметрах вызовов фунок вижу:

Code:
  1. 000000013F954F37 | BA CB 20 99 99           | mov edx,999920CB                        |
  2. 000000013F954F3C | 48 8B 4C 24 50           | mov rcx,qword ptr ss:[rsp+50]           |
  3. 000000013F954F41 | E8 1E 03 00 00           | call <installer.sub_13F955264>          |


Code:
  1. 000000013F954F7C | BA DF 20 99 99           | mov edx,999920DF                        |
  2. 000000013F954F81 | 48 8B 4C 24 50           | mov rcx,qword ptr ss:[rsp+50]           |
  3. 000000013F954F86 | E8 D9 02 00 00           | call <installer.sub_13F955264>          |


А в коде драйвера присутсвуют данные константы.
У меня скиллы по работе с ринг0 практически на нуле (
Я так понимаю это общение с дровиной таким образом идет ?

p.s. Hard Way с использованием windbg не предлагать )

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

Создано: 11 июня 2019 13:57 New!
Цитата · Личное сообщение · #4

kprocesshacker.sys это драйвер Process Hacker 2

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

Создано: 11 июня 2019 14:03 · Поправил: dsrabot1 New!
Цитата · Личное сообщение · #5

galenkane пишет:
kprocesshacker.sys это драйвер Process Hacker 2

Очень "ценный" совет, спасибо

Кейс с константой 0x999920CB вызывает функу:
Code:
  1. __int64 __fastcall sub_17798(_QWORD *a1, unsigned int a2, const __m128i *a3, char a4)
  2. {
  3.   const __m128i *v4; // rbx
  4.   unsigned int v5; // er12
  5.   _QWORD *v6; // rdi
  6.   signed int v7; // ebx
  7.   unsigned int v9; // ebx
  8.   PVOID v10; // [rsp+40h] [rbp-38h]
  9.   __int64 v11; // [rsp+48h] [rbp-30h]
  10.   PVOID Object; // [rsp+50h] [rbp-28h]
  11.   __m128i v13; // [rsp+58h] [rbp-20h]
  12.  
  13.   v4 = a3;
  14.   v5 = a2;
  15.   v6 = a1;
  16.   if ( a4 )
  17.   {
  18.     ProbeForWrite(a1, 8ui64, 8u);
  19.     ProbeForRead(v4, 0x10ui64, 4u);
  20.     _mm_storeu_si128(&v13, _mm_loadu_si128(v4));
  21.   }
  22.   else
  23.   {
  24.     _mm_storeu_si128(&v13, _mm_loadu_si128(a3));
  25.   }
  26.   if ( v13.m128i_i64[1] )
  27.   {
  28.     v7 = PsLookupProcessThreadByCid(&v13, &v10, &Object);
  29.     if ( v7 >= 0 )
  30.       ObfDereferenceObject(Object);
  31.   }
  32.   else
  33.   {
  34.     v7 = PsLookupProcessByProcessId(v13.m128i_i64[0], &v10);
  35.   }
  36.   if ( v7 < 0 )
  37.     return (unsigned int)v7;
  38.   v9 = ObOpenObjectByPointer(v10, 0i64, 0i64, v5, PsProcessType, 0, &v11);
  39.   ObfDereferenceObject(v10);
  40.   if ( (v9 & 0x80000000) == 0 )
  41.     *v6 = v11;
  42.   return v9;
  43. }


Насколько это похлже на "килл процесса" мне сложно сказать, буду разбираться или ждать, что кто-то подскажет. Это KpiOpenProcess

Добавлено спустя 15 минут
case 0x999920DF:
if ( (_DWORD)v5 == 0x10 )
v8 = sub_17AB8(Handle, (unsigned int)Address, AccessMode);
else

а это и есть киллпроцесс (KpiTerminateProcess)

Code:
  1. NTSTATUS __fastcall sub_17AB8(void *a1, unsigned int a2, KPROCESSOR_MODE a3)
  2. {
  3.   unsigned int v3; // esi
  4.   NTSTATUS result; // eax
  5.   PEPROCESS v5; // rax
  6.   PVOID v6; // rbx
  7.   __int64 (__fastcall *v7)(PVOID, _QWORD); // rax
  8.   NTSTATUS v8; // edi
  9.   __int64 v9; // [rsp+28h] [rbp-30h]
  10.   HANDLE Handle; // [rsp+40h] [rbp-18h]
  11.   PVOID Object; // [rsp+78h] [rbp+20h]
  12.  
  13.   v3 = a2;
  14.   result = ObReferenceObjectByHandle(a1, 0, PsProcessType, a3, &Object, 0i64);
  15.   if ( result >= 0 )
  16.   {
  17.     v5 = IoGetCurrentProcess();
  18.     v6 = Object;
  19.     if ( Object == (PVOID)v5 )
  20.     {
  21.       v8 = 0xC00000DB;
  22.       goto LABEL_11;
  23.     }
  24.     if ( !dword_14374 )
  25.     {
  26.       v7 = (__int64 (__fastcall *)(PVOID, _QWORD))sub_11BAC((__int64)&unk_14200);
  27.       if ( v7 )
  28.       {
  29.         v8 = v7(v6, v3);
  30.         if ( v8 != 0xC00000BB )
  31.           goto LABEL_9;
  32.       }
  33.       v6 = Object;
  34.     }
  35.     LOBYTE(v9) = 0;
  36.     v8 = ObOpenObjectByPointer(v6, 0x200i64, 0i64, 1i64, PsProcessType, v9, &Handle);
  37.     if ( v8 >= 0 )
  38.     {
  39.       v8 = ZwTerminateProcess(Handle, v3);
  40.       ZwClose(Handle);
  41.     }
  42. LABEL_9:
  43.     v6 = Object;
  44. LABEL_11:
  45.     ObfDereferenceObject(v6);
  46.     result = v8;
  47.   }
  48.   return result;
  49. }


Вроде все, что хотел понял, но если кто-то что-то толковое напишет, то буду благодарен. Пока не закрываю топ.

Ранг: 383.6 (мудрец)
Статус: Участник

Создано: 11 июня 2019 14:25 · Поправил: BfoX New!
Цитата · Личное сообщение · #6

а это не --> тот <-- "Process Hacker is a powerful free and open source process viewer."?

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

Создано: 11 июня 2019 14:28 New!
Цитата · Личное сообщение · #7

BfoX
Тот, тот... Я впервые такие трюки вижу в малвари, легальный дров научились юзать уже )

Ранг: 65.5 (постоянный)
Статус: Участник

Создано: 11 июня 2019 15:08 New!
Цитата · Личное сообщение · #8

dsrabot1, ненуачо, корректно подписанный драйвер, знакомый антивирусникам. Чего ж не заюзать.

Ранг: 25.0 (посетитель)
Статус: Участник

Создано: 11 июня 2019 16:16 New!
Цитата · Личное сообщение · #9

Многие аверы давно блокируют дров РН. Но про использовании в малваре первый раз слышу, обычно вручную выносят авера этой чудо программой.

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

Создано: 11 июня 2019 17:21 New!
Цитата · Личное сообщение · #10

morgot пишет:
Многие аверы давно блокируют дров РН

На VT таких 12 штук, из которых может 2-3 популярных...

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

Создано: 11 июня 2019 20:23 New!
Цитата · Личное сообщение · #11

> p.s. Hard Way с использованием windbg не предлагать )

Клоун взялся за разбор ядерной малвари, не зная что такое IOCTL. Виндебаг не предлагать лол

В поисках халявы.

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


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

Создано: 11 июня 2019 21:11 New!
Цитата · Личное сообщение · #12

Совсем плохо у дяди жени с аналитиками стало, да?

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


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

Создано: 12 июня 2019 11:43 New!
Цитата · Личное сообщение · #13

difexacaw
Да я как-то и не сомневался, что такой клоун, как ты заглянет в тему, но, как видишь и без твоих моторов и визоров проблема решаема, без необходимости лезть в ринг0, в статике в данном случае. Так что клерк, ты как был бесполезен для форума, таким и остался.
Вижу, что тему можно закрыть, что я и сделаю.
 eXeL@B —› Вопросы новичков —› ZwDeviceIoControlFile параметры
Эта тема закрыта. Ответы больше не принимаются.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS