В этой статье я расскажу о проблемах, тотальной бесполезности и вреде TLS в сети TOR для .onion сервисов, также я приведу код, который доказывает это на примере с аутентификацией.
Сперва я объясню бесполезность TLS в TOR.
В каждом бразуере есть список авторитарный CA. Один из CA (провайдеров TLS) подписывает публичный ключ вебсайта. Таким образом, клиент может быть уверен в том, что публичный ключ который сообщил ему вебсайт - действителен.
Это не имеет никакого смысла в tor. Tor сервис также использует асимтричное шифрование - передаёт публичный ключ. Сам tor адрес же служит хешсуммой публичного ключа, подписывая его просто своим существованием :)
TLS мог бы понадобиться для шифрования, если бы не было верификации публичного ключа, поэтому условие противоречиво.
Вторая причина, для чего нужен TLS, однако не справляться с этим в Tor - авторизация. Она необходима для борьбы с фишингом, по идее, фишинговые сайты не должны получать подпись от CA. spoiler (Однако если ты её получил для своего сайта не легитимно, этого достаточно, чтобы понять, что это не работает).
Взаимодействие с TLS на стороне атакующего будет происходить так же, как если бы оно происходило между пользователем и конечным сервером.
Это означает, что вариант в котором TLS действительно мог бы быть необходим, подразумевает отсутствие оверлейного шфирования от адреса самого домена, что исключает его наличие. И если сам адрес не известен наверняка - его можно подменить.
Я считаю, что MITM в Tor возможен при подмене адреса самого сервиса, ведь Tor не имеет индексации, а значит, как и адрес, TLS может быть опущен или на фейковый .onion домен может быть подвязан TLS.
Пример с HTTP я описал в /threads/952/
Обыкнованная коммуникация:
Вредоносно:
В случае с использованием TLS, возможна коммуникация между сервером атакующего, TLS и конечным сервером, а пользователь получает лишь обычный http.
Нормально:
Вредоносно:
Более того, к этому механизму, на стороне атакующего, можно добавить и TLS:
Видео пруф:
https://vidplay.io/stream/CWn7Dj6yWF8ah4dckDK58w (клирнет)
Браузеры при HTTPS отправлют OCSP запросы для проверки валидности сертификата или проверяют, отозван ли он через CRL. Запросы идут к CA через обычный интернет, а не Tor.
DPI увидит, что пользователь проверяет сертификаты для конкретного домена.
Эта проблема не решена в браузере Tor Browser и это уязвимость!
Полумера:
В браузере установите параметр security.OCSP.enable на false.
Для Tor Browser необходимо открыть about:config
В поиске вбить "security.OCSP.enable" и поменять значение с 1 на
0
На этом статья подошла к концу! Не используйте TLS в Onion и сохраняйте ссылки на ваши любимые платформы!
Не удалось прогрузить медиа
Сперва я объясню бесполезность TLS в TOR.
В каждом бразуере есть список авторитарный CA. Один из CA (провайдеров TLS) подписывает публичный ключ вебсайта. Таким образом, клиент может быть уверен в том, что публичный ключ который сообщил ему вебсайт - действителен.
Это не имеет никакого смысла в tor. Tor сервис также использует асимтричное шифрование - передаёт публичный ключ. Сам tor адрес же служит хешсуммой публичного ключа, подписывая его просто своим существованием :)
TLS мог бы понадобиться для шифрования, если бы не было верификации публичного ключа, поэтому условие противоречиво.
Вторая причина, для чего нужен TLS, однако не справляться с этим в Tor - авторизация. Она необходима для борьбы с фишингом, по идее, фишинговые сайты не должны получать подпись от CA. spoiler (Однако если ты её получил для своего сайта не легитимно, этого достаточно, чтобы понять, что это не работает).
Взаимодействие с TLS на стороне атакующего будет происходить так же, как если бы оно происходило между пользователем и конечным сервером.
Это означает, что вариант в котором TLS действительно мог бы быть необходим, подразумевает отсутствие оверлейного шфирования от адреса самого домена, что исключает его наличие. И если сам адрес не известен наверняка - его можно подменить.
Я считаю, что MITM в Tor возможен при подмене адреса самого сервиса, ведь Tor не имеет индексации, а значит, как и адрес, TLS может быть опущен или на фейковый .onion домен может быть подвязан TLS.
TL;DR
TLS не имеет смысла, с TLS .onion сервисы можно взламывать настолько же просто, как и без TLS, разницы никакой нет. Саму функцию TLS выполняет и заменяет .onion адрес сервиса, который и служит верификацией публичного ключа
Пример с HTTP я описал в /threads/952/
Обыкнованная коммуникация:
USER <--> ONION SERVER
Вредоносно:
USER <--> ATTACKER(FAKE) <--> ONION SERVER
В случае с использованием TLS, возможна коммуникация между сервером атакующего, TLS и конечным сервером, а пользователь получает лишь обычный http.
Нормально:
USER <--> ONION SERVER
,,,,,,,,,,,,,,,,,,,,,,,,<-- TLS
Вредоносно:
USER <--> HTTP FAKE <--> ONION SERVER
,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,<-- TLS
Более того, к этому механизму, на стороне атакующего, можно добавить и TLS:
USER <--> FAKE <--> ONION SERVER
,,,,,,,,,,,,,,,,,,,,,,<-- TLS ,,,,,,,,,,,,,<-- TLS
Спойлер: Адаптация фреймворка для TLS
PoC код не претерпел существенных измнений.
Отключение предупреждений TLS
Заменить обращение с http на https
Игнор предупреждений
Блокировка заголовков для обхода HSTS/CSP
Подмена Location
Подмена в js, xml, json
Отключение предупреждений TLS
Python:
import urllib3
from urllib.parse import urlparse, urlunparse
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
Заменить обращение с http на https
Python:
u = f'https://{TGT}{self.path}'
Игнор предупреждений
Python:
r = requests.request(
self.command, u, headers=hdrs, data=b,
allow_redirects=False,
proxies={'http': SOCKS, 'https': SOCKS},
timeout=30, verify=False
)
Блокировка заголовков для обхода HSTS/CSP
Python:
if kl in {'content-length', 'transfer-encoding', 'content-encoding',
'connection', 'strict-transport-security', 'content-security-policy'}:
continue
Подмена Location
Python:
if kl == 'location':
p = urlparse(v)
v = urlunparse(('http', RPL, p.path or '/', p.params, p.query, p.fragment))
Подмена в js, xml, json
Python:
if ct.startswith(('text', 'application/json', 'application/xml', 'application/javascript'))
Видео пруф:
https://vidplay.io/stream/CWn7Dj6yWF8ah4dckDK58w (клирнет)
Браузеры при HTTPS отправлют OCSP запросы для проверки валидности сертификата или проверяют, отозван ли он через CRL. Запросы идут к CA через обычный интернет, а не Tor.
DPI увидит, что пользователь проверяет сертификаты для конкретного домена.
Эта проблема не решена в браузере Tor Browser и это уязвимость!
Полумера:
В браузере установите параметр security.OCSP.enable на false.
Для Tor Browser необходимо открыть about:config
В поиске вбить "security.OCSP.enable" и поменять значение с 1 на
0
На этом статья подошла к концу! Не используйте TLS в Onion и сохраняйте ссылки на ваши любимые платформы!
Автор @ec5745y
Специально для forum.LIMB.cc
Специально для forum.LIMB.cc
👍76
❤️11
🔥14
😁9
😢9
💯8
LIMB