![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
Всем привет!
Я сейчас занимаюсь разработкой одного приложения, работающего и в пользовательском пространстве и в пространстве ядра. Эта штука, можно сказать, относится к корпоративной безопасности и простые пользователи не должны знать о ее существовании, т.е. админ пришел, настроил пользователю систему, пользователь сел и если сильно не копает - то ничего и не знает о том, что на его компьютере есть посторонняя, незнакомая ему программа. Следовательно, встает вопрос о маскировке. Хотелось бы узнать, какие способы маскировки существуют. Поясню, меня интересует не только реализация, но и вообще, принципы маскировки, средства можно использовать практически любые (ибо драйвер). Итак, я думаю что можно сделать следующее для маскировки приложения:
P.s. программа абсолютно легальна и не является ни вирусом, ни руткитом, ни трояном (в смысле, она будет, так сказать, легальным трояном, т.е. администратор будет знать, что эта программа есть) |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
Скрыть не очень просто...можешь конечно закрыть OpenProcess, но виден он все равно буден..Можно перехватить EnumProcess, но тогда придеться также перехватыватх и CreateToolHelp32Snapshot...геморроя много, по моему проще сделать свое дело под чужим процессом..к примеру WinLogon, можно заменить msgina.dll, можно написать простую библиотеку которая будет подгружаться ко всем/нужным тебе процесам (AppInit_DLLs).
|
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
Сейчас уже придумал еще одну проблему: программа время от времени будет лезть в сеть, так что нужно ее будет вытирать еще из списка соединений.
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
ну я же говорю - внедри DLL в какой нибудь системный процесс и дело с концом...
Добавлено через 2 минуты и 10 секунд будет ощущение что это к примеру winlogon в сеть лезет..можно еще создать удаленный поток на одном из системных процессов и в нем реализовать все что нужно. |
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
azesmcar, ок, попробую
Если еще есть идеи - я всегда готов выслушать |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 1 Всего: 32 |
Сам напросился IMHO, прятанье - самое неблагодарное занятие, ибо положительного эффекта добиться очень сложно. Как правило, в результате "овчинка выделки не стоит" Чтобы это реализовать, для начала надо знать все способы перечисления процессов. Ибо спятал от одного способа - найдут другим. И этих способов - как собак нерезанных Только Ms-Rem, если мне не изменяет память, перечисляет их штук восемь. (Начинай считать количество функций, которые надо перехватывать Далее: посмотри сколько открытых Handle`ов у твоего процесса. Почти через любой из них можно выйти на процесс (ну как минимум узнать о его существовании). Соответственно придется прятать и их тоже ( кстати, а в скольки таблицах они сидят ? ). И здесь наша дорога скатерью не будет Кроме OpenFile, надо еще перехватывать CreateFile, но это цветочки. Только одна ZwQueryDirectoryFile, может выдавать список объектов, как минимум с тремя разными FILE_INFORMATION_CLASS. Это означает, что придется корректировать не менее трех разных видов структур только для нее одной. А сколько еще существует подобных функций ? Я, например, не знаю. А ведь спрятать - означает спрятать от всех, а не от части. Пусть мы сумели перебрать все возможные подобные ф-ии, перехвать их и подкорректировать. (Кстати, ты еще ведешь подсчет количества функций ? Но и здесь встает новая проблема: файл можно найти через MFT. И вот здесь мы с тобой зубы то и пообламаем Ибо коррестировать работу системных функций с MFT - это... ну... вообщем... это что-то ! Если, кто сумеет, то ему памятник поставить надо будет Все, что я перечислила, это так, навскидку. Просто не спиться. А если подумать, то список подлинее будет P.S. А как ты думаешь, система не будет подтормаживать обрабатывая все наши перехваты ? Может у нее ни на что другое и времени не останется ? P.P.S. Хоть и упомянула в начале, но на всякий случай повторюсь: все сказанное - IMHO. Добавлено @ 06:38 В догонку: Существуют еще всякие PerformanceCounter-ы, WMI и черта в ступе. О них тоже придется позаботиться. Ты как там, не сбился с подсчета функций ? Это сообщение отредактировал(а) Riply - 10.10.2008, 06:42 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
Riply когда то во времена своей бурной молодости я пытался заняться скрытием процессов...
потом понял что геморроя не оберешся и просто перекрыл OpenProcess чтобы программу не убили злые пользователи. Но с ДЛЛ все обстоит совсем иначе..ни тебе процессов, ни перехватов апи. собственно у тебя нет процесса чтобы его можно было увидеть. |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 1 Всего: 32 |
Почти полностью согласна. Но, если бы мне поставили такую задачу, как спрятаться, я бы смотрела в сторону "распределенных нитей". Т.е. мы существуем не в виде процесса или DLL, а в виде группы нитей распределенных в разных процессах |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
ну я и предложил, или мы говорим о разном? |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 1 Всего: 32 |
Угу. Прсто, мне кажется что "нить" более верный темин. Во-первых Thread, так преводится. Во-вторых в потоках можно запутаться - слишком много их развелось Тут тебе и семейство разных TStream`ов и потоки у FS-объектов. |
|||
|
||||
| ama_kid |
|
||||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 5 Всего: 95 |
ну, блин, ты расписала Все, оно, конечно, правильно, но человек же сказал, что
1) спрятать файл - перехват ZwQueryDirectoryFile, ZwOpenFile и может еще пару-тройку функций... 2) спрятать процесс - перехват ZwQuerySystemInformation... Все, спрятанный таким образом файл-процесс не будет виден стандартными приемами типа проводника\фара\тотал коммандера\диспетчера задач и даже ProcessExplorer'а от SysInternals... Естесственно, от ProcessHunter'а и прочих руткитов только эти ухищрения не помогут, но при правильной настройке административных прав системы руткиты тоже могут пообломать зубы... Насчет скрытия сетевой активности, к сожалению, не могу ничего сказать, потому что не доводилось интересоваться этой темой, но не думаю, что принцип скрытия там слишком отличается, главное - найти функцию, которая информирует о сетевом соединении и которую можно будет перехватить... P.S. В общем, я всего лишь хотел сказать, что надо правильно соотнести затраты\цели и решить, стоит ли игра свеч? При борьбе с "типовым пользователем" описанных мной приемов бывает достаточно... -------------------- самурай без меча подобен самураю с мечом, но только без меча |
||||
|
|||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
люди, меня интересует перехват создания/чтения/записи файлов в винде (в идеале перехватить момент создание фала чужим приложением, читать информацию которую оно хочет записать в файл а записывать другие, свои данные), я пока читал сей топ увидел про упоминания интересующих меня функций
подскажите, что читать чтобы понимать о чем вы тут толкуете... как это делается и возможно ли вообще такое? Это сообщение отредактировал(а) shara - 18.10.2008, 01:12 -------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: 1 Всего: 32 |
Мое IMHO, что лучше всего начинать изучать тему перехвата с Рихтера. Он там все по полочкам раскладывает и примеры есть Ну а когда инструмент будет освоен, то для того чтобы лучше понимать что, где и когда надо перехватывать (а может и не надо почитать David A. Solomon Mark E. Russinovich "Inside Microsoft for Windows 2000" |
|||
|
||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
Riply,
спасибо за совет -------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
shara, штука эта называется filesystem filter driver
Добавлено через 40 секунд Кстати, я сделал то, что хотел: просто в фильтр-драйвере добавил отказ на некоторые операции для некоторых процессов и усё |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |