Fora Hackers! Proteção em camadas do SQL Server
-
Upload
fabricio-catae -
Category
Internet
-
view
139 -
download
1
Transcript of Fora Hackers! Proteção em camadas do SQL Server
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