反弹shell(一个可交互的真shell)的时候是需要fork出来的子进程 execve /bin/bash 的,但是这样一般会引发告警,此时就有个需求,不让execve内核hook监控知道我执行的是 /bin/bash ,这里总结一下大概有如下方法: 1. 最简单的把/bin/bash拷贝一份,然后执行,但是一般会云查,所以最好修改一下/bin/bash的内容 2. 给/bin/bash 创建软链接,使用 ln -s ,或者 cp -s ,然后执行符号链接。 3. memfd ,这个syscall一般都会监控,而且会对内存的数据当做文件采集。 4. fexecve , 此方法本质上调用的依然是 execve,只不过路径传入的是 /proc/self/fd/%fd 5. 使用加载器,32位执行 /lib/ld-linux.so.2 /bin/bash , 64位执行 /lib64/ld-linux-x86-64.so.2 /bin/bash 6. 内存加载ELF文件,项目有ulexecve