在Linux中如何进行权限维持痕迹隐藏

白帽子社区

共 1117字,需浏览 3分钟

 ·

2022-05-18 13:57

本文来自“白帽子社区知识星球”

作者:伟大宝宝



白帽子社区知识星球

加入星球,共同进步
这篇文章主要跟大家分享下 linux 下的深度权限维持(权限维持隐藏), 总结了有以下两种方式。 
1) 服务名称伪造 
2) 进程隐藏

01

服务名称伪造


配置 tsh.h 中的 secret、SERVER_PORT、FAKE_PROC_NAME 

同时注释掉:CONNECT_BACK_HOST、CONNECT_BACK_DELAY 两行



运行 make linux 生成后门服务端和客户端。 


服务端用于在被控主机上运行,客户端在本地进行连接



将会生成 tshd 与 tsh 两个文件,tshd 为被控端运行程序,tsh 为控制 端。 


生成后门后,将 tshd 修改为其他服务名,用于在查看端口运行情况 时,可以伪造 COMMAND,我这里修改为 mysqld。 


运行后查看网络连接,可见服务名已经变成了我们设置好的名称。



之后查看端口信息



通过查看进程,后门的父进程 id 为 1,对应急人员的判断造成极大干扰。



使用控制端连接被控端后便可以执行命令。



同样支持反向连接,只需取消注释开头的两行代码,被控端便可回连 控制端。



效果总结: 

       通过伪装后门服务名称结合配置真实服务的端口,可以干扰应急 过程中的分析。由于启动后的父进程为 1,会使分析人员、运维人员 误认为其为系统进程从而忽略该进程。


02

进程隐藏

使用 libprocesshider 对指定进程进行隐藏。 


修改 libprocesshider.c,设置 process_to_filter 值为自己想要隐藏的进 程名。 


这里隐藏的是 bash,即所有进程名为 bash 的均不会显



编译后会生成 libprocesshider.so 

将 libprocesshider.so 移 动 到 其 他 文 件 夹 下 , 我 这 里 是 放 到 了 /usr/local/lib/ 目 录 下 , 之 后 将 libprocesshider.so 的 路 径 写 入 /etc/ld.so.preload 文件。



接下来使用 Bash 进行反弹 shell 并查看端口连接情况,可见,该网络 连接的进程名与 id 已无法查看。



03

效果总结


隐藏进程后加大了发现异常进程的难度,同时在应急过程中也会 阻碍应急工作的正常进行



如果觉得本文不错的话,欢迎加入知识星球,星球内部设立了多个技术版块,目前涵盖“WEB安全”、“内网渗透”、“CTF技术区”、“漏洞分析”、“工具分享”五大类,还可以与嘉宾大佬们接触,在线答疑、互相探讨。

▼扫码关注白帽子社区公众号&加入知识星球▼


浏览 86
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报