четверг, 30 июня 2011 г.

[Site Defender]

Я решил написать скрипт, который объединял в себе некоторые  способы защиты сайта от взлома.

Возможности скрипта:
Поиск шеллов. Осуществляется по кускам кода.

Парсинг логов. Производится на предмет обнаружения атак типа SQL injection, LFI/RFI, XSS, обращения к бэкдорам.  Поиск ведется по кейвордам.

Есть возможность:
1) Снять слепок с файлов в нужной директории
2) Проверить файлы этой директории на изменение/удаление/появление новых по сравнению с состоянием, когда был сделан слепок.
Снять слепок можно, только когда скрипт запущен вручную.
Слепок пишется в бинарном виде в файл md5checksum.db

Два режима работы:
1) Вручную. Для работы вручную необходима авторизация. В этом случае скрипт интерактивный.
2) По крону

Можно отслеживать скрипты, к которым передаются подозрительно большие данные post-запросами. Для этого надо изменить значение параметра $max_postsise в конфиге.

Есть файл base.cfg с базой данных.
Рассмотрим его:
#extensions white list
php, txt, html
"Белый" список расширений. Скрипт будет обрабатывать только файлы с заданными расширениями.
#extensions black list
cpp, c, pl
"Черный" список расширений. Скрипт  будет искать файлы с заданными расширениями.
#code check
function c99_buff_prepare|C99 Shell
...
Куски кода по которым обнаруживаются шеллы. В формате код|название
Далее идут кейворды, по которым обнаруживаются атаки.
(SQL injection, LFI/RFI, XSS, обращения к бэкдорам)

Конфиг скрипта:
##############################
my $mode = 0; #1 - крон, 0 - вручную
my $s_root = '/var/www/xxx'; #директория для сканирования
my $access_log = '/home/daniel/logs/access_6.log'; #путь к файлу с логами
my $output = "/home/daniel/out.txt"; #файл для вывода работы скрипта
my $max_postsise = -1; #максимальный размер пост-данных. -1 - если не отслеживать
#если mode = 1
my $scan_logs = 1; #сканировать логи
my $scan_dir = 0; #искать шеллы
my $md5_mask = 0; #проверять состояние файлов по md5-маске
#если mode = 0
my $password = "6be2fb4b673873cd21cb95197e978abb"; #пароль в md5(md5($pass)) для авторизации
my $write_out = 1; #писать ли лог работы скрипта
##############################

Скачать: site_defender.zip  

3 комментария:

  1. молодец Daniel,я свой башник так и не довел до ума :-)

    ОтветитьУдалить
  2. Konqi, привет !
    оказывается мой блог кто-то читает :)

    ОтветитьУдалить
  3. Mr. Wynn Hotel & Casino, Las Vegas, NV - Dr. Maryland
    Mr. Wynn Hotel & Casino, Las Vegas. 영천 출장마사지 1.5 전라남도 출장샵 mi. 1.5 km. From Las Vegas Boulevard. 용인 출장안마 2.0 mi. 4.1 km. From downtown Las Vegas Boulevard. 서귀포 출장안마 3.5 mi. 청주 출장샵

    ОтветитьУдалить