vtomas: запуск с паролем, и пустая страница, если у кого есть предыдущая версия киньте в личку, срочно надо сканернуть один сайт.
P.S. ЗАРАБОТАЛО, видать браузер глюкнул!
Отлично. Если будут проблемы - пишите в личку, я посмотрю оперативненько.
Опасное что-то?))
Кстати он так на все ДЛЕ сайты ругается) У них этот файл по умолчанию в движке.
Ну, вообще, с помощью него можно легко слить всю базу и утащить себе. Я на всякий случай добавил в сигнатуры. Лучше подстраховаться, потому что некоторые заливают его отдельно, чтобы воровать БД.
suraev: $strings = array("Web Shell by boff", "Web Shell by oRb", "devilzShell", "Shell by Mawar_Hitam", "N3tshell", "Storm7Shell", "Locus7Shell", "private Shell by m4rco", "w4ck1ng shell", "FaTaLisTiCz_Fx Fx29Sh", "r57shell.php", "default_action = 'FilesMan'");
Добавил в базу.
suraev:
Вот ещё идейка: довольно часто, если на аккаунте много сайтов, дополнительные домены лежат не в отдельных корневых папках, а находятся как внутренние папки в папке основного домена. Когда таких дополнительных сайтов много, у скрипта нет шансов отработать - слишком много файлов. В итоге я могу по отдельности проверить папки дополнительных доменов, но не могу проверить папку основного домена. Нужна настройка, чтобы можно было игнорировать папки, являющиеся доменными именами (например, игнорировать папки первого уровня, содержащие в названии точку).
Проблема с недостаточным временем на отработку скрипта решается очень просто - нужно запустить его из командной строки. Я уже про это писал. Не вижу особого смысла реализовывать сложный механизм отсеивания директорий, сканирования по частям, перезапуск на ajax и пр. Все это очень сложно и особой выгоды не дает. Запускаем из под SSH и все (я ранее уже писал про это).
---------- Добавлено 10.04.2012 в 18:07 ----------
bork75: gregzem, спасибо большое! Очень шустро работает. Добавил бы кошельки на странице для желающих поддержать скрипт или в будущем планируется платная версия? ))
Платную не планирую. А на счет "отблагодарить" - вот страничку пожертвований сделал. Милости прошу: http://revisium.com/ai/others.php
bork75: Есть отличная идея для скрипта. После запуска скрипт выдал мне список файлов с возможным размещением шеллов и я руками сравнивал эти файлы с оригиналами. Почему бы не добавить папку с файлами для сравнения.
Идея хорошая и понятная. Спасибо. Хотя реализовывать ее, дюже гемморно, да и пользоваться ей будет мало пользователей. Я ее записал (вообще я все пожелания записываю) и, возможно, когда-нибудь сделаю.
---------- Добавлено 10.04.2012 в 18:12 ----------
WebGomel: Профессионалы может и обфусцируют по несколько раз, но на практике это редко встречается. Обычно на сайтах они лежат стандартные. А с сигнатурами поможем :). Я сейчас на всех сайтах, которые чищу, "гоняю" и ваш скрипт. Если попадутся шеллы, которые он не увидит - примеры естественно буду.
Да, просьба к пользователям. Если у вас появляется в списке подозрительных (но не шеллов) скрипт, и у вас есть чувство (или вы уверены), что это шелл или дорвей, пожалуйста, скиньте мне на мыло. Я добавлю сигнатуру. Спасибо.
Присылать это чудо нужно, естественно, в .zip архиве с паролем. У меня злой антивирус ))
WebGomel: Тестировал сегодня этот скрипт на взломанной джумле, причём судя по количеству шеллов, их разновидности, и дате загрузки, взломанной не один раз - айболит показал себя на твёрдую четвёрку с плюсом :) gregzem спасибо.
Четвёрка, потому что не нашёл он FilesMan. Точнее, он его определил как потенциально опасный, но вот шеллом не назвал. Однако его же, но немного в другом исполнении нашёл. ...
Спасибо за комментарии. Нужно понимать, что все возможные варианты и сигнатуры собрать физически нереально. Любой шелл можно обфусцировать бесконечное кол-во раз. Уверен, кто профессионально ломают сайты, как раз так и делают - шифруют для каждого нового сайта новым способом. И найти такой обфусцированный вариант можно единственным способом - с помощью эвристики. Я анализирую base64 кодированные последовательности и стандартные функции, типа eval(), base64_decode(), gzipinflate().
Естественно, нельзя 100% гарантировать, что эти функции не встретятся в CMS или других скриптах, поэтому скрипт при обнаружении не кричит про шеллы, а уравновешенно предупреждает о том, что в файле подозрительный код. А уже ответственность админа сайта сходить и проверить, что там. В большинстве случаев там действительно оказывается какая-нибудь "нечисть".
---------- Добавлено 10.04.2012 в 06:38 ----------
TF-Studio: Товарищ, а можно сделать как-то по-другому? Так чтобы можно его было запускать по крону и сохранять где-то результаты (или на почту). Цены бы не было тогда )
Товарищ, ага :)
По-другом сделать можно, причем мое участие здесь не нужно. Я писал об этом уже выше:
/usr/bin/php ai-bolit.php > result.html ^^^^^ путь до вашего интерпретатора, где там у вас он установлен
Запускать можно раз в сутки по крону - будет сваливать в файл result.html (пути там правильные указать и все будет хорошо).
В кроне можно настроить, чтобы он результат отработки скрипта присылал на почту. Будет вам как раз отчет на мыло.
---------- Добавлено 10.04.2012 в 06:40 ----------
kismedia: Очень полезный скрипт. ... Единственная проблема - последняя версия выдает ошибку: Скрипт не вернул результата в требуемое время. Возможно хост, к которому обращается скрипт не отвечает Это можно исправить или у меня на хосте прописыватиь лимит на выполнение сценария.
Или ставьте лимит на время выполнения скрипта минут 20 (на время запуска ai-bolit.php), или
(так предпочтительнее) запускайте из командной строки через ssh.
---------- Добавлено 10.04.2012 в 06:41 ----------
neonlabs: Аналогичная ошибка выскакивает. Версия PHP 5.2.6-1+lenny13
Я добавил проверку на "scandir" в новую версию скрипта. Если функции нет - работать не будет. В перспективе, наверное, переделаю на обычные opedir, readdir. Может кто знает, почему функции scandir на некоторых хостингах нет?
Jaf4: Очень ждем..
Вопрос такой, как правильно поставить его на дедик так, чтобы просмотрел всю папку www (сайтов около 70-ти)?
Надо положить на уровень выше www, зайти по ssh, запустить его из командной строки
php ai-bolit.php > result.html
и посмотреть что получится.
---------- Добавлено 09.04.2012 в 14:27 ----------
pwd: Я обычно пользовался шельником find + grep + mail по крону, преимуществ в реализации http не вижу.
Тем не менее большой респект за сигнатуры ! где вы их насобирали
По сусекам поскреб ) У меня много клиентских сайтов оказывается с шеллами были. Оттуда много навыгребал.
Да добрые люди помогли, подогнали несколько новых буквально на прошлой неделе.
pwd:
да еще, я при помощи find выбирал файлы за время прошедшее с последней проверки , т.е. файлов проверяется значительно меньше, предлагаю предусмотреть вариант инкрементальной и полной проверки.
Это все здорово, но конкретно этот скрипт проектировался как маленький и удаленький, самодостаточный и не требующий никакого хранилища. Конечно, можно реализовать и инкрементальную проверку (с сохранением предыдущих результатов) и отправку на email, и запуск по cron'у. Наверное, я все это сделаю, но чуть позже, и это будет отдельный скрипт.
---------- Добавлено 09.04.2012 в 15:11 ----------
Хортица: Может и я криво смотрел, но вот часть из того что не увидел у Вас: http://rghost.ru/37490877 По поводу типизации, вот картинка - http://rghost.ru/37490941 - откройте ее в текстовом редакторе точнее с помощью текстового редактора и посмотрите. О дальнейших действиях в целях безопасности рассказывать не буду, но тот кто понимает что с этим можно сделать, тот сделает и без меня.
Так вот собственно вопрос был в том - какие расширения файлов проверяет ваш скрипт? Опять же не увидел этого.
Про типизацию: по-умолчанию сканируются только .php*/.tpl/.inc/.htm*. Но если в скрипте поставить константу define('SCAN_ALL_FILES', 0); - будут анализироваться все файлы (включая картинок). Ваш .jpg файл тоже найдется.
запуск с паролем, и пустая страница, если у кого есть предыдущая версия киньте в личку, срочно надо сканернуть один сайт.
P.S. ЗАРАБОТАЛО, видать браузер глюкнул!
Отлично. Если будут проблемы - пишите в личку, я посмотрю оперативненько.
Пустая страница или страница с сообщением, что надо указать пароль?
Теперь запускать нужно так:
http://ва_сайт_с_путем/ai-bolit.php?p=пароль (пароль прописан в начале скрипта рядом с PASS)
Можете в логе посмотреть, есть ли какие-то ошибки? Я на своих трех хостингах проверил, ошибок нет.
Выложил новую версию:
Изменения в версии 20120412
- добавлена сигнатура спам-скрипта
- вместе с файлами отображается дата и время создание файла
- файлы .js добавлен к списку сканируемых обязательно
- добавлена эвристика для анализа троянов в javascript
- добавлена проверка кол-ва директорий дорвеев
- запуск с паролем из браузера и без пароля из командной строки
http://revisium.com/ai/
Опасное что-то?))
Кстати он так на все ДЛЕ сайты ругается) У них этот файл по умолчанию в движке.
Ну, вообще, с помощью него можно легко слить всю базу и утащить себе. Я на всякий случай добавил в сигнатуры. Лучше подстраховаться, потому что некоторые заливают его отдельно, чтобы воровать БД.
Вот, что нашёл сегодня на своём заражённом сервере.
Айболит не нашёл
http://rghost.ru/37516707
Проверил последней версией (та, что на сайте) - все определил как шеллы. Попробуйте ей.
$strings = array("Web Shell by boff", "Web Shell by oRb", "devilzShell", "Shell by Mawar_Hitam", "N3tshell", "Storm7Shell", "Locus7Shell", "private Shell by m4rco", "w4ck1ng shell", "FaTaLisTiCz_Fx Fx29Sh", "r57shell.php", "default_action = 'FilesMan'");
Добавил в базу.
Вот ещё идейка: довольно часто, если на аккаунте много сайтов, дополнительные домены лежат не в отдельных корневых папках, а находятся как внутренние папки в папке основного домена. Когда таких дополнительных сайтов много, у скрипта нет шансов отработать - слишком много файлов. В итоге я могу по отдельности проверить папки дополнительных доменов, но не могу проверить папку основного домена. Нужна настройка, чтобы можно было игнорировать папки, являющиеся доменными именами (например, игнорировать папки первого уровня, содержащие в названии точку).
Проблема с недостаточным временем на отработку скрипта решается очень просто - нужно запустить его из командной строки. Я уже про это писал. Не вижу особого смысла реализовывать сложный механизм отсеивания директорий, сканирования по частям, перезапуск на ajax и пр. Все это очень сложно и особой выгоды не дает. Запускаем из под SSH и все (я ранее уже писал про это).
---------- Добавлено 10.04.2012 в 18:07 ----------
gregzem, спасибо большое!
Очень шустро работает.
Добавил бы кошельки на странице для желающих поддержать скрипт или в будущем планируется платная версия? ))
Платную не планирую. А на счет "отблагодарить" - вот страничку пожертвований сделал. Милости прошу: http://revisium.com/ai/others.php
Есть отличная идея для скрипта.
После запуска скрипт выдал мне список файлов с возможным размещением шеллов и я руками сравнивал эти файлы с оригиналами.
Почему бы не добавить папку с файлами для сравнения.
Идея хорошая и понятная. Спасибо. Хотя реализовывать ее, дюже гемморно, да и пользоваться ей будет мало пользователей. Я ее записал (вообще я все пожелания записываю) и, возможно, когда-нибудь сделаю.
---------- Добавлено 10.04.2012 в 18:12 ----------
Профессионалы может и обфусцируют по несколько раз, но на практике это редко встречается. Обычно на сайтах они лежат стандартные.
А с сигнатурами поможем :). Я сейчас на всех сайтах, которые чищу, "гоняю" и ваш скрипт. Если попадутся шеллы, которые он не увидит - примеры естественно буду.
Да, просьба к пользователям. Если у вас появляется в списке подозрительных (но не шеллов) скрипт, и у вас есть чувство (или вы уверены), что это шелл или дорвей, пожалуйста, скиньте мне на мыло. Я добавлю сигнатуру. Спасибо.
Присылать это чудо нужно, естественно, в .zip архиве с паролем. У меня злой антивирус ))
Однозначно полезный и нужный скрипт, добавил в избранное. Спасибо автору! :)
Обновления не забывайте скачивать. Сейчас бывает, что по два раза на дню выходят.
---------- Добавлено 10.04.2012 в 08:31 ----------
504 Gateway Time-out
на старой версии айболита не было
На старой версии проверялось в несколько раз меньше файлов. Запускайте из командной строки или увеличьте timeout в php.ini.
Тестировал сегодня этот скрипт на взломанной джумле, причём судя по количеству шеллов, их разновидности, и дате загрузки, взломанной не один раз - айболит показал себя на твёрдую четвёрку с плюсом :) gregzem спасибо.
Четвёрка, потому что не нашёл он FilesMan. Точнее, он его определил как потенциально опасный, но вот шеллом не назвал. Однако его же, но немного в другом исполнении нашёл.
...
Спасибо за комментарии. Нужно понимать, что все возможные варианты и сигнатуры собрать физически нереально. Любой шелл можно обфусцировать бесконечное кол-во раз. Уверен, кто профессионально ломают сайты, как раз так и делают - шифруют для каждого нового сайта новым способом. И найти такой обфусцированный вариант можно единственным способом - с помощью эвристики. Я анализирую base64 кодированные последовательности и стандартные функции, типа eval(), base64_decode(), gzipinflate().
Естественно, нельзя 100% гарантировать, что эти функции не встретятся в CMS или других скриптах, поэтому скрипт при обнаружении не кричит про шеллы, а уравновешенно предупреждает о том, что в файле подозрительный код. А уже ответственность админа сайта сходить и проверить, что там. В большинстве случаев там действительно оказывается какая-нибудь "нечисть".
---------- Добавлено 10.04.2012 в 06:38 ----------
Товарищ, а можно сделать как-то по-другому?
Так чтобы можно его было запускать по крону и сохранять где-то результаты (или на почту).
Цены бы не было тогда )
Товарищ, ага :)
По-другом сделать можно, причем мое участие здесь не нужно. Я писал об этом уже выше:
Запускать можно раз в сутки по крону - будет сваливать в файл result.html (пути там правильные указать и все будет хорошо).
В кроне можно настроить, чтобы он результат отработки скрипта присылал на почту. Будет вам как раз отчет на мыло.
---------- Добавлено 10.04.2012 в 06:40 ----------
Очень полезный скрипт.
...
Единственная проблема - последняя версия выдает ошибку:
Скрипт не вернул результата в требуемое время.
Возможно хост, к которому обращается скрипт не отвечает
Это можно исправить или у меня на хосте прописыватиь лимит на выполнение сценария.
Или ставьте лимит на время выполнения скрипта минут 20 (на время запуска ai-bolit.php), или
(так предпочтительнее) запускайте из командной строки через ssh.
---------- Добавлено 10.04.2012 в 06:41 ----------
Аналогичная ошибка выскакивает.
Версия PHP 5.2.6-1+lenny13
Я добавил проверку на "scandir" в новую версию скрипта. Если функции нет - работать не будет. В перспективе, наверное, переделаю на обычные opedir, readdir. Может кто знает, почему функции scandir на некоторых хостингах нет?
Очень ждем..
Вопрос такой, как правильно поставить его на дедик так, чтобы просмотрел всю папку www (сайтов около 70-ти)?
Надо положить на уровень выше www, зайти по ssh, запустить его из командной строки
и посмотреть что получится.
---------- Добавлено 09.04.2012 в 14:27 ----------
Я обычно пользовался шельником find + grep + mail по крону, преимуществ в реализации http не вижу.
Тем не менее большой респект за сигнатуры ! где вы их насобирали
По сусекам поскреб ) У меня много клиентских сайтов оказывается с шеллами были. Оттуда много навыгребал.
Да добрые люди помогли, подогнали несколько новых буквально на прошлой неделе.
да еще, я при помощи find выбирал файлы за время прошедшее с последней проверки , т.е. файлов проверяется значительно меньше, предлагаю предусмотреть вариант инкрементальной и полной проверки.
Это все здорово, но конкретно этот скрипт проектировался как маленький и удаленький, самодостаточный и не требующий никакого хранилища. Конечно, можно реализовать и инкрементальную проверку (с сохранением предыдущих результатов) и отправку на email, и запуск по cron'у. Наверное, я все это сделаю, но чуть позже, и это будет отдельный скрипт.
---------- Добавлено 09.04.2012 в 15:11 ----------
Может и я криво смотрел, но вот часть из того что не увидел у Вас: http://rghost.ru/37490877
По поводу типизации, вот картинка - http://rghost.ru/37490941 - откройте ее в текстовом редакторе точнее с помощью текстового редактора и посмотрите. О дальнейших действиях в целях безопасности рассказывать не буду, но тот кто понимает что с этим можно сделать, тот сделает и без меня.
Так вот собственно вопрос был в том - какие расширения файлов проверяет ваш скрипт? Опять же не увидел этого.
Спасибо за архивчик. Добавил сигнатуры, обновил архив со скриптом http://revisium.com/ai/.
Про типизацию: по-умолчанию сканируются только .php*/.tpl/.inc/.htm*. Но если в скрипте поставить константу define('SCAN_ALL_FILES', 0); - будут анализироваться все файлы (включая картинок). Ваш .jpg файл тоже найдется.
Права поставил, теперь открывается белая страница :(
Что-то, видимо, не то поменяли. Я смогу помочь, если будет FTP доступ.
---------- Добавлено 09.04.2012 в 12:23 ----------
gregzem, Было бы не плохо, в случае появления на сайте подозрительного файла, на почту админа приходило письмо-уведомление.
В перспективе так и планировалось. Но это уже другого класса скрипт. Чуть серьезнее )