👁 Когда нужно понять, что реально уходит по 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 #безопасность #мониторинг



