Прозрачный перехват TLS без изменения кода через eBPF

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

ebpfbpftracetls

👁 Когда нужно понять, что реально уходит по HTTPS из сервиса, обычно упираешься в шифрование: tcpdump бесполезен, логи неполные, а добавлять debug в код — долго и рискованно. В Linux можно перехватывать TLS-трафик на уровне функций библиотеки (например, OpenSSL) через eBPF и видеть данные до шифрования.

📝 Перехват данных TLS через uprobe на SSL_write / SSL_read

Можно «подцепиться» к функциям OpenSSL и логировать, какие данные реально отправляются и принимаются. Это даёт доступ к расшифрованным данным прямо в момент вызова функций, без MITM и без изменения приложения.

sudo bpftrace -e '
uprobe:/usr/lib/x86_64-linux-gnu/libssl.so:SSL_write
{
  printf("SEND: %s\n", str(arg1));
}

uprobe:/usr/lib/x86_64-linux-gnu/libssl.so:SSL_read
{
  printf("RECV: %s\n", str(arg1));
}'

📝 Фильтрация по PID для точечного дебага сервиса

Чтобы не ловить весь трафик системы, можно ограничить перехват конкретным процессом. Так можно безопасно анализировать только нужный сервис, не трогая остальную систему.

sudo bpftrace -e '
uprobe:/usr/lib/x86_64-linux-gnu/libssl.so:SSL_write
/ pid == 12345 /
{
  printf("PID 12345 SEND: %s\n", str(arg1));
}'

❗️ Это уровень прод-диагностики, который позволяет видеть реальный TLS-трафик без прокси, сертификатов и изменения кода. Особенно полезно при дебаге API, сторонних интеграций и нестабильных сервисов.

tags: #linux #безопасность #мониторинг

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот кода bpftrace: uprobe на SSL_write/SSL_read для перехвата TLS‑данных до шифрования; тёмный фон, логотип RECURA.
Фрагмент команды bpftrace для перехвата TLS‑трафика через uprobe на OpenSSL (пример для дебага).

Читайте так же