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

Preview:

Citation preview

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

Fabricio CataeTechnical Evangelist SQL Saturday #570

Demo--HACKED--

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

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

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

???

Segurança em CamadasO objetivo é minimizar o risco.

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

Regras do JogoPrincipal objetivo do Hacker

SysAdmin(SQL)

SQL Service(Windows)

Administrator(Windows)

Primeiros PassosIdentificando a porta de entrada

SQL (TDS): 1433 SQL ServerTCP 1433

Endpoint

IIS (HTTP): 80

SQL (TDS): 1433

IIS (HTTP)TCP 80Endpoint

SQL ServerTCP 1433

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

EndpointSQL ServerTCP 1433

TCP 137/138

TCP 135

File Share (SMB)

RPC Locator

SQL (TDS): 1433

SQL Browser: 1434 (UDP)

Endpoint

SQL ServerInstance2

TCP2222

UDP 1434SQL Browser

SQL ServerInstance1

TCP1433

SQL Browser

(UDP 1434)

Quais instâncias estão disponíveis?

Qual a porta da instância xxxxxx?

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

Nivel 1: Segmentação de Rede

SQL Server

TCP80

Web Server

TCP1433

TCP 137/138

TCP 135

File SMBRPC

Locator

Frontend Backend

Entrando no ServidorPassando pelo sistema de autenticação

Acesso Direto ao Servidor

SQL Server

TCP80

Web Server

TCP1433

TCP 137/138

TCP 135

File SMBRPC

Locator

Frontend Backend

Server

Acesso à Camada TCP/IP

SQL Server

AUTHTCP 143

3

TCP/IP (Kernel)Listener (SQL)

Senha Fraca

DicionárioForça brutaReuso de senha

111111123456123456712345678qwerty123123abc123iloveyousqlserveradmin...

Dicionáriodefaultsapasswordpassword1passw0rdprincessblablabla666666adminroot

Ataque Brute Force

SQL Server

AUTH MASTER

MASTER

TCP 143

3

Demo--AUTH--

PasswordEscolha 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 DirectoryDomain

Controller

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

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

Primeiro Acesso aos Dados

SQL Server

AUTH

UserDatabase

TCP 143

31. LOGIN

DB

DB DB

2. CMDS

Login vs UserSQL ServerTCP

1433AUTH

DATABASE1

USERLOGIN

DATABASE2

USER

Perigo: Cross-Database Chaining

SQL ServerTCP 1433

AUTHDATABASE1

dboLOGIN

DATABASE2

USER dbo

Cross DB Chaining(SQL200

0)

Trustworthy DB

(SQL2005+)

SQL ServerTCP 1433

userdbo /

db_owner

Elevação de Privilégio

AUTHDATABASE1

SELECTUPDATE..

USERMASTER

DATABASE2

DATABASE3dbo

dbodbo

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

Demo--TOKEN-

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

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

SQL Server

AUTH

UserDatabase

TCP 143

31. LOGIN

DB

DB DB

2. CMDS

SQL InjectionPrincipal Ataque ao Banco de Dados

Passando comandos ao BD

SQL Server

TCP80

Web Server

TCP1433

TCP 137/138

TCP 135

File SMBRPC

Locator

Frontend Backend

Código simples (web)

SQL Server

TCP 1433Query

DMLDDL

Tipos de Acesso

AUTH

DATABASE1

SELECT

USERINSERT

UPDATE

DELETECREATE

DROPALTER

Demo‘’ + SQL INJECTION + ‘’

Uma forma simples de enganar o banco de dados

SQL Injection

Parametrizando Comandos

SQL ServerTCP

1433

Limitação de Acesso

AUTHDATABASE1

USERDML

QueryLOGIN

DDL

PrincipalsSecurable

Permissions

Objetos e Permissões

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

Hierarquia de PermissãoInstância

Database

SchemaTables

Stored ProcsViews

Impersonate

USERLOGIN

PP

PP

Permission

P

DBSchOBJ

etc

Login

Endpoint

etc

PP

P

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

Nível 4: Restringindo Permissões

Instância SQL

DatabaseSchema

Stored ProcsViews

USERLOGINEXEC

SELECT

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

Proteção em Camadas

SQL Server

DBSchOBJ

SELECTEXECUTE

AUTH

Segurança de RedeAutenticação

Isolamento por DBPermissionamento

Obrigado

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

Proteção em Camadas

SQL Server

TCP80

IIS (HTTP)

TCP1433

TCP 137/138

TCP 135

File SMBRPC

Locator

Frontend Backend

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

SANLANAppTeste

Storage

Data Mask

TransparentDataEncryption

Backup

Row Level Security

Cliente1 Cliente2

App Segura

SQL Server

Always Encrypted

Obrigado

Recommended