Índice:
Vídeo: Palestra - A Guerra Cibernética e o novo Hacktivismo - Anchises Moraes Workshop SegInfo 2011 2024
Neste estudo de caso, Chip Andrews, especialista em segurança do SQL Server, compartilhou essa experiência de hackear (eticamente) em um cliente banco de dados para descobrir falhas de segurança. Este exemplo fornece um relato cauteloso para proteger suas informações importantes, insistindo na segurança do banco de dados de som.
A Situação
Durante um teste de penetração de rotina, o Sr. Andrews realizou as buscas obrigatórias do Google, pesquisa de nomes de domínio, impressões digitais de sistemas operacionais e varredura de portas, mas este site particular foi bloqueado de forma apertada. Passando para o aplicativo baseado na web executado no sistema, ele foi imediatamente confrontado com uma página de login usando autenticação de formulários criptografados SSL.
Ao verificar a origem da página da Web, ele notou que um campo da App_Name escondido estava sendo passado para o aplicativo sempre que um usuário tentou fazer logon no site. Poderia ser que os desenvolvedores não puderam realizar a validação de entrada adequada neste parâmetro de aparência inocente? A caçada estava ligada.
O resultado
Primeiro, chegou a hora de montar o conjunto de ferramentas. No momento deste teste de penetração, o Sr. Andrews preferiu usar o seguinte: Paros Proxy, Absinthe, Cain & Abel, Data Thief e o Microsoft SQL Server Management Studio / SQL Server (Express Edition), todos os quais estão disponíveis gratuitamente.
Para iniciantes, ele usou Paros Proxy para permitir mais controle e visibilidade para os pedidos da web feitos no servidor web.
Depois de spidering o site para páginas disponíveis e executando uma verificação de vulnerabilidade rápida para injeção de SQL, foi confirmado que o parâmetro App_Name pareceu causar o aplicativo para lançar uma exceção do erro 500, indicando uma falha no aplicativo. Os testes de penetração são uma das raras ocasiões em que uma falha na aplicação é um resultado desejável.
Como a falha do aplicativo indicou que o Sr. Andrews poderia injetar caracteres não intencionais no código SQL que estava sendo enviado do aplicativo para o banco de dados, ele poderia ver se era uma condição explorável.
Um teste comum que funciona com bancos de dados do Microsoft SQL Server é injetar um comando, como WAITFOR DELAY '00: 00: 10 ', o que faz com que o servidor do banco de dados fique por 10 segundos. Em um aplicativo que normalmente retorna uma página em um segundo ou menos, um atraso consistente de 10 segundos é um bom indicador de que você pode injetar comandos no fluxo SQL.
Em seguida, o Sr. Andrews tentou usar a ferramenta Data Thief para atacar a página de login.Esta ferramenta tenta forçar o banco de dados a usar um comando OPENROWSET para copiar dados do banco de dados de destino para o banco de dados do Sr. Andrews localizado na Internet.
Esta é geralmente uma maneira muito eficiente de sipohon grande quantidade de dados de bancos de dados vulneráveis, mas neste caso, seu ataque foi frustrado! O administrador do banco de dados no destino desativou a funcionalidade OPENROWSET configurando corretamente a opção Disable Adhoc Distributed Queries.
Com a diligência como sua palavra de ordem, o Sr. Andrews persistiu com a próxima ferramenta - o absinto. Esta ferramenta usa uma técnica chamada injeção de SQL cega para fazer determinações sobre dados usando simples ou não perguntas do banco de dados. Por exemplo, a ferramenta pode perguntar ao banco de dados se a primeira letra de uma tabela é menor que "L. "
Se sim, o aplicativo pode não fazer nada, mas, se não, o aplicativo pode lançar uma exceção. Usando essa lógica binária simples, é possível usar esta técnica para revelar toda a estrutura do banco de dados e até mesmo os dados armazenados no interior - embora muito lentamente. Usando a ferramenta, ele identificou uma tabela de informações confidenciais do cliente e baixou várias centenas de registros para mostrar o cliente.
Finalmente, chegou a hora de tentar um último ato de dastardliness no banco de dados. Primeiro, o Sr. Andrews carregou a ferramenta chamada Cain & Abel e configurou-a para entrar no modo de cheirar. Em seguida, usando Paros Proxy e o parâmetro vulnerável já identificado, ele usou o procedimento armazenado estendido xp_dirtree, que está disponível para usuários do banco de dados do SQL Server, para tentar mostrar um diretório em sua máquina conectada à Internet usando um caminho de convenção de nomeação universal.
Isso forçou o banco de dados de destino a realmente tentar autenticar-se contra a máquina do Sr. Andrews. Como Cain & Abel estava ouvindo o fio, obteve o hash do desafio usado para autenticar o compartilhamento de arquivos expostos.
Ao passar este hash para o cracker de senha incorporado em Cain & Abel, o Sr. Andrews teria o nome de usuário e a senha da conta sob a qual o SQL Server vulnerável estava sendo executado apenas em questão de tempo.
Essa conta hackeada usaria a mesma senha que a conta de administrador do aplicativo da Web? Essa senha seria a mesma da conta de administrador local no host? Foram perguntas para outro dia. Era hora de reunir todos os dados coletados, preparar um relatório para o cliente e afastar as ferramentas para outro dia.
Chip Andrews é co-fundador da empresa de consultoria de segurança Special Ops Security, Inc. e proprietário da SQLSecurity. com, que tem vários recursos sobre a segurança do Microsoft SQL Server, incluindo a ferramenta SQLPing3. Um co-autor de vários livros sobre a segurança do SQL Server e um apresentador do Black Hat, o Sr. Andrews vem promovendo o SQL Server e a segurança das aplicações desde 1999.