Сделай Сам Свою Работу на 5

Недостаток ресурсов (resource starvation)





Атаки, направленные на захват критических системных ресурсов: процессорное время, место на харде, память и т.д. Resource starvation часто очень похож на bandwidth consumption: взломщик опять-таки отсылает кучу запросов на сервер, после чего тому наступает полный 3.14zDoS :). Но на этот раз пакеты не забивают канал хоста-жертвы, а занимают, скажем, все его процессорное время. Ведь на обработку каждого пакета сервак затрачивает некоторое процессорное усилие. Остается только выбрать такие пакеты, на которые процессорного времени тратится достаточно много, и вперед - бомбить ими тачку! Канал-то может оказаться достаточно широким - с ним все будет ок, а вот проц просто захлебнется, обрабатывая всю эту бомбежку. Результат - все остальные процессы висят, пользователи не могут получить доступа к сервисам.

Еще один популярный пример - это когда хард забивается логами. Еcли админ - ламо, он может криво отконфигурировать систему логирования на своем серваке, не поставив ей лимит. Тогда достаточно выбрать такие пакеты, которые жрут в логах больше места, и начать отсылать их на сервер пачками. Через какое-то время файлы логов разрастутся до немереных размеров, сожрут все место на харде, и машина опять окажется в "затруднительном положении". Правда, это покатит только на самых ламерских серваках - грамотные люди держат логи на отдельном от системного харде. Также resource starvation актуален, если у хакерюги уже есть какой-то (ограниченный) доступ к ресурсам машины (например, у него есть непривилегированный аккаунт) - тут поле для действий значительно шире в том смысле, что взломщик не ограничен одними только пакетами, которые он может отсылать на удаленный сервер.



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



Ошибки программирования (programming flaw)

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

Самый тривиальным пример: программер пишет клиент-серверное приложение, работающее по такому-то протоколу, в спецификации которого сказано, что такое-то поле такого-то пакета может содержать максимум 65500 бит данных. Программер сам писал клиентскую часть, и, как оказалось, на практике больше 255 бит в это поле пихать не приходится, поэтому он написал свою клиентскую часть так, что она шлет в этом поле максимум 255 бит, а больше - не умеет. В серверной части проги кодер написал, что такая-то переменная (в которую будет передаваться содержимое того самого поля из того самого пакета) имеет длину 255 бит (все равно больше приехать не может, так как клиентская часть не умеет отсылать больше 255). Поставили сервак, раздали юзерам клиентские проги - все пучком, все работает, все довольны. Но тут пришел хакер, разобрался во всем этом деле и устроил в этом маленьком раю большой 3.14zDoS. Он модифицировал клиентскую часть (или написал свою) так, чтоб та слала 65500 бит данных в том самом поле именно того пакета. Все хорошо, протокол позволяет передавать данные такой длины, а вот сервер, написанный программером, к такого рода отношениям не готов... Данные приходят, и все 65500 бит записываются в переменную, размер которой 255 бит, - нарушается организация памяти, прога глючит, сервак висит, клиенты не могут получить к нему доступ. 3.14zDoS, короче :).



Маршрутизация и DNS

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

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

DoS-АТАКА - ВИРТУАЛЬНЫЙ АНАЛОГ ЯДЕРНОЙ ВОЙНЫ?

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

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

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

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

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.