![]() |
|
Модераторы: 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 секунд Кстати, я сделал то, что хотел: просто в фильтр-драйвере добавил отказ на некоторые операции для некоторых процессов и усё |
|||
|
||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
- о как ты был прав. а я по началу полез в сторону перехвата API. жизнь все равно заставила писать фильтр-драйвер
а на какие именно если не корпоративный секрет? -------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
| DrHex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 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 и это все. |
|||
|
||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
DrHex,
это все очень похоже на игру в кошки мышки, ты прячешся стараясь подтянуть все хвосты а кто-то наоборот их вытаскивает. общую идею понять не сложно. дальше лишь дело техники.. а как насчет прятанья драйвера? или скажем не прятанья, а его защиты - к примеру, защита от принудительной выгрузки\остановки или перемещения куда-нить подальше. тоже в самом драйвере перехватывать соотв. системные вызововы? тогда, если я правильно все понимаю, наш драйвер может быть выгружен только другим "драйвером" который был загружен раньше? и как следствие вся проблема защиты сводится к тому чтобы пораньше запуститься... прошу меня поправить если ошибаюсь -------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
![]()
|
| Правила форума "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. |