1. ReanimatoR

    ReanimatoR Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    115
    Likes Received:
    118
    Reputations:
    34
    Ищу программу для поиска шеллов(php), если такая есть.
    Если нет, то актуально ли будет её закодить?

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

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    убей себя нах!!!
    google.com

    зы первый нах!
     
  3. sedoy_xxx

    sedoy_xxx Elder - Старейшина

    Joined:
    5 Jul 2006
    Messages:
    244
    Likes Received:
    41
    Reputations:
    -1
    Кто-то ломанул акк кэша )))) to TC действительно гуглом можно нарыть шеллов и такой вопрос уже поднимался. Единственная польза от создания такой тулзы - практика кодинга )))
     
  4. ReanimatoR

    ReanimatoR Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    115
    Likes Received:
    118
    Reputations:
    34
    Бля я имел ввиду поиска шелЛов на своем сайте! например каспер детектит р57 и madnet и на этом его детект шеллов заканчиваеца=)
     
  5. madnet

    madnet Умиротворенный

    Joined:
    9 Dec 2004
    Messages:
    868
    Likes Received:
    343
    Reputations:
    423
    ReanimatoR, гон, мой шел запакованый не детектится каспером.
     
    _________________________
    2 people like this.
  6. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Можно искать файлы с нестандартными названиями - shell.php , 123.php , 45kj45klj345l.php и т.д.
     
    2 people like this.
  7. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,045
    Reputations:
    291
    Бред, но может тс пригодится
    Code:
    <?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
     
    4 people like this.
  8. Bourne

    Bourne New Member

    Joined:
    15 Jan 2008
    Messages:
    1
    Likes Received:
    2
    Reputations:
    0
    Нормальный скрипт с актуальной базой шаблонов для поиска шеллов явно бы не помешал.

    Но пока его нет использую примерно такую shell команду:
    Code:
    find . -name "*.php" -print0 | xargs -0 grep -H -o eval.*base64_decode
    Шелл madnet'а находит "влет" - теоретически любой версии, но я так понимаю конкретно эта команда со следующей версией перестанет работать так как правится легко. Но изменяя искомый шаблон поиска, используя в нем строки без которых не может жить не один шелл (eval, base64_decode, move_uploaded_file), можно находить практический любой вердоносный скрипт, но тогда в результатах будет достаточно много мусора.

    Еще вариант, ищет во всей файловой системе файлы измененные за последнюю неделю содержащую команду расшифровки:
    Code:
    find / -name "*.php" -ctime -7 -print0 | xargs -0 grep -H -o .*base64_decode
     
    #8 Bourne, 12 Mar 2008
    Last edited: 12 Mar 2008
    2 people like this.
  9. ReanimatoR

    ReanimatoR Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    115
    Likes Received:
    118
    Reputations:
    34
    ettee предложил мне следующие:
    ----
    Просмотр даты модификации файлов.
    Фиксированный размер шеллов.
    Просмотр логов через панель управления.
    Листинг строк встречающихся в шелл-ах(find).
    Проверка на наличие появления новых файлов.
    Просмотр выставленных прав на папки и файлы.
    Поиск наиболее часто встречающихся имен для шелл-ов.

    Проверка .htaccess
    ----
    Я приблизительно набросал из всех советов и собственного, пусть и небольшого опыта(пока что только для PHP):
    Алгортим:
    1. Просматриваем размер файла и сравниваем с известными шеллами(например - /showpost.php?p=417222&postcount=3)

    2. Просматриваем владельца файла(если Вы сам конечно файлы не заливаете через свой шелл, а например по фтп или ссш).

    3. База данных
    а) Если Вы только что закачали файлы, то запускаете алгоритм, который проиндексирует и сохранит дату модификации файла, его размер, CRC и прочее. Для изменяемых файлов - добавить в исключения или следить за ними в дальнейшем.
    б) Сверка всех файлов по созданной ранее базе данных Ваших файлов.

    4. Поиск наиболее часто встречающихся имен шеллов(опять же берем имена например из /showpost.php?p=417222&postcount=3

    5. Поиск способом Bourn'a:
    Code:
    find . -name "*.php" -print0 | xargs -0 grep -H -o eval.*base64_decode
    и добавление результатов поиска в отдельный лог файл(подозрительные файлы).

    6. Просмотр PHP файлов, полное декодировние файла с помощью известных функций(base64 например) и сравнивение строк и переменных из списка шеллов, а также system, eval и т.д.


    Что-то еще?

    Осталось дело за малым=) закодить=)
     
    #9 ReanimatoR, 12 Mar 2008
    Last edited: 12 Mar 2008
  10. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Code:
    #!/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
    
    Имхо, наиболее действенный способ
    Code:
    #!/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
    }
    
    Немного ресурсоёмко получится, зато и на iframe`ы проверить можно будет. C использование md5sum
    Code:
    #!/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
    }
    
     
    #10 Ky3bMu4, 12 Mar 2008
    Last edited: 12 Mar 2008
    1 person likes this.
  11. Deem3n®

    Deem3n® RTFMSDN

    Joined:
    19 Sep 2005
    Messages:
    378
    Likes Received:
    153
    Reputations:
    164
    aide
     
    1 person likes this.
  12. ShAnKaR

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    grepом как уже сказали думаю самый правильный способ, а насчет расширение - оно может и jpg быть.
    греп можно тоже конечно обойти например типа того:
    PHP:
    <?php
    $w
    ='as';$q='e';$_=$w.'s'.$q.'r'.'t';$__='b'.$w.$q.(64).'_'.'d'.$q.'c'.'o'.'d'.$q;
    $_($__("cGhwaW"."5mbygpOw=="));
    ?>
    а вобще если свой хостинг то давно придуманы IDS например tripwire - сверяет файлы по базе хранит базу в зашифрованном виде.
     
  13. zer0ska

    zer0ska Elder - Старейшина

    Joined:
    5 Dec 2007
    Messages:
    103
    Likes Received:
    9
    Reputations:
    0
    ИМХО написать скрипт который отслеживает изменения в директориях и проверят чек суммы файлов + база исключений например для файлов логов + проверят содержимае файлов и их расширения напрмер это актуально если шел заливают как джипег на форум

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