Malware fileless menyerang target dengan mengeksploitasi kerentanan misalnya dalam plugin Flash browser, atau dalam protokol jaringan.
Proses Linux dapat dimodifikasi dengan menggunakan panggilan sistem ptrace()
. Panggilan sistem ini biasanya digunakan oleh para debugger untuk memeriksa dan mengelola keadaan internal dari proses target, dan berguna dalam pengembangan perangkat lunak.
Sebagai contoh, mari kita pertimbangkan sebuah proses dengan PID 1234. Ruang alamat keseluruhan proses ini dapat dilihat dalam sistem file semu /proc
di lokasi /proc/1234/mem
. Anda dapat membuka pseudofile ini, lalu lampirkan ke proses ini melalui ptrace()
; setelah melakukannya, Anda dapat menggunakan pread()
dan pwrite()
menulis ke ruang proses.
char file[64];
pid = 1234;
sprintf(file, "/proc/%ld/mem", (long)pid);
int fd = open(file, O_RDWR);
ptrace(PTRACE_ATTACH, pid, 0, 0);
waitpid(pid, NULL, 0);
off_t addr = ...; // target process address
pread(fd, &value, sizeof(value), addr);
// or
pwrite(fd, &value, sizeof(value), addr);
ptrace(PTRACE_DETACH, pid, 0, 0);
close(fd);
(Kode diambil dari sini . Makalah lain tentang exploit ptrace tersedia di sini .)
Mengenai pertahanan yang berorientasi kernel terhadap serangan-serangan ini, satu-satunya cara adalah menginstal tambalan vendor kernel dan / atau menonaktifkan vektor serangan tertentu. Misalnya, dalam kasus ptrace Anda dapat memuat modul ptrace-blocking ke kernel yang akan menonaktifkan panggilan sistem tertentu; jelas ini juga membuat Anda tidak dapat menggunakan ptrace untuk debugging.