PDA

Просмотр полной версии : 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 и на этом его детект шеллов заканчиваеца=)

madnet
12.03.2008, 16:40
ReanimatoR, гон, мой шел запакованый не детектится каспером.

Ky3bMu4
12.03.2008, 16:49
на своем сайте!

Можно искать файлы с нестандартными названиями - shell.php , 123.php , 45kj45klj345l.php и т.д.

Dimi4
12.03.2008, 17:00
Бред, но может тс пригодится

<?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>Ахтунг! Подозрительный файл &raquo;&raquo; ".$files."</b></font><br />";
}
}
?>

http://ah.flybb.ru/topic43.html

Bourne
12.03.2008, 19:13
Нормальный скрипт с актуальной базой шаблонов для поиска шеллов явно бы не помешал.

Но пока его нет использую примерно такую 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 и т.д.

Что-то еще?

Осталось дело за малым=) закодить=)

Ky3bMu4
12.03.2008, 21:15
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
}

Deem3n®
12.03.2008, 21:30
aide

ShAnKaR
12.03.2008, 21:31
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 - сверяет файлы по базе хранит базу в зашифрованном виде.

zer0ska
20.03.2008, 23:08
ИМХО написать скрипт который отслеживает изменения в директориях и проверят чек суммы файлов + база исключений например для файлов логов + проверят содержимае файлов и их расширения напрмер это актуально если шел заливают как джипег на форум

все это дело в крон и отчет по почте