azazel 通过LD_PRELOAD加载 so来hook libc function/syscall。
Port hidden:
hook fopen/fopen64函数,解析/proc/net/tcp和/proc/net/tcp6,返回过虑后的结果
File Hidden: hook fopen/fopen64/stat/stat64/__xstat/__xstat64/lstat/lstat64/__lxstat/__lxstat64/open/unlink/opendir/readdir/readdir64等函数,隐藏__开头 OR ld.so.preload 或者/proc/$pid/environ含有HIDE_THIS_SHELL有文件。
Anti debug:
hook ptrace syscall
另外数据传输加密.
pcap.c文件过虑相关port package capture
pam.c文件 hook pam_xxx函数。
execve hook:
path路径带bin/ldd OR ld-linux OR bin/unhide OR env: LD_TRACE_LOADED_OBJECTS时,/etc/ld.so.preload改为/etc/.ld.so.preload,以不显示preload hook so
另外开/bin/bash shell
对于被hook的函数,怎么拿到其function addr?
代码使用了dlsym(RTLD_NEXT,"funcname")技巧。
RTLD_NEXT是gcc的一个扩展,需要#define _GNU_SOURCE开启扩展。
RTLD_NEXT从下一个SO获取funcname(symbol) 对应addr。