Testando a senha do banco de dados
Veja neste artigo um teste de quebra de senha por força bruta no SQL Server, Oracle, MySQL e PostgreSQL.
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."
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo