MSSQL绕过微软杀毒提权案例

简介: MSSQL绕过微软杀毒提权案例

0x01 前言

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

0x02 信息搜集

目标机器基本信息:

    目标系统:Windows Server 2019(10.0.17763 暂缺 Build 17763)
    数据库版本:Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 
    当前权限:nt service\mssqlserver
    开放端口:80、135、445、1433、2383(ssas)、3389......
    进程名称:Ssms.exe、sqlwriter.exe、sqlservr.exe、MsMpEng.exe、chrome.exe......

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


    0x03 实战提权过程

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

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

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

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

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

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

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


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

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

    思路小结:

    • 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 xxxasec!@#!23 /add
      net localgroup administrators test /add


      (2) 修改SAM注册表权限

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

        echo HKLM\SAM\SAM [1 17]>C:\ProgramData\sam.ini
        regini C:\ProgramData\sam.ini


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

        使用Windows Defender防病毒软件中自带MpCmdRun.exe程序来关闭它的实时保护,然后再利用hashdump命令或模块抓取目标机器HASH。MSF中的rollback_defender_signatures模块也可以用来关闭实时保护,但是需要SYSTEM权限才能执行。

          C:\PROGRA~1\WINDOW~1>MpCmdRun.exe -RemoveDefinitions -all
          MpCmdRun.exe -RemoveDefinitions -all
          Service Version: 4.18.1812.3
          Engine Version: 1.1.17600.5
          AntiSpyware Signature Version: 1.327.2026.0
          AntiVirus Signature Version: 1.327.2026.0
          NRI Engine Version: 1.1.17600.5
          NRI 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版本原因吗?这里我也没有再去深究这个问题,所以大家在实战测试中还是得自己多去尝试,说不定哪种方法就成功了呢!!!

          相关文章
          |
          前端开发 Java 测试技术
          基于SSM的大学生电信诈骗宣传系统设计与实现
          基于SSM的大学生电信诈骗宣传系统设计与实现
          807 0
          |
          7月前
          |
          机器学习/深度学习 物联网
          什么是大模型微调?与预训练有什么区别?
          大模型通过海量数据预训练获得通用能力,成本极高;微调则用少量数据调整模型,适应特定任务。轻量级方法如LoRA、PEFT等仅更新部分参数,降低资源消耗,实现高效定制。
          1089 5
          |
          存储 Oracle 关系型数据库
          Oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死的一种解决方法
          Oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死的一种解决方法
          1748 0
          |
          SQL 关系型数据库 MySQL
          Pandas获取SQL数据库read_sql()函数及参数一文详解+实例代码
          Pandas获取SQL数据库read_sql()函数及参数一文详解+实例代码
          9216 0
          Pandas获取SQL数据库read_sql()函数及参数一文详解+实例代码
          |
          人工智能 Cloud Native 数据可视化
          微医控股与阿里云达成战略合作,双方将携手基于通义千问大模型联合打造医疗全场景智能体,共同构建医疗垂类大模型
          2025年6月17日,微医控股与阿里云达成战略合作,共建医疗AI基座及医疗全场景智能体。双方将基于通义千问大模型打造医疗垂类大模型,升级微医“5+1”智能体,并在诊断、用药、健康管理等环节深化应用。微医将结合阿里云技术优势推进IDC上云,助力AI+医疗基础设施建设,共同制定行业标准并推广城市级AI数字健共体。目前,微医AI服务已连接全国1.2万家医院和30万名医生,健康管理会员超100万。
          2615 2
          |
          安全 NoSQL 网络协议
          SSRF内网打穿相关姿势
          本文详细介绍了服务器端请求伪造(SSRF)漏洞,包括其定义、漏洞场景、常见漏洞函数、URL伪协议及其利用方法。通过具体的靶机示例,展示了如何利用SSRF漏洞进行内网探测、命令执行、SQL注入、命令注入、XXE注入、Tomcat任意文件上传和Redis未授权访问等攻击。文章还提供了相关工具和参考资料,帮助读者更好地理解和应对SSRF漏洞。
          2292 0
          SSRF内网打穿相关姿势
          |
          安全 Shell Windows
          【权限提升】WIN本地用户&BypassUAC&DLL劫持&引号路径&服务权限
          【权限提升】WIN本地用户&BypassUAC&DLL劫持&引号路径&服务权限
          663 2
          |
          数据采集 人工智能 智能设计
          首个!阿里云人工智能平台率先通过国际标准认证
          首个!阿里云人工智能平台率先通过国际标准认证
          603 7
          |
          SQL 存储 关系型数据库
          多态性在面向对象编程中的应用场景
          多态性是面向对象编程的核心特性之一,允许使用同一接口表示不同类型的对象,提高代码的灵活性和可扩展性。常见应用场景包括:方法重写、接口实现、抽象类等,通过多态可以轻松管理复杂系统,实现软件组件的松耦合。
          786 5
          |
          安全 网络协议 NoSQL