Пишу кейлоггер (программа, собирающая информацию по всем кнопкам, на которые жмёт пользователь ). Программу пользователь будет устанавливать по своему желанию, и, разумеется, будет знать, что это, и как оно работает. Но вот вопрос — не подумают ли антивирусные программы, что моя программа — эта вирус? Ведь, по сути, это довольно троянское поведение.
Я не представляю себе, по какому принципу работают антивирусы, поэтому решил обратиться к хабросообществу.
Как обезопасить свою программу от ложного срабатывания антивирусов?
UPD. Может её нужно где-то засертифицировать? Если это так, то что это за процедура, и затратная ли она?
Универсального способа нет и не будет — у каждого производителя антивирусов свои внутренние процессы — в том числе, и рассмаотрения жалоб на ложное срабатывание. Вообще, когда приложение попадет в базу (а это может произойти случайно), то достаточно быстро может распространиться по базам различных производителей, так как сервисы типа VirusTotal дают возможность производителям получать те семплы, которые ими не были детектированы, но были определены кем-то еще.
Вообще если говорить про серьезные «шпионские» решения (скажем, для корпоративного использования — следить за сотрудниками, например) — там, уверен, все решается централизованными настройками списков исключений
Если это был вопрос, а не претензия, то:
— Разнообразный сбор статистики (скорость печатания итд)
— Слежение за пользователем, во время тестирования каких-либо приложений.
— Процесс обучения: программа подсказывает, как вы можете оптимизировать работу в другой программе
— Ну, и, собственно, слежение за халтурящими работниками. А лучше наоборот: докозательство того, что ты на работе не халтуришь: можно предоставить полный лог своих действий на протяжении рабочего дня.
Взять хотя бы софт от oDesk — их программка следит за тем что делает фрилансер во время работы. Но кроме нажатых клавиш и подсчета количества кликов делает скриншоты иногда.
Ага, зачем платить большую зарплату и нанимать трудолюбивых сотрудников, лучше платить маленькую и контролировать каждое движение. Можно еще супервизора поставить, чтобы он целый день сидел и в мониторы заглядывал. И систему штрафов ввести.
На мой взгляд, лучшим способом обезопасить себя от детектирования антивирусными продуктами будет цифровая подпись исполняемых файлов вашего приложения.
Для приложения вам будет необходимо использовать Code-Signing, подробнее об условиях (а точнее о процедурах которые неоходимо пройти для получения подписи) и ценах можно посмотреть на сайтах центров сертификации, например VeriSign: www.symantec.com/code-signing?inid=vrsn_symc_cs_index (cразу скажу, что VeriSign по цене один из самых дорогих вариантов, привел его исключительно как пример).
Но так как программа предназначается не для коммерческого использования (просто нужна самому, думал выложить куда-нибудь, нехай кому надо качают себе) хотелось бы узнать о менее затратных вариантах… Тобишь, есть ли вообще бесплатный вариант обезопасить себя. Но, как я понимаю, тема сложна и важна, посему — нет, бесплатного варианта не найти.
Подпись вообще ничего не гарантирует, особенно подпись никому неизвестной конторы. К тому же случаи распространения подписанной заразы были зафиксированы.
Зато существенно повышает вероятность того, что детект будет снят после обращения. Ну и еще не надо прописываться в автозапуск, использовать упаковщики, лезть в чужие процессы и т.д.
В принципе, даже в том же Punto Switcher есть встроенный кейлоггер, но в антивирусные базы он не попал. И даже если Ваше приложение некоторые антивирусы начнут считать вредоносным, можно будет сообщить разработчикам о ложном срабатывании.
А вообще, не стоит особо переживать по этому поводу. Те же кейгены и крякеры, к примеру, все без разбора попадают в антивирусные базы, даже если они не совершают вредоносной активности. Главное, чтобы конечные пользователи знали, что приложение безопасно. Конечно, определённый процент чайников слепая вера сообщениям антивируса отпугнёт, но тем не менее…
Скажите, а как вы определяете, когда скачиваете мелкую программку от неизвестного производителя, вирус там, или произошло ложное срабатывание антивируса?
Ну, по целому ряду факторов, большинство из которых субъективны, да и описать я их вот так сходу не могу. Во-первых, происхождение файла играет роль, содержимое ресурсов (у меня есть ряд плагинов для Total Commander, который позволяют быстро продолбить определённые типы инсталляторов и выковыривать из exe-шников ресурсы), ЧТО пишет по поводу файла антивирус (иногда кейгены ловятся только потому, что они — кейгены), и ещё много чего… Для особо подозрительных вещей применяю сэндбоксинг либо запускаю в виртуалке. Возможно, это везение, но с такими несерьёзными мерами предосторожности я за много лет не словил ни одного трояна. Пару раз вирусы пролезали через Осла, но это уже другой вопрос.
> Возможно, это везение, но с такими несерьёзными мерами предосторожности я за много лет не словил ни одного трояна.
Вы их не словили только потому, что вирусы пишутся под другую категорию пользователей. Сам ваш метод проверки ненадежен, и при желании, вирусописатель сможет вас обмануть (плюс. любой приличный вирусописатель умеет отличить песочницу от настоящей ОС).
Ну, я в курсе, что большая часть вирусов распространяется через красивые кнопочки и голые задницы:) По крайней мере, средствами борьбы с уже проникшими вредоносами я тоже хорошо владею. Пожалуй, всё, что не сохраняется в альтернативных потоках NTFS и не прячет себя за непробивными руткитами, мне вычистить руками по силам.
Нужно включить в состав программы документацию, описывающую ее функциональность, а при установке или первом запуске программы отображать пользователю диалоговое окно, в котором он должен согласиться на запись всех нажатых клавиш (а равно на скрытый режим такой записи, если он предусмотрен). Тогда Вы можете быть уверены, что Ваша программа не попадает под определение вредоносной программы из статьи 272 УК РФ, а добросовестные работники активирусных компаний не включат ее сигнатуры в базы. Дополнительно можете подписать программу электронной подписью и включить в состав программы достоверные контактные данные ее автора.
Если инфраструктура предприятия, то есть смысл подписать сертификатом и добавить в доверие антивируса. Если рассылка пользователям — то никак. Только «просить» и «предупреждать».
Представьте, что вы мне прислали программу на тестирование, а во время тестирования мне понадобилось срочно оплатить интернет кредиткой. Вы все записали, сами того не желая. И потом посадили «студентов-фрилансеров» обрабатывать эти данные Сомневаюсь, что ваша инфраструктура, которая принимает данные, соответствует требуемым стандартам безопасности для сохранения потенциально возможного попадания в них гостайны, финансовых сведений и персональных данных.
Для антивируса (по идее) критерием должен быть факт скрытности (или не скрытности) процесса, перехватывающего события. Если вы при установке показываете сообщение, о том, что будет делать эта программа (а тем более, показываете напоминание при входе в систему), то, думаю, в случае проблем с антивирусами нетрудно будет убедить их разработчиков что вы белый и пушистый.