Metasploit获取不到会话的因素及解决方案

电子说

1.2w人已加入

描述

前言

我们在用Metasploit进行渗透测试时经常会遇到这样的情况,已经成功执行了Payload,但始终获取不到会话。这篇文章就来给大家讲一下获取不到会话的一些常见原因,已经知道了问题所在,至于要怎么解决就看大家自己的了,该绕的绕,该免杀的免杀!

一般常见情况有:

1、直接获取不到会话;

2、获取到会话后自动断开;

3、获取到会话但是卡住不动了。

(1) 快速判断Metasploit会话完整性

如果直接通过浏览器访问监听IP:Port,或者是在获取会话的过程中按Ctrl+C键强制结束掉了,这时我们获取到的会话可能都是不完整的,即使成功得到了会话,进去之后会发现很多命令都执行不了。 这时可以通过session命令来快速判断我们得到的会话完整性,如果“Information”列中为空白则是不完整,反之则完整。  

防火墙

(2) Payload与目标系统架构不一样

这里说的系统架构不一样是因为我们生成的Msf Payload是x64,而目标系统是x86,在执行Payload过程中会出现“不是有效的Win32应用程序”报错,所以无法获取到会话。 这种情况一般出现在XP/2003机器上, 不过x86的Payload可以在x64上成功运行,不存在兼容性问题 。  

防火墙

(3) Payload与监听模块设置不一样

我们生成的Msf Payload是x86的,但是在handler监听模块里设置的Payload为x64时就会出现这种会话自动断开的情况。 不过在这种情况下如果Payload是可执行的,我们只需要将handler监听模块里设置的Payload改为对应的x86即可解决。   重点注意:

1、目标系统架构;

2、Msfvenom生成Payload;

3、handler监听模块Payload。

防火墙

(4) 目标配置系统防火墙出入站规则

有时会遇到这样的情况,即使我们生成的Msf Payload、handler监听模块Payload和目标系统架构都是相对应的,但在执行Payload时仍然获取不到会话。

这可能是因为目标已开启Windows自带防火墙并设置了出入站规则,也有可能是被其它流量监测类的安全设备所拦截,可以通过netstat -ano命令来查看我们执行的Payload与目标机器建立的网络连接状态是否为SYN_SENT?

SYN_SENT的几种常见情况:

1、MSF里没有监听;

2、Windows系统防火墙;

3、其它的安全设备等。

防火墙

(5) VPS配置系统防火墙出入站规则

记一次与朋友 @Sin 在他的Centos VPS上做测试时发现获取不到会话,在经过排查之后发现问题出在“宝塔防火墙”,其实也就是Centos自带防火墙,在宝塔安装过程中会自动配置系统防火墙,默认规则只允许特定端口能出网:21、22、80、8888,如下图。  

防火墙

防火墙

解决方案: 在宝塔控制面板中没有找到关闭防火墙的相关设置选项,只能设置放行端口,不过我们可以使用以下命令来关闭Centos自带防火墙,或者使用默认规则中的放行端口进行bind_tcp正向连接即可成功获取会话,可通过这个文件来查看防火墙规则(/etc/firewalld/zones/public.xml)。

1、查看防火墙状态:firewall-cmd --statesystemctl status firewalld.service
2、开启防火墙:systemctl start firewalld.service
3、临时关闭防火墙:systemctl stop firewalld.service
4、永久关闭防火墙:systemctl disable firewalld.service
5、查看所有放行端口:firewall-cmd --list-port

(6) 反病毒软件特征查杀或流量检测

在上传、执行Payload文件时可能会被反病毒软件的特征、行为、内存、流量检测并查杀,笔者本地测试发现当我们把火绒“黑客入侵拦截”或赛门铁克“Enable Network intrusion prevention”开启后再执行Payload时就会出现发送stage到目标,但无法建立一个完整的会话回来,关闭后就能立即获取到目标会话,关于免杀和绕过不在本节讨论范围内。

特征查杀:上传的Payload以及各种恶意PE文件直接会被拦截并查杀(360杀毒)

流量检测:成功执行Payload并发送stage到目标,但一直卡着不动(ESET NOD32)

防火墙

(7) IIS应用程序池-启用32位应用程序

以往的渗透渗透过程中遇到过在浏览器访问Metasploit的Aspx Payload秒解析,但是没能获取会话的情况。 这可能是因为目标机器的IIS应用程序池中设置了“启用32位应用程序”选项为True或False了,可以尝试换到x86/x64的Payload再试试看。

当“启用32位应用程序”选项为True时Aspx Payload 32可以获取会话,64无法获取会话。

当“启用32位应用程序”选项为False时Aspx Payload 64可以获取会话,32无法获取会话。

防火墙

编辑:hfy

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分