Используем скрипты
Итак, теперь вы знаете, какая на сервере установлена ОС, какие порты открыты и какие именно серверы висят на этих портах. Вся эта информация должна быть у вас записана в удобном для восприятия виде: в файле или хотя бы на бумаге. Главное, чтобы комфортно было работать.
На этом можно остановить исследования. У вас есть достаточно информации для простейшего взлома с помощью дыр в ОС и сервисах, установленных на сервере. Просто посещайте регулярно www.securityfocus.com. Именно здесь нужно искать информацию о новых уязвимостях. Уже давно известно, что большая часть серверов (по разным источникам от 70 до 90%) просто не латаются. Поэтому проверяйте все найденные ошибки на жертве, возможно, что-то и сработает.
Если сервер в данный момент близок к совершенству, то придется ждать появления новых дыр и сплоитов (программа, позволяющая использовать уязвимость) к установленным на сервере сервисам. Как только увидите что-нибудь интересное, сразу скачайте сплоит (или напишите свой) и воспользуйтесь им, пока администратор сервера не залатал очередную уязвимость.
1.1.2. Взлом WWW-сервера
При взломе WWW-сервера есть свои особенности. Если на нем выполняются CGI/PHP или иные скрипты, то взлом проводится совершенно по-другому. Для начала нужно просканировать сервер на наличие уязвимых CGI-скриптов. Вы не поверите, но опять же по исследованиям различных компаний в Интернете работает большое количество "дырявых" скриптов. Это связано с тем, что при разработке сайтов изначально вносятся ошибки. Начинающие программисты очень редко проверяют входящие параметры в надежде, что пользователь не будет изменять код странички или адрес URL, где серверу передаются необходимые данные для выполнения каких-либо действий.
Ошибку с параметрами имела одна из знаменитых систем управления сайтом - PHP-nuke. Это набор скриптов, позволяющих создать форум, чат, новостную ленту и управлять содержимым сайта. Все параметры в скриптах передаются через строку URL браузера, и просчет содержался в параметре ID. Разработчики предполагали, что в нем будет передаваться число, но не проверяли это. Хакер, знающий структуру базы данных (а это не сложно, потому что исходные коды PHP-nuke доступны), легко мог поместить SQL-запрос к базе данных сервера в параметр ID и получить пароли всех зарегистрированных на сайте пользователей. Конечно, клиенты будут зашифрованы, но для расшифровки не надо много усилий, и это мы рассмотрим чуть позже (см. разд. 14.10).
Проблема усложняется тем, что некоторые языки (например, Perl) изначально не были предназначены для использования в сети Интернет. Из-за этого в них существуют опасные функции для манипулирования системой, и если программист неосторожно применил их в своих модулях, то злоумышленник может воспользоваться такой неосмотрительностью.
Потенциально опасные функции есть практически везде, только в разных пропорциях. Единственный более или менее защищенный язык - Java, но он очень сильно тормозит систему и требует много ресурсов, из-за чего его не охотно используют Web-мастера. Но даже этот язык в неуклюжих руках может превратиться в большие ворота для хакеров с надписью: "Добро пожаловать!".
Но самая большая уязвимость - неграмотный программист. Из-за нехватки специалистов в этой области программированием стали заниматься все, кому не лень. Многие самоучки даже не пытаются задуматься о безопасности, а взломщикам это только на руку.
Итак, ваша первостепенная задача - запастись парочкой хороших CGI-сканеров. Какой лучше? Ответ однозначный - ВСЕ. Даже самый дрянной сканер может найти брешь, о которой неизвестно даже самому лучшему хакеру. А главное, что по закону подлости именно она окажется доступной на сервере. Помимо этого, нужно посещать все тот же сайт www.securityfocus.com, где регулярно выкладываются описания уязвимостей различных пакетов программ для Web-сайтов.
1.1.3. Серп и молот
Там, где не удалось взломать сервер с помощью умения и знаний, всегда можно воспользоваться чисто русским методом "Серпа и молота". Это не значит, что серп нужно приставлять к горлу администратора, а молотком стучать по его голове. Просто всегда остается в запасе тупой подбор паролей.
Давайте снова обратимся к статистике. Все исследовательские конторы пришли к одному и тому же выводу, что большинство начинающих выбирают в качестве пароля имена своих любимых собачек, кошечек, даты рождения или номера телефонов. Хорошо подобранный словарь может сломать практически любую систему, т.к. всегда найдутся неопытные пользователи с такими паролями. Самое страшное, если у этих "чайников" будут достаточно большие права.
Вы до сих пор еще не верите мне? Давайте вспомним знаменитейшего "червя Морриса", который проникал в систему, взламывая ее по словарю. Собственный лексикон червя был достаточно маленький и состоял менее чем из ста слов. Помимо этого, при переборе использовались термины из словаря, установленного в системе. Там их было тоже не так уж много. И вот благодаря такому примитивному алгоритму червь смог поразить громаднейшее число компьютеров и серверов. Это был один из самых массовых взломов!!! Да, случай давний, но средний профессионализм пользователей не растет, т.к. среди них много опытных, но достаточно и начинающих.
1.1.4. Локальная сеть
Взлом в локальной сети может быть проще по многим причинам:
□ компьютеры подключены по скоростному соединению от 10 Мбит и выше;
□ есть возможность прослушивать трафик других компьютеров в сети;
□ можно создавать подставные серверы;
□ очень редко используются сетевые экраны, потому что их ставят в основном перед выходом в Интернет.
Рассмотрим различные варианты взломов, которые получили наибольшее распространение.
Прослушивание трафика
В локальной сети есть свои особенности. Соединения могут осуществляться различными способами. От выбранного типа топологии зависит используемый вид кабеля, разъем и используемое оборудование. При подключении по коаксиальному кабелю могут использоваться две схемы: все компьютеры объединяются напрямую в одну общую шину или кольцо. Во втором случае крайние компьютеры тоже соединены между собой, и когда они обмениваются данными, все пакеты проходят через сетевую карту соседнего компьютера.
Если используется такая топология, то весь трафик обязательно проходит через все компьютеры сети. Почему же вы его не видите? Просто ОС и сетевой адаптер сговорились и не показывают чужой трафик. Но если очень сильно захотеть, то, воспользовавшись программой-сниффером, можно и просмотреть все данные, проходящие мимо сетевой карточки, даже если они предназначены не вам.
При подключении к Интернету с помощью сниффера можно увидеть только свой трафик. Чтобы позаимствовать чужую информацию, нужно сначала взломать сервер провайдера, а туда уже поставить сниффер и смотреть трафик всех клиентов. Это слишком сложно, поэтому способ через снифферы используют чаще всего в локальных сетях.
Соединение по коаксиальному кабелю встречается все реже, потому что оно ненадежно и позволяет передавать данные максимум на скорости 10 Мбит/с.
При объединении компьютеров через хаб (Hub) или коммутатор (Switch) используется топология "Звезда". В этом случае компьютеры с помощью витой пары получают одну общую точку. Если в центре стоит устройство типа Hub, то пакеты, пришедшие с одного компьютера, копируются на все узлы, подключенные к этому хабу. В случае с коммутатором пакеты будет видеть только получатель, потому что Switch имеет встроенные возможности маршрутизации, которые реализуются в основном на уровне MAC-адреса. В локальной сети, даже если вы отправляете данные на IP-адрес, применяется физический адрес компьютера. При работе через Интернет всегда используется IP-адресация, а на этом уровне работают далеко не все коммутаторы. Для того чтобы пакеты проходили по правильному пути, нужны уже более интеллектуальные устройства - маршрутизаторы. Они также передают набор данных только на определенную машину или другому маршрутизатору, который знает, где находится компьютер получателя.
Таким образом, при использовании коммутаторов в локальной сети и из-за маршрутизации в Интернете прослушивание становится более сложным, и для выполнения этой задачи сниффер должен находиться на самом коммутаторе или маршрутизаторе.
Работать с пакетами достаточно сложно, потому что в них содержится трудная для восприятия информация. Большой кусок данных разбивается на несколько пакетов, и вы будете видеть их по отдельности.
Сейчас в сети можно скачать громадное количество снифферов и дополнений к ним. Всевозможные версии "заточены" под разные нужды, и тут необходимо выбирать именно из этих соображений. Если вы ищете непосредственно пароли, то вам требуется сниффер, который умеет выделять данные о регистрации из общего трафика сети. В принципе, это не так сложно, если учесть, что все пароли и любая информация пересылаются в Интернет в открытом виде как текст, если не используется SSL-протокол (Secure Socket Layer, протокол защищенных сокетов).
Преимущество от использования снифферов при взломе в том, что они никак не влияют на атакуемую машину, а значит, вычислить его очень сложно. В большинстве случаев даже невозможно узнать, что ваш трафик кем-то прослушивается в поисках паролей.