Тестирование на проникновение (penetration testing) — метод оценки безопасности компьютерных систем или сетей средствами моделирования атаки злоумышленника. Для кого-то это хобби, для кого-то — работа, для кого-то — стиль жизни. На страницах нашего журнала мы постараемся познакомить тебя с профессией настоящего хакера на службе корпорации, с задачами, которые перед ним ставятся, и решениями этих задач.

 

Intro

Каждый пентестер, если вдруг не передумает по дороге, проходит путь от pentest monkey до Advanced — именно так, с большой буквы. И, конечно, каждый на этом пути совершает ошибки, большие и маленькие. Их корень чаще всего лежит в отсутствии опыта и знаний в предметной области. В своей практике я встречаю много пентестерских ошибок, и большинства из них можно было бы избежать, руководствуясь лишь одним принципом: «делай только то, в чем уверен».

 

Агрессивный ARP Spoofing

В тестировании на проникновение нередко приходится прибегать к атакам канального уровня, таким как ARP spoofing. Эта атака до сих пор эффективна, если нет соответствующей защиты. Как ты наверняка понял, атаки канального уровня обычно используются на этапе внутреннего тестирования на проникновение.

Находясь со своим ноутбуком в офисе заказчика, многие не брезгуют отравлять ARP кэш сразу целым диапазоном /24, а то и /23. И если ноут не справляется с нагрузкой, можно воспользоваться физическим доступом. Да-да, никто не отменял атаки на канальный уровень в том случае, если ты, преодолев сетевой периметр заказчика, развиваешь атаку внутри сети. Тогда, запустив ettercap/cain/intercepter-ng на захваченном хосте, можно круто обломаться и навсегда потерять доступ не только к хосту, но и к сети.

Причины просты — тормоза на уровне сети возникнут не только у тебя, но и у легитимных пользователей. Это заметят администраторы, которых наверняка в крайне строгой форме попросят объяснить, почему и как произошел подобный инцидент. С большой вероятностью точку входа во внутреннюю сеть закроют, пентест или атака перестанет быть секретом, администраторы будут внимательнее — и это все не говоря об организационной составляющей вопроса, ведь подобные действия серьезно мешают доступу к ресурсам.

Кейс кажется фантастикой? Как бы не так. Когда я был начинающим пентестером, схожая ситуация произошла со мной во время подготовки к работе с реальными заказчиками. Подключившись к своему рабочему компьютеру через VPN, я без задней мысли запустил Cain и врубил ARP spoofing. Перед тем, как соединение разорвалось, я успел лишь подумать, что утро — лучшее время для сбора доменных учеток, ведь все приходят на работу и начинают логиниться в домен. Это, пожалуй, была моя первая и последняя грубая ошибка в подходе к проведению пентеста.

Сетевой дестрой продолжался на протяжении получаса, после чего я сумел найти своего человека в организации, который обезвредил рабочий компьютер, выдернув из него шнур питания. Естественно, администраторы нашли по MAC-адресу мой компьютер, но тут их ждал сюрприз — он был выключен. Никто не подумал, что MAC можно подменить (я тоже об этом тогда не подумал, если честно), его включили и залогинились под учетной записью администратора домена (!), чтобы найти улики. И, конечно, нашли их.

Тогда все вместе посмеялись и продолжили работать, но после этого мне некоторое время было неловко общаться с админами. А ещё после этой истории я думал, что можно было бы установить себе на машину кейлоггер и получить учетную запись администратора домена — этакая ловля на живца. Однако все это осталось теорией, которую не пришлось проверять на практике.

 

Нестабильные эксплоиты

Для решения некоторых задач, будь то получение паролей из конфигурационных файлов или проведение ARP спуфинга, пентестеру необходимы максимальные привилегии в системе. В большинстве случаев они получаются через эксплуатацию уязвимостей в ядре.

Как известно, публичные эксплоиты — это скорее продвинутые proof-of-concept с возможностью выплевывать рутовый шелл, нежели отлаженные программы. Сужу по себе — все мои эксплоиты работают, но я не тестирую и не отлаживаю их ради стабильности. Если на следующей системе эксплоит не срабатывает, тогда-то я его и доработаю. Уверен, логика тебе понятна.

В ночной погоне за рутом несложно забыть, что эксплоит не стабилен, и что не следует его запускать без предварительного согласования с заказчиком. Но адреналин и желание достичь цели любым путем делают своё дело. Ты надеешься, что всё будет окей, но если есть ощущение риска, то лучше не спешить. Желание удивить заказчика своим мастерством — это хорошо, но малейшая вероятность нарушить доступность ресурса должна охладить тебя и остановить от рискованной попытки.

Конечно, эксплуатация эксплуатации рознь. Одно дело, когда сервис выдает ошибку отказа в обслуживании после попытки запустить кернел эксплоит, загруженный с exploit-db. Другое — отказ в обслуживании из-за того, что пентестер был стеснен во времени, не имел полного доступа к сети и вслепую запустил только что написанный им непротестированный эксплоит. Второй вариант, безусловно, выглядит куда более благородным, несмотря на схожий результат.

Один мой знакомый как-то попал в такую ситуацию и уронил сервис из-за некорректного шеллкода в своем эксплоите. Он не растерялся и предъявил заказчику примерно следующее: «Вы знаете, что у вас сервер X недоступен? Мы тут работаем и у нас время ограничено, срочно решите проблему!» Социальная инженерия на практике! Через пару минут уязвимый сервис снова стал доступен; за это время знакомый успел поправить шеллкод. В результате он получил доступ к серверу со второго раза. Однако рассмотренная ситуация — скорее исключение из правил, ведь знакомый был уверен, что шеллкод на этот раз отработает как надо.

 

Халатность, наглость, отсутствие осторожности

Эта троица — главные друзья правосудия, которое пытается настигнуть незадачливого хакера, ступившего на темную сторону. Но чего бояться белым шляпам? Оказывается, все того же.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Мошенничество по воздуху. Разбираем возможность Cryptogram Replay Attack в Apple Pay

Задача платежной системы — списать нужную сумму в пользу продавца со счета верное число ра…