From 7f132c5d63668cd5dfd6bcd814fda431b865e6e4 Mon Sep 17 00:00:00 2001 From: Fancy Zhang Date: Fri, 3 Jul 2020 22:36:35 +0800 Subject: [PATCH] add execsnoop-kernel which need to be built in kernel tree --- execsnoop-bcc/readme.md | 3 + execsnoop-kernel/execsnoop | Bin 0 -> 203232 bytes execsnoop-kernel/execsnoop_kern.c | 93 +++++++++++++++++++++++++++ execsnoop-kernel/execsnoop_kern.o | Bin 0 -> 143448 bytes execsnoop-kernel/execsnoop_user.c | 40 ++++++++++++ execsnoop-kernel/readme.md | 101 ++++++++++++++++++++++++++++++ execsnoop-libbpf/readme.md | 26 +++++--- 7 files changed, 255 insertions(+), 8 deletions(-) create mode 100644 execsnoop-bcc/readme.md create mode 100755 execsnoop-kernel/execsnoop create mode 100644 execsnoop-kernel/execsnoop_kern.c create mode 100644 execsnoop-kernel/execsnoop_kern.o create mode 100644 execsnoop-kernel/execsnoop_user.c create mode 100644 execsnoop-kernel/readme.md diff --git a/execsnoop-bcc/readme.md b/execsnoop-bcc/readme.md new file mode 100644 index 0000000..09c4cb7 --- /dev/null +++ b/execsnoop-bcc/readme.md @@ -0,0 +1,3 @@ +- depend [bcc](https://github.com/iovisor/bcc) + +- huge memory usage, at least 50M \ No newline at end of file diff --git a/execsnoop-kernel/execsnoop b/execsnoop-kernel/execsnoop new file mode 100755 index 0000000000000000000000000000000000000000..3a6eb364e8184845964f0d8f265a3419689c7eab GIT binary patch literal 203232 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

I(!K& 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

Eqi9as%-$^{P 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 aPS!X^p1H^>zvd)|wZ}!nB3^Ef_`d-lzJxUZ literal 0 HcmV?d00001 diff --git a/execsnoop-kernel/execsnoop_kern.c b/execsnoop-kernel/execsnoop_kern.c new file mode 100644 index 0000000..b03fa07 --- /dev/null +++ b/execsnoop-kernel/execsnoop_kern.c @@ -0,0 +1,93 @@ +#include "linux/sched.h" +#include +#include +#include +#include +#include + +#define TASK_COMM_LEN 16 +struct event { + char comm[TASK_COMM_LEN]; + pid_t pid; + pid_t tgid; + pid_t ppid; + uid_t uid; +}; + +/* /sys/kernel/debug/tracing/events/syscalls/sys_enter_execve/format */ +struct syscalls_enter_execve_args { + __u64 unused; + int syscall_nr; + const char filename_ptr; + const char *const * argv; + const char *const * envp; +}; + +/* /sys/kernel/debug/tracing/events/syscalls/sys_exit_execve/format */ +struct syscalls_exit_execve_args { + __u64 unused; + int syscall_nr; + long ret; +}; + +struct bpf_map_def SEC("maps") records = { + .type = BPF_MAP_TYPE_HASH, + .key_size = sizeof(pid_t), + .value_size = sizeof(struct event), + .max_entries = 1024, +}; +struct bpf_map_def SEC("maps") perf_events = { + .type = BPF_MAP_TYPE_PERF_EVENT_ARRAY, + .key_size = sizeof(u32), + .value_size = sizeof(u32), + .max_entries = 128, +}; + +SEC("tracepoint/syscalls/sys_enter_execve") +int syscall_enter_execve(struct syscalls_enter_execve_args *ctx){ + pid_t pid, tgid; uid_t uid; + struct event *event; + struct task_struct *task, *task_p; + + u64 id = bpf_get_current_pid_tgid(); + pid = (pid_t)id; + tgid = id >> 32; + uid = (__u32)bpf_get_current_uid_gid(); + + struct event empty_event={}; + if (bpf_map_update_elem(&records, &pid, &empty_event, BPF_NOEXIST)!=0) return 0; + event = bpf_map_lookup_elem(&records, &pid); + if (!event) return 0; + + event->pid = pid; + event->tgid = tgid; + event->uid = uid; + + /* ppid is not reliable here, normal in arch, but become 0 in ubuntu 20.04 */ + task = (struct task_struct*)bpf_get_current_task(); + bpf_probe_read(&task_p, sizeof(struct task_struct*),&task->real_parent); + bpf_probe_read(&event->ppid,sizeof(pid_t),&task_p->tgid); + + return 0; +} + +SEC("tracepoint/syscalls/sys_exit_execve") +int syscall_exit_execve(struct syscalls_exit_execve_args *ctx){ + pid_t pid; + struct event *event; + + pid = (pid_t)bpf_get_current_pid_tgid(); + event = bpf_map_lookup_elem(&records,&pid); + if (!event) return 0; + if (ctx->ret < 0) goto cleanup; + + /* get comm */ + bpf_get_current_comm(&event->comm,sizeof(event->comm)); + bpf_perf_event_output(ctx, &perf_events, BPF_F_CURRENT_CPU, event, sizeof(struct event)); +cleanup: + bpf_map_delete_elem(&records, &pid); + return 0; +} + +char _license[] SEC("license") = "GPL"; +u32 _version SEC("version") = LINUX_VERSION_CODE; diff --git a/execsnoop-kernel/execsnoop_kern.o b/execsnoop-kernel/execsnoop_kern.o new file mode 100644 index 0000000000000000000000000000000000000000..d9d182816cf13198dacb45e3dec09c3218369d49 GIT binary patch literal 143448 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%0Dtckj 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 literal 0 HcmV?d00001 diff --git a/execsnoop-kernel/execsnoop_user.c b/execsnoop-kernel/execsnoop_user.c new file mode 100644 index 0000000..2b6f7c6 --- /dev/null +++ b/execsnoop-kernel/execsnoop_user.c @@ -0,0 +1,40 @@ + +#include +#include +#include "bpf_load.h" + +#define TASK_COMM_LEN 16 +struct event { + char comm[TASK_COMM_LEN]; + pid_t pid; + pid_t tgid; + pid_t ppid; + uid_t uid; +}; +static void print_bpf_output(void *ctx, int cpu, void *data, __u32 size) { + struct event *e=data; + printf("comm: %s, pid: %d, tgid: %d, ppid: %d, uid: %d\n",e->comm,e->pid,e->tgid,e->ppid,e->uid); +} + +int main(int argc, char **argv) { + struct perf_buffer_opts pb_opts = {}; + struct perf_buffer *pb; + int ret; + + if (load_bpf_file("execsnoop_kern.o")!=0) { + printf("%s", bpf_log_buf); + return 1; + } + + pb_opts.sample_cb = print_bpf_output; + pb = perf_buffer__new(map_fd[1], 8, &pb_opts); + ret = libbpf_get_error(pb); + if (ret) { + printf("failed to setup perf_buffer: %d\n", ret); + return 1; + } + + while ((ret = perf_buffer__poll(pb, -1)) >= 0) {} + kill(0, SIGINT); + return ret; +} diff --git a/execsnoop-kernel/readme.md b/execsnoop-kernel/readme.md new file mode 100644 index 0000000..531c7d7 --- /dev/null +++ b/execsnoop-kernel/readme.md @@ -0,0 +1,101 @@ + +## Prons and cons + +- use stable execve tracepoint, so build once and should work everywhere +- need to build in kernel tree + +## Build in kernel tree + +- ready and config kernel tree + +```bash +# kernel config +gunzip -c /proc/config.gz > .config +make oldconfig && make prepare +# install headers to ./usr/include +make headers_install -j8 +# build bpf +make M=samples/bpf -j8 +``` + +- put or link `execsnoop_kern.c` and `execsnoop_user.c` to *samples/bpf/* +- edit *samples/bpf/makefile* + +```makefile +# in samples/bpf/makefile +tprogs-y += execsnoop +execsnoop-objs := bpf_load.o execsnoop_user.o $(TRACE_HELPERS) +always-y += execsnoop_kern.o +``` + +## Run + +```bash +cd samples/bpf +sudo bash -c "ulimit -l unlimited && ./execsnoop" +``` + +## Detail build command + +using `make V=1 M=samples/bpf | tee -a log.txt` to get and filter following command + +- build `execsnoop_kern.o` + +```bash +clang -nostdinc \ + -isystem /usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/include \ + -I./arch/x86/include \ + -I./arch/x86/include/generated \ + -I./include \ + -I./arch/x86/include/uapi \ + -I./arch/x86/include/generated/uapi \ + -I./include/uapi \ + -I./include/generated/uapi \ + -include ./include/linux/kconfig.h \ + -I./samples/bpf \ + -I./tools/testing/selftests/bpf/ \ + -I./tools/lib/ \ + -include asm_goto_workaround.h \ + -D__KERNEL__ -D__BPF_TRACING__ -Wno-unused-value -Wno-pointer-sign \ + -D__TARGET_ARCH_x86 -Wno-compare-distinct-pointer-types \ + -Wno-gnu-variable-sized-type-not-at-end \ + -Wno-address-of-packed-member -Wno-tautological-compare \ + -Wno-unknown-warning-option \ + -fno-stack-protector -g \ + -O2 -emit-llvm -c samples/bpf/execsnoop_kern.c \ + -o - | llc -march=bpf -filetype=obj -o samples/bpf/execsnoop_kern.o +``` + +- build `execsnoop_user.o` + +```bash + gcc -Wall -O2 -Wmissing-prototypes -Wstrict-prototypes \ + -I./usr/include \ + -I./tools/testing/selftests/bpf/ \ + -I./tools/lib/ \ + -I./tools/include \ + -I./tools/perf \ + -DHAVE_ATTR_TEST=0 \ + -c -o samples/bpf/execsnoop_user.o samples/bpf/execsnoop_user.c +``` + +- build `execsnoop` + +```bash + gcc -Wall -O2 -Wmissing-prototypes -Wstrict-prototypes \ + -I./usr/include \ + -I./tools/testing/selftests/bpf/ \ + -I./tools/lib/ \ + -I./tools/include \ + -I./tools/perf \ + -DHAVE_ATTR_TEST=0 \ + -o samples/bpf/execsnoop \ + samples/bpf/bpf_load.o samples/bpf/execsnoop_user.o \ + tools/testing/selftests/bpf/trace_helpers.o tools/lib/bpf/libbpf.a \ + -lelf -lz +``` + +## Some resources + +- [A thorough introduction to eBPF](https://lwn.net/Articles/740157/) +- [Write eBPF program in pure C](http://terenceli.github.io/%E6%8A%80%E6%9C%AF/2020/01/18/ebpf-in-c) diff --git a/execsnoop-libbpf/readme.md b/execsnoop-libbpf/readme.md index bbd3dce..e22f1f2 100644 --- a/execsnoop-libbpf/readme.md +++ b/execsnoop-libbpf/readme.md @@ -1,11 +1,21 @@ -## Depency -- libbpf - - /usr/lib/libbpf.a - - some head file -- bpf - - `/usr/bin/bpftool` to generate skeleton and dump btf +## Resource -## Refer +- [libbpf](https://github.com/libbpf/libbpf) +- [libbpf-tools](https://github.com/iovisor/bcc/tree/master/libbpf-tools) examples use libbpf +- [bpftool](https://www.archlinux.org/packages/community/x86_64/bpf/) to generate skeleton and dump btf -- https://facebookmicrosites.github.io/bpf/blog/2020/02/19/bpf-portability-and-co-re.html \ No newline at end of file +## Prons + +- BPF CO-RE (Compile Once – Run Everywhere) +- small memory usage + +## Cons + +- `vmlinux.h`does not contain `#define` etc. And often causes confilct with other headers to cause redifinition error +- comment in code for different types is gone +- need kernel built with `CONFIG_DEBUG_INFO_BTF=y`, while ubuntu 20.04 still not + +## Build + +- see *makefile* \ No newline at end of file