Добрый день всем новичкам в ремесле взломщика. Сегодня я хочу осветить вам некоторые аспекты взлома удаленных серверов, а точнее постараюсь систематезировать ваши знания для более успешного хака. Для понятия статьи потребуются знания (минимальные) в области сетей, защиты и нападения, т.е. необходимо знать, что такое уязвимости 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% они стоят нетронутыми. Баннер нам нужен для более точной инициализации сервиса. А инициализация сервиса нам нужна для поиска уязвимостей. Ведь в практически каждой программе есть свои недочеты, и чаще встречающаяся - это переполнение буфера. Каждый вводимый параметр имеет свой размер, и переполнив его, мы можем получить права программы специальным путем. Здесь мы не будем мудрить и самим искать уязвимости программ - мы лишь посмотрим сервис и постараемся подыскать на него эксплоит - программу, эксплуатирующую уязвимости. Это сделать можно на следующих авторитетных сайтах:
Можно также просто пробить сервис в 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
Закачивается полноценный веб шелл, потом закачиваем бэкдор и используем локальный сплоит...
Рассмотрим метод "Другое". Здесь подразумеваются нестандартные подходы. Об этом говорить не будем, ибо мысли у каждого свои. Например, мне часто помогал Reverse-IP (технология), также, если надо было получить доступ к сайту, пробивал ICQ/Email/Etc администратора в Google, смотрел сайты/форумы, на которых он обитает, а дальше просто ломал их, крал его пароль и он в 80% случаев подходил к паролю от сайта того человека. Способов взлома бесконечное множество, надо лишь уметь находить нестандартные решения.
[ OUTRO ]
Здесь я постарался осветить основные аспекты взлома, данная статья не претендует на полноту. Данная статья не является учебником к действию, она создана лишь для ознакомления начинающих с уязвимостями.