Fora Hackers!
Proteção em camadas do SQL Server
Fabricio Catae
Technical Evangelist SQL Saturday #570
Demo
--HACKED--
Ataque
Grupo BUILTINUsers adicionado
Grant EXECUTE on xp_cmdshell
Enable xp_cmdshell (sp_configure)
Configurado um Proxy account
Conta de Administrador do Windows
Alinhamento
dos
Planetas
Desastres
acontecem quando
vários problemas
existem ao mesmo
tempo
Improvável
Grupo BUILTINUsers adicionado
Grant EXECUTE on xp_cmdshell
Enable xp_cmdshell (sp_configure)
Configurado um Proxy account
Conta de Administrador do Windows
???
Segurança
em Camadas
O objetivo é
minimizar o risco.
É impossível eliminar
todas as brechas de
segurança.
Regras do Jogo
Principal objetivo do Hacker
SysAdmin
(SQL)
SQL Service
(Windows)
Administrator
(Windows)
Primeiros Passos
Identificando a porta de entrada
SQL (TDS): 1433
SQL Server
TCP 1433
Endpoint
IIS (HTTP): 80
SQL (TDS): 1433
IIS (HTTP)TCP 80
Endpoint
SQL ServerTCP 1433
SQL (TDS): 1433
SMB: 137, 138
RPC Locator: 135
Endpoint
SQL ServerTCP 1433
TCP 137/138
TCP 135
File Share (SMB)
RPC Locator
SQL (TDS): 1433
SQL Browser:
1434 (UDP)
Endpoint
SQL Server
Instance2
TCP
2222
UDP
1434SQL Browser
SQL Server
Instance1
TCP
1433
SQL Browser
(UDP 1434)
Quais instâncias estão
disponíveis?
Qual a porta da
instância xxxxxx?
Configuração
Desligue o Browser (UDP 1434)
Habilite o firewall do Windows
Exponha a porta 1433 para clientes específicos
Evite usar Named Pipes (SMB: TCP 137/138)
Use usuários individuais para cada serviço
Prefira contas locais ao invés de domínio
Segmente o tráfego de rede
Nivel 1: Segmentação de Rede
SQL
Server
TCP
80
Web
Server
TCP
1433
TCP
137/138
TCP 135
File SMB
RPC Locator
Frontend Backend
Entrando no Servidor
Passando pelo sistema de autenticação
Acesso Direto ao Servidor
SQL
Server
TCP
80
Web
Server
TCP
1433
TCP
137/138
TCP 135
File SMB
RPC Locator
Frontend Backend
Server
Acesso à Camada TCP/IP
SQL Server
AUTH
TCP
1433
TCP/IP (Kernel)
Listener (SQL)
Senha
Fraca
Dicionário
Força bruta
Reuso de senha
111111
123456
1234567
12345678
qwerty
123123
abc123
iloveyou
sqlserver
admin
...
Dicionário
default
sa
password
password1
passw0rd
princess
blablabla
666666
admin
root
Ataque Brute Force
SQL Server
AUTH MASTER
MASTER
TCP
1433
Demo
--AUTH--
Password
Escolha o modelo de autenticação
• SQL Authentication
• Windows Authentication
Políticas de senha
• Password Policy
• Password Expiration
Nível 2: Autenticação
SQL Server
TCP 1433
MASTER
Autenticação
Active Directory
Domain Controller
Não há password clear-text
PWDENCRYPT: HASH + Salt
Política de senha:
• Complexidade
• Expiração
Quebrando o Sandbox
Técnica usada para aumentar o poder do usuário
Primeiro Acesso aos Dados
SQL Server
AUTH
User
Database
TCP
1433
1. LOGIN
DB
DB DB
2. CMDS
Login vs User
SQL Server
TCP
1433
AUTH
DATABASE1
USERLOGIN
DATABASE2
USER
Perigo: Cross-Database Chaining
SQL Server
TCP
1433
AUTH
DATABASE1
dboLOGIN
DATABASE2
USER dbo
Cross DB
Chaining
(SQL2000)
Trustworthy DB
(SQL2005+)
SQL Server
TCP
1433
user
dbo / db_owner
Elevação de
Privilégio
AUTH
DATABASE1
SELECT
UPDATE..
USERMASTER
DATABASE2
DATABASE3dbo
dbo
dbo
Personificação de Usuário
Permissão de IMPERSONATE
Limitado ao contexto de Database
• sp_approle (password)
• EXECUTE AS USER
Considerações adicionais para acesso “cross-
database”
• Trustworthy bit
Demo
--TOKEN-
SQL Server
TCP
1433
Explorar falha em
código nativo
•Unsafe CLR
•XP (DLL)
Elevação de
Privilégio
AUTH
DATABASE1
USER
SELECT
UPDATE..
Extended
Procedures
(XP)
Unsafe
CLR
Trustworthy DB sysadmin
Nível 3: Limitação de Acesso por DB
SQL Server
AUTH
User
Database
TCP
1433
1. LOGIN
DB
DB DB
2. CMDS
SQL Injection
Principal Ataque ao Banco de Dados
Passando comandos ao BD
SQL
Server
TCP
80
Web
Server
TCP
1433
TCP
137/138
TCP 135
File SMB
RPC Locator
Frontend Backend
Código simples (web)
SQL Server
TCP
1433Query
DML
DDL
Tipos de
Acesso
AUTH
DATABASE1
SELECT
USER
INSERT
UPDATE
DELETECREATE
DROPALTER
Demo
‘’ + SQL INJECTION + ‘’
Uma forma simples
de enganar o banco
de dados
SQL Injection
Parametrizando Comandos
SQL Server
TCP
1433
Limitação de Acesso
AUTH
DATABASE1
USER
DML
QueryLOGIN
DDL
Principals
Securable
Permissions
Objetos e
Permissões
https://msdn.microsoft.com/en-us/library/ms191465.aspx
Hierarquia de Permissão
Instância
Database
Schema
Tables
Stored Procs
Views
Impersonate
USERLOGIN
P
P
P
P
Permission
P
DB
Sch
OBJ
etc
Login
Endpoint
etc
P
P
P
Bons exemplos de permissão
Impedir que usuários de aplicação executem DDL
Evitar acesso direto às tabelas do banco de dados
Aplicação OLTP
• Usar Stored Procedures (GRANT EXECUTE on PROC)
Aplicação OLAP
• Usar Views (GRANT SELECT on VIEW)
Organizar os objetos em Schema para agrupar permissão
Nível 4: Restringindo Permissões
Instância SQL
Database
Schema
Stored Procs
Views
USERLOGIN
EXEC
SELECT
Fora Hackers!
Minimizando os riscos com proteção em camadas
Proteção em Camadas
SQL Server
DB
Sch
OBJ
SELECT
EXECUTE
AUTH
Segurança de Rede
Autenticação
Isolamento por DB
Permissionamento
Obrigado
Episódio II – Data at Rest
Quando o perigo está do lado de dentro
Proteção em Camadas
SQL
Server
TCP
80
IIS
(HTTP)
TCP
1433
TCP
137/138
TCP 135
File SMB
RPC Locator
Frontend Backend
Cenários
Transporte de backup para outro Data Center
Fita de backup de antigo
Ambiente de homologação
Banco de dados compartilhado por clientes
Falta de confiança no DBA
SANLAN
App
Teste
Storage
Data
Mask
Transparent
Data
Encryption
Backup
Row Level
Security
Cliente1 Cliente2
App
Segura
SQL
Server
Always
Encrypted
Obrigado

Fora Hackers! Proteção em camadas do SQL Server