Хабрахабр

[Перевод] Конференция DEFCON 18. Вы потратили все эти деньги, но вас продолжают «иметь». Часть 2

Конференция DEFCON 18. Вы потратили все эти деньги, но вас продолжают «иметь». Часть 1

Вы знаете, что мои инструменты должны писаться исключительно на Python, поэтому мы перевели это на Python. Я использую интересную вещь авторства Гэри О’Лири-Стил под названием Unicod-fun, которая довольно неплоха для утилиты, написанной на Ruby. Теперь мы можем применять различную кодировку для инструментов, которые предназначены для атак на веб-приложения и являются частью фреймворка WAF.

Так что это реально полезная штука для получения нужной информации. Фреймворк WAF включает в себя WAF Fun и WAFWOOF и функционирует на основе мультикодирования и информации, полученной от прокси, и он может функционировать через Tor или GLib прокси в процессе выполнения всех этих разных вещей.

На следующем слайде приведены скрипты для такой атаки: Мы говорили об атаке веб-сайтов через Tor, подробно я об этом рассказывал в прошлом году.

alias hide='su -c "/home/j0e/dumbscripts/hide.sh"'
$ cat /home/j0e/dumbscripts/hide.sh #!/bin/bash
# Startup privoxy
/usr/sbin/privoxy /etc/privoxy/config
# Start Tor
/usr/bin/tor
$ hide

Следует также упомянуть плагин, который встраивается в виде кнопки Tor в браузер Firefox.
Не знаю, работал ли кто-то из вас с DotNet Defender WAF, который используют эти чёртовы компании. Мы обнаружили, что он способен защитить сервер от SQL-инъекций. На слайде вы видите результат генерирования атаки межсайтового скриптинга – dotDefender заблокировал наш запрос.

И DotNet Defender ничего не смог с этим поделать. Далее вы видите попытку обойти данный вид защиты с помощью SQL-инъекции вообще без кодировки.

Это вершина технологий безопасности – блокировать слово select. Дело в том, что он блокирует только определённые SQL-инъекции, преимущественно содержащие слово select. Поэтому, если вы используете другую кодировку, вы с легкостью обойдёте DotNet Defender. Если вы шифруете в Юникоде, то можете просочиться мимо этого защитника, поэтому они исправили эту уязвимость в прошлом году, но ничего не предприняли против других стандартов кодировки. Это позволило мне сбросить хеш пароля администратора без всякой кодировки.

Так что извините, ребята из DotNet Defender, но вам нужно исправлять своё дерьмо.

Это достаточно трудно, но всё-таки ещё возможно. Итак, важной вещью, которую мне удалось проделать, стало проникновение в LAN через интернет. Он работает действительно хорошо, благодаря ему вы можете загрузить сетевой интерфейс командного интерпретатора netcat или meterpreter через туннель DNS. Для этого я использовал простой инструмент на языке Perl, мне пришлось с этим смириться, хотя я ярый приверженец Python. Это действительно великий проект и недавно для него было выпущено новое обновление.

Этот инструмент, написанный на Python, позволяет загрузить os-shell или meterpreter. Далее следует способ внедрения SQL с помощью инструмента SQL Map. Таким образом, вы можете вводить нужные команды для управления системой, конфигурировать netcat или напрямую войти в оболочку meterpreter, поэтому я использую этот инструмент довольно часто. В нем также имеется свой собственный os-shell, с которым можно повозиться.

Официальное название этой части доклада — не дай себя поймать! А сейчас мы перейдем к более важному материалу. Не будь Тайгером!

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

Многие люди пытаются испробовать разные варианты. Итак, самое важное, чтобы не попасться – это определить фильтры вторжений. Это плохо. Первое – это фильтрация на клиентской стороне. И ещё пять раз – это плохо! Это плохо. Или если вы используете фреймворк вроде J2EE, который создаёт эти JavaScript, вам придется написать код на стороне сервера, который проверяет, что всё, что пришло от клиента, в порядке. Не используйте JavaScript или VB скрипты, или что-нибудь на стороне клиента, чтобы попытаться отфильтровать входные данные, поступающие к важному приложению.

Сохраните страницу локально и удалите соответствующие JavaScript или VB скрипты или используйте локальный прокси типа Paros, Web Scarab, Burp Suite. Просмотрите исходный код на предмет наличия любых параметров, проходящих через сайт, которые могут быть отфильтрованы при помощи JavaScript или VB скрипт, и удалите их.

Я говорю им: «ОК, разработчик, я хочу, чтобы вы подумали об этом, ведь вы собираетесь разместить всю эту безопасность в хакерском ноутбуке! Если вы только что заключили с человеком эту долбанную сделку, учтите, что всё плохое происходит на машине клиента, поэтому нужно преподать разработчикам эти маленькие уроки. Поэтому, ребята, не используйте фильтрацию на клиентской стороне! Как вы думаете, это правильно»?

Часто люди пытаются ограничить использование специальных символов. Далее следуют ограничения «черного списка». Хорошо, допустим, вы не можете отправить знак равенства, знаки «больше-меньше» и им подобные.

Например, в запросе http://[site]/page.asp?id=2 or 1 like 1, вы можете вообще избежать использования знака «равно» и оператора «или», заменяя их в адресной строке словами «и» и «как», например, «и 1 как 1», «и 1 как 2» и так далее: Но что касается синтаксиса SQL, то вам не обязательно указывать, что 1=1.

http://[site]/page.asp?id=2 and 1 like 1
http://[site]/page.asp?id=2 and 1 like 2

Скажите, у кого из вас на коврике для мыши имеется такая таблица? Фактически SQL-инъекции в большинстве случаев не использую специальные символы.
Далее рассмотрим IDS на основе сигнатур. Если у вас имеется таблица десятичных кодов ASCII или HEX кодов, порвите её вместе с этим ковриком.

Итак, когда вы имеете дело с IDS и получаете оповещение TCP с любого IP, с любого порта, поступающее на порт нашего веб-сервера, то ищите особый тип данных 1=1. Что я узнал прошлой ночью, когда был пьяный в стельку, это то, что ASCII действительно работает! Давайте подумаем об этом. Давайте подумаем, как много хакеров удалось поймать на этой штуке?

Сорок унций равный сорока унциям? 2 равно 2? Если сигнатуры так легко обойти, то для чего они нужны? 1=1 – не единственный способ создать запрос, на который можно получить ответ «true», вы можете посылать запрос типа «2=2», «1< 2» и так далее. Отвечаю – для автоматических инструментов и детишек.

На следующем слайде показано моё видение IDS на основе сигнатур – это вратарь, поймавший 1 мяч, в то время как сотня мячей пролетела сквозь ворота.

Утилита для пентестера под названием sqlmap по умолчанию отлично обходит эту защиту, которую я вам показал, к тому же она написана на Python!

Здесь для обхода я использовал технику «2 or 2» и выбрал пользователя. Аналогичная вещь показана на следующем слайде.

В данном случае я представил всё выражение в шестнадцатеричном коде, но вы можете сделать это в Юникоде, utf7, utf-8, utf-16, в любой кодировке, это не имеет значения, данный способ всё равно работает и позволяет обойти многие WAF.

Если вы зайдёте по адресу demo.phpids.net, то сможете попробовать «дымовой тест». Есть ещё один продукт в области PHP – это PHP IDS, я думаю, чертовски круто то, что теперь у них на сайте есть демонстрация его возможностей. Этот Smoketest позволяет вам попробовать все ваши SQL-инъекции, межсайтовый скриптинг или атаки веб-приложений и покажет вам, какие сигнатуры выявляют эти атаки, так что вы можете продолжать практиковать кун-фу в интернете.

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

Я не добавил его к моим слайдам из-за утреннего похмелья, но скажу, что им удалось объединить набор правил Modsecurity с набором правил PHP IDS в одном веб-интерфейсе, так что вы просто вставляете туда свои эксплойты, пока не обойдёте все правила. Сейчас Modsecurity объединилась с PHP IDS, и у них есть свой собственный «дымовой тест». По крайней мере, у меня не было клиентов, которые разбирались бы в этих продуктах, но они их всё равно покупали. Короче говоря, IDS на основе сигнатур – это просто дурацкая шутка. Но это уже немного другая история.

Я знаю, что много болтаю, но я чувствую вашу боль, потому что раньше выполнял вашу работу, и в мире не хватит выпивки, чтобы выдержать работу, которую вы делаете. Я прекрасно понимаю тех из вас, кто является аналитиками IDS и WAF.

Как я уже говорил, вы взаимодействуете с IDS и IPS удаленно, загружая различные эксплойты. Итак, подавляющее большинство вещей, которые я показывал вам только что, делаются через сеть. SQL-инъекция просто кодирует некоторые пути, по которым я могу в него попасть, что обычно даёт мне доступ к оболочке и DMZ, и я стараюсь работать оттуда. Кто из вас имел дело с JBoss, сервером приложений с открытым исходным кодом, знает, что большинство файлов загружается с его помощью.

Ваша клиентская сторона с фреймворком Metasploit выглядит просто чудесно, поэтому можно выбрать всё, что поддерживает последняя версия браузера, PDF, ActiveX или эксплойт в виде файла, убедиться, что это реверсирует оболочку TCP, после чего Metasploit превращает это сообщение в HTTPS. После этого я делаю невероятную вещь и посылаю клиенту электронное письмо, потому что это срабатывает. Но инструмент SET, написанный на Python – это совершенно новый уровень пентестинга. Всё замечательно, плохо лишь, что это написано на Ruby.

SET создал Дэвид Кеннеди из группы ReLic, давайте ему поаплодируем за это. Это инструмент позволяет выполнять невероятные вещи. Хакеры не сканируют больше порты вашей сети, не если они пытаются это проделать, то в любом случае, вероятно, не собираются завладеть оболочкой. Это именно то, что нам нужно для того, чтобы проиллюстрировать суть происходящего. Хакеры пытаются загрузить вам что-то вредоносное, используя для этого электронную почту или что-то вроде этого.

Особенно, если вы сталкиваетесь с таким клиентом, который был у меня – он встал и сказал: «ОК, Джо, я не собираюсь платить тебе за совет научить работников компании правильно пользоваться сетью». Поэтому нужно, чтобы клиент понимал, что во время пентестинга необходимо опробовать его систему на стойкость к воздействию мошеннических сайтов, фишингу и тому подобному. Так что вы должны воспроизвести все реальные угрозы на стороне клиента, чтобы он понял, насколько это серьёзно.

«Поворотная атака» на LAN является важной частью пентестинга на клиентской стороне. Итак, следующий этап пентестинга – это Pivot Attack, или «поворотная атака», при которой один взломанный хост используется для атаки на другие хосты.

Я использую это в своей мастерской для того, чтобы осуществить разворот Pivot в сети LAN, так что я в неё «запрыгиваю» и начинаю двигаться оттуда. Metasploit поддерживает Pivot, и если у меня нет возможности загрузить архив .cab со всеми исполняемым файлами, которые были заранее статически скомпилированы, то здесь не нужно ничего устанавливать.

Это отсутствие DHCP, то есть статические IP адреса, DHCP MAC адреса, безопасность портов, решения NAC – вещи, из-за которых я не могу попасть в сеть. Следующая вещь, которую я рассматриванию, это общие решения безопасности для сети LAN. Итак, что я делаю, если не могу попасть в сеть?

Этому научили меня мои дети, потому что статические IP адреса невероятно неэффективная вещь. Если отсутствует DHCP, и IP адреса статические, то я краду с хоста действующий IP-адрес. Аналогично я поступаю при наличии DHCP MAC адресов – я краду действующий MAC адрес. Надеюсь, у вас нет клиентов, которые говорят, что собираются остановить хакеров, используя статические IP-адреса. Наконец, если имеют место решения NAC, можно просто поднять компьютер, перевернуть его и посмотреть его MAC адрес, либо попытаться найти исключения протокола 802. Если у нас есть безопасный порт, я так же краду действующий IP или MAC адрес. 1x, такие, как принтеры, копировальные аппараты, стойки CD-ROM и телефоны стандарта VoIP. 1x, то есть устройства, не поддерживающие 802.

У меня было множество клиентов, которые использовали автоматическую авторизацию VoIP телефонов в голосовой сети на основе MAC-адреса и метки VLAN. У меня все эти приёмы срабатывают, причём самым лучшим устройством для проникновения в LAN являются VoIP телефоны. Так что можно сделать «коробку» Linux, похожую на VoIP телефон, и врезаться в голосовую виртуальную сеть LAN, обойдя решения NAC.

Большинство телефонов моих клиентов должны были быть связаны напрямую с программным центром СallManager во внутренней DMZ, потому что все центры СallManager должны работать с остальными серверами, так что мой приём отлично срабатывал для целой сети.

Этот эксплойт можно скачать с сайта voiphopper.sourceforge.net и с его помощью «запрыгнуть» прямо во VLAN. Существует вещь под названием Voip Hopper, которая автоматизирует процесс проникновения в голосовую VLAN.

На слайде вы видите перечень команд, которые я использую: set – чтобы узнать информацию о домене и пользователях, net view — чтобы увидеть компьютеры сети, пользовательские домены и другие домены, net localgroup – чтобы узнать локальные группы компьютеров и так далее. Когда я проникаю внутрь сети, то обычно первым делом выясняю, кто является администратором домена.

Ещё лучше, если я смогу заполучить локального администратора или локальную систему, поэтому следующее, что я делаю – это просматриваю сеть для того, чтобы определить, кто является конкретным пользователем данного компьютера. Я делаю это, чтобы выяснить, кто и в каких группах работает в сети, чтобы попытаться атаковать их компьютеры.

Если вы «поймали» локального администратора или локальную систему, то можете «запрыгнуть» в их «коробку» и оттуда использовать оболочку pcexec. Можно использовать самые различные скрипты для осмотра сети, чтобы выяснить, где, на какой машине расположена «коробка» администратора.

Наращивание привилегий – действительно трудная вещь. После того, как я запрыгиваю в «коробку», я начинаю искать способ увеличить свои привилегии. В Windows XP эти вещи срабатывают даже с пакетом обновлений Sp3, который использует этот красивый интерфейс командной строки cmd.exe, это шикарная штука.

Для этого я использовал команду pskill.exe. Когда я проводил пентестинг одного банка, мне пришлось «убить» сервис фреймворка McAfee, который относится к системе предотвращения вторжений HIPS. Итак, я отключил McAfee, отключил HIPS, отключил агент-перехватчик и firepm и все остальные процессы, запущенные системой предотвращения вторжений.

Дело в том, что после того, как вы «убьете» все эти процессы, через некоторое время они запускаются снова. Ещё одна вещь, которую я не успел показать на слайде, связана с тем, что когда вы отключаете McAfee, в первую очередь вам необходимо увеличить привилегии, и это срабатывает также в отношении Symantec endpoint protection. Я не разместил это на слайдах, но если вы напомните позже, то я дам вам синтаксис для выполнения этого трюка.
Ещё одна вещь, которую я только что узнал о McAfee, заключается в том, что файлы в списке исключений значатся по конкретному имени, а не по хешу или чему-то подобному. Поэтому вам нужно «отцепить» DLL файлы, находящиеся в памяти, чтобы прекратить перезапуск защиты. Поэтому файлы, попавшие в список исключений антивируса McAfee, не защищены от переполнения буфера, и я собираюсь воспользоваться этим обстоятельством в своих целях.

Теперь у них появилось нечто под названием getsystem, так что вы можете просто написать Metasploit, вызвать getsystem и она забросит вас прямо в систему при помощи одного из четырех методов: остановки общей антивирусной защиты, остановки HIPS, «убийства» процессов McAfee или «убийства» процессов HIPS. Далее показано «убийство» HIPS как системы с Metasploit.

Последнее, что я хотел показать — это захват домена.

Олицетворив администратора домена, я создаю группу пользователей и добавляю их в администраторскую группу. Как только я добираюсь до «коробки» администратора, я использую все украденные мною токены и начинаю пользоваться его полномочиями. Для моих целей это отлично работает.

Там написано, как осуществить атаку и как от неё защититься. Что касается защиты, то у меня найдётся по 1-2 страницы документации по защите от каждой из атак, о которых я сегодня рассказал. Так что если вам нужна такая информация, обращайтесь ко мне, все контакты приведены на слайде.

Если ко мне нет вопросов, то на этом я закончу.

Вам нравятся наши статьи? Спасибо, что остаётесь с нами. Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? Хотите видеть больше интересных материалов? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps до января бесплатно при оплате на срок от полугода, заказать можно тут.

класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки? Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть