Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маскировка приложения и драйвера, Какие методы существуют? 
V
    Опции темы
Goganchic
Дата 8.10.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Всем привет!
Я сейчас занимаюсь разработкой одного приложения, работающего и в пользовательском пространстве и в пространстве ядра. Эта штука, можно сказать, относится к корпоративной безопасности и простые пользователи не должны знать о ее существовании, т.е. админ пришел, настроил пользователю систему, пользователь сел и если сильно не копает - то ничего и не знает о том, что на его компьютере есть посторонняя, незнакомая ему программа. Следовательно, встает вопрос о маскировке. Хотелось бы узнать, какие способы маскировки существуют. Поясню, меня интересует не только реализация, но и вообще, принципы маскировки, средства можно использовать практически любые (ибо драйвер). Итак, я думаю что можно сделать следующее для маскировки приложения:
  • скрыть его из списка процессов
  • скрыть файл с диска (не поставить ему аттрибут "скрытый", а именно скрыть, т.е. перехватить ф-ию ZwOpenFile и не давать обращаться к файлу, а также не показывать его в листинге директорий)
Кто что может добавить? Как еще можно найти скрытый процесс?

P.s. программа абсолютно легальна и не является ни вирусом, ни руткитом, ни трояном (в смысле, она будет, так сказать, легальным трояном, т.е. администратор будет знать, что эта программа есть)
PM Jabber   Вверх
azesmcar
Дата 8.10.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 5
Всего: 211



Скрыть не очень просто...можешь конечно закрыть OpenProcess, но виден он все равно буден..Можно перехватить EnumProcess, но тогда придеться также перехватыватх и CreateToolHelp32Snapshot...геморроя много, по моему проще сделать свое дело под чужим процессом..к примеру WinLogon, можно заменить msgina.dll, можно написать простую библиотеку которая будет подгружаться ко всем/нужным тебе процесам (AppInit_DLLs).
PM   Вверх
Goganchic
Дата 8.10.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Сейчас уже придумал еще одну проблему: программа время от времени будет лезть в сеть, так что нужно ее будет вытирать еще из списка соединений.
PM Jabber   Вверх
azesmcar
Дата 8.10.2008, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 5
Всего: 211



ну я же говорю - внедри DLL в какой нибудь системный процесс и дело с концом...

Добавлено через 2 минуты и 10 секунд
будет ощущение что это к примеру winlogon в сеть лезет..можно еще создать удаленный поток на одном из системных процессов и в нем реализовать все что нужно.
PM   Вверх
Goganchic
Дата 8.10.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



azesmcar, ок, попробую smile
Если еще есть идеи - я всегда готов выслушать
PM Jabber   Вверх
Riply
Дата 10.10.2008, 06:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 1
Всего: 32



Цитата(Goganchic @  8.10.2008,  17:21 Найти цитируемый пост)
Если еще есть идеи - я всегда готов выслушать 


Сам напросился smile

IMHO, прятанье - самое неблагодарное занятие, ибо положительного
эффекта добиться очень сложно. Как правило, в результате "овчинка выделки не стоит" smile

Цитата(Goganchic @  8.10.2008,  16:37 Найти цитируемый пост)
скрыть его из списка процессов


Чтобы это реализовать, для начала надо знать все способы перечисления процессов.
Ибо спятал от одного способа - найдут другим.
И этих способов - как собак нерезанных smile
Только Ms-Rem, если мне не изменяет память, перечисляет их штук восемь.
(Начинай считать количество функций, которые надо перехватывать smile )


Далее: посмотри сколько открытых Handle`ов у твоего процесса.
Почти через любой из них можно выйти на процесс (ну как минимум узнать о его существовании).
Соответственно придется прятать и их тоже ( кстати, а в скольки таблицах они сидят ? ).

Цитата(Goganchic @  8.10.2008,  16:37 Найти цитируемый пост)
скрыть файл с диска (не поставить ему аттрибут "скрытый", а именно скрыть, т.е. перехватить ф-ию ZwOpenFile и не давать обращаться к файлу, а также не показывать его в листинге директорий)


И здесь наша дорога скатерью не будет smile
Кроме OpenFile, надо еще перехватывать CreateFile, но это цветочки.
Только одна ZwQueryDirectoryFile, может выдавать список объектов, как минимум с тремя разными FILE_INFORMATION_CLASS.
Это означает, что придется корректировать не менее трех разных видов структур только для нее одной.
А сколько еще существует подобных функций ? Я, например, не знаю. А ведь спрятать - означает спрятать от всех, а не от части.
Пусть мы сумели перебрать все возможные подобные ф-ии, перехвать их и подкорректировать.
(Кстати, ты еще ведешь подсчет количества функций ? smile )
Но и здесь встает новая проблема: файл можно найти через MFT.
И вот здесь мы с тобой зубы то и пообламаем 
Ибо коррестировать работу системных функций с MFT - это... ну... вообщем...  это что-то !
Если, кто сумеет, то ему памятник поставить надо будет smile

Все, что я перечислила, это так, навскидку. Просто не спиться. А если подумать, то список подлинее будет

P.S.
 А как ты думаешь, система не будет подтормаживать обрабатывая все наши перехваты ?
 Может у нее ни на что другое и времени не останется ? smile

P.P.S.
 Хоть и упомянула в начале, но на всякий случай повторюсь: все сказанное - IMHO.

Добавлено @ 06:38
В догонку:
 Существуют еще всякие PerformanceCounter-ы, WMI и черта в ступе.
 О них тоже придется позаботиться.
 Ты как там, не сбился с подсчета функций ? smile

Это сообщение отредактировал(а) Riply - 10.10.2008, 06:42
PM MAIL   Вверх
azesmcar
  Дата 10.10.2008, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 5
Всего: 211



Riply когда то во времена своей бурной молодости я пытался заняться скрытием процессов...
потом понял что геморроя не оберешся и просто перекрыл OpenProcess чтобы программу не убили злые пользователи. Но с ДЛЛ все обстоит совсем иначе..ни тебе процессов, ни перехватов апи. собственно у тебя нет процесса чтобы его можно было увидеть. 
PM   Вверх
Riply
Дата 10.10.2008, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 1
Всего: 32



Цитата(azesmcar @  10.10.2008,  06:53 Найти цитируемый пост)
Но с ДЛЛ все обстоит совсем иначе..ни тебе процессов, ни перехватов апи. собственно у тебя нет процесса чтобы его можно было увидеть.  


Почти полностью согласна.
Но, если бы мне поставили такую задачу, как спрятаться, я бы
смотрела в сторону "распределенных нитей". Т.е. мы существуем не в виде процесса или DLL,
а в виде группы нитей распределенных в разных процессах smile

PM MAIL   Вверх
azesmcar
Дата 10.10.2008, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 5
Всего: 211



Цитата

можно еще создать удаленный поток на одном из системных процессов


ну я и предложил, или мы говорим о разном? smile нить - это вы а так понимаю о потоке? мне незнакомо другое значение этого термина.
PM   Вверх
Riply
Дата 10.10.2008, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 1
Всего: 32



Цитата(azesmcar @  10.10.2008,  08:01 Найти цитируемый пост)
нить - это вы а так понимаю о потоке?


Угу. Прсто, мне кажется что "нить" более верный темин.
Во-первых Thread, так преводится.
Во-вторых в потоках можно запутаться - слишком много их развелось smile
Тут тебе и семейство разных TStream`ов и потоки у FS-объектов.

PM MAIL   Вверх
ama_kid
Дата 15.10.2008, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 5
Всего: 95



Цитата(Riply @ 10.10.2008,  07:35)
Цитата(Goganchic @  8.10.2008,  17:21 Найти цитируемый пост)
Если еще есть идеи - я всегда готов выслушать 


Сам напросился smile

IMHO, прятанье - самое неблагодарное занятие, ибо положительного
эффекта добиться очень сложно. Как правило, в результате "овчинка выделки не стоит" smile
[...поSKIPано...]
 Ты как там, не сбился с подсчета функций ? smile

ну, блин, ты расписала  smile  
Все, оно, конечно, правильно, но человек же сказал, что
Цитата(Goganchic @  8.10.2008,  17:37 Найти цитируемый пост)
пользователь сел и если сильно не копает - то ничего и не знает о том, что на его компьютере есть посторонняя, незнакомая ему программа.
эта фраза фактически означает, что можно обойтись, стандартными приёмами:
1) спрятать файл - перехват ZwQueryDirectoryFile, ZwOpenFile и может еще пару-тройку функций...
2) спрятать процесс - перехват ZwQuerySystemInformation...
Все, спрятанный таким образом файл-процесс не будет виден стандартными приемами типа проводника\фара\тотал коммандера\диспетчера задач и даже ProcessExplorer'а от SysInternals... Естесственно, от ProcessHunter'а и прочих руткитов только эти ухищрения не помогут, но при правильной настройке административных прав системы руткиты тоже могут пообломать зубы... smile
Насчет скрытия сетевой активности, к сожалению, не могу ничего сказать, потому что не доводилось интересоваться этой темой, но не думаю, что принцип скрытия там слишком отличается, главное - найти функцию, которая информирует о сетевом соединении и которую можно будет перехватить...
P.S. В общем, я всего лишь хотел сказать, что надо правильно соотнести затраты\цели и решить, стоит ли игра свеч? При борьбе с "типовым пользователем" описанных мной приемов бывает достаточно... smile 


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
shara
Дата 18.10.2008, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



люди, меня интересует перехват создания/чтения/записи файлов в винде (в идеале перехватить момент создание фала чужим приложением, читать информацию которую оно хочет записать в файл а записывать другие, свои данные), я пока читал сей топ увидел про упоминания интересующих меня функций 
Цитата(Riply @  10.10.2008,  06:35 Найти цитируемый пост)
Кроме OpenFile, надо еще перехватывать CreateFile, но это цветочки.

подскажите, что читать  чтобы понимать о чем вы тут толкуете... как это делается и возможно ли вообще такое?

Это сообщение отредактировал(а) shara - 18.10.2008, 01:12


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
Riply
Дата 18.10.2008, 06:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

Репутация: 1
Всего: 32



Цитата(shara @  18.10.2008,  00:59 Найти цитируемый пост)
подскажите, что читать  чтобы понимать о чем вы тут толкуете... как это делается и возможно ли вообще такое?


Мое IMHO, что лучше всего начинать изучать тему перехвата с Рихтера.
Он там все по полочкам раскладывает и примеры есть smile
Ну а когда инструмент будет освоен, то для того чтобы лучше понимать 
что, где и когда надо перехватывать (а может и не надо smile ),  рекомендую
почитать David A. Solomon Mark E. Russinovich "Inside Microsoft for Windows 2000"

PM MAIL   Вверх
shara
Дата 19.10.2008, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



Riply, 
спасибо за совет smile 


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
Goganchic
Дата 20.10.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



shara, штука эта называется filesystem filter driver

Добавлено через 40 секунд
Кстати, я сделал то, что хотел: просто в фильтр-драйвере добавил отказ на некоторые операции для некоторых процессов и усё smile
PM Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0650 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.