T1505.001: SQL 存储过程
摘要
攻击者可能滥用 SQL 存储过程来建立对系统的持久访问。SQL 存储过程是可以保存和重用的代码,以便数据库用户不必浪费时间重写频繁使用的 SQL 查询。存储过程可以通过使用过程名的 SQL 语句调用数据库来调用,也可以通过定义的事件(例如当 SQL 服务器应用程序启动/重启时)调用。 攻击者可能构造可在 SQL 数据库服务器中提供持久化机制的恶意存储过程。(Citation: NetSPI Startup Stored Procedures)(Citation: Kaspersky MSSQL Aug 2019) 要通过 SQL 语法执行操作系统命令,攻击者可能必须启用额外功能,例如用于 MSSQL Server 的 xp_cmdshell。(Citation: NetSPI Startup Stored Procedures)(Citation: Kaspersky MSSQL Aug 2019)(Citation: Microsoft xp_cmdshell 2017) Microsoft SQL Server 可以启用公共语言运行时 (CLR) 集成。启用 CLR 集成后,应用程序开发人员可以使用任何 .NET 框架语言(例如 VB .NET、C# 等)编写存储过程。(Citation: Microsoft CLR Integration 2017) 攻击者可能构造或修改链接到存储过程的 CLR 程序集,因为这些 CLR 程序集可以被设置为执行任意命令。(Citation: NetSPI SQL Server CLR)
来源归属
来源:MITRE ATT&CK · 置信度:high
平台
- Windows
- Linux
战术
持久化
参考来源
- https://attack.mitre.org/techniques/T1505/001
- https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration/common-language-runtime-integration-overview?view=sql-server-2017
- https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/xp-cmdshell-transact-sql?view=sql-server-2017
- https://securelist.com/malicious-tasks-in-ms-sql-server/92167/
- https://www.netspi.com/blog/technical-blog/network-penetration-testing/sql-server-persistence-part-1-startup-stored-procedures/
- https://www.netspi.com/blog/technical-blog/adversary-simulation/attacking-sql-server-clr-assemblies/