Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #93, СЕНТЯБРЬ 2006 г.

Hack-Faq

Скляров Иван

Хакер, номер #093, стр. 093-062-2


A: Keep-Alive - это не просто опция брутфорсера, а механизм TCP, позволяющий серверным приложениям неограниченно долго сохранять соединения с клиентом. Особое значение это имеет при работе с www-серверами. Как правило, по умолчанию www-сервер отправляет ответ на запрос и тут же разрывает соединение, при этом в заголовке HTTP-ответа обычно присутствует такая строка: «Connection: close». Это удобно при просмотре страниц с помощью браузера, но для брутфорса, как ты понимаешь, разрыв соединения после каждого запроса снижает скорость перебора. Согласно RFC, 2068 можно в HTTP-запросе указать серверу, чтобы он включил механизм Keep-Alive, то есть не разрывал соединение после каждого запроса. Для этого в запрос нужно добавить строку «Connection: Keep-Alive» (видимо, это и делает Brutus при установленной опции KeepAlive). Ниже показан пример такого запроса к моему локальному www-серверу Apache при помощи telnet:

GET / HTTP/1.1

Host:127.0.0.1

Connection:Keep-Alive

Если сервер поддерживает механизм Keep-Alive, то в заголовке HTTP-ответа будут присутствовать примерно такие строки:

HTTP/1.1 200 OK

...

Keep-Alive: timeout=15, max=100

Connection: Keep-Alive

...

Параметр timeout=15 означает, что соединение будет удерживаться в течение 15 секунд, и если клиент не проявит никакой активности в течение этого времени, то соединение будет разорвано сервером. Параметр max означает, что временной промежуток может быть увеличен до 100 секунд.

К сожалению, у большинства www-серверов в интернете отключен механизм Keep-Alive, поэтому не стоит на него сильно рассчитывать.

Q: Долгое время не существовало никакой защиты от переполнения буфера в куче, что-то изменилось в наше время?

A: Действительно, с давних времен разработано большое количество защит от переполнений буферов в стеке, уязвимости форматной строки и прочих ошибок. Например, такие системы, как StackGuard, StackShield, ProPolice, Openwall (OWL), Libsafe защищают от переполнений буфера в стеке. PointGuard защищает от перезаписи указателей на функции, FormatGuard — от уязвимостей форматной строки, а RaceGuard — от race-conditions. Инженерная мысль не стоит на месте, и даже защита от переполнения буфера в heap уже существует! Например, по этому урлу можно узнать подробности и скачать реализацию Heap protection для Linux: www.cs.ucsb.edu/~wkr/projects/heap_protection/.

В SP2 для Windows XP также включена защита от переполнения буфера в куче.

Q: Как лучше спрятать свой файл в Linux?

A: Не буду тебе советовать, например, таких глупостей, как переименовать файл во что-то неприглядное и поместить в самый неприметный каталог. Конечно, ты можешь воспользоваться специальным модулем ядра (LKM) для сокрытия файлов, которые входят в состав большинства руткитов, но в этом случае встает вопрос сокрытия самого модуля. Ты также можешь просто удалить файл командой rm, а затем восстановить его утилитой e2undel (http://e2undel.sourceforge.net), но в этом случае не гарантируется 100% восстановление. Поэтому я тебе лучше всего советую воспользоваться утилитой bmap (ищи ее на http://packetstormsecurity.org), которая позволяет прятать данные в «слабые места» файловой системы ext2 или ext3. При этом скрытые данные будут абсолютно невидимы в системе, нисколько не уменьшая место на диске, и не будут обнаруживаться утилитами проверки целостности файлов, использующими алгоритмы вычисления контрольной суммы файла (CRC). Немного поясню, что такое «слабые места». Файловая система адресует части дискового пространства, называемые блоками. Обычно размер блока для файловой системы ext2/ext3 равен 1, 2 или 4 Кб. Если размер файла меньше, чем размер блока, то оставшееся пространство потрачено впустую. Это и называется «слабым местом». Например, следующая команда записывает файл file.txt в «слабое место», созданное файлом /etc/passwd:

Назад на стр. 093-062-1  Содержание  Вперед на стр. 093-062-3