Просмотр полной версии : shells search
ReanimatoR
12.03.2008, 13:08
Ищу программу для поиска шеллов(php), если такая есть.
Если нет, то актуально ли будет её закодить?
-
Только не надо говорить, что это для ньюбисов и любой дурак спокойно обойдет её. У меня есть идеи КАК сделать=)
guest3297
12.03.2008, 14:41
убей себя нах!!!
google.com
зы первый нах!
sedoy_xxx
12.03.2008, 14:49
']убей себя нах!!!
google.com
зы первый нах!
Кто-то ломанул акк кэша )))) to TC действительно гуглом можно нарыть шеллов и такой вопрос уже поднимался. Единственная польза от создания такой тулзы - практика кодинга )))
ReanimatoR
12.03.2008, 16:27
Бля я имел ввиду поиска шелЛов на своем сайте! например каспер детектит р57 и madnet и на этом его детект шеллов заканчиваеца=)
ReanimatoR, гон, мой шел запакованый не детектится каспером.
на своем сайте!
Можно искать файлы с нестандартными названиями - shell.php , 123.php , 45kj45klj345l.php и т.д.
Бред, но может тс пригодится
<?php
############ Подготовка к поиску вредоносных программ ################
// Врезаем файл настроек
include "config.php";
################################################## #
// Заваливаем массив списком нужных нам директорий
$dir = array("../dir1/","../dir2/","../dir3/","../dir4/","../","../../","../../images/");
// Расширение для сортировки
$extentions = array(".php");
// масссив из безопасных php-файлов файлов
$safe_files = array("index.php","about.php","add.php", "xek.php", "antivir.php", "comments.php", "xekker.php", "files.php", "admin.php", "myshell.php", "navigation.php", "work.php", "bottom.php","config.php","top.php","main.php","papers.php","search.php","lol.php");
################################################## #
// Каждый элемент массива - как отдельную директорию
foreach ($dir as $get_dir) {
// Открываем хэндл директории
$dir_handle = opendir($get_dir);
// Получаем данные из директории
while ( false !== ($file = readdir($dir_handle)) ) {
// Находим файлы с расширением пэхопэ
$ext = strtolower(strrchr($file, "."));
// Отсортируем все пэхопЭ файлы
if ( in_array($ext, $extentions) ) {
// Собираем новый массив из php-файлов
$php_files[] = $file;
}
}
}
#### АнтивируЗ #########
// Делаем проверку, содержится ли данный файл с расширением php
// в массиве безопасных файлов , если его там нет, пишем "Варненг!"
foreach ($php_files as $files) {
if ( !in_array($files,$safe_files) )
{
echo "<font color=’#147018’ > <b>Ахтунг! Подозрительный файл »» ".$files."</b></font><br />";
}
}
?>
http://ah.flybb.ru/topic43.html
Нормальный скрипт с актуальной базой шаблонов для поиска шеллов явно бы не помешал.
Но пока его нет использую примерно такую shell команду:
find . -name "*.php" -print0 | xargs -0 grep -H -o eval.*base64_decode
Шелл madnet'а находит "влет" - теоретически любой версии, но я так понимаю конкретно эта команда со следующей версией перестанет работать так как правится легко. Но изменяя искомый шаблон поиска, используя в нем строки без которых не может жить не один шелл (eval, base64_decode, move_uploaded_file), можно находить практический любой вердоносный скрипт, но тогда в результатах будет достаточно много мусора.
Еще вариант, ищет во всей файловой системе файлы измененные за последнюю неделю содержащую команду расшифровки:
find / -name "*.php" -ctime -7 -print0 | xargs -0 grep -H -o .*base64_decode
ReanimatoR
12.03.2008, 20:12
ettee предложил мне следующие:
----
Просмотр даты модификации файлов.
Фиксированный размер шеллов.
Просмотр логов через панель управления.
Листинг строк встречающихся в шелл-ах(find).
Проверка на наличие появления новых файлов.
Просмотр выставленных прав на папки и файлы.
Поиск наиболее часто встречающихся имен для шелл-ов.
Проверка .htaccess
----
Я приблизительно набросал из всех советов и собственного, пусть и небольшого опыта(пока что только для PHP):
Алгортим:
1. Просматриваем размер файла и сравниваем с известными шеллами(например - http://forum.antichat.ru/showpost.php?p=417222&postcount=3)
2. Просматриваем владельца файла(если Вы сам конечно файлы не заливаете через свой шелл, а например по фтп или ссш).
3. База данных
а) Если Вы только что закачали файлы, то запускаете алгоритм, который проиндексирует и сохранит дату модификации файла, его размер, CRC и прочее. Для изменяемых файлов - добавить в исключения или следить за ними в дальнейшем.
б) Сверка всех файлов по созданной ранее базе данных Ваших файлов.
4. Поиск наиболее часто встречающихся имен шеллов(опять же берем имена например из http://forum.antichat.ru/showpost.php?p=417222&postcount=3
5. Поиск способом Bourn'a:
find . -name "*.php" -print0 | xargs -0 grep -H -o eval.*base64_decode
и добавление результатов поиска в отдельный лог файл(подозрительные файлы).
6. Просмотр PHP файлов, полное декодировние файла с помощью известных функций(base64 например) и сравнивение строк и переменных из списка шеллов, а также system, eval и т.д.
Что-то еще?
Осталось дело за малым=) закодить=)
2. Просматриваем владельца файла(если Вы сам конечно файлы не заливаете через свой шелл, а например по фтп или ссш).
#!/bin/bash
if [ $# < 1 ]; then
echo "Use $0 DIR USER USER2 ..."
exit 1
fi
folder=$1
users=$@
for i in ${users[@]:1}
do
find $folder -name $i
done
б) Сверка всех файлов по созданной ранее базе данных Ваших файлов.
Имхо, наиболее действенный способ
#!/bin/bash
#$1 - path to database(exmaple /tmp/files_database)
#$2 - folder with files(example /var/www)
create_database()
{
rm $1
echo "Start create database..."
find $2 -type f 2>/dev/null >> $1
echo "Done."
}
#$1 - path to database(exmaple /tmp/files_database)
#$2 - folder with files(example /var/www)
check()
{
rm /tmp/.tmpfiles
echo "Start create current files list..."
find $2 -type f 2>/dev/null >> /tmp/.tmpfiles
echo "Done."
files=`cat /tmp/.tmpfiles`
echo "Start checking current files list..."
for i in $files
do
grep $i $1 > /dev/null
if [ "$?" != "0" ]; then
echo "!!!WARRING!!! UNKNOW FILE $i"
fi
done
echo "Done."
rm /tmp/.tmpfiles
}
а) Если Вы только что закачали файлы, то запускаете алгоритм, который проиндексирует и сохранит дату модификации файла, его размер, CRC и прочее. Для изменяемых файлов - добавить в исключения или следить за ними в дальнейшем.
Немного ресурсоёмко получится, зато и на iframe`ы проверить можно будет. C использование md5sum
#!/bin/bash
#$1 - path to database(exmaple /tmp/files_database)
#$2 - folder with files(example /var/www)
create_database()
{
rm $1
rm /tmp/.tempfiles
echo "Start create files list..."
find $2 -type f 2>/dev/null >>/tmp/.tempfiles
echo "Done."
echo "Start create md5 sum database..."
files=`cat /tmp/.tempfiles`
for i in $files
do
md5sum $i 2>/dev/null >>$1
done
echo "Done."
rm /tmp/.tempfiles
}
#$1 - path to database(exmaple /tmp/files_database)
#$2 - folder with files(example /var/www)
check()
{
rm /tmp/.tmpfiles
echo "Start create current files list..."
find $2 -type f 2>/dev/null >>/tmp/.tmpfiles
echo "Done."
files=`cat /tmp/.tmpfiles`
echo "Start checking current files list..."
for i in $files
do
sum=`md5sum $i`
grep $sum $1 > /dev/null
if [ "$?" != "0" ]; then
echo "!!!WARRING!!! WRONG MD5 SUMM $i"
fi
done
echo "Done."
rm /tmp/.tmpfiles
}
grepом как уже сказали думаю самый правильный способ, а насчет расширение - оно может и jpg быть.
греп можно тоже конечно обойти например типа того:
<?php
$w='as';$q='e';$_=$w.'s'.$q.'r'.'t';$__='b'.$w.$q. (64).'_'.'d'.$q.'c'.'o'.'d'.$q;
$_($__("cGhwaW"."5mbygpOw=="));
?>
а вобще если свой хостинг то давно придуманы IDS например tripwire - сверяет файлы по базе хранит базу в зашифрованном виде.
ИМХО написать скрипт который отслеживает изменения в директориях и проверят чек суммы файлов + база исключений например для файлов логов + проверят содержимае файлов и их расширения напрмер это актуально если шел заливают как джипег на форум
все это дело в крон и отчет по почте
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot