事情的起因是收到运维人员的通知,部署在某云的一台SQL Server数据库,其中存在未启用密码过期策略的账号,并且提供了账号列表。

问题在于,我们并没有提供SQL Server的登录账号给运维,也没有将除自己之外的操作系统账号或组加入SQL Server,运维是如何拿到这个信息的呢?经咨询,这个结果是某云的安全扫描发现的​。由于这台SQL Server存放的是监控结果数据,里面的信息不存在敏感信息,所以也没有太在意。
    但问题始终还是要搞清楚,在有暇的时候,做了测试观察,搞清楚了这个安全扫描潜入SQL Server的方式,比较有趣,所以写了这个​日记。
    首先,登录SQL Server有两种身份验证模式:一种是SQL账号,这个是用账号+密码的方式;另一种是Windows身份验证,使用当前登录操作系统的账号做为凭据进入SQL Server​(当然,SQL Server中要先建立 对应的映射,并授予合适的权限)。SQL Server支持仅Windows身份验证和混合身份验证(Windows+SQL)这两种身份验证模式供选择。
    对于SQL身份验证验证,需要明确的用户名和密码,所以安全扫描不可能用这种方式潜入(我们的密码都是复杂加长的,sa也是禁用了的,安全扫描不可能能轻易破解,而且SQL Server日志中也没有登录失败的尝试)​。

Windows身份验证应该是突破口,我们并没有将除自己之外的Windows用户或用户组加入SQL Server,检查也没有发现我们所在用户组有自己之外的用户存在​。所以通过管理员用户之类的身份潜入SQL Server的情况可以被排除​。
    第二个需要排除的点是SQL Server服务的启动用户,因为某些原因,我们的SQL Server使用了Local System做为服务的启动用户,对安全比较熟习和敏感的同学同学都知道,在这种情况下,如果有本机操作系统的足够权限,可以很轻松地通过Local System进入SQL Server​。这无疑是安全扫描可能潜入的一个有效途径(运维将安全扫描安装在我们的操作系统中,并且有足够权限)​。

于是,我们将SQL Server的启动账户更换成了SQL Server默认的虚拟账号,相对于Local System,这个的安全性更高一些​。更换之后,我们发现安全扫描照样能够潜入​。祭起Porfiler这个法宝来确定一下安全扫描的潜入方式吧(在排查问题的初期没有用这个,是因为不太好把握潜入的时间点,也没有足够的规则来缩小Profiler的范围,所以先猜猜看),通过Profiler捕获的数据分析,确定了安全扫描是通过SQL Server服务账号​潜入的。
    对于通过虚拟账号登入SQL Server的这种骚操作,之前还真没有考虑过,所以自己做了一下实验,过程稍微有点曲折,但不难做到​。

接下来就是防御的了,由于是本机潜入的,所以防火墙隔离就不用想了。SQL Server服务账号也不可能禁用或调整权限(毕竟服务自己还在用呢),登录触发器似乎是目前能够想到的唯一解,于是做了一个登陆触发器,检查通过服务账号进行的登录,如果其PID不是SQL Server服务自己的PID,那么将其​Rollback。

到这里似乎可以结束了,我们已经在日志中看到了登录失败的信息,证明登录触发器确实有​阻挡作用。但随后我们的通过Profiler做最终验证的时候,我们发现安全扫描软件仍然​潜入了。

难道是我们的登录触发器规则有漏洞,但对比Profiler的结果,我们的触发器中的Rollback规则是没问题的。我们在触发器中,将Rollback的登录给记录下来,对比Profiler,我们发现安全扫描潜入时的某些登录,并没有触发登录触发器。查阅官网对登录触发器的说明,没有查到有哪些特例会导致​不触发登录触发器。最后我们想到了管理员连接,经验证,管理员连接确实不会触​发登录触发器。但本机的管理员连接是无法关闭的(目前我没有找到关闭的办法,能打开和关闭的只有远程管理员连接);同样,因为是本机连接,所以也不能通过防火墙限制管理员连接​端口。最后能够想到的办法就是自己先建立 一个管理员连接,将连接给占用。通过这个措施之后,我们​发现安全扫描无法潜入了。(到了这里,感觉这个安全扫描就是一个典型的渗透软件)​

最后需要补充的是,服务的账号可以改成带密码的本地账户或域账户,这样就规避了无密码潜入的途径,但这样的结果是:要么建立 一个密码永不过期的账号,要么改账号密码的时候重启SQL Serv​er服务。
    当然,除了SQL Server自己的服务账号之外,SQL Server Agent服务账号也是一个可以用于潜入。

【本文在个人微信公共号ZJCXC上同步发表】

某云安全扫描对SQL Server潜入的观察日记相关推荐

  1. 一个菜鸟SQL SERVER 2005 DBA的日记。。。

    先申明,我是一个菜鸟SQL SERVER 2005 DBA,感觉基本就不懂,买了本书就上手工作了! 这个岗位是公司新增加的. 今天是做SQL  SERVER 2005 DBA的第四天了--主管还没有分 ...

  2. Sql server Insert执行的秘密(下) 带外键的INSERT分析

    2019独角兽企业重金招聘Python工程师标准>>> 这一篇分析一下带外键表的INSERT的例子.   本文所用的数据表结构如上图所示:其中Blog表上BlogID是自增的主键,并 ...

  3. 《Pro SQL Server Internals》部分翻译(P155-165)

    本文选自<Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress 出版年: 2016-12-29 作者简介:Dmitri ...

  4. 10个最重要SQL Server事务日志神话

    Myth: SQL transaction log truncation will make it smaller 误解: SQL事务日志截断将使其变小 The truncation process ...

  5. sql server insert 锁表_SQL Server的insert执行的秘密(下) 带外键的insert分析

    上一篇文章介绍了一个最简单INSERT语句的执行计划详细情况,这一篇分析一下带外键表的INSERT的例子. 本文所用的数据表结构如上图所示:其中Blog表上BlogID是自增主键,并在CreateUs ...

  6. SQL SERVER插入数据操作

    准备工作: 我需要一张User表,这张表有几个字段,还有一个自增长的数字id,表结构如下: 这是一张比现实应用中简单的多的用户表,UserID是自增长字段. 开始执行一个最简单的INSERT: ? 1 ...

  7. SQL Server 2008+ 性能调优

    目录 机器指标 机器处理时间(Machine Processor TIme) 解释 指导值 另请检查 可能的解决方案 平均Cpu队列长度(Avg.Cpu Queue Length) 等效性能计数器 解 ...

  8. 《Pro SQL Server Internals, 2nd edition》CHAPTER 2 Tables and Indexes-Clustered Indexes

    一.聚集索引 作者:薛朝鹏,张鹏辉 聚集索引指示表中数据的物理顺序,该表根据聚簇索引键进行排序. 该表只能定义一个聚集索引. 假设您要在堆表上使用数据创建聚集索引. 作为第一步,如图2-5所示,SQL ...

  9. 解决 SQL Server 中 CPU 使用率过高的问题

    本文提供了诊断和修复运行 Microsoft SQL Server 的计算机上 CPU 使用率过高导致的问题的过程. 尽管在 SQL Server 中出现 CPU 使用率过高有许多可能原因,但以下原因 ...

最新文章

  1. 如何让小程序页面更顺滑_微信小程序|实现界面滑动切换
  2. 每天一个linux命令(9):touch 命令
  3. lua 判断为空的逻辑
  4. jvm性能调优实战 - 39一次大促导致的内存泄漏和Full GC优化
  5. 如何和女生聊天不进入友谊区
  6. 二维数组的对角搜索C++
  7. Android Bander设计与实现 - 设计篇
  8. java中对list监听_java – Guava:为ListenableFuture回调和监听器设置默认的Executor
  9. python接口测试第二期_上海悠悠python接口自动化测试第二期视频教程价值1600
  10. 通用权限管理系统设计篇
  11. 如何成为嵌入式软件工程师_为什么要成为软件工程师
  12. 系统运维工程师必备面试题库
  13. 计算机读博士一个月补助多少钱,中国200万在读硕士生和博士生,每月能拿到多少补助?...
  14. 华为mate40Android,【猫哥爆料】史上最强Mate40官宣,坐实年度安卓机皇!
  15. 使用python的zipfile模块巧解word批量生成问题
  16. Python分析股票行情代码
  17. JDK1.7 api 中文(不是全中文)
  18. 三个线程轮流执行顺序打印ABC
  19. 计算机和网络管理员笔试题,企业招聘网络管理员笔试题
  20. 串口服务器有没有协议转换,协议转换器与moxa串口服务器通讯配置.doc

热门文章

  1. Qt开发的国内外知名软件
  2. excel空白单元格自动下下填充上一个单元格的值
  3. 像素画软件android,Pixly像素画编辑器
  4. Redis key前缀的设计与使用
  5. 赵小楼《天道》《遥远的救世主》深度解析(44)怎么理解肖亚文听到芮小丹说爱上丁元英时所说的“地狱”?
  6. python对mysql增删改查+计算器+九九乘法表
  7. c#配合c++调节屏幕亮度,非伽马以及RGB方案
  8. 浏览器调试 console.table() 方法,方便查看json和数组数据内容
  9. 在springboot中导入spring-web相关包导致的错误经验(一)
  10. 【从FT到DFT和FFT】(一)从三角函数正交性到傅里叶变换的详细公式推导