Saya mengerti definisi malware fileless:
Kode berbahaya yang bukan berbasis file tetapi hanya ada di memori ... Lebih khusus lagi, kode berbahaya tanpa fileless ... menambahkan dirinya ke proses aktif dalam memori ...
Adakah yang bisa menjelaskan bagaimana cara menambahkan ini ke proses aktif dalam memori?
Juga, perlindungan / pengerasan (kernel) apa yang tersedia terhadap serangan semacam itu?
process
linux-kernel
malware
Martin Vegter
sumber
sumber
Jawaban:
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 melaluiptrace()
; setelah melakukannya, Anda dapat menggunakanpread()
danpwrite()
menulis ke ruang proses.(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.
sumber
/proc/PID/mem
. Saya harap Anda kurang tahan api daripada orang lain untuk memperbarui dan memperbaiki jawaban Anda, alih-alih mengabadikan mitos dan informasi yang salah.Ketika Anda berhasil menghentikan suatu proses, Anda dapat menyebabkan proses memasukkan data ke dalam memori. Cara yang sangat populer untuk melakukan ini adalah dengan menggunakan buffer overflows .
Bagaimana cara kerjanya? Anda tahu, misalnya, bahwa suatu proses mendengarkan pada port x dan memiliki buffer untuk fungsi tertentu, misalnya, 15 Bytes besar. Anda memanggil fungsi itu dengan 15 Bytes data + n Bytes (kode Anda akan dieksekusi). Jika program tidak memvalidasi data dengan benar, itu akan menimpa memori yang berdekatan dengan kode Anda dan dengan demikian, kode tersebut tinggal di memori. Jika Anda dapat menjalankan kode ini, Anda memiliki sistemnya. Ada batasan, misalnya, suatu proses tidak dapat menulis ke memori di luar ruang yang dialokasikan .
Ada daftar panjang kerentanan di semua OS 'di mana buffer overruns memungkinkan cracker untuk menyuntikkan data ke dalam memori target.
sumber