Проверка Ваших скриптов/сайтов на уязвимости.

Статус
В этой теме нельзя размещать новые ответы.

tostrss

Мой дом здесь!
Регистрация
16 Окт 2007
Сообщения
768
Реакции
219
eval code мы распаковываем, пока до 1000 сжатий поддерживается, разные алгоритмы сжатия также распознаются

Ну распаковка это фигня, eval(...); - это самое палевная конструкция для скрытия кода. Просто есть еще много способов, как скрыть свой код.

Например, как вы решили проблему подключения файлов? Например если я по всему движку на разобью посимвольно код

PHP:
<?php
echo('<pre>');
@system($_GET['a']);
echo('</pre>');
?>

Я разделю посимвольно, засуну в разные файлы, за счет инклудов все будет это складыватся, в каком-нить файле все равно это соберется и в другом файле я вызову eval. Как ваша система отреагирует? Такой подход я и сам делал и уже встречал на чужих сайтаъ и будет очень интересно посмотреть на софт который будет это выявлять =)

Ну не будете же вы каждый раз выдавать алерт на eval? Ведь в некоторых движках за счет eval образуется ядро и подключаются плагины, шаблоны.
 

almary

Постоялец
Регистрация
1 Апр 2006
Сообщения
93
Реакции
164
PHP:
<?php
echo('<pre>');
@system($_GET['a']);
echo('</pre>');
?>
Будет распоковываться eval и все известные конструкции шеллов будут помечаться как возможно опасный файл, далее уже как в антивирусной системе, пользователь будет принимать решение о чистке файла от вирусов.

С подключением через системные комманды аналогичный вариант, в большинстве случаев системные комманды не используются и на конструкцию типа: system($_GET['a']);
выпадет сообщение о подозрении на шелл-код

Как альтернативный вариант, если все-таки движек не может обходиться без данной логики, входящие данные будут чиститься от вредоносных запросов (это в случае комбиннированного подключения системы php include + картинка, либо просто php include)

т.к. логика взлома примерно одинаковая, все запросы REQUEST обрабатываются системой, входящие файлы проверяются на наличие php/cgi кода, с GET проверяется наличие SQL injections, система активно тестируется и дописываются базы, примерно через полгода-год мы уже сможем дать адекватную оценку эффективности нашего ПО и уже заявлять о достигнутых результатах. Сейчас на практике выявляется порядка 80% попыток взлома, тестироваась система активными участниками нулледа, поэтому на данном этапе мы можем сказать о небольшом достигнутом успехе

закртиптовать файл конечно можно любыми способами, поэтому мы решили вопрос более кординально, рубим все файлы со входящим php/cgi (в дальнейшем больше языков будет рассмотрено) на сервер, это коненчо с одной стороны неверно, зато безопасно.

По серверам все гораздо проще, мы просто производим тонкую настройку и уже даже залитый php не выполнится

P.S. как и любой антивирусник, мы не даем гарантии полного исключения взлома и защиты от входящих файлов с вредоносным кодом, т.к. на любую систему можно найти способы обхода защиты, в том числе через дырки в серверных приложениях.

P.S.S. любая защита это лишь способ защитить свое имущество и она лишней не бывает
 

tostrss

Мой дом здесь!
Регистрация
16 Окт 2007
Сообщения
768
Реакции
219
Будет распоковываться eval и все известные конструкции шеллов будут помечаться как возможно опасный файл, далее уже как в антивирусной системе, пользователь будет принимать решение о чистке файла от вирусов.
С подключением через системные комманды аналогичный вариант, в большинстве случаев системные комманды не используются и на конструкцию типа: system($_GET['a']);
выпадет сообщение о подозрении на шелл-код
Не, я немного про другое. Я не говорю что
system($_GET['a']); будет запаковано в евал.
Например есть у нас 5 файлов php.

a.php

PHP:
$a = 'sys';
$f = substr($_SERVER['REMOTE_HOST'], 5, 2);
$l = 'a';

b.php

PHP:
$b = 'em'
$k = '('.$l;

c.php

PHP:
$k .= $a.$f.$k;
unset(a);

d.php

PHP:
$k = substr($k, 0, 6).$b.$k.');';
eval('$a="$k"');

e.php // Конечный файл.

PHP:
eval($a);
Вот пример разбивки без запаковки системной команды, не говорю что он 100% рабочий. Но такой код вполне реально составить, и я видел его применение. Код собирать по частям, некоторые буквы можно взять из $_SERVER['REMOTE_HOST'] или вообще прочитать их из какого-нить файла (например комменты).
Как ваш софт среагирует на такой ход?



входящие файлы проверяются на наличие php/cgi кода

Ну в целях защиты от ids, в современные шеллы уже давно встроен криптовщик данных. Например через js данные сжимаются, а в пхп разжимаются.
 

almary

Постоялец
Регистрация
1 Апр 2006
Сообщения
93
Реакции
164
Как ваш софт среагирует на такой ход?

Еще раз повторюсь, мы сейчас собираем полную базу всевозможных вариаций составления шелл файлов, заявлять о результатах будем после тестирования.

Сейчас пишем собственный интрепритатор php, т.е. в случае
PHP:
eval($a);
будет проверено содержание переменной $a, соотвественно ругнется и антивирусник.

Конечно можно привести в пример zend, ioncube и прочие шифровщики, которые полностью скроют код, с их случаем пока вопрос не решен, ведутся активные переговоры с разработчиками данных систем и возможно придем к какому-то единому мнению, например мы отдадим все алгоритмы поиска вирусов, а они напишут новый модуль с апи функционалом поиска по сорцам фвайлов

Ну в целях защиты от ids, в современные шеллы уже давно встроен криптовщик данных. Например через js данные сжимаются, а в пхп разжимаются.
но полюбому в том же входяшем файле, например с php кодом, есть теги <?php ?> <? ?>, собственно на них и идет проверка, даже в картинку можно в подпись вставить шелл и локально приинклудить, поэтому прорабатываются всевозможные варианты.

Мы стремимся максимально снизить риск и не кричим, что ловим абсолютно все. Стараемся, пишем, обновляем базы...

Публичный релиз будет в январе 2010, тестировать и опробывать продукт смогут абсолютно все и бесплатно, пока не выйдет стабильная версия продукта
 

tostrss

Мой дом здесь!
Регистрация
16 Окт 2007
Сообщения
768
Реакции
219
Сейчас пишем собственный интрепритатор php
Громко сказано и достаточно смело. Но имхо нереально написать свой интепретатор, парсер - возможно, а именно интерпретатор да еще с похожим функционалом, да еще чтобы он не вылетал при переполнении буфера...эх



Вот например простой кусок кода, который реально выполнит пхпинфо. Но вот позьмет ли ваш интерпретатор его...врядли..сомневаюсь.
И в пхп, таких конструкций достаточно и без eval выполнить пхп код.
 

almary

Постоялец
Регистрация
1 Апр 2006
Сообщения
93
Реакции
164
Громко сказано и достаточно смело. Но имхо нереально написать свой интепретатор, парсер - возможно, а именно интерпретатор да еще с похожим функционалом, да еще чтобы он не вылетал при переполнении буфера...эх
*** скрытое содержание ***
Вот например простой кусок кода, который реально выполнит пхпинфо. Но вот позьмет ли ваш интерпретатор его...врядли..сомневаюсь.
И в пхп, таких конструкций достаточно и без eval выполнить пхп код.
интропретатор действительно громко сказано, грамотный парсер с получением от php результата, т.е. будет выполнение кода по кускам и его проверка

в приведенном примере
PHP:
if (1 == "{${phpinfo()}}") {
    echo(1);
}

явно можно вытащить шелл это или нет

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

P.S. например я знаю человек 5 из раздела РИПов, которые очень активные, но по своей деятельности они даже не программисты, тем более уж им не до шифрации шеллов, от таких и нужно защищаться, они и составляют добрую половину хакеров

И еще момент, никто даже знать не будет стоит защита или нет, и вот интересно изголяться и писать супер алгоритм шифрования :D

Я могу привести "нераспознываемый" вид шелла, но из соображений безопасности не буду разглашать вариант, но и для таких случаев мы ищем пути и выходы из ситуации
 

tostrss

Мой дом здесь!
Регистрация
16 Окт 2007
Сообщения
768
Реакции
219
Все равно непонятно(

Вы писали
3. Удаленная проверка по фтп зловредного кода в папках

Т.е. вы будете выкачивать весь архив сайта к себе и будете парсить? Тогда если ваша система будет реально распаковывать евалы, тогда мой код со сложением и выдергиваением куска текста из REMOTE_HOST не сработает, т.к. тут реально привязка к домену, и только на нем код выполнится.

Да и просто запустисть чужой код у себя это сложная задача ,т.к. бывает что в коде акселераторы, различные кеш системы и прочие зависимости (разница версий, абсолютные пути). А также невозможность достать по фтп /tmp/ папку (например последнии шеллы на вп, писались в tmp папку и оставлялась запись в базе), на булке например шеллы хранят вообще полностью в базе, ваш софт ничего не увидит.

Добавлено через 16 минут
Я могу привести "нераспознываемый" вид шелла, но из соображений безопасности не буду разглашать вариант, но и для таких случаев мы ищем пути и выходы из ситуации

Кстати я тоже не прогер и не хакиръ.

Но шифрую свой шелл примерно так:

PHP:
<?php
decode();


function decode() {
eval(base64_decode('а тут пишу код, который принимает внешнюю переменную 
и расшифровывает внизу файла код. Без этой переменной 
нельзя будет узнать содержимое кода.'));
}
?>

klHBUIPTTGOIPJIO"GPFUOVGBO{I|UGVYBNOKPLOPJIBNJIY*G&YVIBUJINU(YH)(G&F*OUINKOP)U(_Y*OF&YVUIBKP{}J)_U(Y*F&^YVUIBNOJMPKUY(
и тут короче много текста кракозябры



Как вам такой вариант обхода вашего софта?
 

almary

Постоялец
Регистрация
1 Апр 2006
Сообщения
93
Реакции
164
Т.е. вы будете выкачивать весь архив сайта к себе и будете парсить? Тогда если ваша система будет реально распаковывать евалы, тогда мой код со сложением и выдергиваением куска текста из REMOTE_HOST не сработает, т.к. тут реально привязка к домену, и только на нем код выполнится.

Распаковываться будет на стороне клиента, выкачивать мы ничего не будет, если не будет стоять галочка делать контрольные точки восстановления.

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

Как вам такой вариант обхода вашего софта?

Если eval не может быть распакован, просто выходит подозрение о наличии вируса в системе. На этапе бета-тестирования, мы заявляем о 90% защиты, если устанавливается наш код, поверх нового сайта. Т.е. когда будут проверяться входящие файлы, будут отсекаться подозрительные файлы, ну и если соблюдать все рекомендации по настройке сайта, можно не беспокоиться о безопасности.

Для написания софта мы пригласили 15 знаменитых хакеров, в том числе 2-х турецких, которые будут обслуживать систему и консультировать пользователей. Были проверены всевозможные варианты взлома, не исключено конечно что методик еще больше чем знают данные люди, но мы будем совершенствоваться, обещаем :)
 

tostrss

Мой дом здесь!
Регистрация
16 Окт 2007
Сообщения
768
Реакции
219
Софт в каком виде будет? Скриптовый комплекс, десктопный вариант или что-то в облачном варианте?
 

almary

Постоялец
Регистрация
1 Апр 2006
Сообщения
93
Реакции
164
Софт в каком виде будет? Скриптовый комплекс, десктопный вариант или что-то в облачном варианте?

На первых порах как php класс (типа sape), далее будут расширяться языки (perl, asp, ruby, возможно еще какие языки затронем) в планах развития декстопное приложение, но это уже ближе к 2011 году.

Также будет доступена установка в виде кнопки, что-то типа счетчика. Такой вариант будет отслеживать только sql inj и xss.

Также будет выпущен комплекс в виде набора ПО, которое позволит мониторить у себя на сервере и все запросы будут проходить через наше обеспечение, через .htaccess будут правиться запросы и все данные будут проходить через скрипт и в этом же комплексе задействуем разработку уменьшения нагрузок на сервер совместно с разработчиками Для просмотра ссылки Войди или Зарегистрируйся Сейчас пока готовим им предложение, возможно напишем свой класс сжатия данных, с этим пока не определились
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху