loremOS Admin

"Системное администрирование – это культура"

Безопасность... Где? Точно не в Viber. Продолжение

Опубликовано 14th Aug 2018 12:53:54 в категории Linux

Здравствуйте, друзья. Я недавно писал пост про то, что с Viber творится что-то не то. Если не читали, рекомендую. Итак, с того момента прошло какое-то время. Мне приходилось раз в пару дней добавлять новый адрес в обход SSLBump (адреса dl-media.viber.com, media.cdn.viber.com и так далее), чтобы эта чертовщина работала, что мне не давало покоя. Хочу сразу сказать, что предыдущим постом я чуть ошибся, а точнее был немного неправ. Я слишком недооценил всю суть проблемы. Почему? об этом ниже.
Итак, попробуем без прокси проверить серверы Viber на вшивость кое-какие вещи:
[admin@sysadmin ~]$ openssl s_client -connect viber.com:443
CONNECTED(00000003)
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
verify return:1
depth=0 C = LU, ST = Luxembourg, L = Luxembourg, O = Viber Media S.a r.l., OU = IT, CN = www.viber.com
verify return:1
---
Certificate chain
0 s:/C=LU/ST=Luxembourg/L=Luxembourg/O=Viber Media S.a r.l./OU=IT/CN=www.viber.com
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=GeoTrust RSA CA 2018
1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=GeoTrust RSA CA 2018
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIKFDCCCPygAwIBAgIQBnbkn3QZZC7FTXG40q1M2TANBgkqhkiG9w0BAQsFADBe
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMR0wGwYDVQQDExRHZW9UcnVzdCBSU0EgQ0EgMjAxODAe
Fw0xODA2MjYwMDAwMDBaFw0xOTA2MjYxMjAwMDBaMHsxCzAJBgNVBAYTAkxVMRMw
EQYDVQQIEwpMdXhlbWJvdXJnMRMwEQYDVQQHEwpMdXhlbWJvdXJnMR0wGwYDVQQK
ExRWaWJlciBNZWRpYSBTLmEgci5sLjELMAkGA1UECxMCSVQxFjAUBgNVBAMTDXd3
dy52aWJlci5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfrq8P
0r0WjvLoPfYSod209jOaajahrRJCKC0CvTxBHGjx0edI3f3l8AFKv/U3OwQYgxcS
/2L4wfY0J2AhIIwUFyWpRCpFjWerO7CAYDQT91aevNoMQLR9qbEd+4uxJ6seYnQT
gFpw8rkKxyKuIc5zZmZFW0HCvqK/9exP1BTM/Wi76PI0XKeMnNlX3pYTrWXP0iYF
mowDpBnHLwI5OZ+BHm9LS5hE51IpGB+6qXlt5E6qvpo35V1jMHUnZ04YfurFggYz
9yvB11+qOKTpVjT1sp7US4dlkQwCDBI9v+C0rkiiZOtqzjSlts+CnlqHW6IbUV3t
eMgN6HSyz/UjVo3BAgMBAAGjggavMIIGqzAfBgNVHSMEGDAWgBSQWP+wnHWoUVR3
se3yo0MWOJ5sxTAdBgNVHQ4EFgQUTgOTCjWQ3/L1ri3n2eyztPnFcmIwggQgBgNV
HREEggQXMIIEE4INd3d3LnZpYmVyLmNvbYIJdmliZXIuY29tghJkaXNjb3Zlci52
aWJlci5jb22CHGludml0ZS5pbnRlZ3JhdGlvbi52aWJlci5jb22CE3BnLXZiLmNk
bi52aWJlci5jb22CEnBhcnRuZXJzLnZpYmVyLmNvbYIZdW52LmludGVncmF0aW9u
LnZpYmVyLmNvbYIQd3d3LXdwLnZpYmVyLmNvbYIcc3RhdGljLmludGVncmF0aW9u
LnZpYmVyLmNvbYISc3RpY2tlcnMudmliZXIuY29tghRkZXZlbG9wZXJzLnZpYmVy
LmNvbYIabGl2ZS5pbnRlZ3JhdGlvbi52aWJlci5jb22CDXVudi52aWJlci5jb22C
FmRvd25sb2FkLmNkbi52aWJlci5jb22CJXBhcnRuZXJzLW9mZmljZS5pbnRlZ3Jh
dGlvbi52aWJlci5jb22CGXd3dy5pbnRlZ3JhdGlvbi52aWJlci5jb22CH3NoYXJl
LmNkbi5pbnRlZ3JhdGlvbi52aWJlci5jb22CG2Fkcy1kLmludGVncmF0aW9uLnZp
YmVyLmNvbYIiZ3JvdXAtdmIuY2RuLmludGVncmF0aW9uLnZpYmVyLmNvbYIfcGct
dmIuY2RuLmludGVncmF0aW9uLnZpYmVyLmNvbYIPYWRzLWQudmliZXIuY29tghlw
YXJ0bmVycy1vZmZpY2UudmliZXIuY29tghF3d3cuY2RuLnZpYmVyLmNvbYIPdmli
ZXMudmliZXIuY29tghZncm91cC12Yi5jZG4udmliZXIuY29tghBtYXJrZXQudmli
ZXIuY29tghBpbnZpdGUudmliZXIuY29tgg5wZ3dzLnZpYmVyLmNvbYISZG93bmxv
YWQudmliZXIuY29tghx3d3ctd3AuaW50ZWdyYXRpb24udmliZXIuY29tghB2aWJl
czEudmliZXIuY29tghpzdGF0aWNwaG90b3MuY2RuLnZpYmVyLmNvbYIecGFydG5l
cnMuaW50ZWdyYXRpb24udmliZXIuY29tgiZzdGF0aWNwaG90b3MuY2RuLmludGVn
cmF0aW9uLnZpYmVyLmNvbYIYbWFya2V0LWFwaS5jZG4udmliZXIuY29tghF2YmQu
Y2RuLnZpYmVyLmNvbYIhY29udGVudC5jZG4uaW50ZWdyYXRpb24udmliZXIuY29t
ghVjb250ZW50LmNkbi52aWJlci5jb22CEHN0YXRpYy52aWJlci5jb22CE3NoYXJl
LmNkbi52aWJlci5jb22CEHBnLmNkbi52aWJlci5jb22CHHBnLmNkbi5pbnRlZ3Jh
dGlvbi52aWJlci5jb22CDXZiZC52aWJlci5jb22CDmxpdmUudmliZXIuY29tMA4G
A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwPgYD
VR0fBDcwNTAzoDGgL4YtaHR0cDovL2NkcC5nZW90cnVzdC5jb20vR2VvVHJ1c3RS
U0FDQTIwMTguY3JsMEwGA1UdIARFMEMwNwYJYIZIAYb9bAEBMCowKAYIKwYBBQUH
AgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQICMHUGCCsG
AQUFBwEBBGkwZzAmBggrBgEFBQcwAYYaaHR0cDovL3N0YXR1cy5nZW90cnVzdC5j
b20wPQYIKwYBBQUHMAKGMWh0dHA6Ly9jYWNlcnRzLmdlb3RydXN0LmNvbS9HZW9U
cnVzdFJTQUNBMjAxOC5jcnQwCQYDVR0TBAIwADCCAQQGCisGAQQB1nkCBAIEgfUE
gfIA8AB2AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABZDxWrxkA
AAQDAEcwRQIhAKfXH5bZr25ytzur9yCef8koGkSw48LZ2PzH/Oj3YAlfAiABhFVJ
xOdesBlgtf4PFsV79dDRf57kWZpiv9dn11GKlwB2AId1v+dZfPiMQ5lfvfNu/1aN
R1Y2/0q1YMG06v9eoIMPAAABZDxWr/QAAAQDAEcwRQIgbCz1T9HOmNkeQ8XGmTf5
7X8UkuYiGvngRlb6jnaW3t4CIQCNJbqZ+NxSlvh6DYhUZkjRRtnIyQkQiP02wgPK
F2/ekDANBgkqhkiG9w0BAQsFAAOCAQEAfVXwt3FHDf6Lp8JTUam3KKie77J2Aim0
m/iNM6r206+yuXAUf4Y9InCsk+C0r+RqNzhgP/yUA9ooTgOxYtGRAU79IhuXNTF1
BAXpNEyY/l4j5fc8YN9ei1d8VXzBH2KGsZzYmeHUO0ONTSMHmgbNOATBj/RoFXI6
6aeAwzoimJzOYs0h1Bf17dVZSTuVmSWaY+OBuIOfgXVWvW9dGs9vc7ewZV+iA2/m
mNu3bdqTUQp58RAwWTw4UqwGDv7eHDBReRdo8bUTgT2vMYBv9XJdNa+zTL8ZaY5W
aOWWsP4iFA2X6hZi2dLmv1RxuBW+JURk7WgC/I3fNjaLp8Bm89+Xsw==
-----END CERTIFICATE-----
subject=/C=LU/ST=Luxembourg/L=Luxembourg/O=Viber Media S.a r.l./OU=IT/CN=www.viber.com
issuer=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=GeoTrust RSA CA 2018
---
No client certificate CA names sent
Peer signing digest: SHA256
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 4408 bytes and written 302 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: 4FD273B725F6BDBCBE9C8CED7DC2D3484CE56010EFDD23BC3DC80779994FA224
Session-ID-ctx:
Master-Key: 9A5351D58C3B3CEA01C04821AB454EDCD9ECD588551FDBBEE24332FD749B5A962D64A7946545F63D42606D0E93FDC104
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 7200 (seconds)
...............

Всё вроде бы нормально. Идем дальше, проверим один из медиасерверов Viber
[admin@sysadmin ~]$ openssl s_client -connect dl-media.viber.com:443
CONNECTED(00000003)
140152285385152:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:ssl/record/rec_layer_s3.c:1407:SSL alert number 40
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 176 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1534238024
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
---

Что мы тут видим? Я в прошлый раз не обратил внимания, за что каюсь, но сейчас вижу, и очень рекомендую внимательно рассмотреть выхлоп терминала.
SSL routines:ssl3_read_bytes:sslv3 alert handshake

Эта строка означает, что где-то идёт понижение протокола. Как мы знаем, SSLv3 не просто устарел, он НЕБЕЗОПАСЕН. SSLv3 выпилен из Openssl и использоваться не должен в принципе. Вопрос: какого чёрта на корневом домене Viber всё отлично, а до медиасерверов идёт понижение до SSLv3? При SSLv3 возможна атака типа padding (см. эту сцылку ещё разок) с полной дешифровкой до plain... А может быть, понижение идёт где-то вот тут вот, рядышком? Проверим:
[admin@sysadmin ~]$ openssl s_client -tls1_2 -connect dl-media.viber.com:443
CONNECTED(00000003)
140432972521920:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:ssl/record/rec_layer_s3.c:1407:SSL alert number 40
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 176 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported

Даже при указании принудительного использования TLS1.2, мы всё равно имеем ошибку SSLv3, что означает понижение протокола "где-то там", на стороне провайдера. Данная проблема наблюдается на абсолютно всех найденных мной медиасерверах Viber, можете проверить сами, если вы из РФ (коллега из Казахстана сообщил, что у него понижения протокола нет).
Далее. Чтобы снова не быть голословным, проведем ещё один эксперимент. Пропустим весь трафик через Squid с включенным SSLBump, и проверим один из медиасерверов Viber:
[admin@sysadmin ~]$ curl -v https://dl-media.viber.com
* Rebuilt URL to: https://dl-media.viber.com/
* Trying 13.33.35.147...
* TCP_NODELAY set
* Connected to dl-media.viber.com (13.33.35.147) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: CN=dl-media.viber.com
* start date: Jun 17 17:00:20 2018 GMT
* expire date: Mar 8 17:00:20 2931 GMT
* subjectAltName: host "dl-media.viber.com" matched cert's "dl-media.viber.com"
* issuer: C=RU; ST=Some-State; O=Internet Widgits Pty Ltd
* SSL certificate verify ok.
> GET / HTTP/1.1
> Host: dl-media.viber.com
> User-Agent: curl/7.61.0
> Accept: */*
>
< HTTP/1.1 500 Internal Server Error
< Server: squid
< Mime-Version: 1.0
< Date: Tue, 14 Aug 2018 05:28:43 GMT
< Content-Type: text/html;charset=utf-8
< Content-Length: 3791
< X-Squid-Error: ERR_CANNOT_FORWARD 0

И получаем фигу в виде ошибки 500 (Cannot forward). Дело в том, что в Squid выпилен SSLv3, и вообще запрещен, его там попросту нет. Squid защищает от использования данного протокола и выдаёт ошибку. Если же мы пропустим мимо Bump медиасервер Viber (через Splice), то получаем снова:
[admin@sysadmin ~]$ openssl s_client -connect dl-media.viber.com:443
CONNECTED(00000003)
140432972521920:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:ssl/record/rec_layer_s3.c:1407:SSL alert number 40
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 176 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported


При splice домена,  Squid не вмешивается в туннель и соответственно пускает его к клиенту.


А теперь другой вопрос: если имеет место понижение протокола до SSLv3, в чём я не сомневаюсь нисколько, то как же Viber работает?


SSLv3 не просто устарел, как я уже говорил, он признан небезопасным, и довольно давно. А всё довольно просто. Viber имеет, судя по всему, кастомную ssl библиотеку, которая позволяет ему коннектиться к медиасерверам при понижении протокола. А теперь соберем воедино полученную информацию: в РФ от клиента к медиасерверам Viber производится понижение протокола до SSLv3, в том же Казахстане такого не наблюдается. Даже при понижении до SSLv3 Viber работает как ни в чем не бывало. Что это может означать? В Viber встроено всё, чтобы в случае необходимости отдать кому нужно необходимые данные, а в нашем случае на магистралях есть кто-то или что-то, понижающее безопасность, что чревато тем, что медиатрафик может быть расшифрован, что судя по всему допускается со стороны Viber по-умолчанию для разных спецслужб, полиции и не только.
Многие скажут, что ему нечего скрывать и вообще, аффтар параноик, шизоид, и так далее. Серьезно? Скрывать нечего? Скажите это тем, кто за безобидные картиночки сейчас имеют проблемы с законом. И да, коли смотреть трафик позволяется гос.органам, то как вы думаете, смогут ли трафик увидеть другие посторонние лица? То то же. А теперь еще раз подумайте над тем, есть ли что-то скрывать. Всем нам, порядочным людям, скрывать нечего, но и бегать без трусов перед всеми подряд тоже как-то совсем не алё, согласитесь? К тому же, есть такая вещь, как личная жизнь. С Viber она уже какая-то не личная, а скорее похожа на публичный домик с блекджеком и кучей шл*х.
Хочу подчеркнуть, что это началось совсем недавно, менее месяца назад, до этого Viber работал отлично (за исключением случая с блокировкой со стороны РКН, разумеется), причем медиасерверы по одному начали выдавать такие вот ошибки, с промежутком в день-два.

Можете считать эту статью фейком, можете не верить, а можете поверить и ничего не делать, это ваше право. Но если вам не плевать на себя и свою приватность, если вам не плевать на свои права, то перепроверьте то, о чем я писал здесь, это совсем несложно (Squid можете не ставить, достаточно с помощью Openssl проверить коннект), и если вы из РФ, то убедитесь, что я прав.
Что делать? Вы ничего не сделаете, если происходит принудительное понижение протокола на стороне. Для вас два выхода: использовать Viber дальше или удалить свой аккаунт оттуда. Выбирайте сами, что делать.

С уважением


Поделиться:


Теги