ТЕОРИЯ ЛЕГКОГО ХАКА -
чем легкий хак отличается от тяжелого?

n0ah (noah@real.xakep.ru)

Спецвыпуск Xakep, номер #025, стр. 025-004-1


Насколько я помню, у нас в Спеце еще никогда не было аналитических статей. Нам просто не нравится корень этого слова – "аналит" :). Аналит, анал... ну, в общем, ты меня понял ;). Сейчас я попытаюсь сделать над собой усилие и предложить твоему вниманию первую в Спеце аналитическую статью. Попробуем разобраться, что это за зверь такой – легкий хак – и чем он отличается от тяжелого.

Но сначала придется разобраться с самим понятием "хак". Понятие это очень широкое, поэтому разбираться с ним можно бесконечно. Давай условимся, что "хак" или "взлом" – это определенный набор действий, которые выполняет хакер, в результате чего нарушается безопасность и/или работоспособность компьютерной системы. Под компьютерной системой можно понимать все, что угодно: и внутреннюю сеть какой-нибудь конторы, и отдельно взятый почтовый ящик, и DNS-сервер, и UIN аськи.

Теперь посмотрим, что это за "определенный набор действий". Это процесс, который как и любой другой процесс имеет свои ключевые моменты. Они следующие:

1. Выбор цели;

2. Изучение цели;

3. Анализ результатов изучения;

4. Определение уязвимости (уязвимостей);

5. Выбор инструмента (инструментов), необходимых для эксплуатации обнаруженной уязвимости;

6. Эксплуатация уязвимости (уязвимостей);

7. Получение информации о положительном результате взлома.

Это рецепт, приятель. И он работает! Приведу два примера:

Пример 1: взлом DNS-сервера.

1. Выбор цели: Сосед попросил хакера изменить таблицу имен DNS-сервера компании, откуда его уволили.

2. Изучение цели: хакер просканил DNS-сервер сканером.

3. Анализ результатов изучения: после сканирования оказалось, что DNS-сервер также является почтовым сервером.

4. Определение уязвимости (уязвимостей): версия sendmail сервера оказалась уязвима к удаленному эксплоитингу.

5. Выбор инструмента (инструментов), необходимых для эксплуатации обнаруженной уязвимости: хакер зашел на багтрак и скачал оттуда один из подходящих к этой уязвимостей эксплоитов.

6. Эксплуатация уязвимости (уязвимостей): хакер скомпилировал эксплоит, натравили его на сервак, зашел телнетом и изменил таблицу DNS-имен.

7. Получение информации о положительном результате взлома: хакер и сосед вместе запустили браузер и проверили, действительно ли домен компании теперь ведет не на сайт компании, а на www.fuckyou.com.

Пример 2: увод UIN'а.

1. Выбор цели: хакер выбрал красивый шестизначный юин.

2. Изучение цели: посмотрел в инфо.

3. Анализ результатов изучения: обнаружил там прописанное мыло на hotmail.com.

4. Определение уязвимости (уязвимостей): проверил на hotmail.com и оказалось, что такое мыло не зарегистрировано.

5. Выбор инструмента (инструментов), необходимых для эксплуатации обнаруженной уязвимости: залез браузером на hotmail.com и зарегал там мыло.

6. Эксплуатация уязвимости (уязвимостей): зашел на сайт icq.com и попросил прислать ему "забытый" пароль на мыло.

7. Получение информации о положительном результате взлома: открыл почтовик и получил письмо от системы напоминания паролей icq.

Это два совершенно разных примера, но оба они идеально подходят под наш рецепт. Я привел эти примеры, чтобы доказать универсальность этого рецепта. Не буду ручаться за все 100%, но мне кажется, что 97% всех взломом подходят под этот рецепт. По сути, что мы делаем, когда взламываем что-либо по этому рецепту – мы берем цель и _примеряем_ к ней различные уязвимости (все, какие мы знаем и какие на наш взгляд применимы к данной цели). Это не легкий взлом. Практика показывает, что намного выгоднее, легче делать все наоборот: брать уязвимость и _примерять_ ее к различным целям. Сразу отвечу, почему это легче: целей много, а уязвимостей мало (тем более известных какому-то конкретному хакеру). Чтоб ты почувствовал разницу, приведу два примера:

Содержание  Вперед на стр. 025-004-2