Настройка ssl bumping в сервисе squid
Рекомендуется настроить SSL Bumping в сервисе Squid для обработки шифрованных соединений. Если SSL Bumping не настроен, то прокси-сервер не может вмешаться в процесс установки шифрованного соединения. В этом случае модули защиты Kaspersky Web Traffic Security (Антивирус и Анти-Фишинг) не могут проверить данные, передаваемые внутри шифрованного канала связи. Это снижает уровень защиты IT-инфраструктуры организации.
Для работы SSL Bumping требуется SSL-сертификат и приватный ключ в формате PEM. Вы можете создать новый самоподписанный SSL-сертификат или использовать готовый (например, SSL-сертификат, выданный центром сертификации организации).
Если приватный ключ защищен паролем, его нужно предварительно расшифровать.
Чтобы настроить SSL Bumping в сервисе Squid, выполните следующие действия:
- Убедитесь, что используемый сервис Squid поддерживает необходимые опции. Для этого выполните команду:
squid -vПараметр
configure optionsдолжен содержать значения--enable-ssl-crtd и --with-openssl. - Скопируйте SSL-сертификат в формате PEM в файл /etc/squid/bump.crt.
- Скопируйте приватный ключ в формате PEM в файл /etc/squid/bump.key.
- Сгенерируйте файл параметров для алгоритма Diffie-Hellman. Для этого выполните команду:
openssl dhparam -outform PEM -out /etc/squid/bump_dhparam.pem 2048 - Настройте права на использование файла SSL-сертификата. Для этого выполните следующие команды в зависимости от используемой операционной системы:
- Определите версию сервиса Squid, используемую на вашем сервере. Для этого выполните команду:
squid -vИнформация об используемой версии отобразится в формате
Squid Cache: Version <версия>. - Остановите сервис Squid, если он запущен. Для этого выполните команду:
service squid stop - Если вы используете сервис Squid версии 3.5.х, выполните следующие действия:
- Создайте каталог для базы данных сертификатов и инициализируйте базу данных. Для этого выполните следующие команды в зависимости от используемой операционной системы:
- В конфигурационном файле /etc/squid/squid.conf выполните следующие изменения:
- В конец файла добавьте следующие директивы в зависимости от используемой операционной системы:
sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/squid/ssl_db -M 20MBsslproxy_cert_error allow allssl_bump stare allsslcrtd_program /usr/sbin/ssl_crtd -s /var/lib/squid/ssl_db -M 20MBsslproxy_cert_error allow allssl_bump stare allsslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/squid/ssl_db -M 20MBsslproxy_cert_error allow allssl_bump stare all - Замените директиву http_port на следующую:
http_port 3128 tcpkeepalive=60,30,3 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB cert=/etc/squid/bump.crt key=/etc/squid/bump.key cipher=HIGH:MEDIUM:!LOW:!RC4:!SEED:!IDEA:!3DES:!MD5:!EXP:!PSK:!DSS options=NO_TLSv1,NO_SSLv3,NO_SSLv2,SINGLE_DH_USE,SINGLE_ECDH_USE tls-dh=prime256v1:/etc/squid/bump_dhparam.pem
- В конец файла добавьте следующие директивы в зависимости от используемой операционной системы:
- Если вы используете сервис Squid версии 4.х, выполните следующие действия:
- Создайте каталог для базы данных сертификатов и инициализируйте базу данных. Для этого выполните следующие команды в зависимости от используемой операционной системы:
- В конфигурационном файле /etc/squid/squid.conf выполните следующие изменения:
- Добавьте в начало файла или перед первой директивой http_access следующие директивы:
acl intermediate_fetching transaction_initiator certificate-fetchinghttp_access allow intermediate_fetching - Добавьте в конец файла следующие директивы в зависимости от используемой операционной системы:
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MBsslproxy_cert_error allow allssl_bump stare allsslcrtd_program /usr/sbin/security_file_certgen -s /var/lib/squid/ssl_db -M 20MBsslproxy_cert_error allow allssl_bump stare allsslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MBsslproxy_cert_error allow allssl_bump stare all - Замените директиву http_port на следующую:
http_port 3128 tcpkeepalive=60,30,3 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=20MB tls-cert=/etc/squid/bump.crt tls-key=/etc/squid/bump.key cipher=HIGH:MEDIUM:!LOW:!RC4:!SEED:!IDEA:!3DES:!MD5:!EXP:!PSK:!DSS options=NO_TLSv1,NO_SSLv3,SINGLE_DH_USE,SINGLE_ECDH_USE tls-dh=prime256v1:/etc/squid/bump_dhparam.pem
- Добавьте в начало файла или перед первой директивой http_access следующие директивы:
- Перезагрузите сервис Squid. Для этого выполните команду:
service squid restart
Настройка SSL Bumping в сервисе Squid будет завершена.
В начало
Обходим проверку сертификата ssl

В этом кратком обзоре я хотел бы поделиться своим опытом, как отключить проверку SSL для тестовых сайтов, иначе говоря, как сделать HTTPS сайты доступными для тестирования на локальных машинах.
В современное время https протокол становится все популярней, у него масса плюсов и достоинств, что хорошо. Правда для разработчиков он может вызывать легкий дискомфорт в процессе тестирования.
Всем известно, что при посещении сайта у которого “временно” что-то случилось c сертификатом вы обнаружите предупреждение, которое показывается, если сертификат безопасности не является доверенным net::ERR_CERT_AUTHORITY_INVALID?
Привет онлайн-кинотеатрам
Все современные браузеры показывают сообщение об ошибке HSTS
Самый простой способ обхода данного запрета — это, разумеется, нажатие на вкладку “Дополнительные” и согласиться с Небезопасным режимом.

Но не во всех браузерах как оказывается, есть данная возможность. Так я столкнулся с данной проблемой в Chrome на Mac OS
Разработчики данной операционной системы настолько обеспокоены безопасностью пользователей, что даже убрали доступ в «Небезопасном режиме» к сайту, несмотря на то, что это сайт владельца устройства.
Ну что ж, поскольку, вести разработку в других, более сговорчивых браузерах было не комфортно, вот способы как обойти эту проблему:
— Все хромоподобные браузеры (Chrome, Opera, Edge …) могут открыть небезопасную веб страницу, если на английской раскладке клавиатуры набрать фразу:
thisisunsafe
прямо на данной веб странице. Это даст возможность работать с сайтом без оповещение об ошибке на момент текущей сессии браузера, пока вы не закроете вкладку Chrome.
— Если же вам предстоит более длительная работа с сайтом, то рекомендую для этих нужд создать отдельного тестового пользователя на рабочем столе и указать ему необходимы флаги.
Для Windows
C:Program Files (x86)GoogleChromeApplicationchrome.exe" --ignore-certificate-errors

Для Mac OS
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome --ignore-certificate-errors --ignore-urlfetcher-cert-requests &> /dev/null
Achtung! Данные манипуляции необходимо выполнять с выключенным Chrome приложением, иначе чуда не произойдет.
Если вы оставите сертификат ненадежным, то некоторые вещи не будут работать. Например, кэширование полностью игнорируется для ненадежных сертификатов.
Браузер напомнит, что вы находитесь в небезопасном режиме. Поэтому крайне не рекомендуется шастать по злачным сайтам Интернета с такими правами доступами.

*Так же есть метод с добавлением сертификатов тестируемого сайта в конфиги браузера Настройки->Безопасность->Настроить сертификаты->Импорт… но мне он показался не продуктивным и очень муторным, поэтому не привожу
Надеюсь моя краткая статья кому-то пригодится при разработке и тестировании сайтов =)
Подмена ssl сертификатов avast!’ом
Недавно экспериментировал с JavaMail и наткнулся на интересную «особенность» работы Avast! Mail Scanner (сканер). При включенном сканере не удавалось соединиться с SMTP сервером с включенным SSL/TLS, в частности с smtp.yandex.ru:465. Небольшое исследование показало, что эта проблема вызвана проблемой с сертификатом для этого сервера и эта проблема вызвана именно сканером.
При включенном сканере и попытке SSL соединения с smtp.yandex.ru:465 сертификат отдаваемый этим сервисом не проходит проверку. Внимательный взгляд на это сертификат показал, что выдан он «avast! Mail Scanner Root»:
[
Version: V3
Subject: EMAILADDRESS=pki@yandex-team.ru, CN=smtp.yandex.ru, ST=Russian Federation, L=Moscow, OU=ITO, O=Yandex LLC, C=RU
Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
Key: Sun RSA public key, 2048 bits
modulus: <опущено>
public exponent: 65537
Validity: [From: Tue Dec 10 14:22:38 MSK 2021,
To: Fri Dec 09 14:22:38 MSK 2021]
Issuer: CN=avast! Mail Scanner Root, O=avast! Mail Scanner, OU=generated by avast! antivirus for SSL scanning
SerialNumber: [ 0104a020]
Certificate Extensions: 8
[1]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: B8 3B 67 E0 33 60 3B 54 68 48 C2 B9 6D 59 43 28 .;g.3`;ThH..mYC(
0010: A5 61 91 7A .a.z
]
При отключении Avast! имеем:
[
Version: V3
Subject: EMAILADDRESS=pki@yandex-team.ru, CN=smtp.yandex.ru, ST=Russian Federation, L=Moscow, OU=ITO, O=Yandex LLC, C=RU
Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
Key: Sun RSA public key, 2048 bits
modulus: <опущено>
public exponent: 65537
Validity: [From: Tue Dec 10 14:22:38 MSK 2021,
To: Fri Dec 09 14:22:38 MSK 2021]
Issuer: CN=Certum Level IV CA, OU=Certum Certification Authority, O=Unizeto Technologies S.A., C=PL
SerialNumber: [ 134114dc 3d88f814 806682cc 0ef22bd4]
Certificate Extensions: 10
[1]: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
[
accessMethod: ocsp
accessLocation: URIName: http://ocsp.certum.pl
,
accessMethod: caIssuers
accessLocation: URIName: http://www.certum.pl/l4.cer
]
Соответственно, издатель сертификата валидный и всё работает нормально. Просто Java хранилище сертификатов не содержит доверенного сертификата от Avast! и закономерно ругается.
Вроде бы и понятно, что антивирус пытается сканировать шифрованый трафик, но таким макаром ему не составит никакого труда подписать/подменить и любой левый сертификат и пользователь даже не заметит этого, если пользуется штатными средствами Windows с использованием системного хранилища сертификатов, где авастовский прописывается при установке.
P.S Для просмотра сертификатов использовался InstallCert.java.
Подмена сертификата шифрования. настройка антивирусов для работы с продуктами скб контур.
Чтобы убедиться в отсутствии перешифровки https-трафика антивирусными программами или proxy, воспользуйтесь одним из способов ниже:
Зайдите на портал диагностики, в раздел «Проверка связи» (https://help.kontur.ru/check). Если в одной из строчек не стоит галочка, а значение в столбике «Сертификат» подсвечено красным, то происходит подмена сертификата. Название программы, подменяющей сертификат, указано в графе «Издатель».
2. Зайдите на сайт https://auth.kontur.ru, нажмите левой кнопкой мыши по значку «замкА» (возле адресной строки) либо правой кнопкой мыши на странице > Свойства > Сертификаты и проверьте, какой сертификат сервера предлагается. Сертификат должен быть таким:
Если сертификат другой, значит происходит перешифровка https-трафика. Название программы, подменяющей сертификат, указано в строке «Кем выдан».
Определите, какой программой выдан сертификат и настройте её таким образом, чтобы она не вмешивалась в работу наших сервисов. Инструкции по настройке программ, которые могут влиять на подмену сертификата, представлены ниже.
Отключите активную защиту для https-сайтов. Для этого кликните правой кнопкой мыши по значку Avast, который находится в области уведомлений, и выберите пункт «Открыть интерфейс пользователя Avast».
Перейдите в пункт «Настройки».
Выберите раздел Активная защита (или Компоненты) > Веб-экран > Настройки.
Снимите галочки со следующих пунктов и нажмите «ОК».
Отключите фильтрацию https-протоколов в ESET Smart Security. Для этого откройте ESET > Настройка > Дополнительные настройки (или Перейти к расширенным параметрам).
Перейдите в раздел Интернет и электронная почта > Защита доступа в интернет > Веб-протоколы > Настройка модуля > снимите галочку с пункта «Включить проверку протокола HTTPS».
В зависимости от версии Касперского некоторые элементы интерфейса могут отличаться.
Отключите фильтрацию https-протоколов, для этого снимите галочку о проверке протоколов https/защищенных соединений. Инструкция по настройке доступна по ссылке.
2. Отключите надстройки Kaspersky Internet Security. Для этого в Internet Explorer выберите вкладку Сервис > Настроить надстройки.
В разделе «Отображать» выберите пункт «Все надстройки». Найдите в списке надстройки Kaspersky Protection и Kaspersky Protection Toolbar, щелкните по строке правой кнопкой мыши и выберите пункт «Отключить».
3. Отключите внедрение скриптов Касперского и проверку защищенных соединений. Для этого откройте Kaspersky Internet Security > Настройки > Дополнительно > Сеть > Внедрять в трафик скрипт для взаимодействия с веб-страницами.
4. Откройте Kaspersky Internet Security > Настройки > Защита > Веб-Антивирус (или Веб-Защита).
Откройте Расширенные настройки и отключите «Автоматически активировать расширение Kaspersky Protection в браузерах».
5. Отключите проверку HTTPS-соединений. Для этого Откройте Kaspersky Internet Security > Настройки > Дополнительно > Сеть. В блоке «Проверка защищенных соединений» отключите опцию «Проверять защищенные соединения».
Отключите проверку HTTPS-соединений. Для этого откройте Dr.Web > Настройка > Основные > Сеть > Безопасные соединения. Установите переключатель «Проверять зашифрованный трафик» в положение «Откл.».
Отключите проверку HTTPS-соединений. Если в вашем браузере установлено дополнение AdGuard, для него ничего отключать не нужно. Если оно не установлено, то откройте программу «AdGuard» > Настройки > Общие настройки > уберите галочку с пункта «Фильтровать HTTPS протокол».
Проблемы перехвата трафика
В процессе тестирования на проникновение мобильных приложений на Android часто необходимо выяснить, каким образом приложение общается с сервером, с какими адресами происходит взаимодействие, как выглядят запросы, какие данные передаются. Но не всегда это удается сделать.
Способы защиты приложений
Для того чтобы понять, как обходить защиту, необходимо сначала разобраться, какими средствами эта защита осуществляется. Для этого существуют несколько способов.
Для данного способа необходимо добавить файл сертификата в файлы приложения, затем создать KeyStore и добавить в него наш сертификат.
После этого создаем сам TrustManager, который будет работать с нашим KeyStore, в котором находится нужный сертификат.
Далее создается SSLContext, который использует наш TrustManager. Затем указываем для URLConnection SocketFactory из созданного SSLContext.
Основная суть этого метода в том, что мы используем непосредственно сам файл сертификата в проекте, а затем создаем TrustManager, который будет работать только с этим сертификатом.
Данная реализация работает непосредственно с API на достаточно низком уровне, поэтому этот способ надо использовать осторожно.
Способы обхода механизмов защиты
Frida – инструмент для динамического внедрения кода в приложение. Утилита прямо в процессе работы приложения способна отслеживать вызовы методов приложения, модифицировать методы приложения, обращаться к памяти выполняемого приложения и многое другое.
Для обхода SSL Pinning с помощью Frida есть несколько готовых скриптов, создающих кастомный TrustManager, который будет доверять нашему сертификату. Рассмотрим скрипт.
CertificateFactory и X509Certificate нужны для создания экземпляра сертификата из считанного файла.
FileInputStream и BufferedInputStream используются для считывания файла сертификата.
KeyStore – наш кастомный KeyStore, в который положим наш сертификат.
TrustManagerFactory создает экземпляр TrustManager, который будет работать с нашим KeyStore.
SSLcontext – реализация протокола SSL, которая выступает как factory для sslSocketFactory.
Считываем сертификат cert-der.crt, который мы предварительно поместили на устройство, и создаем экземпляр этого сертификата.
Создаем keyStore, в который складываем наш сертификат.
Создаем trustManager, который доверяет keyStore с нашим сертификатом.
Вот здесь начинается настоящее использование Frida. Данный фрагмент перезаписывает метод SSLContext. Теперь при вызове приложением метода сначала будет вызываться информационный лог в консоль, затем выполнится исходный метод, который мы перезаписываем.
Таким образом, данный скрипт готовит TrustManager, а затем использует его в методе вместо того, который передается (переменные a и с передаются в вызов исходной функции, а вот переменная b заменяется на кастомный TrustManager).
