KillMe

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 18.02.2006 (Сб) 15:04

Kovu писал(а):Это что-то вроде установщика виртуального устройства?
(Это предположение основано на экспортируемых екзешником функциях)
Это не exeшник.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 18.02.2006 (Сб) 15:16

ANDLL

Ну файл то екзе называется :)
А так метод дедукции показал что это драйвер .
Если всё делать своими ручками, они скоро отвалятся !

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 18.02.2006 (Сб) 15:19

Убить мона всё... Получим физические адреса его страниц памяти, потом по ним пишем нули... Всё это в ring-0... Кстате, мне кажется, что ты в этот ring-0 перехватчик OpenProcess положил...

З. Ы. Админовский аккаунт говоришь... так под ним мона и KMODE_EXCEPTION_NOT_HANDLED в модуле(у меня это killsys.sys)
Изображение

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 18.02.2006 (Сб) 15:27

У него скорее перехват не OpenProcess, а NtTerminateProcess
Если всё делать своими ручками, они скоро отвалятся !

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 18.02.2006 (Сб) 15:33

keks-n писал(а):Убить мона всё... Получим физические адреса его страниц памяти, потом по ним пишем нули... Всё это в ring-0...

И что? Неполучится, я уже говорил. Код, который находится внутри того "бесконечного" цикла находится не в памяти процесса.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 18.02.2006 (Сб) 16:05

ПОНЯЛ... Ты осуществляешь синхронное обращение к драйверу, где у тя бесконечный цикл :) Пока драйвер не ответит на сообщение тебе не вернут управлении, но и завершить процесс низя, т. к. незавершённый вызов драйвера... Правильно?
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 18.02.2006 (Сб) 16:06

Kovu
Не придирайся к словам... Если уж на то пошло, то ZwTerminateProcess в ntoskrnl.exe
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 18.02.2006 (Сб) 16:20

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\bchb писал(а):DisplayName: bchb
ImagePath: \??\D:\WINNT\system32\bchb.exe
Start: 3
Type:1


И убедите меня, что Type=1 не означает kernel-mode driver

З. Ы. Возникла мысля, что ты включаешь отладку процесса, во время которой его грохнуть низя, надо сначала завершить отладчик. А отладчик засел в kmode
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 18.02.2006 (Сб) 17:45

keks-n писал(а):ПОНЯЛ... Ты осуществляешь синхронное обращение к драйверу, где у тя бесконечный цикл :) Пока драйвер не ответит на сообщение тебе не вернут управлении, но и завершить процесс низя, т. к. незавершённый вызов драйвера... Правильно?

Угу. Но сути вопроса это не меняет. Как его теперь завершить?
Собсно, сам драйвер записывается в конце exeшника, распаковывается в system32, устанавливается, и пускается irp :) До тех пор, пока irp не будет завершен, процесс "неубиваемый". Как видите, никаких хуков, никакого RemoteThread. И, заметьте, "обнуление" памяти процесса никчему не приведет. Не ну можно, конечно, обнулить системные страницы windows. Но мы ведь не ставим целью вызвать BSOD ;)
Ну а вот, что в драйвере:
Код: Выделить всё
      LARGE_INTEGER li1,li2;
      li1.QuadPart=-4000000;
      li2.QuadPart=-100000000;
      for(;;)
      {
         __asm
         {
            mov al, 0b6H
            out 43H, al
            mov ax,2500
            out 42h,al
            ror ax,8
            out 42h,al
            in al, 61H
            or al, 03H
            out 61H, al
         }
         KeDelayExecutionThread(KernelMode,FALSE,&li1);
         __asm
         {
            in al, 61H
            and al, 0fcH
            out 61H, al
         }
         KeDelayExecutionThread(KernelMode,FALSE,&li2);
      }

Как позже сообщил tyomitch, вместо этих асмов можно делать HalMakeBeep. Тогда код программы сокращается до пяти строчек.

PS. До апгрейда второй параметр у KeDelayExecutionThread был равен TRUE, и при попытке завершить процесс, ясное дело, ожидание обрывалось, что приводило к весьма "приятному" для человеческого уха эффекту. Теперь я решил заменить его на FALSE.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 18.02.2006 (Сб) 18:30

Драйвер остановить мона :D Тока это большие траблы.
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 18.02.2006 (Сб) 18:33

Вопрос: А что ты сможешь сделать из процесса с обнулёнными страницами? :D

И еще: Нафиг нам надо что-то в user-mode, если у нас код в нулевом кольце???
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 18.02.2006 (Сб) 19:47

keks-n писал(а):Вопрос: А что ты сможешь сделать из процесса с обнулёнными страницами? :D

И еще: Нафиг нам надо что-то в user-mode, если у нас код в нулевом кольце???

keks-n, а тебе совсем ничего юзермодного не хочется? Окошки, скажем, порисовать?
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 18.02.2006 (Сб) 19:57

У нас есть всяческие системные процессы, в которые мона впихнуть код.

Если кто-то не даёт прибить свой процесс в user-mode, то 98%-это вирус. А зачем вирусу GUI?

Теоретически окошко можно нарисовать из ring-0, но вот отлов сообщений :cry:
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.05.2006 (Вт) 18:46

Поднимаю топик, чтобы обратить внимание автора на весьма интересный и, по-видимому, чисто юзермодный трюк с таким же эффектом.
http://bbs.vbstreets.ru/viewtopic.php?p=6604918#6604918
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.05.2006 (Вт) 20:27

Одна фишка - при попытке убить процесс нормальные потоки убиваются, а повисшие нет. Поэтому если разок этот процесс Terminate-нуть, то толку от него не будет - останутся лишь мертвые потоки и все...
А я все практикую лечение травами...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.05.2006 (Вт) 21:28

Посетило меня две бредовых идеи по поводу того, как остановить твою прогу, ANDLL. Только это чистые рассуждения, на практике это может оказаться полной бредятиной... Итак:

1. Как ты общаешься с драйвером? Через IOCTL? А открываешь его с помошью CreateFile? Тогда можно попробовать заморозить процесс (ZwSuspendProcess), найти хэндл этого открытого файла, закрыть его и попытаться прибить.

2. Можно создать в процессе удаленный поток с таким кодом:
Код: Выделить всё
xor eax,eax
mov dword ptr fs:[eax], -1
mov byte ptr [eax], 0
Темыч, узнаешь? :wink: По идее система должна сама прибить процесс.

Вот так воть...
А я все практикую лечение травами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.05.2006 (Вт) 21:34

2. Не сканает: в такой ситуации процесс убивается вызовом той же самой NtTerminateProcess. (Как будто бы есть ещё какие-то средства его убить.)
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.05.2006 (Вт) 21:43

Как будто бы есть ещё какие-то средства его убить.
Да кто его знает, что там дядя Билли придумал. NtTerminateProcess обращается к интерфейсам ядра - а вдруг есть еще что-то в ядре? (ну это так, мысли вслух...)
А я все практикую лечение травами...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.05.2006 (Вт) 21:45

Да, можно еще попробовать объединить эти два способа.
А я все практикую лечение травами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.05.2006 (Вт) 21:54

Twister писал(а):
Как будто бы есть ещё какие-то средства его убить.
Да кто его знает, что там дядя Билли придумал. NtTerminateProcess обращается к интерфейсам ядра - а вдруг есть еще что-то в ядре? (ну это так, мысли вслух...)

У вас там в Алматах ещё не продают в пиратских ларьках угнанные позапрошлой весной исходники Win2000? ;-)
Это ж бесценная вещь для исследователя.
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.05.2006 (Вт) 22:05

Эх... продавали бы - было б супер.
А на счет угона это прикол или было? Что-то меня сомнения одолевают, что такое вообще возможно. За свои исходники Билли будет одно место рвать...
А я все практикую лечение травами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.05.2006 (Вт) 22:12

Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 29.05.2006 (Пн) 18:03

Twister писал(а):1. Как ты общаешься с драйвером? Через IOCTL? А открываешь его с помошью CreateFile? Тогда можно попробовать заморозить процесс (ZwSuspendProcess), найти хэндл этого открытого файла, закрыть его и попытаться прибить.
ZwSuspendProcess заморозит только пользовательские потоки. На системные потоки сие не действует. Закрытие хэндла драйвера вообще ни к чему не приведет(а к чему оно должно было привести то?).
Twister писал(а):2. Можно создать в процессе удаленный поток с таким кодом:
Код: Выделить всё
xor eax,eax
mov dword ptr fs:[eax], -1
mov byte ptr [eax], 0
Темыч, узнаешь? :wink: По идее система должна сама прибить процесс.

Опять же. Система убъет не ПРОЦЕСС, а все пользовательские потоки. Системные потоки, по идее, система убивать не должна. Кроме того, легко таким образом "сконструировать" поток, что бы его "убиение" приводило к недееспособности системы.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 30.05.2006 (Вт) 22:43

а к чему оно должно было привести то?
К тому, что прога не сможет больше общаться с драйвером. Но повторюсь, это же были лишь предположения. Я их ни чем не обосновывал...
Системные потоки, по идее, система убивать не должна
Гм... а кто ж тогда их прибивать будет, как ни ZwTerminateProcess (я про процесс целиком)?
Кроме того, легко таким образом "сконструировать" поток, что бы его "убиение" приводило к недееспособности системы.
Поясни...
А я все практикую лечение травами...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 30.05.2006 (Вт) 23:11

К тому, что прога не сможет больше общаться с драйвером
Да она с ним особо не разговаривает. Просто шлет один запрос и все... Потом хоть закрывай, ему все равно.
Гм... а кто ж тогда их прибивать будет, как ни ZwTerminateProcess (я про процесс целиком)?
Нуу, вероятно, все таки это делает внутренняя функция, более глубокая...
Поясни...
Нууу. Ну ладно, это все ерунда.
Вообще, лажа. KillMe я имею ввиду...
Просто есть такая функция PsCreateSystemThread. Можно для таких целей использовать ее. Тогда можно "отпускать" IRP, и пусть наш процесс спокойно завершается...

...А всю "работу" всегда можно провести в системном потоке... Есть предложения по закрытию системных потоков? ;)
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 30.05.2006 (Вт) 23:16

Да она с ним особо не разговаривает. Просто шлет один запрос и все... Потом хоть закрывай, ему все равно.
Тогда понятно. А я думал у тебя там цепочка посылов.
Нуу, вероятно, все таки это делает внутренняя функция, более глубокая...
Если не ошибаюсь, то глубже только интерфейсы ядра, функций нет.
Есть предложения по закрытию системных потоков?
У меня пока нет. Но раз их можно создать, значит и закрыть можно, или нет? :wink: Ждем авторитетного совета Темыча...
А я все практикую лечение травами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 31.05.2006 (Ср) 2:09

Twister писал(а):
Да она с ним особо не разговаривает. Просто шлет один запрос и все... Потом хоть закрывай, ему все равно.
Тогда понятно. А я думал у тебя там цепочка посылов.

А мне нет. Если удастся закрыть хендл, тем самым процесс будет отвязан от пищащего драйвера. И что после этого помешает его завершить?
Скорее всего, закрыть тот хендл должно не удаться.
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 31.05.2006 (Ср) 2:13

тем самым процесс будет отвязан от пищащего драйвера
Нет, процесс отвязан скорее всего не будет.
Скорее всего, закрыть тот хендл должно не удаться.
Почему? Если привилегий хватит, то закрыться должен.
А я все практикую лечение травами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 31.05.2006 (Ср) 2:15

Twister писал(а):
тем самым процесс будет отвязан от пищащего драйвера
Нет, процесс отвязан скорее всего не будет.

А чем ещё процесс связан с драйвером, кроме как открытым хендлом?
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 31.05.2006 (Ср) 2:16

Неотвеченным запросом...
А я все практикую лечение травами...

Пред.След.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76

    TopList  
cron