https://github.com/frizzymonsta/ebpf_prac
Short practice work about eBPF and log analysis for Innopolis students.
https://github.com/frizzymonsta/ebpf_prac
bpftrace ebpf linux python3
Last synced: about 2 months ago
JSON representation
Short practice work about eBPF and log analysis for Innopolis students.
- Host: GitHub
- URL: https://github.com/frizzymonsta/ebpf_prac
- Owner: frizzymonsta
- Created: 2025-06-16T14:06:32.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-18T14:13:16.000Z (about 1 year ago)
- Last Synced: 2025-06-18T15:27:25.923Z (about 1 year ago)
- Topics: bpftrace, ebpf, linux, python3
- Language: Python
- Homepage:
- Size: 1.21 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 1. Анализ системных вызовов с eBPF
## Подготовка
1. Установить Ubuntu 22.04 в виртуальной машине (рекомендуется выставить network device на bridge для возможности подключения по ssh и др.).
2. Установить `bpftrace` и `bcc`.
3. Проверить работу `bpftrace` через команду:
```bash
sudo bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("execve: %s\n", str(args->filename)); }'
4. Протестировать работу bpftrace, открыв другой терминал и введя разные команды (напр. `ls` или `ping -q 1 8.8.8.8`). Если в первом терминале появилась информация о вводимых командах, значит все установилось успешно.
## Работа
Изучив примеры `bpf_trace.py`, `collect_all.bt`, разработайте свой скрипт (на выбор: bpftrace или Python+BCC), который:
* отслеживает релевантные системные вызовы
* выводит: человекочитаемый таймстамп, имя пробы (probe), PID, команду (comm), путь к исполняемому скрипту (filename, если применимо)
Выберите tracepoint'ы для отслеживания probe, которые кажутся вам важными:
Примеры:
```
tracepoint:syscalls:sys_enter_execve
tracepoint:syscalls:sys_enter_openat
tracepoint:syscalls:sys_enter_connect
tracepoint:syscalls:sys_enter_unlink
```
Пример работы:

## Тестирование
Написав `.bt` или `.py` скрипт, запустите его (командами `sudo bpftrace .bt` или `sudo python3 .py`), а на втором терминале запустите `activity.sh`.
Проверьте, что ваша трассировка корректно логгирует нужные события.
## Отчет
Что необходимо сдать:
* Ваш скрипт трассировки (`.bt` или `.py`)
* Пример логов (`sudo bpftrace .bt >> .log`)
* Отчёт по шаблону `REPORT_TEMPLATE.md`
## Вопросы, на которые нужно ответить в отчете
1. Чем `tracepoint` отличается от `kprobe`?
2. Почему `args->filename` доступен не всегда?
3. Что делает `strftime("%H:%M:%S", nsecs)`?
Отправлять на `zelichenok@comsec.spb.ru`.