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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Антивирус на php. (https://forum.antichat.xyz/showthread.php?t=37834)

r0 13.04.2007 00:44

Антивирус на php.
 
Идея.
Скажем, у Вас есть свой проект (пусть тот же хеко-саент) который Вы холите и лелеете.
Но Вам постоянно докучают злобные хэккеры, ужасающе втыкивающие кавычку в адресную строку и пишущие алерт(/лол/) в Ваших комментах.
Да мы не идеальны, допустить одну брешь можно и да наверно, скорее, нужно. Писать без ошибок не получается только у тех, кто не пишет ничего. Ну так вот, допустим писали вы свой проект и допустили такую маленькую ошибочку, а злобный хакер применив свой талант втыкивать в нужное место кавычку и хеккерский прием (инто аутфайл) закатал Вам свой шелл.
А теперь надену галстук и скажу немного серьезнее.
Вчера мне пришла нетрезвая мысль написать «антивирус» для своего блога. Из всего выше изложенного бреда, можно уяснить, что данный скрипт будет искать гадкие веб шеллы.

Приступ к алгоритмизации и последующей реализации.
PHP код:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<title>r0: АнтивирУс f0r pr0j3c7</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
</head>
<body>
<center>
Ant1v1rus


<?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 />";
}
}
?>
</center>
</body> 
</html>

Поясню.
Моя логика была такова: имеется массив с названием папок(он же $dir), из которого затем извлекаются имена файлов, у которым делаем обрезание(по расширению) и если этой php-файл заносив его в новый массив, элементы которого проходят проверку на вшивость из уже имеющегося массива заданных файлов.

P.S Конечно, если хеккер проникает внутрь то он может залить свой шелл как index-файл в любую диру, но это представляет опасность с точки зрения многих искателей приключений, хочется как бы затаиться, поэтому и придумывают имена отличные от index.php =))
ЗУФСУ !

GreenBear 13.04.2007 00:52

вообще от такой фигни пользы практически нет.

KSURi 13.04.2007 00:54

А что мешает хакеру, залившему шелл, добавить его в список разрешенных?
Имхо такую вещь надо реализовывать так: делать скрипт на баше, который раз в Н часов (по крону) проверяет папку на наличие подозрительных файлегов и в случае обнарежения оных отправляет админу письмо.

Примерно, вот так:
Код:

my $dir = '/usr/local/bin/apache/htdocs';
my @files = qw(index.php guestbook.php forum.php);

foreach my $toCheck(<$dir/*.php>)
{
  my $valid = 0;
  foreach my $pattern(@files) { $valid = 1 if $toCheck =~ /$pattern/ }
  sendMail(...) unless $valid;
}


tclover 13.04.2007 00:54

проникнувший на саент хэкка может внедрить злостный код прямо в антивирус и он будет писать чтонибудь матное или работать не так как полагается или просто удалить или он просто ... вот так вот =\

r0 13.04.2007 01:01

2KSURi:
Огасики.. Тогда уж сообщение на сотовый =)
Я не кожу на баше =/

Цитата:

вообще от такой фигни пользы практически нет.
Может и да =) Мне нравиться мыслить

Цитата:

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

KSURi 13.04.2007 01:03

2r0
фишка не в мыле, фишка в том, чтобы хакер не имел доступа к скрипту авира.

r0 13.04.2007 01:05

Ну да, ты прав..

GreenBear 13.04.2007 01:08

еще вариант в зенде его зашифровать.

Abra 13.04.2007 01:13

Я нечто подобное писал, даже где-то сохранилось. Мой скрипт искал новые файлы, и если файл подпадал под критерий опасности посылала мне на мыло информацию.
+ проверял размеры всех существующих файлов с теми же размерами хранящимися в базе. Эта проверка раз в сутки запускалась.
Отдельно можно было запустить проверку контента новых и измененных файлов на предмет наличия "опасных функций".

Вещь на самом деле полезна для тех кто любит устраивать на ФТП своего сайта свалку, так что потом в случае чего хрен поймешь что твое а что чужое.

KSURi 13.04.2007 15:50

Цитата:

Сообщение от GreenBear
еще вариант в зенде его зашифровать.

Zend не спасение, Zend платный... Проще уж стандартными средствами


Время: 07:19