Как найти шел на сайте

9 ноября 2011 г.

9 ноября 2011 г.

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

Одной из неприятностей может стать присутствие так называемого шелла (shell – оболочка) на сервере Вашего сайта. Шеллы представляют собой зловредные скрипты, которые каким-то образом оказались на сервере и могут запускаться на исполнение. В этом случае плохой человек может получить некоторые возможности, например, изменение файлов, загрузка собственных скриптов и соответственно возможность их исполнения, отправка спама и прочее, и прочее. Случается это по разным причинам, но как правило вследствие “дырявости” (читай “уязвимости”) CMS или хостинга.

Итак, если у вашего хостинга есть возможность доступа по SSH, то есть способ, который заключается в простом поиске вредоносных скриптов. Запускаем SSH-клиент, например, putty, авторизуемся.

Опишу несколько простых примеров, от которых потом можно отталкиваться.

Поиск текста “eval” во всех файлах с расширением .php с заданной директории:

find /dir/to/find/ -type f -iname "*.php" -exec grep -Him1 'eval' {} ;

Поиск “eval” среди файлов, у которых выставлены права 777

find /dir/to/find/ -perm 2 -type f -iname "*.php" -exec grep -Him1 'eval' {} ;

Простой поиск php-скриптов в заданной папке

find /dir/to/find/ -perm 2 -type f -iname "*.php"

Поиск .php файлов, созданных или измененных за последние 7 дней, мне всегда помогала именно она:

find /dir/to/find/ -type f -iname "*.php" -mtime -7

Далее пробегаемся по списку файлов, смотрим их содержимое и, если найден shell удаляем его.

Не стоит пренебрегать безопасностью своего сайта. Удачи.

Автор: Артур Минимулин ⚫ 9 ноября 2011 г.Тэги: Хостинг, Безопасность

Как найти php backdoor  на сайте? После поиска зловреда на сайте заказчика решил систематизировать свои знания по этому вопросу.

Самый короткий пример позволяющий исполнить произвольный php код удаленно:

eval($_REQUEST[‘phpshell’]);

1. Поискать на сайте “опасные” функции:
а) eval() — исполняем php код
б) passthru(), exec()  и им подобные — испололняем команду ОС
в) fopen(), chmod(), touch(), … — функции для работы с файловой системой
 

Для того чтобы искать, понадобится шелл доступ и некоторые знания *nix комманд. Пример, как найти в текущей директории рекурсивно все *.php файлы содержащие функцию eval()

find ./ name “*.php” print | xargs grep “eval(“

Пример, как найти последние измененные файлы за неделю:

find ./ mtime  7 name “*.php” prune  print

find — великолепная утилита для поиска в никсах, но синтаксис сложно запомнить, для ленивых есть отличный онлайн find помощник .

2. Проверить .htaccess файлы на наличие чего нибудь подозрительного. Например можно засунуть php код в *.html так

RewriteEngine on

RewriteRule ^(.*).html $1.php

Или даже в css и jpg, чтоб никто не догадался!

AddHandler application/xhttpdphp .php .css .jpg

3. Анализируем логи. Если известно примерное время, после которого замечен бэкдор, то можно поискать подозрительное в логах. Хотя на сайте с высокой посещаемостью это будет нелегко.
Пример:

“GET /path/footer.inc.php?act=edit&file=<span style=”backgroundcolor:#ffff00;”>/home/account/public_html/.htaccess</span> HTTP/1.1″

200 4795 “http://website/path/footer.inc.php?act=filemanager” “Mozilla/5.0…”

Многие наивно думают, что не используя самописные скрипты — застрахованы от зловредов. Это не так. Шелл-код нередко встречается и в CMS и форумах. Обычно этим грешат нулленые версии. А иногда и в плагинах.

Ну и наконец полезные ссылки по теме:
Бэкдоры: PhpRemoteView , r57shell
NeoPI скрипт на Питоне для поиска “опасного” кода
Статья на securitylab.ru
 

Как найти шелл на своем сайте.

  • on Янв 12, 2012
  • in
    Безопасность

В свое время экспериментировал с движком DLE, и так как это были эксперименты использовал «null» версию этого движка, ну и как следствие использования неофициальных версий постоянная борьба с шеллами и уязвимостями, которые появлялись не только по недоработке разработчиков, но и с легкой руки нуллеров.

Вот некоторые из моих потугов по этому поводу:
Как сломать сайт на DLE
Уязвимости и взлом сайтов DLE
Как найти шелл(shell) на DLE ?
Взлом Сайтов DLE (критическая уязвимость, дыра) Как защититься от взлома?

Недавно нашел еще один способ Как найти шелл или другие уязвимости на своем сайте (не только на ДЛЕ).  Помогла мне :

Искалка хакерских скриптов на вашем хостинге [update]

(разработчик Григорий, автор блога greg.su)

Маленькая тузла ai-bolit указала на шелл, который я искал около года.

я хотел было скопировать скрипт шелла к себе на комп, ради исследования, но бдительный nod32 так и не дал мне это сделать. он упорно удалял и предупреждал все попытки скопировать файл. каждый раз предупреждая меня что это троянская программа PHP. Rst.ak

Вот что умеет  ai-bolit.php умеет

  • искать ~40 разновидностей шеллов и дамперов
  • определять зараженные index.php/index.html файлы IFRAME вирусами
  • выдавать список директорий, открытых на запись скриптам

Порядок действий:

1. копируем ai-bolit.php в корень сайта

2. запускаем http://site.ru/ai-bolit.php

Результат примерно такой:

(скрин с оф. сайта)

Чаще всего шеллы используют, чтобы незаметно красть трафик или чтобы проставить на сайте ссылки например такие : установка монтаж кондиционеров в москве — для продвижения сайтов или дорвеев. До сих пор ссылочное продвижение является основой seo.

  • Об авторе
  • Недавние публикации

Работаю в интернете с 2008 года над своими и клиентскими проектами.

Работал инженером-теплоэнергетиком, когда понял, что мое призвание интернет. После чего сразу уволился и завел этот блог (блогу уже 12 лет).

Прошел путь заработка в интернете от бонусхантинга до профессионального интернет-маркетолога.

Сейчас работаю исключительно в интернете, занимаюсь арбтражом трафика, путешествую, веду блог.

Мой телеграмм для связи @sergcv

1.) Ищем файлы с завышенными правами доступа,нестандартные для Linux,
скрипты,пытающиеся запуститься от суперпользователя.
sudo find / -perm -u+s -ищем сет юзер айди бит.
Здесь смотрим,чтобы не оказалось помимо знакомых уже сторонних программ.
sudo find / -user root -perm -u+s -Тревогу надо бить ,если на выведенных файлах
также будет стоять u+s
sudo find / -user root -perm + 4000 -вывод в цифровом эквиваленте
+4000 -это и есть юзер бит.

sudo find / -perm -g+s -ищем для групп.
sudo ls -l/usr/bin/ файл -так смотрим права у конкретного файла
Если в консоли он подсвечивается жёлтым цветом-значит,всё нормально.
sudo find / -group root -perm -g+s – ищем группу с завышенными правами.
sudo find / -perm/u+s,g+s – так ищем и группы, и отдельные файлы.

2.) Проверяем теневые пароли
sudo cat /etc/passwd – выводит список пользователей и их пароли
Где указан х -это теневой пароль

sudo /etc/nologin – хорошо,если нет такого файла,если есть-беда
Сами такой создаём только в крайнем случае.Смысл такой:в систему никто,
кроме суперпольз-ля войти не может.Люди работают с сервером,заходит суперюзер-всех выкидывает,
сами потом тоже можем не зайти,будет постоянно запрашиваться пароль.
3.) sudo nmap local host -проверяем запущенные службы.

4.) cd /etc/init.d/,далее ls – проверяем скрипты.
sudo systemtcl disable назв_службы – тормозим скрипт если надо.
Причём это считается “человеческим отключением” вместо команд stop.
5.) sudo netstat -tuna – выведем все открытые порты tcp udp без служб

6.) nmap , проверяем сами себя,какие порты торчат наружу.
7.) sudo lsof -list open files – выводим открытые файлы.
8.) sudo lsof -i – смотрим все открытые соединения,здесь же
увидим какой пользователь использует протокол,описание файла,его права.
Полезно для поиска файлов,занятых конкретным процессом.
Например:sudo lsof -c назв_проги – увидим всё,что она использует.
Какие файлы открыты конкретным пользователем.

9.) sudo lsof -i : номер_порта – увидим,какие демоны и интерфейсы используют этот порт.
10.) Часто требуется и обратный ход в отличии от п.9 -поиск процесса ,который занимает
файл или сокет.Для этого используется утилита fuser,она покажет польз-ля,pid,доступ.
sudo fuser номер_порта /tcp ,например. Покажет процесс с id
ps номер_id -выскочит служба,которая использует этот порт.

11.) Смотрим кто входил/пытался войти в систему.
Windows- смотрим в диспетчере задач
Linux – применяем утилиты w,who,last,lastb,users.
w -когда была загружена,сколько открыто интерфейсов,кто в системе.Здесь же
смотрим jcpu -это время которое использовано всеми процессами.
pcpu – время , использ.конкретным процессом.
w имя_пользователя – так можно смотреть по конкретному польз-лю.
who -b – когда была последняя загрузка системы.
who -qH -все логины с паролями что сейчас в системе.
who -uH -кто вошёл,время,порты.
who -aH – отвечает на вопрос кто,где,когда.
users – проверяем всех пользователей в системе.
last – последние логины , кто и когда входил.
last reboot – когда система перезагружалась
lastb – здесь неудачные попытки входа в систему,пытался подобрать пароль.

12.) cd /var/log ,далее ls – здесь все файлы btmp
13.) cd /var/run – ls – здесь все файлы utmp.

Можно и так,если нет времени копаться в /var/log/syslog
Напишите,если не получится что-либо выяснить , то будем ещё думать.

Итак затронем такую неприятную для любого владельца сайта тему как взлом его детища. Согласитесь, что нет ничего неприятнее, чем если твой ресурс взломали и сделали с ним черт знает что. Трафик упал, яндекс и гугл выкинули из индекса и стало понятно, что творится что-то неладное.

В таком случае нужно задуматься о безопасности Вашего ресурса и Вашего рабочего места или домашнего компьютера. В первую очередь, конечно, нужно подумать, что какие то проблемы есть на вашем ПК. Подумайте об антивирусах и установите наиболее подходящий и надоедливый). Лидирующие позиции на рынке все также занимают Kaspersky, Dr.web и Comodo. У Kaspersky есть полугодовая триальная версия, которая разрабатывалась совместно с Yandex, а Comodo вообще бесплатен для домашнего использования. Хорошо, с этим разобрались — выловили кучку троянов. Также хорошим тоном является работа на компьютере из под пользователя, так как большинство вирусов работают с правами текущего пользователя, зашедшего в систему. Если у пользователя ограниченные права, то вирус банально не сможет исполнить своих задач.

Теперь подумаем о безопасности вашего сайта. Вы определили, что был взлом. Первое, что нужно сделать это проверить файл htaccess на наличие сторонних редиректов. Если таковые присутствую, то можно сразу говорить — поздравляю — Вас взломали.

Обратимся к теории как производится большинство взломов в рунете. В последнее время прошли замечательные времена суперхакеров и взлом сайта производится банальным перебором пароля. Отсюда следующая рекомендация — меняйте пароль на админку на сложный. Рекомендации Microsofta — пароль должен быть не менее 8 символов, содержать большие и маленькие буквы и цифры и желательно еще псевдознаки типа !, ;, $, #.

Сразу смените пароль.

Дальнейшей рекомендацией является обновление плагинов сайта до актуальных версий, ведь ни для кого не секрет, что большинство CMS довольно хорошо защищены, а для взлома доступны именно плагины, которые пишутся энтузиастами, которые частенько пренебрегают безопасностью.

И как завершающий этап — это поиск shell. По существу shell- это та дырка, через которую и залили на сайт либо деструктивные коды, либо файлы другого сайта.  Шеллов написано великое множество, но самым популярным является WSO. Оговорюсь, что как только злоумышленник зальет шелл на сайт, он получает к нему полный доступ, а если вы владелец целого сервера, то доступ ко всему серверу.

Для поиска шеллов существуют несколько утилит три из которых и хотелось бы выложить для общего пользования. Это ai-bolit, shellfinder и varvara.

Shellfinder самый быстрый с минимумом настроек, Varvara можно использовать предварительно, например, скачав WSO, и используя кусок кода, а Ai-bolit имеет свою группу разработки, является довольно массивным при работе, но имеет замечательные рекомендации и результаты. http://www.revisium.com/ai/

Скачать их пачкой можно по ссылке http://yadi.sk/d/Ed1KS_4PBZxSD

Желаю удачной борьбы с вирусами на Ваших сайтах!

Добавить комментарий