azazel实现

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。

你可能感兴趣的:(azazel实现)