Por que eu devo ler este artigo:Os SGBDs atuais possuem diversos recursos e opções para garantir que o acesso seja realizado apenas por quem esteja devidamente autenticado, uma vez que este é o mecanismo mais comum para conseguir “entrar” no banco de dados e acessar suas informações.

O conteúdo deste artigo auxilia os profissionais que trabalham com banco de dados a conhecer as técnicas de ataque e invasão de servidores. Com o conhecimento básico sobre estas técnicas é possível realizar um teste de penetração simples baseado em um ataque de força bruta no SQL Server, Oracle, MySQL e PostgreSQL que pode ser útil ao DBA quando ele estiver avaliando a segurança do seu ambiente de banco de dados.

A segurança das informações armazenadas em um banco de dados é uma das principais responsabilidades atribuídas a um DBA ou profissional que gerencia o banco de dados.

Esta segurança deve levar em consideração vários aspectos, contextos, tecnologias e fatores que influenciam como será o acesso autorizado dos dados e também quais são as medidas necessárias para prevenir o acesso não autorizado.

Os SGBDs atuais possuem diversos recursos e opções para garantir que o acesso seja realizado apenas por quem esteja devidamente autenticado, uma vez que este é o mecanismo mais comum para conseguir “entrar” no banco de dados e acessar suas informações.

Apesar de existirem muitas opções, o modelo de autenticação baseado no fornecimento de um usuário (login) e senha ainda é o mais utilizado nos principais bancos de dados relacionais e não relacionais (NoSQL) existentes no mercado.

A partir deste contexto, este artigo explora algumas opções para realizar um teste de penetração (pentest) nos bancos de dados relacionais mais comuns do mercado brasileiro: SQL Server, Oracle, MySQL e PostgreSQL.

O teste apresentado emprega a técnica de diversas tentativas de login, conhecida como força bruta, para tentar obter o acesso ao banco de dados. Os detalhes do ambiente, das ferramentas e demais informações serão explicadas neste artigo para compreender como é possível aplicar este técnica de força bruta e possivelmente conseguir acesso não autorizado a um SGBD.

O objetivo da apresentação deste teste de senhas em SGBDs engloba diversos aspectos. Em primeiro lugar, a intenção é mostrar como é possível realizar um teste de penetração sem muitas dificuldades.

Em seguida, espera-se que a apresentação deste conteúdo possa alertar e guiar o interesse em profissionais ligados a bancos de dados para procurar medidas que possam dificultar o uso da técnica de força bruta em seus SGBDs.

Por fim, o teste apresentado também pode ser encarado como um motivador para investimentos tanto nos aspectos defensivos ao ataque como em novas técnicas que continuem a explorar configurações padrão, vulnerabilidades e características dos produtos que fornecem uma brecha de segurança para acessos não autorizados.

Autenticação do usuário

O cenário atual do mercado de banco de dados basicamente é composto de produtos que utilizam uma arquitetura distribuída conhecida como cliente/servidor. Nesta abordagem uma aplicação cliente, seja um ERP, servidor Web, aplicativo móvel ou qualquer outro, se conecta a um servidor de banco de dados.

Esta descrição dos papéis de cliente e servidor é lógica, ou seja, apenas conceitual e na prática é possível que tanto o cliente como o servidor sejam implementados em computadores locais ou remotos. De qualquer maneira, para garantir que a utilização do serviço de banco de dados seja feita apenas por clientes válidos, isto é, usuários legítimos que devem ter acesso concedido, é preciso implementar algum tipo de autenticação que vai liberar ou negar o acesso ao servidor.

Neste ponto é importante destacar a diferença entre dois conceitos importantes de segurança da informação identificados pelos termos autenticação e autorização. Apesar de serem utilizados em conjunto, tais conceitos possuem significados diferentes.

A autenticação é o primeiro passo para o acesso e ela deve garantir que o cliente (ou usuário) é quem ele diz ser. Tecnologias como biometria, tokens e login/senha são os principais métodos para garantir a autenticação.

Uma vez que o cliente esteja autenticado ele precisa ser autorizado, isto é, o servidor precisa atribuir os privilégios a este usuário e garantir que ele possa usar os recursos de acordo com seu nível de acesso.

Em banco de dados a autorização assume a forma de permissões a bancos de dados específicos, objetos e comandos geralmente atribuídos pelo comando GRANT ou pelo fato do usuário participar de algum tipo de grupo que possui a permissão.

Nos SGBDs atuais a autorização é realizada através da verificação do nome do usuário (login) e senha e os principais tipos de ataque são realizados para conseguir a autenticação por meio de um login e senha válidos. O fornecimento deste usuário e senha pode ser feito de duas maneiras:

1) manualmente pela aplicação, isto é, embutido em algum arquivo ou codificado em uma linguagem de programação; ou

2) o banco de dados pode aproveitar as credenciais fornecidas pelo sistema operacional ou se comunicar com algum tipo de servidor que centralize o gerenciamento de autenticação.

Desta forma, sempre que for necessário realizar qualquer operação é preciso primeiro se logar, ou seja, fornecer um login e senha válidos para acessar as bases de dados. Os SGBDs possuem tabelas, metadados e objetos para validar o login e senha fornecidos e garantir que apenas quem está devidamente autenticado pode acessar os dados e demais recursos do banco de dados.

Este modelo de autenticação é suportado no SQL Server, Oracle, MySQL e PostgreSQL e em diversos sistemas operacionais e outros softwares.

Com base neste cenário existem algumas técnicas que podem ser empregadas para tentar conseguir o acesso indevido através da descoberta de um login e senha válidos no banco de dados.

As principais técnicas utilizadas são: engenharia social, observação de tráfego de rede, exploração de bugs, descompilação e tentativa de acesso por força bruta. Os parágrafos a seguir descrevem rapidamente como estas técnica ...

Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo