Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Перехват запуска приложений


Автор: ky0x5a 17.5.2011, 13:22
Доброе время суток. Мне для диплома нужно реализовать такую веСЧ:

Необходимо перехватывать запуск приложений, при этом получать данные о запускаемом файле stat(), так же md5 сумму, если сумма md5 совпадает с базой, то делать kill pid.
Этакий антивирус, но не совсем.
Главная задача, как научиться перехватывать вызов приложений???


Подскажите к какой области обратиться, или может есть готовые реализации?
ps: Через месяц сдача диплома

Автор: GrayCardinal 17.5.2011, 16:57
ky0x5a
Простите за хамство, но Вы хотите за месяц сделать диплом ? Чтобы мы за Вас сделали ?  smile 

PS
Копать надо ядро, выносить кое-какой функционал в юзер-спэйс и с этим уже работать.

Автор: 500mhz 17.5.2011, 19:44
ну так пишем LKM и все, естественно рут нужен для загрузки

Автор: svlary 23.5.2011, 05:09
Цитата(500mhz @  17.5.2011,  19:44 Найти цитируемый пост)
ну так пишем LKM

  Может - не так все страшно ? Как вариант : попробовать мониторить, с помощью inotify каталог /proc.
И, при возникновении новой поддиректории, лезем в /proc/<PID>/cmdline достаем оттуда имя файла процесса и считаем его MD5.... 

Автор: GrayCardinal 23.5.2011, 08:42
svlary
Так, кончено, можно, но ИМХО, слишком просто для диплома smile

Автор: ky0x5a 23.5.2011, 09:20
GrayCardinal пишите по существу! в моем посте о просьбе написать мне диплом ничего не сказано.
500mhz ну конечно рут, тут не стоит вопрос о каком то взломе и еще чего та.

Вариант с моном /proc не подходит, ведь я хочу запретить запуск приложения если оно по md5 есть в моем списке.

Добавлено @ 09:26
Нашел такую софтину  http://clamfs.sourceforge.net - An user-space anti-virus protected file system . Попробую разобрать ее, ну если у кого есть какая мысля, прошу поделиться.

Автор: GrayCardinal 23.5.2011, 15:49
ky0x5a
По существу, так по существу...
Лично я бы начал с переноса кода MD5 суммы под ядро. На сколько помню, там только CRC. А дальше от этого и плясать. Хачим системный вызов exec, считаем MD5, при нужде блокируем. Я так понимаю блокировать надо один процесс (правильно понимаю ?), всвязи с чем эту MD5 можно и прошить в ядро (не заморачиваться с вводом MD5 из юзер-спэйса).

Автор: svlary 24.5.2011, 05:16
Цитата(GrayCardinal @  23.5.2011,  15:49 Найти цитируемый пост)
По существу, так по существу...


   Если серьезно, то ПО СУЩЕСТВУ, сама идея тащить виндовозные принципы безопасности в Linux  представляется мне полной ахинеей... Они принципиально разные !!! Надо тебе обеспечить безопасность на 101% ? Ну тогда - SELinux настраивать. Этот монстр может все.... Я его плохо знаю, но вполне допускаю, что можно его так настроить, что на запуск любого исполняемого модуля, он будет вызывать программу контроля целостности....

Автор: MAKCim 24.5.2011, 10:02
раз диплом, значит ни selinux, ни еще что-нибудь не подходят
человеку нужен свой велосипед
если не важно, как идет работа с ядром: в виде LKM или патча, то сделать в виде последнего ОЧЕНЬ просто
вот здесь
http://tomoyo.sourceforge.jp/cgi-bin/lxr/source/fs/exec.c#L1211
читаешь весь файл в буфер, считаешь md5 и возвращаешь -EPERM если не совпадает

Автор: 500mhz 25.5.2011, 01:31
MAKCim
ТС хочет отловить execv

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)