ua-hosting.company corporate blog
IT Infrastructure
Information Security
Conferences
Programming
December 2018 9

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

Original author: Джозеф МакКрэй
Translation
Конференция DEFCON 18. Вы потратили все эти деньги, но вас продолжают «иметь». Часть 1

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



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



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



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

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



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

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



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

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



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

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

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



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

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

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



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



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

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



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

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



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

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



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



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

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



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

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



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

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

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



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

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

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

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

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

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

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



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



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



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

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



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

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



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



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



Что касается защиты, то у меня найдётся по 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 до января бесплатно при оплате на срок от полугода, заказать можно тут.

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