ssh幽灵登录
ssh 幽灵登录
ssh -T
在逛hackingclub的时候,逛到了ssh -T
这么一说,主要命令如下:
1 | ssh -T root@IP /bin/bash -i |
w和last,只能发现完整的tty交互式终端,而上述命令并不会分配一个真正的tty,仅仅是调用了/bin/bash而已
进行一个交互,当我想通过ssh --help
的时候,没有找到,然后听师傅们说,使用man 查一下手册,就可以看到
-T的意思是强制不分配伪终端,这里就开始找伪终端是什么,,
伪终端(Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分别是/dev/pty/m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串行端口设备,则它对该端口的读/写操作会反映在该逻辑终端设备对的另一个上面(ttyp3)。而ttyp3则是另一个程序用于读写操作的逻辑设备。这样,两个程序就可以通过这种逻辑设备进行互相交流,而其中一个使用ttyp3的程序则认为自己正在与一个串行端口进行通信。这很象是逻辑设备对之间的管道操作。
这里还有个串行终端,伪终端会把收到的数据通过接口传给串行终端。之所以不分配,我感觉是因为这样的情况下还是可以存在日志记录的,不分配的话,应该是可以减少一些记录的。毕竟隐匿才是关键的部分。
具体细节可以看这几个师傅的文章:
https://blog.csdn.net/chdhust/article/details/8495921
https://blog.csdn.net/dou_hua_hua/article/details/108382514
联动
这里 后面使用了 /bin/bash -i 进行交互,我尝试了一下不用bash,应该也是可以实现一些简单的命令执行,但是交互的体验不是很好。
如果要使用 bash的话,肯定会留下一些记录,所以我们接下来,需要清理一下日志记录。
不记录ssh公钥在本地.ssh目录中
1 | ssh -o UserKnownHostsFile=/dev/null -T root@IP /bin/bash -i |
这里参考师傅的文章