Как обычно, как и в прошлом году, я не могу поверить, что люди действительно приходят на мои презентации послушать, что я рассказываю. В прошлом году это было в воскресенье, в 10 утра, я был в состоянии похмелья и думал, что никто не придёт на меня посмотреть.
Сегодня снова воскресенье, 4 часа дня, сегодня я хотел лететь домой, но, не смотря на это, я благодарю вас и действительно ценю ваше внимание, как и в прошлом году, и я чертовски люблю таких людей и DefCon.
Тема презентации – Вы потратили все эти деньги, но вас продолжают «иметь». Я провёл множество испытаний на проникновение, был во множестве стран, где занимался пентестингом, и везде боролся с разными средствами защиты типа файрволов, AWS и систем обнаружения вторжений IDS и MAC. Мы все еще даем им взбучку, и это очень плохо. Часто, когда я провожу тестирование, мой отчет превращается в сообщение об инцидентах, и хочется сказать: «эй, чувак, но ты же владелец всего этого, как можно пользоваться таким отстоем»? Этому была посвящена целая тема, но давайте я сначала расскажу, кто я такой.
Я пентестер сетевых приложений и обучаю этому людей, и я же – «чёрный» парень на конференциях по безопасности, да, это я! Итак, я взламываю, я лютую и я выпиваю. Порядки меняются, но я остаюсь прежним. Так что если вам не нравятся такие парни, как я, вы можете встать и уйти.
Итак, разрешите мне вернуться немного назад, лет на 10. Я всегда так поступаю, потому что испытываю особую ностальгию по тем временам. В те времена пентестинг был лёгким занятием, мы приходили к клиенту и говорили: «привет, чувак, мы люди из безопасности», и клиент поднимал руки вверх, думая: «вот чёрт, здесь люди из безопасности»!
После этого мы взламывали сеть клиента инструментами с открытым кодом вроде ISS или Nessus. Кто из вас помнит, что Nessus тогда был бесплатным?
Итак, мы приходили к клиенту со всеми этими вещами и запросто взламывали его сайт, используя такие эксплойты, как RootShell с PacketStorm – поднимите руки, кто их помнит! Мы сканировали порты, чтобы найти цель, использовали всякие компиляции, «точку-слеш», все эти библиотеки и вскрывали панель управления.
Затем мы делали скриншоты уязвимости, на которых можно было увидеть ваши пароли и прочую конфиденциальную информацию, и говорили: «ну всё, чувак, твоя сеть захвачена!».
Потом мы составляли отчёт, писали, какая отстойная у них сеть, и получали за это деньги. «Ваша сеть – долбанный отстой, так что заплатите мне»!
Но сегодня, ребята, кругом сплошная CISSP, независимая сертификация информационной безопасности, и чувак, который нанимает тебя думает, что знает больше, чем ты. Хочется ему сказать: «тогда какого черта ты меня нанял?», а он отвечает: «знаете, мы сделали это, и это, у нас есть IDS и MAC, у нас есть то, у нас есть это…». И ты крутишься там, во всём этом дерьме.
Позвольте мне рассказать вам небольшую историю. Все, кто меня знает, знают, что у меня всегда имеется какая-то история.
Несколько лет назад у меня был клиент, который заказал пентестинг. Он сказал: «ОК, Джо, я хочу, чтобы вы сделали аудит этих подсетей и список управления доступом ACL для VLAN». Наверное, кто-то из вас уже делал ACL для VLAN, так что вы, ребята, умнее меня, потому что я никогда этого не делал.
Я говорю – хорошо, какой именно аудит я должен сделать? Он отвечает – аудит VLAN, ладно, думаю я, пойду, посмотрю на конфигурацию их сети. И вот я сижу с сетевым администратором и вижу, что у них на 300 пользователей 90 сетей VLAN! Я был просто в шоке и сказал ему, как такое возможно, а он просто ответил – ну так получилось! Я взял маленький листок бумаги и стал обходить народ, спрашивая: «Вам нужна это сеть? А вот эта сеть вам нужна? Может быть, вам нужна вот эта сеть?». Итак, я обошел всех, узнал, что кому было нужно, и это была большая, чертовски большая компания. Я проверил все эти VLAN, провел сертификацию некоторых сетей и дошёл до одного из сегментов DMZ, которых в компании было 4 штуки. Я сказал себе: «эй, чувак, все эти коробки нуждаются в обновлении, их действительно нужно пропатчить». Я пошёл к заместителю генерального директора и сказал, что у вас есть всё это оборудование, которому требуется обновление программного обеспечения, так как вы пропустили некоторые SQL-патчи, PHP-патчи и ещё много чего.
У них было собрание, потому что они постоянно встречаются, и вот один из разработчиков встаёт и говорит: «нет-нет, нам нельзя это обновлять, это наши серверы для разработки!» (смех и аплодисменты в зале). Как можно прокомментировать то, что сервер разработчиков находится в DMZ? А мне отвечают: «Так лучше!».
Итак, я продолжаю работать на клиента, начинаю свой маленький пентестинг и «обрушиваю» пару стоек, потому что это легко сделать. Клиент спрашивает, почему это наша система IDS не смогла вас поймать, а я отвечаю, а что, там была IDS? Он говорит, да, мы с её помощью наблюдаем за безопасностью. Я отвечаю: «ну, наверное потому, что над этой IDS кто-то поработал»!
Компании нанимают другие компании для аутсорсинга своих IDS, те управляют ими, составляют отчёты и делают ещё кучу всяких дерьмовых вещей. Итак, я должен был взглянуть на их «коробку» и попросил парня дать мне доступ, чтобы быстренько её осмотреть. Я, черт возьми, потратил больше 2-х минут, чтобы залогиниться через SSH, и увидел, что эта стерва медлительна до чёртиков, поэтому я стал проверять её на руткиты. Оказалось, что там было аж 4 руткита!
Так что пентестинг – это крутая вещь! Итак, что я делаю, когда выступаю против этих парней из крупных компаний, когда провожу аудит всех этих грёбаных банков, всех этих долбанных компаний – я обращаюсь за помощью к Google. В первую очередь я ищу сообщения об ошибках SQL, ищу файлы для удалённого управления, всё то, что даст мне быстрый доступ к оболочке, самому уязвимому месту. Никогда не занимайтесь такой ерундой, как сканирование уязвимостей, сразу берите систему «за горло». Так что я всегда ищу SQL-инъекции, RF-файлы, межсайтовый скриптинг, и после того, как нахожу их, то перехожу к пассивной разведке и к OSINT – разведке на основе открытых источников, для этого я использую Maltego. Я поступаю, как женщина, которая хочет поймать мужа на измене – смотрю повсюду! Я пытаюсь понять, какие у них подсети, где все эти вещи расположены, я использую этот невероятный инструмент под названием Firefox. Поверьте мне, вас удивит то, что он способен сделать!
Пассивная разведка – основной инструмент, который вы действительно должны попробовать. Я уверен, что большинство из вас уже используют её, этот приём определённо нужно использовать. Затем я ищу балансировщики нагрузки, сейчас я пропускаю через балансировщики нагрузки около 30% моих испытаний на проникновение, это действительно удобная штука. Я настраиваю нагрузку на «коробку» и выясняю, это балансировка нагрузки DNS или HTTP. Например, когда вы посылаете пакеты и они разлетаются по всем этим путям, это делает тестирование немного сложнее.
Затем я возвращаюсь к потрясающему браузеру Firefox и в режиме реального времени меняю содержимое заголовка строки поиска HTTP Headers. Это позволяет послать серверу некоторые общие запросы.
Так что если вы отсылаете первый пакет и к вам возвращается ответ «5», затем вы посылаете еще один пакет на тот же ящик и он возвращает вам ответ «6», значит, у вас есть балансировка нагрузки. То же самое с командой dig и Netcraft.
Netcraft вообще потрясающая вещь. Например, вы ищите что-то вроде «F5 BigIP» и получаете IP-адреса с уже сбалансированной нагрузкой. Во время пентестинга это для меня было очень важно. Балансировщик нагрузки обнаруживается shell-скриптом или с помощью Halberd, это скрипт на Python, который делает то же самое. Так что это действительно хорошие вещи, которые помогают вам определить реальный IP хоста, который вы намерены атаковать и который находится за балансировщиком нагрузки.
Следующая вещь, с которой я столкнулся, — это определение наличия IPS, или системы предотвращения вторжений. Кажется, что IPS есть у каждого, однако подавляющее большинство моих клиентов используют её в режиме IDS. Так же, как нет смысла использовать инструменты взлома против хоста с балансировкой нагрузки, нет смысла использовать их и против хоста, который защищен IPS. Кто-нибудь из вас пользуется этой вещью? Отключите её к чертям, потому что она блокирует трафик! Действительно, попробуйте отключить её и посмотрите, что произойдёт. Кто из вас верит, что эта система блокирует незаконный трафик, она вам об этом написала? Это такое же дерьмо, как и все подобные ей системы. Вы со мной согласны? Я просто хочу убедиться, что я не единственный, кто так считает.
Итак, мне нужно выяснить, не нужно ли мне бороться против IPS, то есть не находится ли атакуемый хост под её защитой, и для этого я делаю некоторые действительно простые вещи.
Я парень Linux, но сейчас вынужден использовать Windows, поэтому чувствую себя слегка запачкавшимся. В первую очередь я использую cURL – это инструменты командной строки, или скрипты, и библиотека, передающие данные по URL. С помощью cURL я собираюсь победить ../../WINNT/system32/cmd.exe?d. Поверьте мне, эта атака не работала с тех пор, как Иисус ходил по земле, так что сообщите мне, если вам удастся её осуществить.
Единственная причина, по которой это нужно сделать, заключается в попытке узнать, не блокирует ли что-либо ваш IP адрес или не отправляет ли пакеты сброса вашего соединения. Потому что если эта штука посылает вам пакеты reset, вам нужно обратиться к cmd.exe?d, так как вероятно, что ваш адрес блокирует именно IPS. Размышляя таким же образом, ребята из purehacking.com придумали инструмент Active Filter Detection, или активное обнаружение фильтра. Это очень хороший инструмент, работающий на Python, что позволяет его немного изменить и настроить под свои нужды.
Я часто сталкиваюсь с IPS, поэтому я использую 3-4 разных IP-адреса, с которых выстреливаю пакетами и смотрю, получаю ли я в ответ пакеты сброса. Если получаю, значит, мой IP-адрес заблокирован. Замечу, что большинство IDS/IPS решений не следят за закодированным SSL трафиком и за другим зашифрованным трафиком. Поэтому следующее, что я делаю – это смотрю, может ли IPS справиться с SSL. Ещё раз напомню, почему мы используем Linux.
Я создаю файл xlnetd и выполняю то, что называю «SSL-тест». Вы видите, что я открываю порт 8888, а затем любые данные, которые я передаю локальному хосту 8888, попадают в этот маленький скрипт оболочки, вы видите server = /home/j0e/security/toolz/ssl_proxy.sh.
На следующем слайде вы можете увидеть потрясающие способности моего скрипта — только посмотрите на этот скрипт из одной строчки! Таким образом, трафик поступает прямо в открытый SSL, а затем осуществляется соединение с целью и запускается все тот же Active Filter Detection или cmd.exe против локального хоста для того, чтобы установить, не заблокирован ли мой IP-адрес.
Подавляющее большинство моих клиентов, которые развертывают IPS и используют режим блокировки, не расшифровывают SSL трафик перед тем, как он проходит IPS или IDS. Поэтому, если вы хотите заставить своих клиентов потратить деньги с пользой, скажите им, пусть покупают SSL-акселератор. Он прерывает протокол SSL перед IPS и пытается расшифровать трафик.
Теперь посмотрим, как можно атаковать хост через Tor и как запустить через него инструменты для сканирования сети. Я занимаюсь этим довольно часто, запуская privoxy и в скрытом режиме использую для атаки на хост через порт 8080 такие инструменты, как Nessus. В связи с этим стоит порекомендовать своим клиентам блокировать выходные узлы Tor.
Большинство компаний не имеют никаких причин для того, чтобы позволять своим клиентам подсоединяться к своей сети через частные сети, однако никогда не блокируют такие подключения. Поэтому вы должны заставлять компании блокировать эти узлы, это то, что я в первую очередь делаю для своих клиентов. У меня нет слайда с описанием GLib прокси, потому что похмелье действительно повлияло на мою способность как следует сделать эти слайды сегодня утром.
Последнее, что я делаю, это идентифицирую WAF, Web Application Firewalls, или файрволы веб-приложений. Как можно определить, использует ли хост WAF?
Поскольку я выполняю много PCI-пентестинга, то знаю, что некоторые гениальные головы в представительстве PCI поняли, что если у вас есть уязвимые веб-приложения, которые вы не хотите исправить их и устранить уязвимость, то вы можете использовать WAF. На самом деле обнаружить использование таких файрволов несложно. Для этого достаточно отослать хосту 1 настоящий запрос, один злонамеренный запрос и посмотреть, чем будут отличаться его ответы. Злонамеренный HTTP запрос может содержать полезную нагрузку, которая включает в себя всякую ерунду типа апострофа, кавычек, вопросительного знака, минуса, скобки, звёздочки и так далее.
Так что совершенно не трудно выяснить, нападаете ли вы на хост, защищённый с помощью WAF.
Итак, вы посылаете любые недопустимые символы, после чего инструменты, изображенные на следующем слайде, выдают вам все виды этих странных вещей. Так что если вы запросите cmd.exe и используете утилиту командной строки grep для метода «501», то есть вместо ошибки 404 «не найдено» получите сообщение об ошибке 501 — «метод запроса не поддерживается сервером», то вы, вероятно, столкнулись с файрволом mod_security, защищающим сервера Apache. Новые версии этого файрвола изменили ситуацию, но кто реально заботиться о том, чтобы обновлять свой WAF?
Так что я достаточно широко использую методы, показанные на следующем слайде, а также пропускаю свои атаки через файрвол AQTRONIX Web Knight.
Вы видите в заголовке ответа код 999 No Hacking, такую штуку я запускаю при тестировании – «Никакого хакерства». Так что вы просто начинаете добавлять вещи в адресную строку, чтобы посмотреть, что это даст и не получите ли вы в ответ сообщение об ошибке 404 для файла, которого нет на хосте.
Я имею в виду, что если вы посылаете правильный запрос, который выдаёт вам сообщение 200, а затем посылаете неверный запрос для файла, которого не существует, и сервер выдаёт ошибку 404, а затем вдруг вставляете что-то для межсайтового скриптинга, то сервер отправит вам совсем другое значение ошибки. Это и будет указывать на то, что в данном случае имеет место какой-то защитный механизм.
Вернёмся к нашим играм с кодировкой. Если вы определили, что выступаете против WAF, посмотрите, поддерживает ли эта вещь HEX, обрабатывает ли она utf7, utf-8, base16, base64 или смесь этих кодировок. Большинство WAF недостаточно хорошо работает с кодировками, особенно если вы начнёте смешивать их друг с другом.
Мои хорошие приятели, Санчо Гачи и Уинделл, в прошлом году создали инструмент на Python под названием WAFW00F – это утилита для обнаружения WAF.
Эта штука снимает «отпечатки пальцев» заголовков HTTP ответов и идентифицирует WAF. Эта вещь мне очень нравится, сейчас у нас уже есть список из 10 или 12 WAF, и он постоянно увеличивается. Следующая вещь, на которую стоит обратить внимание, называется WAF Fun, это инструмент, который воздействует методом brute-force на набор правил файрвола веб-приложений, и он тоже написан на Python.
Я действительно восхищён этими парнями и желаю, чтобы мы достигли ещё большего прогресса, но вы же знаете, что мы немного выпиваем, потом работаем, потом опять выпиваем и снова работаем, так что процесс создания таких вещей не лёгок. Но я всё же надеюсь, что на следующей конференции DefCon смогу продемонстрировать, как работает WAF Fun с использованием метода brute-force.
Ещё одна интересная вещь – это то, что мы можем проделать с помощью юникода. Правда, он написан на Ruby, а все мы знаем, что Ruby – это отстой.
17:00 мин
Конференция DEFCON 18. Вы потратили все эти деньги, но вас продолжают «иметь». Часть 2
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Автор: ua-hosting.company