Сначала загружается "бэкдор" или "троян", что по сути одно и то же, представляет собой небольшой скрипт, позволяющий выполнять команды на зараженном сайте. Он может пролежать без дела не один месяц, но при этом дырка вашего сайта выложена на продажу на каком-нибудь хакерском форуме. Это первый этап заработка. Затем купивший уязвимость вставляет на сайте разного рода ссылки, предназначенные либо для продвижения чего-то в поисковиках (т.е. это черный SEO), либо для отправки ваших посетителей на хакерский (или тоже сломанный) сайт, который так или иначе вымогает деньги через SMS. К сожалению, вовлечённость населения в интернет на фоне компьютерной грамотности позволяет таким пакостным людям делать свой бизнес.
Для нашей компании вопрос безопасности имеет первостепенное значение. Мы изучаем каждую жалобу на взлом, скажу, что за мою практику работы в техподдержке (с 5-й версии), не было подтвержденного взлома через ядро битрикса.
Это не потому что наши программисты пишут идеальный код. Естественно, с опытом код становится надежнее, но программист думает о другом и по-другому. У взломщика деструктивное мышление, в определенной части программы оказываются данные, которые программист не предполагал получить, это приводит к некорректной работе программы.
Все наши дистрибутивы и все обновления тестируются специалистами по безопасности внутри компании перед выпуском. Мы ломаем свой код, уязвимости остаются внутри лаборатории. Но почему бывают взломы снаружи?
[spoiler]
Основные методы взлома сайта
Первая и самая распространенная причина - это виртуальный (разделяемый, шаред) хостинг. Архитектурно он не обеспечивает полную изоляцию клиентов. Взлом одного сайта на хостинге часто ведет к взлому соседних. А зачастую, даже не надо ломать сайт, достаточно зарегистрировать тестовый аккаунт.
Никто не делает регулярный анализ конфигурации, а мониторить и обеспечивать безопасность виртуального хостинга обычно экономически необоснованно.
После одной из жалоб клиента наши специалисты проверили один разделяемый хостинг на безопасность через тестовый аккаунт. Было выявлено сразу две уязвимости, одна из которых позволяла стать администратором на соседних сайтах, другая - получить все пароли к базам данных. Естественно, информация сразу была направлена хостеру, и на сегодня проблемы закрыты. Но ситуация в целом печальна.
Тут мне вспоминается диалог из одного из любимых фильмов:
— И часто бывают такие аварии? — Вы даже не представляете. — А в какой компании вы работаете? — В очень крупной. |
Следующий по распространенности случай - это заражение локального windows-компьютера трояном, который уводит сохраненные ftp пароли и сохраненные пароли браузера.
Немаловажное значение имеет выбор паролей. Удивительно, но очень часто пользователи создают аккаунты: admin/admin, admin/bitrix, admin/123456, admin/111111. При этом выключают капчу для защиты от подбора пароля у группы администраторов.
Разово привлеченные и обиженные недобросовестные программисты могут оставить на сайте трояны.
Меры предосторожности
К сожалению, у пользователя практически нет возможности защититься от уязвимости шаред хостинга. Пожалуй, самое лучшее, что можно сделать - это вовремя забить тревогу чтобы хостер предпринял меры.
Не размещайте на одном аккаунте хостинга коммерческий сайт на битриксе и частную страничку на джумле. Увы, желание сэкономить на хостинге часто приводит к том, что на одном аккаунте живет неизвестно что.
Не ленитесь создавать пароли сложнее, чем стандартные. Добавьте 2-3 специальных символа.
Пользуйтесь
Не привлекайте дешевых программистов на фриланс, экономия может выйти дороже.
Кто ломает сайты?
Среди тех, кто называет себя хакерами очень мало серьезных специалистов, способных самостоятельно что-то сломать. В подавляющем большинстве это так называемые "скрипт-кидди", которые используют готовые инструкции и готовые скрипты, написанные профессионалами. Это подтверждается тем, что все случаи взлома похожи друг на друга словно сделаны по копирке. Такая ситуация с одной стороны объясняет большую популярность темы взлома, с другой - позволяет более менее простыми способами от них защититься.
Заражение вирусом или взлом
Уже не один год популярна тема заражения сайта вирусом. Для пользователя это равносильно взлому, но в действительности абсолютно другое. Принципиальная разница в том, что вирус действует автоматически и изначально живет на вашем локальном компьютере. Он по своему алгоритму делает замены в файлах на сайте используя ваши пароли для входа. Хакер действует более точечно и аккуратно.
Борьба с вирусом сводится к лечению своего компьютера, а потом автоматическим удалением вируса (или восстановлением из бэкапа). С хакером сложнее потому что надо найти точку входа на сайт. Бэкдоров часто бывает несколько, поэтому удалив один можно оставить дырку в другом.
Между тем, точка входа может быть единая: это заражение вашего компьютера. Держите его в чистоте, обновляйте антивирус и не забывайте делать проверки. Microsoft бесплатно предоставляет антивирус для лицензионной версии windows.
Автоматический поиск троянов
Мы не можем выпустить средство, гарантирующее 100% защиту от троянов и сделать его частью продукта потому, что вариантов написать нечто, делающее деструктивные действия, очень много. Но чтобы найти популярные бэкдоры, достаточно знать их характерные признаки.
Предложенный скрипт просканирует весь ваш сайт от корня в поисках подозрительных файлов. Условно обозначен признак, который показался подозрительным скрипту. Далее вы можете посмотреть скрипты и выполнить переименование так чтобы троян стал не опасен.
На моей установке демо сайта редакции "Большой бизнес" нашлись все трояны из папки "sh", куда они были сложены. При этом произошло два ложносрабатывания: подозрительным оказался файл кеша и заенкоженный Zend'ом файл. Я умышленно не стал делать для них исключения т.к. ничего не мешает злодею положить троян в папку кеша, а зенд файлов у нас нет с 9-й версии. Делать исключения - значит увеличивать возможность пропуска трояна.
Поиск зенд файлов можно рассматривать как полезную фишку скрипта.
Что в итоге
Найденный троян поместите в карантин, затем проверьте свой компьютер на вирусы, после чего смените все пароли, напишите хостеру с просьбой проанализировать причину взлома и предоставить логи доступа вашего сайта. С информацией и логами обращайтесь в нашу техподдержку если причину установить не удалось.
Если вы не нашли троян, это не значит, что их нет, но даёт определенную долю уверенности. Специалист, видя скрипт, легко напишет обход для него. Это не панацея. Чем больше узнаю про безопасность в интернете, тем больше убеждаюсь, что в интернете нет ничего абсолютно защищенного. Любая информация может быть получена если усилия и затраты на её получение стоят результата.
Установка
Решение оформлено в виде модуля и бесплатно доступно в marketplace:
Перед началом сканирования обязательно проверьте целостность ядра используя функционал
Фото:
А почему не хотите оборачивать в модуль своим же упаковщиком или после доводки планируете включать в продукт?
Статья действительно отличная, спасибо!
Но в любом случае я планирую сделать модуль после того как соберу некоторый фидбэк.
Спасибо за пожелания!
а вот за скрипт огромное спасибо
по опыту у нас было на одном проекте повторное заражение
после первого сменили все пароли ftp у клиента
после второго - проанализировали логи и оказалось, что был еще один мастер-аккаунт многогодовой давности, о котором даже клиент забыл. Через него то как раз и было произведено заражение.
Самая типичная проблема с которой приходилось сталкаивать в таких случаях - утечка паролей к хостингу
----------------
присоединяюсь ко всем - надо скрипт в модуль или в ядро бы. Хотя бы в модуль.
Сделаю модуль. На счет ядра не обещаю по причинам, описанным выше: решение не гарантирует 100% защиту, а специалист без особого труда напишет обход, видя шаблоны поиска.
Имеет смысл использовать вместе с автоматической проверкой "контролем целостности" на предмет "а не поковырялся ли кто внутри меня самого".
Но если вы не определите для кого вы пишете, т.е. ЦА (целевая аудитория), вы с вероятностью 100% напишите все красиво и правильно, но ... не то.
А определить ЦА Битрикса можно только зафиксированным и отраженным на сайте решением руководства Компании:
- мы пишем эти сборки ЦМС ( и перечисляют) для вот этих....
- а вот эти - для этих...
- мы делаем вот это для вот таких.
Это относится к данному конкретному скрипту? Ко всем моим скриптам? К продуктам 1С-Битрикс? К конкретному продукту 1С-Битрикс? К конкретной версии продукта 1С-Битрикс?
Хотел бы лишь добавить от себя немного:
Эксплуатация уязвимостей Эксплуатация уязвимости – противостоим модулем «Проактивная Защита» 1С-Битрикс
Материалы старые, в блогах разработчиков я на них ссылки публиковал, но вопросы до сих пор актуальные.Алексей, спасибо за ссылки, сам прочитал с интересом. Полезная информация для пользователей.
У меня обратная ситуация: писал исходя из того, что есть в битриксе. На других CMS будет много ложносрабатываний.
=)
Но высоко оценить этот ваш труд и пост может только программист.
И от ответа на эти вопросы на 100% зависит и оценка Вашего труда:
- Если для программиста, то Отличная работа!
- Если для конечного пользователя... То зачем нам еще один сложный и ненадежный костыль? Мало того, что воспользоваться я им не смогу, так еще и не особо хорошо трояны ищет. Ведь после того, как ваши сотрудники проверили мои сайты, я же там еще один троян нашел. Значит, что-то не доработано.
Так что: двойственный результат.
Денис дал очень подробную и простую инструкцию. Даже со скриншотами.
Повторю здесь то, что писал в вашей теме - борьба со злоумышленниками - задача профессионалов, да. Но для использования сайта профессионалом быть не обязательно.
Вы слишком поддаётесь эмоциям, по-моему.
Гораздо эффективнее было бы обратиться в ТП или ко мне вновь.
Поиск троянов - задача профессионала, я дал подспорье профессионалу и помощь продвинутому пользователю, который хочет разобраться сам.
А то что он будет находить не 100% троянов - это не потому что решение не доработано. А потому что технически гарантировать отсутствие бэкдоров можно только визуально просмотрев весь код сайта. И даже в этом случае остаётся шанс, что где-то в коде будет запрятана лазейка.
Тут вопрос вероятности и целесообразности. Подавляющее большинство "хакеров" не способно написать сколько-нибудь серьезный бэкдор, поэтому такой простой скрипт вероятностью, близкой к 100%, поможет вам найти трояны у себя, если они есть. Если вы не занимаетесь профессионально разработкой сайтов, лучше будет передать вопрос специалистам.
Вы на досуге загляните в WebMuney. Там настройки безопасности реализованы очень просто и толково.
При таком же подходе Биртрикс станет намного и дружелюбнее, и безопаснее.
А если вы обсудите не с программистами, а с среднестатистическими пользователями что там должно быть и как включаться-выключаться-настраиваться, то... Пусть себе программисты балуются сложными ингушками, а нам - что-то типа "вкл / выкл" )))
Я с 2008 года использую их, вот и интересно.
Нужно хранить файл ключей и файл кошельков (да ещё на съёмном носителей, если мы говорим о БЕЗОПАСНОМ использовании).
Файл ключей шифруется паролем, который ОТЛИЧАЕТСЯ пароля от WMID (т.е. мне приходится помнить 2 пароля вместо 1)
А уж принудительное включение 2 факторных платежей примерно год назад - вообще цирк! Я еле нашёл в интернете инструкцию, как это отключить - ну не удобно мне каждый платёж подтверждать смс кодом помимо всего выше перечисленного (да ещё комиссию за это платить).
И главное я пока не уловил что из этой схемы может перенять 1С-Битрикс.
Но. Чтобы сделать по-умному Битриксу безопасность для блондинок, надо именно блондинок и спросить как сделать. А они видать, судя по реализации, друг у друга спрашивают )
Я их недавно попросил рассказать о позиционировании самой Битрикс... Не ответили, онемели )))
Но здесь, видать, все же скрипт обсуждают. Так что не стоит видать здесь дискутировать )
Перечитал все, по теме увидел только это. Остальное флуд и пиар.
Но дело не в эмоциях, поверьте )
Оценить эту работу Дениса можно только понимая позиционирование самой ЦМС "Управление сайтом".
Потому я и поднял тему на форуме. Сомневаюсь, что ее серьезно обсудят... Но все же.
Вот вы же знаете: я совсем не программист. И если реальность хоть немного отличается от той же вашей прекрасной инструкции по добавлению функции "Похожая новость", то я - сразу поплыл и без вас у меня ничего бы не вышло )
1. Просто если ЦМС "Управление сайтом".позиционирует себя как ПО для профессионального ПХП программиста или хотя бы юзера с начальной программистской подготовкой, то Денис написал прекрасную инструкцию! 100%!
2. Но если вдруг ЦМС "Управление сайтом".позиционирует себя как ПО для НЕпрограммиста, то тогда эта прекрасная инструкция Дениса должна заканчиваться словами: "Мы понимаем, что изложенный алгоритм может рассматриваться только как временный инструмент. В силу того, что он требует базовой подготовки в программировании. А для конечного пользователя мы дописываем модуль "Безопасность", который существенно упростит и автоматизирует как сами настройки безопасности, так и ее проверку. Выход бета-версии модуля "Безопасность"" с антивирусными возможностями и компонентом проверки на отсутствие бэкдоров руководство Службы поддержки запланировало на 10.01.2013. Подписаться на уведомление о выходе бета-версии - здесь"
Согласитесь, позиционирование - важная вещь.
И учитывая, что мне надо бы в ближайшее время посадить на вменяемую ЦМС, пригодную для работы с ней конечного пользователя 20-30-50 сайтов с минимальными сложностями... То сами понимаете...
Данный скрипт НЕ ДЛЯ ПРОГРАММИСТОВ. Он уже готов для "употребления"
Обращаться в полицию.
А если чуть серьёзнее, то к специалисту по информационной безопасности (который, кстати, совсем не обязан быть программистом).
Яркий пример - я не способен родить хоть сколько-нибудь интересный программный код, однако всякую вредоносную дрянь регулярно помогаю людям найти и уничтожить.
Употреблять данный скрипт должна не девушка контент-менеджер (не надо передёргивать), а человек, готовый работать со списком потенциально опасных файлов.
Битрикс - во много раз дороже Касперского...
Я не против того, что Битрикс не для среднестатистического человека. Я против того, что:
- об этом нигде не написано (что придется взять в штат или на поддержку программиста)
- и что Битрикс, как достаточно дорогая система, до сих пор не обзавелась необходимым ей ПО
- вне создают стандартных решений для среднестатистического человека
а я вот с касперычем побороться не могу.
Даже в том году был у них на тестировании какого-то продукта, там мы смеялись над этим с наблюдателем, который со мной работал.
Денис написал пост в разделе сайта именно для РАЗРАБОТЧИКОВ, этим и вызван тот стиль и форма которыми он пользуется.
Касательно той инструкции, что я вам писал, там есть сочетанией нескольких факторов:
1) особо "прямой" архитектуры вашего сайта
2) ну не умею я хорошо объяснять видимо
3) всё-таки писал я инструкцию "на коленке", лишь бы быстро потребность в ней закрыть. По хорошему конечно надо модуль писать для маркета, но это много работы именно программиста. Но зато тогда любой юзер сможет пользоваться.
Поверьте, если вы сейчас взглянете на любую другую CMS на рынке, то нетиповое действие в ней будет ещё более затруднено, чем здесь. Я знаю о чём говорю - и с жумлой ковырялся в своё время и вот не так давно Юми к себе в офис звали - расхваливали и показывали.
Касательно должен - ты вы ошибаетесь. Вы мне ничего не должны и я не считаю каким-то "благодетелем". Пишите - подумаем что можно сделать с вашим проектом - это будет конструктивнее.
Варианты рук:
- Блондинка.
- Среднестатистический мужчина.
- Джек-потрошитель.
- Инженер с лесотехническим образованием.
Как средне-статистический мужчина с умением максимум поправить слегка хтмл отвечаю: а для меня что-то попроще могли сделать и сделаете? Или... Опять к программистам? А мне потом при взломе скажут, что не Битрикс виноват, а это бэкдор или троян мне программист оставил...
Поэтому я могу комментировать это решение Шаромова Дениса только как представитель определенной категории пользователей.
Но вы-то, в другой группе пользователей. Вот и оценка ваша - другая, отличная!
По ЦМС... Если мне нужно 20 сайтов и я имею такой геморрой с Битриксом, а джумла, УМИ или Друпал - тож не подходят, то вот я и думаю: мож мне проще, дешевле и правильнее свою ЦМС заказать написать, чем 20 раз купить танк, к которому отдельно надо нанять механика, стрелка и... блондинку? А о ведь без них танк не работает! )))
А эмоции... Это когда я понимаю, что у меня теперь есть 7 сайтов, к которым надо еще нанять механика, стрелка и... блондинку! )))
Проще не получается.
Для блондинок да, продукт может быть не самым дружелюбным (имхо), но как только эти блондинки начинают краситься и пользуются продуктом хотя бы год-два они обычно начинают понимать, что эти "сложности" они не просто так возникли и что они реально нужны.
Я просто могу сказать 100%, что даже если вы закажете самопис под себя и для вас инструмент будет удобен, даже если он для блондинок будет удобен, то вот для программистов, которые дорабатывать потом будут это будет сущий ад.
Я уперся сейчас в элементарную вещь:
- Чтобы ничего потом таким скриптом не искать, то как часть действий: надо минимизировать права тех,кто получает доступ.
- Берем блондинку на работу и разрешаем ей тОлько написать и добавить новость, а потом - только эту новость и редактировать.
- Стучим в поддержку и просим подсказать как такой подход реализовать?
- Получаем ссылку
После чего входим в ступор и ругаем как Битрикс так и его поддержку.
Блондинку - увольняем и дрюкаемся своими руками.
Дайте доступ своей блондинке только к 1 инфоблоку и не заморачивайтесь.
А вообще у меня тут идея появилась.
Если вам надо партию безопасных сайтов - давайте подумаем об использовании Bitrix .NET Forge CMS - это тот же 1С-Битрикс, только не на пхп, а на .NET, за счёт чего эксплуатация заметно безопаснее.
Есть и обратная сторона медали - меньше специалистов разработчиков и функционала из коробки.
Но поскольку вам нужны простые сайты (едва ли не визитки) до сих пор - думаю этого более чем достаточно будет.
С обучением блондинок могу помочь - я же с прошлого лета тренер...
8)
Подключили к системе свой скрипт, который висит на кроне и каждый час контролирует изменения файлов, в случае изменений - шлет письмо админу. На него же хотели подвесить и поиск сигнатур.
Так что - скрипт нужный. Но он предназначен для разработчиков, поэтому я не соглашусь с тем, то его нужно выкладывать в маркетплейс: во-первых, не хочется его светить за пределами сообщества разработчиков, во-вторых: это должен быть автономный файл, который будет работать и при убитом ядре, а также - его можно будет переименовать, чтобы злоумышленник не смог быстро его найти, чтобы удалить или модифицировать.
у меня он ругается на это
Такая же проблема, сканер ругается на файл /PHPExcel/Shared/String.php
Не подскажете, в чем с ним проблема?
Срабатывает вот этот код:
еще момент нашел, на некоторых сайтах при запуске скрипта выдаются предупреждения
Notice: Undefined index: action in bitrix/bx_scanner.php on line 12
Notice: Undefined index: action in bitrix/bx_scanner.php on line 20
Notice: Undefined index: action in bitrix/bx_scanner.php on line 36
Notice: Undefined index: file in bitrix/bx_scanner.php on line 39
Notice: Undefined index: go in bitrix/bx_scanner.php on line 72
Вам следует создать обращение в техподдержку предоставив доступ и список файлов.
Еще, я считаю, нужно добавить проверку на такую штуку, как $USER->Authorize()
Злоумышленник может себе backdoor таким образом в каком-нить файле организовать.
Небольшой отчет по работе скрипта bx_scanner.php
На версии "Старт" считает подозрительным, критерий - eval
/bitrix/modules/iblock/classes/mysql/cml2.php
А у первого сайта подозрительным считает
/bitrix/modules/main/start.php
strange include
и вот открыл я этот /bitrix/modules/main/start.php - и действительно, какой то он прям чересчур подозрительный )
Потом пошел проверять по другим сайтам на других аккаунтах. Вполне себе нормальное содержание у start.php
Видимо, где то здесь прячутся проблемы. Пойду тикет в саппорт напишу.
Кстати, по поводу $USER->Authorize() - очень верное замечание!
И еще вопрос - вот скрипт иногда находит в кэше binary data
Мне чисто из любопытства, и вкратце - а как такие большие файлы создаются, кто их делает?
1) Интересно, почему в одном случае сканер его считает подозрительным, а в другом нет.
2) Интересно, почему на одном сайте на "старте" этот файл обфусцирован, а на другом нет.
Приведенный скрипт нашел на сайте лишь 2 подозрительных файла (один из них сам сканнер):
/bitrix/components/bitrix/blog/templates/general_page/description.php long line
/bx_scanner.php strange vars
Дальнейшие действия для меня весьма туманны...
Что посоветуете?
Ошибка
[Ux11] Ошибка описания модуля "subscribe_1".
Не установлено соединение с сервером обновлений. [Ux11] Ошибка описания модуля "subscribe_1".
Проверили, имеем следующую картину:
При переходе по ссылке, получаем следующее сообщение:
- поскольку в рамке "подозрительный код" ничего нет, сообщение малоинформативно и нуждается в пояснениях.
Прилагаю "подозрительный" файл. Не могли бы Вы пояснить, почему Ваш модуль считает его "подозрительным", и что Вы порекомендуете поменять в коде, чтобы исправить?
Моя почта -natalizadonski@mail.ru
Идеально еще бы добавить функцию выгрузки. В какой нибудь табличный формат.
почему в статисту попали подозрительные файлы от 2007 года ?
хотя дистрибутив приобретался в сентябре 2015
И вредоносный код идентичен во всех файлах и от 2007 до 2016
почему в статисту попали подозрительные файлы от 2007 года ?
хотя дистрибутив приобретался в сентябре 2015
И вредоносный код идентичен во всех файлах и от 2007 до 2016
Удалил файл /bitrix/modules/main/classes/general/update_class.php, на который ругался сканер, теперь не видит сервер обновления и т..п.
И есть ли функция восстановить?
с некоторых пор модуль стал ругаться на битриксовые файлы (да? это ведь они?)
волнуемся: и в карантин отправить страшно, и красная табличка покоя не даёт
А update_class.php - файл системы обновлений, добавим отдельную обработку для него. Спасибо.
Я немного накосячил, хочу вернуть переименованные файлы!
Как исправить - [600] strange include
1с-битрникс24
Путь к файлу (конец):
/components/bitrix/crm.button.button/templates/.default/template.php
Короткий путь (начало):
/bitrix/modules/crm/install/
/bitrix/
+ путь к файлу
Полный путь:
/bitrix/modules/crm/install/components/bitrix/crm.button.button/templates/.default/template.php
/bitrix/components/bitrix/crm.button.button/templates/.default/template.php
Тех поддержка
1с-битрикс говорит что "Файлы корректны".
Помогите пожалуйста решить проблему
1с-битрникс24
+ ТП говорит все нормально
но посоветовали написать сюда
говорят может разработчики проверят на локальном сайте со стандартной темы
увидят ошибку
и выпустят обновление
я вот и написал
- указав редакцию сайта