MSSQL绕过微软杀毒提权案例

  • A+
所属分类:安全文章
声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

所有话题标签:

#Web安全   #漏洞复现   #工具使用   #权限提升

#权限维持   #防护绕过   #内网安全   #实战案例

#其他笔记   #资源分享   #MSF


0x01 前言

朋友发来的是一个支持外链的MSSQL,未做站库分离处理,且可以直接通过xp_cmdshell执行命令,但是由于目标系统为Windows 2019,自带的有微软的Windows Defender防病毒,他在执行PowerShell攻击命令时被拦截后不知道要怎么绕过,所以让我帮着给看下。
MSSQL绕过微软杀毒提权案例

0x02 信息搜集

目标机器基本信息:
目标系统:Windows Server 2019(10.0.17763 暂缺 Build 17763)数据库版本:Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 当前权限:nt servicemssqlserver开放端口:80、135、445、1433、2383(ssas)、3389......进程名称:Ssms.exesqlwriter.exesqlservr.exeMsMpEng.exechrome.exe......

有实战经验的老哥在看到“此脚本包含恶意内容,已被你的防病毒软件阻止。”提示时就知道是Windows Defender拦截的,我们拿目标机器上的进程列表到“Windows杀软在线对比辅助”上对比了一下发现确实存在

MSSQL绕过微软杀毒提权案例


0x03 实战提权过程

现在已经确定存在Windows Defender,那么我们就先来绕过它获取一个MSF会话,经过测试发现MSF的web_delivery模块直接就可以绕过了,但是不能在SSMS和Navicat Premium中执行这个Payload,会出现“开头的 标识符 太长。最大长度为 128”的报错。
MSSQL绕过微软杀毒提权案例

因为这是一个支持外链的MSSQL,所以我们还可以换其他的MSSQL连接工具试一下,这里我直接用的MSF中的mssql_exec模块执行的Payload,可以看到已经成功获取到目标机器会话
MSSQL绕过微软杀毒提权案例

这里我们先尝试了利用MS16-075模块来进行权限提升,但是由于目标机器上的Windows Defender防病毒软件原因利用失败了,而且会话还掉了几次,如果有免杀EXP可以试一下
MSSQL绕过微软杀毒提权案例

MS16-075模块利用失败了,但是我们在前期的信息搜集中有发现目标机器上还运行着一个Ssms.exe进程,这个进程是MSSQL客户端连接工具,全称为SQL Server Management Studio
MSSQL绕过微软杀毒提权案例

我们在《站库分离常规渗透思路总结》这篇文章中也有提到过这个提权方法,当目标机器有在使用Windows身份验证连接MSSQL数据库时就会保留当前登录用户的令牌,所以可以直接利用MSF中的Incognito扩展来进行权限提升,可以看到已经成功提升至Administrator权限
MSSQL绕过微软杀毒提权案例

注:为什么拿到Administrator后不直接进入cmdshell添加管理员用户呢?因为动静太大了,在进行远程桌面连接时会产生大量日志,这样容易被管理员发现,所以个人建议不到万不得已时不要直接去添加管理员用户和连接远程桌面,尽可能的都在命令行下执行相关操作。

虽然已经得到目标机器的Administrator权限,但是Windows Defender还拦截了一些命令的执行,如:执行getsystem会一直卡着不动,所以目前无法得到SYSTEM以及HASH和明文。

MSSQL绕过微软杀毒提权案例


经过测试发现可以使用migrate命令将当前会话进程迁移至其他SYSTEM权限运行的进程中去,这里我迁移的是PID为7008的GoogleCrashHandler.exe进程,但还是不能使用hashdump命令抓取hash,kiwi也抓取不到明文密码,以前没有测试过Windows 2019,不知道能不能通过修改WDigest注册表的方式来抓取明文密码。
MSSQL绕过微软杀毒提权案例

因为我们现在已经是SYSTEM最高权限了,具备SAM注册表的完全控制权限,所以现在是可以直接利用post/windows/gather/hashdump模块抓取HASH,但是解密不了
MSSQL绕过微软杀毒提权案例

思路小结:
  • 1. 利用mssql_exec模块执行powershell payload绕过Windows Defender获取MSF会话;

  • 2. 利用kiwi扩展“通过MSSQL客户端连接工具的Ssms.exe进程”模拟Administrator令牌;

  • 3. 利用migrate进程迁移命令绕过Windows Defender得到SYSTEM以及HASH和明文密码;


0x04 其他绕过思路

当目标机器存在Windows Defender防病毒软件时,即使已经拿到了Administrator会话后仍然无法执行getsystem、hashdump、list_tokens等命令和一些后渗透模块,除了上边已测试的migrate进程迁移方法外还可以尝试以下三个思路。尽可能的拿到目标机器的SYSTEM以及HASH和明文密码,在内网环境中可能会有其他用途,这里仅为大家扩展几个绕过思路,就不截图了

(1) 直接添加管理员用户

使用shell命令进入cmdshell后直接利用net命令来添加一个管理员用户,然后远程桌面连接进去关闭Windows Defender防病毒软件的实时保护,最后尝试抓取目标机器HASH和明文密码

net user test [email protected]#!23 /addnet localgroup administrators test /add

(2) 修改SAM注册表权限

使用regini命令修改SAM注册表权限,然后利用post/windows/gather/hashdump模块抓取目标机器HASH,最后再利用135/445等支持哈希传递的工具来执行命令。

echo HKLMSAMSAM [1 17]>C:ProgramDatasam.iniregini C:ProgramDatasam.ini

(3) 关闭杀毒软件实时保护

使用Windows Defender防病毒软件中自带MpCmdRun.exe程序来关闭它的实时保护,然后再利用hashdump命令或模块抓取目标机器HASH。MSF中的rollback_defender_signatures模块也可以用来关闭实时保护,但是需要SYSTEM权限才能执行。
C:PROGRA~1WINDOW~1>MpCmdRun.exe -RemoveDefinitions -allMpCmdRun.exe -RemoveDefinitions -all
Service Version: 4.18.1812.3Engine Version: 1.1.17600.5AntiSpyware Signature Version: 1.327.2026.0AntiVirus Signature Version: 1.327.2026.0NRI Engine Version: 1.1.17600.5NRI Signature Version: 1.327.2026.0
Starting engine and signature rollback to none...Done!

0x05 注意事项

记得前几年在测试Windows Defender时好像几乎所有获取MSF会话的方式都是会被拦截的,但是不知道为什么在这个案例中就没有拦截web_delivery模块中的Powershellhta_server模块是会被拦截的,MSF或Windows Defender版本原因吗?这里我也没有再去深究这个问题,所以大家在实战测试中还是得自己多去尝试,说不定哪种方法就成功了呢!!!



只需在公众号回复“9527”即可领取一套HTB靶场学习文档和视频,1120领取安全参考等安全杂志PDF电子版1208领取一份常用高效爆破字典还在等什么?

MSSQL绕过微软杀毒提权案例

本文始发于微信公众号(潇湘信安):MSSQL绕过微软杀毒提权案例

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: