Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Soft - *nix (https://forum.antichat.xyz/forumdisplay.php?f=48)
-   -   shells search (https://forum.antichat.xyz/showthread.php?t=64079)

ReanimatoR 12.03.2008 13:08

shells search
 
Ищу программу для поиска шеллов(php), если такая есть.
Если нет, то актуально ли будет её закодить?

-
Только не надо говорить, что это для ньюбисов и любой дурак спокойно обойдет её. У меня есть идеи КАК сделать=)

guest3297 12.03.2008 14:41

убей себя нах!!!
google.com

зы первый нах!

sedoy_xxx 12.03.2008 14:49

Цитата:

Сообщение от [ cash ]
убей себя нах!!!
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
}



Время: 20:04