Go Daily Library 154: eCapture (для захвата https сертификат CA не требуется)
Go Daily Library 154: eCapture (для захвата https сертификат CA не требуется)

Введение в eCapture

eCapture — это инструмент сбора данных в пользовательском режиме, основанный на технологии eBPF. Для захвата открытого текста сообщений https/tls сертификат CA не требуется.

Проект был создан в середине марта 2022 года. После выхода он всем очень понравился. Менее чем за две недели он набрал более 1200 звезд.

эффект

  1. Сертификат CA не требуется для захвата открытого текста данных связи HTTPS/TLS.
  2. В сценариях аудита bash можно захватить команды bash.
  3. Сценарий аудита базы данных может захватывать SQL-запросы mysql/mariadB.

Официальный сайт

До встречи в репозитории кода:https://github.com/ehids/ecapture

архитектура продукта

Пользовательский режим системы eCapture программаиспользовать Разработка языка Golang,Имеет хорошую системную совместимость,Быстрое развертывание без зависимостей,Больше подходит для облачных сценариев. Код состояния ядра написан на C.,использоватьclang/llvmкомпилировать,После создания байт-кода bpf,использоватьgo-bindataпреобразован вgolangфайл грамматики,之后использоватьehids/ebpfmanagerБиблиотека классов,вызовbpf syscall выполняет загрузку, HOOK и чтение карты. После компиляции golang он может работать без каких-либо других зависимостей и совместим с Linux. kernel Все версии выше 4.18.

механизм загрузки eBPF

Подробный механизм загрузки eBPF можно найти в соответствующих принципах по адресу https://ebpf.io/.

Принцип реализации

Как показано на схеме принципа работы,Подключитесь к шифрованию и дешифрованию пользовательского режима. tcpdump(libpcap) — это момент получения пакета данных.,После обработки XDP,руководитьclone packet,Осуществить пакет копировать,Отправлено в процесс пользовательского режима. Эти двое работают на разных уровнях.

Введение функции

eCapture имеет три модуля

  1. Сбор данных TLS/SSL в виде открытого текста
  2. аудит команды bash
  3. аудит базы данных mysqld

Первая функция подходит для мониторинга эксплуатации и технического обслуживания, устранения неполадок и сценариев выборочного анализа на основе требований к расшифровке TLS/SSL.

Вторая функция подходит для сценариев обнаружения вторжений bash в области безопасности. Это всего лишь простая функция, и на ее основе можно добавить другие функции.

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

Ознакомьтесь с описанием его использования ниже:

Язык кода:javascript
копировать
cfc4n@vm-desktop:~/ehids/ecapture$ ./bin/ecapture
NAME:
 ecapture - capture text SSL content without CA cert by ebpf hook.

USAGE:
 ecapture [flags]

VERSION:
 0.1.5-20220325-47edbed

COMMANDS:
 bash  capture bash command
 help  Help about any command
 mysqld56 capture sql queries from mysqld >5.6 .
 tls  alias name:openssl , use to capture tls/ssl text content without CA cert.

DESCRIPTION:
 ecapture — это инструмент, который может перехватывать пакеты данных в виде открытого текста, такие как HTTPS и TLS, без установки сертификата CA.
 Также можно записывать команды Bash, что подходит для сценариев аудита безопасности. Включая аудит базы данных mysqld и т. д.
 Адрес склада: https://github.com/ehids/ecapture

OPTIONS:
      --debug[=false] enable debug logging
  -h, --help[=false] help for ecapture
      --hex[=false] print byte strings as hex encoded strings
  -p, --pid=0  if target_pid is 0 then we target all pids

Среди них есть четыре глобальных параметра, а именно:

  • --debug, используется для запуска журналов отладки
  • --help, просмотреть справку
  • --hex, печатать символы в шестнадцатеричном формате, используется для просмотра невидимых символов
  • --pid для сбора данных о конкретном процессе

КРЮЧКОВЫЙ механизм

eCapture использует eBPF Функции, связанные с Uprobe, выполняют HOOK, поэтому требуется информация о функциях целевого пользовательского режима, включая таблицу функциональных символов (символ table),Адрес смещения функции (смещение). В большинстве дистрибутивов Linux,Все двойные исполняемые файлы (ELF) содержат небольшое количество таблиц символов;,Таблица символов в ELF будет удалена. Итак, для этого сценария,Для этого пользователю необходимо найти адрес смещения в ELF/SO, где находится целевая функция.,Задается через параметры инструмента.

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

ПоэтомуeCaptureподдерживатьHOOK ELF,а такжеHOOK SOДва режима。Автоматически проанализируетELFдокумент,читать.dynamicи.dynsymИнформация об ожидающем сегменте,Найдите соответствующее имя библиотеки ссылок, имя функции и адрес смещения.

Принцип поиска следующий:

tls/ssl

ecapture tlsкоманда для запускаtls/sslмодуль,Поддерживает три типа библиотек шифрования tls/ssl.,Они есть

  • openssl ,Имя динамически подключаемой библиотеки:libssl.so
  • gnutls ,Имя динамически подключаемой библиотеки:libgnutls.so
  • nss/nspr ,Имя динамически подключаемой библиотеки:libnspr4.so

в разных дистрибутивах Linux,по разным причинам,会选择不同из Библиотека классов。напримерwgetпрограмма,существоватьubuntuиcentosУдастсяиспользовать不同из Библиотека классов。Некоторые из нихopenssl,Некоторые из нихgnutls,Даже обе библиотеки представлены.

конкретная ситуация,ты можешьиспользоватьldd $ELF_PATH | grep -E "tls|ssl|nspr|nss"Приходите и проверьте одинELFдокументиспользовать Библиотека классов情况。

Язык кода:javascript
копировать
cfc4n@vm-desktop:~$ ldd `which wget` |grep -E "tls|ssl|nspr|nss"
 libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f50699f6000)

Для таких процессов, как Firefox и Chrome,Вам нужно запустить программу, чтобы увидеть зависимости библиотеки tls.,Так,ты можешьиспользоватьsudo pldd $PID | grep -E "tls|ssl|nspr|nss" Приходите проверить это.

Язык кода:javascript
копировать
cfc4n@vm-desktop:~$ ps -ef|grep firefox
cfc4n       6846    1432 45 17:50 ?        00:00:04 /usr/lib/firefox/firefox -new-window
cfc4n@vm-desktop:~$ sudo pldd 6846 |grep -E "tls|ssl|nspr|nss"
/usr/lib/firefox/libnspr4.so
/usr/lib/firefox/libnssutil3.so
/usr/lib/firefox/libnss3.so
/usr/lib/firefox/libssl3.so
/lib/x86_64-linux-gnu/libnss_files.so.2
/lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2
/lib/x86_64-linux-gnu/libnss_dns.so.2
/usr/lib/firefox/libnssckbi.so

Параметры командной строки модуля tls eCapture следующие:,Пользователи могут использовать настройки, отличные от настроек по умолчанию.,Вы также можете указать его в соответствии с вашей собственной средой.

Язык кода:javascript
копировать
OPTIONS:
      --curl=""  curl or wget file path, use to dectet openssl.so path, default:/usr/bin/curl
      --firefox="" firefox file path, default: /usr/lib/firefox/firefox.
      --gnutls="" libgnutls.so file path, will automatically find it from curl default.
  -h, --help[=false] help for tls
      --libssl="" libssl.so file path, will automatically find it from curl default.
      --nspr=""  libnspr44.so file path, will automatically find it from curl default.
      --wget=""  wget file path, default: /usr/bin/wget.

в то же время,Метод также относительно прост,./ecapture tls --hexПросто закажи。

в Linux,firefoxпрограмма,Есть много коммуникацийиспользовать Понятно/usr/lib/firefox/libnspr4.so,Но на самом деле бизнес-запросы можно передаватьSocket ThreadОтправлено процессом。Вы можете фильтровать по этой функции,Для программы Chrome,Я верю, что ты осторожен,Это тоже можно сделать.

bash

Автор работает в отделе безопасности,Получены требования к аудиту bash,Метод его реализации — это не что иное, как модификация библиотеки системных классов, использование и другие технические реализации.,Существует определенный риск для стабильности системы. Реализовано на основе технологии eBPF.,Этих проблем можно избежать. Мониторинг команд bash здесь,Это исследование технологии eBPF в сценариях аудита безопасности.

При реализации eCapture сначала ищется значение $SHELL ENV.,какbashиздвоичныйдокумент路径руководитьHOOK。дляbash加载Понятноlibreadline.soиз场景,Он также будет автоматически проанализирован,Выполнение поиска по таблице символов и позиционирование смещения.,Выполните КРЮК еще раз.

Для модуля bash есть три параметра.,Пользователи могут настроитьbashreadlinesoиз路径。

Язык кода:javascript
копировать
OPTIONS:
      --bash=""  $SHELL file path, eg: /bin/bash , will automatically find it from $ENV default.
  -h, --help[=false] help for bash
      --readlineso="" readline.so file path, will automatically find it from $BASH_PATH default.

mysql/mariadb

Как и модуль bash, он также посвящен аудиту базы данных. Среда автора — ubuntu 12.04,mysqld также из-за соглашения,использовать Понятно衍生изMariadDB,Пользователи также могут выбирать на основе своих реальных сценариев.,используйте параметры командной строки для указания.

модуль mysqld,Основной принцип заключается вHOOKПонятноdispatch_commandфункция:

  • Первый параметр — это тип CMD. Если значение равно COM_QUERY, это сценарий запроса, то есть тип запроса требования аудита.
  • Второй параметр — это структура THD, которую мы здесь не используем.
  • Третий — оператор SQL запроса.
  • Четвертый параметр — длина оператора SQL.
Язык кода:javascript
копировать
// https://github.com/MariaDB/server/blob/b5852ffbeebc3000982988383daeefb0549e058a/sql/sql_parse.h#L112
dispatch_command_return dispatch_command(enum enum_server_command command, THD *thd,
   char* packet, uint packet_length, bool blocking = true);

Параметры модуля аудита mysqld следующие:

Язык кода:javascript
копировать
OPTIONS:
  -f, --funcname=""   function name to hook
  -h, --help[=false]   help for mysqld56
  -m, --mysqld="/usr/sbin/mariadbd" mysqld binary file path, use to hook
      --offset=0   0x710410

в,--mysqldиспользуется для указанияmysqldиз路径。mysqldдвоичныйпрограмма Хотя в таблице символов естьdispatch_commandинформация,ноdispatch_commandэтотфункция名每次компилировать都是变化из,Поэтому его нельзя записать в смерть.

eCaptureиз查找方式是читатьmysqldдвоичныйиз.dynamic段информация,Регулярная грамматика\w+dispatch_command\w+去匹配所有符号информация,Найдите имя его функции и адрес смещения.,Сноваиспользовать。

Вы также можете выполнить поиск с помощью команды objdump, а затем самостоятельно указать имя функции через параметры командной строки.

mariadbd version : 10.5.13-MariaDB-0ubuntu0.21.04.1 objdump -T /usr/sbin/mariadbd |grep dispatch_command 0000000000710410 g    DF .text 0000000000002f35  Base        _Z16dispatch_command19enum_server_commandP3THDPcjbb

То есть смещение 0x710410.,функцияназванный_Z16dispatch_command19enum_server_commandP3THDPcjbb

использовать

Скачать бинарный пакет

eCapture доступен по адресу https://github.com/ehids/ecapture/releases. ,Последняя версия на данный моментeCapture v0.1.5

Может работать на ядре Linux 4.18 или выше.

Адрес двоичного пакета:

https://github.com/ehids/ecapture/releases/download/v0.1.5/ecapture_v0.1.5.zip

Адрес ускорения внутри страны:https://github.do/https://github.com/ehids/ecapture/releases/download/v0.1.5/ecapture_v0.1.5.zip

Скомпилируйте себя

Репозиторий кода находится по адресу https://github.com/ehids/ecapture. Вы можете изменить исходный код и скомпилировать его самостоятельно.

Видео демонстрация

Нажмите, чтобы просмотреть【билибили】

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose