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

54
Fora Hackers! Proteção em camadas do SQL Server Fabricio Catae Technical Evangelist SQL Saturday #570

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

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

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

Fabricio CataeTechnical Evangelist SQL Saturday #570

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

Demo--HACKED--

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

AtaqueGrupo BUILTIN\Users adicionadoGrant EXECUTE on xp_cmdshellEnable xp_cmdshell (sp_configure)Configurado um Proxy accountConta de Administrador do Windows

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

Alinhamento dos PlanetasDesastres acontecem quando vários problemas existem ao mesmo tempo

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

ImprovávelGrupo BUILTIN\Users adicionadoGrant EXECUTE on xp_cmdshellEnable xp_cmdshell (sp_configure)Configurado um Proxy accountConta de Administrador do Windows

???

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

Segurança em CamadasO objetivo é minimizar o risco.

É impossível eliminar todas as brechas de segurança.

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

Regras do JogoPrincipal objetivo do Hacker

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

SysAdmin(SQL)

SQL Service(Windows)

Administrator(Windows)

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

Primeiros PassosIdentificando a porta de entrada

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

SQL (TDS): 1433 SQL ServerTCP 1433

Endpoint

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

IIS (HTTP): 80

SQL (TDS): 1433

IIS (HTTP)TCP 80Endpoint

SQL ServerTCP 1433

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

SQL (TDS): 1433SMB: 137, 138RPC Locator: 135

EndpointSQL ServerTCP 1433

TCP 137/138

TCP 135

File Share (SMB)

RPC Locator

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

SQL (TDS): 1433

SQL Browser: 1434 (UDP)

Endpoint

SQL ServerInstance2

TCP2222

UDP 1434SQL Browser

SQL ServerInstance1

TCP1433

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

SQL Browser

(UDP 1434)

Quais instâncias estão disponíveis?

Qual a porta da instância xxxxxx?

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

ConfiguraçãoDesligue o Browser (UDP 1434)Habilite o firewall do WindowsExponha a porta 1433 para clientes específicosEvite usar Named Pipes (SMB: TCP 137/138)Use usuários individuais para cada serviçoPrefira contas locais ao invés de domínioSegmente o tráfego de rede

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

Nivel 1: Segmentação de Rede

SQL Server

TCP80

Web Server

TCP1433

TCP 137/138

TCP 135

File SMBRPC

Locator

Frontend Backend

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

Entrando no ServidorPassando pelo sistema de autenticação

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

Acesso Direto ao Servidor

SQL Server

TCP80

Web Server

TCP1433

TCP 137/138

TCP 135

File SMBRPC

Locator

Frontend Backend

Server

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

Acesso à Camada TCP/IP

SQL Server

AUTHTCP 143

3

TCP/IP (Kernel)Listener (SQL)

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

Senha Fraca

DicionárioForça brutaReuso de senha

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

111111123456123456712345678qwerty123123abc123iloveyousqlserveradmin...

Dicionáriodefaultsapasswordpassword1passw0rdprincessblablabla666666adminroot

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

Ataque Brute Force

SQL Server

AUTH MASTER

MASTER

TCP 143

3

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

Demo--AUTH--

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

PasswordEscolha o modelo de autenticação• SQL Authentication•Windows Authentication

Políticas de senha• Password Policy• Password Expiration

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

Nível 2: Autenticação

SQL Server

TCP 1433

MASTER

Autenticação

Active DirectoryDomain

Controller

Não há password clear-textPWDENCRYPT: HASH + SaltPolítica de senha:• Complexidade• Expiração

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

Quebrando o SandboxTécnica usada para aumentar o poder do usuário

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

Primeiro Acesso aos Dados

SQL Server

AUTH

UserDatabase

TCP 143

31. LOGIN

DB

DB DB

2. CMDS

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

Login vs UserSQL ServerTCP

1433AUTH

DATABASE1

USERLOGIN

DATABASE2

USER

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

Perigo: Cross-Database Chaining

SQL ServerTCP 1433

AUTHDATABASE1

dboLOGIN

DATABASE2

USER dbo

Cross DB Chaining(SQL200

0)

Trustworthy DB

(SQL2005+)

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

SQL ServerTCP 1433

userdbo /

db_owner

Elevação de Privilégio

AUTHDATABASE1

SELECTUPDATE..

USERMASTER

DATABASE2

DATABASE3dbo

dbodbo

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

Personificação de UsuárioPermissão de IMPERSONATE

Limitado ao contexto de Database• sp_approle (password)• EXECUTE AS USER

Considerações adicionais para acesso “cross-database”• Trustworthy bit

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

Demo--TOKEN-

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

SQL ServerTCP 1433

Explorar falha em código nativo•Unsafe CLR•XP (DLL)

Elevação de Privilégio

AUTHDATABASE1

USER

SELECTUPDATE..

Extended Procedure

s(XP)

UnsafeCLR

Trustworthy DB

sysadmin

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

Nível 3: Limitação de Acesso por DB

SQL Server

AUTH

UserDatabase

TCP 143

31. LOGIN

DB

DB DB

2. CMDS

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

SQL InjectionPrincipal Ataque ao Banco de Dados

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

Passando comandos ao BD

SQL Server

TCP80

Web Server

TCP1433

TCP 137/138

TCP 135

File SMBRPC

Locator

Frontend Backend

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

Código simples (web)

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

SQL Server

TCP 1433Query

DMLDDL

Tipos de Acesso

AUTH

DATABASE1

SELECT

USERINSERT

UPDATE

DELETECREATE

DROPALTER

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

Demo‘’ + SQL INJECTION + ‘’

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

Uma forma simples de enganar o banco de dados

SQL Injection

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

Parametrizando Comandos

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

SQL ServerTCP

1433

Limitação de Acesso

AUTHDATABASE1

USERDML

QueryLOGIN

DDL

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

PrincipalsSecurable

Permissions

Objetos e Permissões

https://msdn.microsoft.com/en-us/library/ms191465.aspx

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

Hierarquia de PermissãoInstância

Database

SchemaTables

Stored ProcsViews

Impersonate

USERLOGIN

PP

PP

Permission

P

DBSchOBJ

etc

Login

Endpoint

etc

PP

P

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

Bons exemplos de permissãoImpedir que usuários de aplicação executem DDLEvitar 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

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

Nível 4: Restringindo Permissões

Instância SQL

DatabaseSchema

Stored ProcsViews

USERLOGINEXEC

SELECT

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

Fora Hackers!Minimizando os riscos com proteção em camadas

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

Proteção em Camadas

SQL Server

DBSchOBJ

SELECTEXECUTE

AUTH

Segurança de RedeAutenticação

Isolamento por DBPermissionamento

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

Obrigado

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

Episódio II – Data at RestQuando o perigo está do lado de dentro

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

Proteção em Camadas

SQL Server

TCP80

IIS (HTTP)

TCP1433

TCP 137/138

TCP 135

File SMBRPC

Locator

Frontend Backend

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

CenáriosTransporte de backup para outro Data CenterFita de backup de antigoAmbiente de homologaçãoBanco de dados compartilhado por clientesFalta de confiança no DBA

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

SANLANAppTeste

Storage

Data Mask

TransparentDataEncryption

Backup

Row Level Security

Cliente1 Cliente2

App Segura

SQL Server

Always Encrypted

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

Obrigado