From 0c10e12608786593b4c83932e1184b21ab18f857 Mon Sep 17 00:00:00 2001 From: geoffrey Date: Fri, 3 Jan 2025 13:56:03 +0100 Subject: [PATCH] First commit --- .gitignore | 2 + Makefile | 15 + README.md | 54 + example.png | Bin 0 -> 103962 bytes exec.sh | 8 + src/common.h | 28 + src/load_bpf.c | 387 + src/ssh-trace.ebpf.c | 204 + src/vmlinux.h | 149942 ++++++++++++++++++++++++++++++++++++++++ ssh-trace | Bin 0 -> 23416 bytes 10 files changed, 150640 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 example.png create mode 100755 exec.sh create mode 100644 src/common.h create mode 100644 src/load_bpf.c create mode 100644 src/ssh-trace.ebpf.c create mode 100644 src/vmlinux.h create mode 100755 ssh-trace diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..71c7979 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +src/**.o +src/ssh_trace diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0964de1 --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ +GCC=gcc +CL=clang-11 +CFLAGS=-Wall +LIBS=-lbpf + +all: ssh-trace.ebpf.o ssh-trace + +ssh-trace.ebpf.o: src/ssh-trace.ebpf.c + $(CL) -g -O2 -target bpf -c src/ssh-trace.ebpf.c -o src/ssh-trace.ebpf.o + +ssh-trace: src/load_bpf.c + $(GCC) $(CFLAGS) src/load_bpf.c -o ssh-trace $(LIBS) + +clean: + rm -rf src/*.o && rm ssh-trace diff --git a/README.md b/README.md new file mode 100644 index 0000000..16ec4b6 --- /dev/null +++ b/README.md @@ -0,0 +1,54 @@ +# Introduction +Nowadays, with the increase of numbers of servers in an infrastructure, it's important to trace all users activities for investigating when a suspicious activity has been detected. This project is borned for resolving that issue, which trace all user connected through SSH and the outcome is print to the stdout or to a file in rsyslog format. + +The program detect all commands executed in the system from a user connected and the result is print into the terminal, the program has an advantage for detection any privilege escalations when the user switch to another one, and the program show to us the initial user connected with the username and the user who executed the command. The diagram below show us an example: + +![Example](example.png) + +# Installation +# Supported platforms +The program is based on [eBPF](https://ebpf.io/). It's a technology for developping a program which is loaded into the Kernel for security, networking and tracing all event in the kernel. This program has been tested on these systems: + +| System | Architecture | Version | Kernel version | +|--------|--------------|---------|----------------| +| Ubuntu | x64| 20.04| 5.15.0| +| Debian | x64| 11| 5.10.0| + +## Requirements +The program is based on eBPF and developped in C language. You should install these packages if you want to generate the binary: + +* bpftool +* clang-11 +* libbpf-dev +* gcc gcc-multilib + +# Usage +After you clone the project, you can move into it. The arboresence of the project is quite simple. You have the repository `src/` which contains all C sources and headers files and you have the Makefile for generating the binary with the command `make all`: + +``` +$ git clone https://gitea.bucchino.org/gbucchino/ssh-trace +$ cd ssh-trace +$ make all +``` + +That will generate the binary `ssh-trace` and you can execute it: + +``` +$ sudo ./ssh-trace +``` + +By default, the result is print into the stdout, but, you can export it to rsyslog file format with the parameter -f: + +``` +$ sudo ./ssh-trace -f ssh-trace_`$(echo date '+%F')`.log +$ cat ssh-trace*.log +$ sudo ./ssh-trace -f logs-ssh +Jan 03 12:21:33 ubuntu ssh-trace: host=user@192.168.1.37;ppid=8516;pathname=/usr/bin/ls --color=auto -la /home/user;pid=9112 +Jan 03 12:21:35 ubuntu ssh-trace: host=user@192.168.1.37;ppid=8516;pathname=/usr/sbin/ip address show;pid=9113 +Jan 03 12:21:37 ubuntu ssh-trace: host=user@192.168.1.37;ppid=8516;pathname=/usr/bin/cat /etc/group;pid=9114 +``` + +If you want to read more about the project, you should go to my [blog](https://www.bucchino.org/projects/sshtrace/), I made an article regarding it. Enjoy the read :). + +# References +* https://developers.redhat.com/articles/2023/10/19/ebpf-application-development-beyond-basics#an_example_c_application_using_libbpf diff --git a/example.png b/example.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0e4cb2d64d284087b489421ba859cf5652f593 GIT binary patch literal 103962 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 src/skel.ebpf.h +# gcc -Wall src/load_bpf.c -o src/ssh-trace -lbpf && \ +make clean +make all && sudo ./ssh-trace diff --git a/src/common.h b/src/common.h new file mode 100644 index 0000000..d3fb0c0 --- /dev/null +++ b/src/common.h @@ -0,0 +1,28 @@ +#ifndef H_COMMON +#define H_COMMON + +#define FILENAME_SIZE 128 +#define COMM_LEN 24 +#define ARGS_CNT 20 +#define ARGS_LEN 128 +#define ARGS_TLEN (ARGS_CNT * ARGS_LEN) + + +struct execve { + pid_t pid; + pid_t ppid; + char filename[FILENAME_SIZE]; +}; + +struct event{ + pid_t pid; + pid_t ppid; + uid_t uid; + char filename[FILENAME_SIZE]; + char comm[COMM_LEN]; + int argc; + int tlen; + char args[ARGS_TLEN]; +}; + +#endif diff --git a/src/load_bpf.c b/src/load_bpf.c new file mode 100644 index 0000000..a29da09 --- /dev/null +++ b/src/load_bpf.c @@ -0,0 +1,387 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include "skel.ebpf.h" +#include "common.h" + +static int fd_map_execve; +static int fd_map_args; +static struct arguments arguments; +static FILE *f; +static int running = 1; +static char hostname[127]; + +struct arguments { + char *filename; + int to_output; +}; + + +/* + * Functions for arguments + * https://www.gnu.org/software/libc/manual/html_node/Argp-Example-3.html + */ + +static char doc[] = "SSH Trace usage:"; +static char args_doc[] = "ARG1 ARG2"; + +static error_t parse_opts(int key, char *arg, struct argp_state *state){ + struct arguments *arguments = state->input; + switch(key){ + case 'f': + arguments->filename = arg; + arguments->to_output = 0; + break; + case 'o': + arguments->to_output = 1; + break; + case ARGP_KEY_ARG: + break; + case ARGP_KEY_END: + break; + default: + return ARGP_ERR_UNKNOWN; + + } + return 0; +} + +struct arguments parse_args(int argc, char *argv[]){ + static const struct argp_option opts[] = { + {"filename", 'f', "FILENAME", 0, "Save result to logs"}, + {"to-output", 'o', NULL, 0, "Print to output"}, + {NULL, 'h', NULL, OPTION_HIDDEN, "help"}, + {}, + }; + struct arguments arguments; + arguments.filename = NULL; + arguments.to_output = 1; + static struct argp argp = {opts, parse_opts, args_doc, doc}; + + argp_parse(&argp, argc, argv, 0, 0, &arguments); + return arguments; +} + +/* End functions arguments */ + +static void signalHandler(int signum){ + running = 0; +} + +/* + * This function get the username from the uid + */ +static void get_username(uid_t uid, char *username){ + struct passwd *p; + p = getpwuid(uid); + if (p == NULL){ + printf("Failed to get the username from the UID\n"); + strncpy(username, "Unknown", 8); + return; + } + strncpy(username, p->pw_name, 64); +} + +/* + * With the pid, walk through the process tree and to find the sshd proc + */ +static pid_t walk_process_tree(const pid_t pid){ + char filename[64]; + FILE *fd; + int ppid; + char proc_name[128]; + + snprintf(filename, 64, "/proc/%d/stat", pid); + + if ((fd = fopen(filename, "r")) == NULL){ + printf("Failed to open the file\n"); + return -1; + } + + // 1866044 (sshd) S 1 1866044 + fscanf(fd, "%*d %s %*c %d", proc_name, &ppid); + + if (strncmp(proc_name, "(sshd)", 128) == 0){ + fclose(fd); + return ppid; + } + + // If parent processes + if (ppid == 0 || ppid == 1){ + fclose(fd); + return 0; + } + + // printf("PID: %d; PPID: %d; Proc name: %s\n", pid, ppid, proc_name); + + fclose(fd); + return walk_process_tree(ppid); +} + +/* + * We can find the user attached to the pid + */ +static struct utmp find_user_from_pid(pid_t pid){ + int fd; + size_t len; + struct utmp u = {0}; + + if ((fd = open("/var/run/utmp", O_RDONLY)) < 0){ + printf("Failed to open the file\n"); + return u; + } + + lseek(fd, 0, SEEK_SET); + while ((len = read(fd, &u, sizeof(struct utmp))) > 0){ + if (u.ut_type == USER_PROCESS && u.ut_pid == pid) + break; + memset(&u, 0, sizeof(struct utmp)); + } + close(fd); + return u; +} +/* + * Try to find the sshd forked in the map + */ +static struct execve find_sshd_daemon(pid_t pid){ + struct execve s_execve = {0}; + // Get the execve struct + int err = bpf_map_lookup_elem(fd_map_execve, &pid, &s_execve); + if (err != 0) + return s_execve; + + if(strncmp(s_execve.filename, "sshd", 4) == 0) + return s_execve; + else + return find_sshd_daemon(s_execve.ppid); +} +/* + * This function get the localtime into the rsyslog format + */ +static int syslog_time(time_t ts, char t[32], size_t l){ + const char format[] = "%b %d %T"; + struct tm *lt = localtime(&ts); + if(strftime(t, l, format, lt) == 0) + return -1; + return 0; +} +int handle_event(void *ctx, void *data, size_t data_sz){ + struct event *s_event = (struct event *)data; + struct execve s_execveParent = {0}; + struct utmp u = {0}; + time_t ts = time(NULL); + char username[64]; + + // Fid the sshd process parent + s_execveParent = find_sshd_daemon(s_event->ppid); + if (s_execveParent.pid == 0){ + //printf("SSH daemon not exist\t%s\t%d\n", s_execve.filename, s_execve.pid); + s_execveParent.ppid = walk_process_tree(s_event->pid); /* Walk through process tree to find the sshd daemon */ + if (s_execveParent.ppid <= 0) // We didn't find it + return 0; + } + + // Find the user related + u = find_user_from_pid(s_execveParent.ppid); + if (u.ut_type == 0) + return 0; + + // Get the username + get_username(s_event->uid, username); + + if (arguments.to_output == 1){ + char t[32]; + syslog_time(ts, t, sizeof(t)); + printf("%-20s%-10d%s@%-25s", t, s_execveParent.ppid, u.ut_user, u.ut_host); + printf("%-10s%-10d", username, s_event->pid); + printf("%-20s", s_event->filename); + printf("%s ", s_event->comm); + // Arguments + if (s_event->argc > 0){ + for(int i = 0; i < s_event->tlen; i++){ + char c = s_event->args[i]; + if (c == '\0') + printf(" "); + else + printf("%c", c); + } + } + printf("\n"); + } + + if (arguments.filename != NULL && f != NULL){ + /* + * Rsyslog format + *