Эксплойт
(англ. exploit — использовать) — это общий термин в сообществе
компьютерной безопасности для обозначения фрагмента программного кода
который, используя возможности предоставляемые ошибкой, отказом или
уязвимостью, ведёт к повышению привилегий или отказу в обслуживании
компьютерной системы.
Существует несколько методов классификации уязвимостей. Наиболее общий —
это то, каким образом эксплойт контактирует с уязвимым программным
обеспечением. «Удалённый эксплойт» работает через сеть и использует
уязвимость в защите без какого-либо предварительного доступа к уязвимой
системе. «Локальный эксплойт» требует предварительный доступ к уязвимой
системе и обычно повышает привилегии для лица, запускающего эксплойт над
уровнем, который был предоставлен системным администратором. Эксплойт
«подставного сервера» подвергает риску машину конечного пользователя в
том случае, когда к нему был совершён доступ с помощью уязвимого
клиентского приложения. Эксплойт против клиентского приложения может
также требовать некоторого взаимодействия с пользователем уязвимого
приложения и может быть использован в связке с методами социального
инжиниринга, т.е. несанкционированного доступа к информации без
использования технических средств.
Эксплойты могут также быть классифицированы по типу уязвимости, которую они атакуют. См. переполнение буфера, межсайтовый скриптинг, подделка межсайтовых запросов, SQL-инъекция.
Другая классификация по действию предпринятому против уязвимой системы:
несанкционированный доступ к данным (копирование, удаление или
модификация), выполнение кода, отказ в обслуживании.
Эксплойты могут быть разработаны для непосредственного обеспечения
суперпользовательского уровня доступа к компьютерной системе. Однако,
возможно использовать несколько эксплойтов — первый для получения
удаленного доступа с невысоким уровнем, и повторно, для локального
повышения привилегий до тех пор, пока не будет получен уровень доступа «
0-дневными эксплойтами» (англ. zero-day, 0-day exploits) и получение
доступа к таким эксплойтам — первейшее желание неквалифицированных
вредоносных хакеров, так называемых скрипт-кидди.
Теперь поподробнее…
Виды эксплоитов
— Эксплоит может представлять из себя одиночный файл, который необходимо либо сразу запустить либо предварительно компилировать.
— Эксплоит может представлять из себя архив, чаще с расширениями .tar
или .tar.gz, потому как большинство из них пишутся под UNIX системы. В
этих архивах может лежать что угодно:
* те же .pl файлы
* скрипт или исходник на C, Java? etc
* просто описание «хитрого обращения»
* etc
Алгоритм действия
* Сканируем хост (желательно сканировать с использованием nmap)
* Смотрим открытые порты и что на них висит
* Телнетимся на открытые порты и узнаем версии демонов
* Находим дырявый демон
* Ищем эксплоит
* Засылаем его на shell-account в лине
* Компилируем его
* Запускаем эксплоит
Поиск эксплоита
Предположим, что мы узнали, что какой-то демон дырявый. Срочно бежим в bugtrack’s и архивы уязвимостей и находим эксплоит.
Ищем сплоит либо по версии демона либо по версии операционной системы.
shell-account
Варианты:
1. У вас есть шелл (не рассматривается — переходите к следующему заголовку)
2. У вас нет шелла и вы хотите его поиметь
Действия:
— Можно использовать халявный шелл (однако у них отключены многие нужные вещи)
3. У вас есть собственный UNIX (переходи к следующему заголовку)
Компиляция
Допустим, мы нашли нужный нам сплоит на C. Большинство эксплоитов пишутся именно на этом языке программирования.
gcc file.c -o file — Скомпилировать C код и получить при выходе бинарник file
Если у тебя архив, то раскрываем: tar -xvzf pack.tgz
cd [имя каталога]
./configure
make
make install
Возможно, придется почитать Readme File перед установкой, если это специфичный эксплоит.
Запуск эксплоита
Если эксплоит на Perl, тогда для запуска используется команда
perl exploit.pl [parameters|flags]
Если эксплоит на C, то
$./sploit [parameters]
Каждый эксплоит подразумевает вставку своих параметров, о назначении которых обычно сообщает сам при запуске.
Проблеммы на халявных шеллах
На бесплатных шеллах часто встречаются следующие проблеммы:
— недостаточно прав
— не возможно подключить .h библиотеки (которые используют все эксплоиты)
Появление этих проблем не удивительно. Если бы администраторы
разрешили все функции шелла, то тогда это был бы не бесплатный сервис
для знакомства с UNIX системой а плацдарм для массированных атак на
сервера. Надеюсь, теперь проблем у вас с этим не будет.
Несколько пояснений:
1. Что такое shell?
Дословно shell переводится как «оболочка». Это программа, которая
принимает команды юзера из командной строки, преобразует их в понятную
для операционки форму и выводит ответ операционки в понятной для юзера
форме . Другое название shell — командный интерпретатор. Вот несколько
наиболее юзабельных shell’ов: bash, sh, csh, tcsh, psh. Отличаются они
тем, что у каждой shell свой язык для написания скриптов (у родственных
шеллов они почти одинаковые, как у bash и sh).
Еще они отличаются по функциональности: некоторые позволяют
редактировать вид командной строки. Почти у каждого шелла есть свои
встроенные переменные. Если не знаешь, какой у тебя шелл, вводи команду
echo $SHELL. Если хочешь поменять свой дефолтовый шелл, вводи команду
chsh.
2. Что такое демон (daemon)?
Демоном называется программа, работающая в фоновом режиме
(background) и не имеющая контрольного терминала. Резидентка, короче
:0).
Особо выделю следующий очень часто задаваемый вопрос: «Как запускать
сплойт на пёрле? Когда я его запускаю, он у меня сразу вырубается!:((«.
Ответ: Скачиваем Active perl — интерпретатор языка Perl, открываем
блокнот, пишем там «cmd», сохраняем в директорию C:\Perl\bin\ c
расширением *.bat
Запускаем.