Модераторы: 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   Вверх
shara
Дата 9.9.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Goganchic @  20.10.2008,  11:48 Найти цитируемый пост)
filesystem filter driver
 - о как ты был прав. а я по началу полез в сторону перехвата API. жизнь все равно заставила писать фильтр-драйвер

Цитата(Goganchic @  20.10.2008,  11:48 Найти цитируемый пост)
добавил отказ на некоторые операции для некоторых процессов и усё

а на какие именно если не корпоративный секрет?




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


Бывалый
*


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

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



Первый способ.
1)Перезват NtQuerySystemInformation()
            - Список процессов(так как практически все функции используют именно это функции исключения когда функция реализуется ручками      например SoftIce )
            - Kernel Memory - перехват запроса на получения информации о память ядра с целью скрыть свой драйвер

2) Перехват всех возможных получения handle, connection and etc. 

3) Перехват KeStackAttach, ReadProcessMemory, WriteProcessMemory.(для того что бы наши хуки не кто не снял, но снимут же)

Второй способ. 
1)Внедрится в доверенный процесс. Такой winlogon, system, svchoost. Лучше всего поступить по методу вируса.

Третий способ. 
1)Inject library(не достаток заключается к том что челок просто просканирует процессы на .dll и удалит не нужную)

Лучше всего это модификация доверенного exe файла. Хотя без перехвата нативного апи не обойтись, хотя бы не отображать netstat, и потоки.

P.S.
Перехват апи функций это помогает только если на компьютере нет никаких системных утилит. К примеру Wireless у него кажется сетевой драйвер, так что он реально и передается все данный по сети и знает какие процессы и с кем соединение.
--------------------
google.com и это все.
PM MAIL   Вверх
shara
Дата 12.9.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



DrHex, 
это все очень похоже на игру в кошки мышки, ты прячешся стараясь подтянуть все хвосты а кто-то наоборот их вытаскивает. 

общую идею понять не сложно. дальше лишь дело техники..

а как насчет прятанья драйвера? или скажем не прятанья, а его защиты - к примеру, защита от  принудительной выгрузки\остановки  или перемещения куда-нить подальше.    тоже в самом драйвере перехватывать соотв. системные вызововы? тогда, если я правильно все понимаю, наш драйвер может быть выгружен только другим "драйвером" который был загружен раньше? и как следствие вся проблема защиты сводится к тому чтобы пораньше запуститься...  прошу меня поправить если ошибаюсь




--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0619 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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