Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.06.11;
Скачать: CL | DM;

Вниз

Ловушка на запуск файлов. Hook на CreateProcess   Найти похожие ветки 

 
sfary   (2010-08-21 00:10) [0]

Подскажите. Есть ли готовые решения.

Допустим. Запускаю какой-то файл, нужно до его запуска показать мне, что этот файл пытается запуститься.. даже если его запускает другое приложение по CreateProcess


 
Rouse_ ©   (2010-08-21 01:34) [1]

Решения есть - антивирусы. Именно они реализуют данный функционал.
Хук в самом простом случае ставить нужно на SDT и теневую SST на NtCreateProcessEx


 
sfary   (2010-08-21 09:42) [2]

да. это надо.


 
Игорь ©   (2010-08-21 10:03) [3]


> sfary   (21.08.10 00:10)



madCodeHook в usermod"е, а kernelmode SDT в сети полно примеров скачай WDK http://club.shelek.ru/viewfiles.php?id=2 и флаг в руки


 
sfary   (2010-08-21 10:53) [4]

Что удалось найти. Возможно ли это переделать под CreateProcess


program aHookProc;

uses
 Windows,
 advApiHook;
 
var
TrueMessageBoxA: function(hWnd: HWND; lpText, lpCaption:
                         PAnsiChar; uType: UINT): Integer; stdcall;

function NewMessageBoxA(hWnd: HWND; lpText, lpCaption:
                       PAnsiChar; uType: UINT): Integer; stdcall;
begin
 TrueMessageBoxA(0, "Перехват установлен!", "HookProc", 0);
end;

begin
 MessageBoxA(0, "Новый метод API перехвата.", "HookProc", 0);

 HookProc("user32.dll", "MessageBoxA", @NewMessageBoxA, @TrueMessageBoxA);

 MessageBoxA(0, "Не работает!", "HookProc", 0);

 UnhookCode(@TrueMessageBoxA);
 
 MessageBoxA(0, "Перехват снят.", "HookProc", 0);
end.


И конкретно по WindowsSDK CreateProcess \ но собрать не получилось.
http://www.vba90.com/post/vb17/vb17967.htm

для редактирования первого примера понадобится второй.
type
     TCreateProcess   =   function(lpApplicationName:   PChar;   lpCommandLine:   PChar;
           lpProcessAttributes,   lpThreadAttributes:   PSecurityAttributes;
           bInheritHandles:   BOOL;   dwCreationFlags:   DWORD;   lpEnvironment:   Pointer;
           lpCurrentDirectory:   PChar;   const   lpStartupInfo:   TStartupInfo;
           var   lpProcessInformation:   TProcessInformation):   BOOL;   stdcall;
     TCreateProcessA   =   function(lpApplicationName:   PAnsiChar;   lpCommandLine:   PAnsiChar;
           lpProcessAttributes,   lpThreadAttributes:   PSecurityAttributes;
           bInheritHandles:   BOOL;   dwCreationFlags:   DWORD;   lpEnvironment:   Pointer;
           lpCurrentDirectory:   PAnsiChar;   const   lpStartupInfo:   TStartupInfo;
           var   lpProcessInformation:   TProcessInformation):   BOOL;   stdcall;
     TCreateProcessW   =   function(lpApplicationName:   PWideChar;   lpCommandLine:   PWideChar;
           lpProcessAttributes,   lpThreadAttributes:   PSecurityAttributes;
           bInheritHandles:   BOOL;   dwCreationFlags:   DWORD;   lpEnvironment:   Pointer;
           lpCurrentDirectory:   PWideChar;   const   lpStartupInfo:   TStartupInfo;
           var   lpProcessInformation:   TProcessInformation):   BOOL;   stdcall;


Как поймать запускающийся процесс, и вывести его допустим в messagebox или memo


 
Игорь ©   (2010-08-21 11:02) [5]


> sfary   (21.08.10 10:53) [4]
> Как поймать запускающийся процесс, и вывести его допустим
> в messagebox или memo


А зачем, цель какая?

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


 
sfary   (2010-08-21 11:11) [6]

Пишу антивирус. На данный момент у меня определяет запуск процессов из разници кол-ва. по циклу. Сами понимаете, это неудобно. Для антивирусного монитора нужен хук.

Не спрашивайте зачем мне это надо, этот антивирус для конкретных целей.. как дополнение.


 
sfary   (2010-08-21 11:14) [7]

http://slil.ru/29578798

в этой версии есть ошибки, так что необходимо заменить мои циклы на хук.


 
Игорь ©   (2010-08-21 11:15) [8]

И кстати на заметку в Windows Vista и выше NtCreateProcess и NtCreateProcessEx вам не поможет, в этих ОС нужно перехватывать NtCreateUserProcess


 
sfary   (2010-08-21 11:22) [9]

Да, в курсе usermod надо, желательно простой apihook, в режиме ядра не требуется, с этим одни проблемы.. да и не требуется.

Размещу вашу рекламу в этот бесплатный проект.


 
Игорь ©   (2010-08-21 11:36) [10]


> sfary   (21.08.10 11:14) [7]
> http://slil.ru/29578798



> не требует подключения к интернету, не требует обновления


Я уже хочу поставить себе

Вы озвучте $ и мы всем форумом вам напишем HOOK CrateProcess по типу  вот этого http://delphisources.ru/pages/sources/system/2010-year/process-protector.html исходника который я написал в радостном угаре ничего не зная о програмирование драйверов, надеюсь меня не сильно будут бить за все BSOD которые он вызвал


 
sfary   (2010-08-21 11:40) [11]

http://delphisources.ru/pages/sources/system/2010-year/process-protector.html

хотел применить это к блокированию системных файлов от внедрения writememory но затем понял, что это нарушит работу windows =)

проект бесплатный, так что с него ничего не поиметь. только могу разместить вашу рекламу.


 
sfary   (2010-08-21 11:44) [12]

i.websvc[hotdog]gmail.com

Игорь, рановато ставить, косяков много.


 
Игорь ©   (2010-08-21 11:49) [13]


> sfary   (21.08.10 11:40)


Ваш энтузиазм похвален но даже будь вы МД у вас уйдет на это месяцы, а то и годы...

Забейте у вас ничго не получиться


 
sfary   (2010-08-21 11:58) [14]

так я подобные проекты за 3 дня поднимаю, на массы. =)

с хуком было бы грамотнее.


 
Игорь Шевченко ©   (2010-08-22 18:27) [15]

аудит надо использовать, а не ерундой страдать.


 
Игорь ©   (2010-08-22 22:35) [16]


> Игорь Шевченко ©   (22.08.10 18:27) [15]


Какой то довольно известный антивирус на этом принципе основан, ни каких хуков, забыл название


 
sfary   (2010-08-24 00:51) [17]

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


 
sfary   (2010-08-24 01:16) [18]


> но это так же не поможет выполниться шпионскому ПО.
>

:D не то.

Аудит не помешает шпионскому ПО, тем более всегда находились способы выбраться в нулевое кольцо. Процесс не стоит на месте, Rootkits/Bootkit
последние практически не выгружаемы для антивирусов.

В любом случае, предотвратить какую-то часть от исполнения лучше, в моем случае (как мне кажется) не хилую.

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

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


 
Сергей М. ©   (2010-08-24 09:53) [19]


> Приму любую информацию касаемо темы


http://www.google.com/search?hl=ru&client=firefox&hs=KQS&rls=org.mozilla%3Aru%3Aofficial&q=pssetcreateprocessnotifyroutine+msdn&aq=1&aqi=g3&aql=&oq=pssetcreateprocessnoti&gs_rfai=


 
Игорь ©   (2010-08-24 12:32) [20]


> sfary


Перехват PsSetCreateProcessNotifyRoutine, пока есть проблемка, не могу получить полный путь запускаемого процесса, из usermode не получаеться, надо получать в драйвере, доработаю позже, щас занет пока, под x64 драйвер подписан, надо только отключить проверку цифровой подписи F8

http://www.onlinedisk.ru/file/501133/


 
Игорь ©   (2010-08-24 12:47) [21]

Тестировал под Windows XP SP2, Seven, x64 Seven


 
Сергей М. ©   (2010-08-24 13:41) [22]


> Игорь ©   (24.08.10 12:32) [20]
> Перехват PsSetCreateProcessNotifyRoutine


Нафига его перехватывать-то ?


 
Игорь ©   (2010-08-24 14:25) [23]


> Сергей М. ©   (24.08.10 13:41) [22]


Да это я так образно


 
Сергей М. ©   (2010-08-24 15:54) [24]


> Игорь ©   (24.08.10 14:25) [23]


Даже если "образно", то как это поможет цели - "еще до запуска" ?
Никак.
Вот в Висте и 2008-м сервере - там появилась PsSetCreateProcessNotifyRoutineEx, она реально поможет.


 
Игорь ©   (2010-08-24 16:14) [25]


> Сергей М. ©   (24.08.10 15:54) [24]


Процесс еще не инициализировался, не загрузил ни одну dll, что он может?

А мы можем спокойно его замочить если он нам не понравился чем либо


 
sfary   (2010-08-25 19:41) [26]

Возможно ли определить, что процесс полностью инициализировался (только с windows dll) после чего поставить его на паузу. Если функция определения на его вирусность дала добро, то его выгружаем, в противном случае убираем с паузы. На данный момент это требуется. Сильно драйвера не требуются, ошибок много будет и лёгкость утеряется.



Страницы: 1 вся ветка

Текущий архив: 2017.06.11;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.005 c
15-1463088604
Юрий
2016-05-13 00:30
2017.06.11
С днем рождения ! 13 мая 2016 пятница


2-1443529753
alvlts1
2015-09-29 15:29
2017.06.11
Вопрос про точки останова.


1-1350803047
Verner
2012-10-21 11:04
2017.06.11
Способ хранения объектов в памяти


3-1313671934
reekoxela
2011-08-18 16:52
2017.06.11
Как оповестить клиентов СУБД об изменении данных?


4-1282335043
sfary
2010-08-21 00:10
2017.06.11
Ловушка на запуск файлов. Hook на CreateProcess