SQL Injection

Problema:
Esse tipo de ataque tem um número grande de coincidencias que apontão para a mesma fonte.
Com essa informação em mãos, a resolução deveria ser simples.
Com o seu site atacado por SQL-Injection como você pode identificar, analizar, recuperar e resolver o problema? E o que você pode aprender com isso?

Solução:
Como ponto de referencia, SQL-Injection é um exploit onde comandos SQL são passados para o servidor de SQL de uma forma maliciosa.
Analisando a situação, podemos chegar em 4 componentes básicos:
1º Identificação do Problema;
2º Análise da situação para determinar a causa raiz tão como opções de saída para recuperação e solução, que é seguido por recuperar os dados e prevenir por um problema futuro.
3º Plano de comunicação
4º Como resolver o incidente caso ocorra novamente.

Vamos por partes…

Identificar:

Usualmente os usuários ou clientes reportão o caso para o time de TI.
Com o problema detectado a análise precisa ser conduzida nesses passos:
– Logs do Firewall
– logs do IIS
– Páginas Web
– Tabelas do SQL Server

Em termos de exemplificação de código, strings são passadas para o SQL Server. Após ver o código, um simples cursor para atualizar colunas varchar, nvarchar, text ou ntext pode ser inserido através da URL ou através da própria página.

Algumas referencias:

* Http://www.bloombit.com/Articles/2008/05/ASCII-Encoded-Binary-String-Automated-SQL-Injection.aspx#attack-description
* http://www.theregister.co.uk/2008/08/07/new_sql_attacks/
* http://isc.sans.org/diary.html?storyid=4840

Analise

Após rever os Logs do IIS é possível traduzir o código, mas se você tiver uma ferramenta de Performance Monitor, ela pode capturar longos tempos de execução de SQL que podem prover grande ajuda para identificar apartir de qual página foi feita a invasão.
Se você não possuir, terá que gastar um bom tempo para identificar por onde veio a invasão.
Uma vez que a string foi determinada esses 2 scripts podem lhe oferecer um grande auxilio para identificar as colunas que foram alteradas e/ou recuperar:

sp_LocalizaTexto

sp_TrocaTexto

Um método simples para identificar se seu site foi infectado é usando o google para rodar a seguinte query:
* Esse método foi passado pela SANs (http://isc.sans.org/diary.html?storyid=4840)

site:seu_site “script scr=http://*/””ngg.js”|”js.js”|”b.js”

Recuperando:

Existem algumas formas de recuperar os dados alterados
– Backup\Restore
Pro: Se você possui um método de recuperar os dados rapidamente e você sabe exatamente quando os dados foram infectados, pode ser uma forma rápida e simples para recuperar a integridade do site.
Con: Se você não sabe quando os dados foram alterados, você não saberá se o backup foi feito com as informações alteradas ou a janela de perda de dados poderá ser grande.

– Através de análise
Pro: Com o script “sp_TrocaTexto para SQL 2005, a informação maliciosa pode ser identificada e corrigida com confidencialidade.
Con: É interessante efetuar um backup da base de dados antes de executar as alterações para garantir integridade de informações e posterior análise.

Em ambas opções, o problema com o SQL-Injection já deverá ter sido resolvidor.

Resolução:
Possíveis passos para ajudar na solução:
– Desenvolvimento\DBA
– Validar os comandos SQL passados pelo front-end (IIS)
– Validar os dados e os tipos de dados passados
– Converter SQL dinâmico em Stored Procedures com parâmetros
– Remover páginas ou diretórios antigos que pode ser usados como pontos de partida para a invasão
– Prevenir que qualquer comando seja executado em conjunto com os seguintes comandos: ponto e virgura. EXEC, CAST, SET, dois pontos, apostrofe, etc..
– Baseado na linguagem de programação do seu front-end, determinar quais os caracteres especiais podem ser removidos antes de qualquer comando passado para o SQL Server

– Administradores de Rede
– Prevenir trafego de alguns IP´s em particular ou domínios
– Verificar se nas configurações de firewall existe algum item para prevenir quanto a SQL-Injection
– Procurar por produtos ou serviços para analisar seu código e site em busca de erros e prevenção
* http://www.acunetix.com/vulnerability-scanner/
* http://www.rapid7.com/nexpose/web-application-va.jsp
* http://www.fortify.com/products/detect/
* http://www.mcafeesecure.com/us/
* http://www.onlinehackscan.com/default.asp

Plano de comunicação:
O plano de comunicação deve ser atual, claro e importante.
Mantenha isso em mente.
Para muitas pessoas, não saber o que está acontecendo gera desconforto, anciedade, e achar que a equipe de TI não está fazendo seu trabalho.
Comunique sobre a descoberta do ocorrido, informe que o time está trabalhando para determinar a causa e solução do problema e que uma atualização desse status será repassada em até 4 horas;
Comunique o ocorrido, os passos tomados pela equipe de TI para resolver o problema e que a solução estará implantada em até 30 minutos;
e por final comunique que o incidente foi sanado, os passos para resolver o incidente e os passos futuros para prevenir novos problemas.

Recuperação Rápida:

Uma forma de recuperação rápida seria:
– Parar os serviços de Web
– Rever os logs do IIS para determinar os comandos utilizados para lozalizar a vulnerabilidade
– Converter o código para determinar quais tabelas foram alteradas
– Localizar e alterar as strings nas tabelas
– Corrigir as páginas/comandos que possuiam as vulnerabilidades
– Testar para identificar se não existem novos problemas
– Atualizar as páginas/ comandos nos servidores de produção
– Iniciar os serviços de web

Leia

3M D14 D3 V3R40, 3574V4 N4 PR414, 0853RV4ND0 DU45 CR14NC45 8R1NC4ND0 N4 4R314. 3L45 7R484LH4V4M MU170 C0N57RU1ND0 UM C4573L0 D3 4R314, C0M 70RR35, P4554R3L45 3 P4554G3NS 1N73RN45. QU4ND0 3575V4M QU453 4C484ND0, V310 UM4 0ND4 3 D357RU1U 7UD0, R3DU21ND0 0 C4573L0 4 UM M0N73 D3 4R314 3 35PUM4.
4CH31 QU3, D3P015 D3 74N70 35F0RC0 3 CU1D4D0, 45 CR14NC45 C41R14M N0 CH0R0, C0RR3R4M P3L4 PR414, FUG1ND0 D4 4GU4, R1ND0 D3 M405 D4D45 3 C0M3C4R4M 4 C0N57RU1R 0U7R0 C4573L0. C0MPR33ND1 QU3 H4V14 4PR3ND1D0 UM4 GR4ND3 L1C40; G4574M05 MU170 73MP0 D4 N0554 V1D4 C0N57RU1ND0 4LGUM4 C0154 3 M415 C3D0 0U M415 74RD3, UM4 0ND4 P0D3R4 V1R 3 D357RU1R 7UD0 0 QU3 L3V4M05 74N70 73MP0 P4R4 C0N57RU1R. M45 QU4ND0 1550 4C0N73C3R 50M3N73 4QU3L3 QU3 73M 45 M405 D3 4LGU3M P4R4 53GUR4R, 53R4 C4P42 D3 50RR1R! S0 0 QU3 P3RM4N3C3 3 4 4M124D3, 0 4M0R 3 0 C4R1NH0.

0 R3570 3 F3170 D3 4R314

Vmware Esxi – 2

Aproveitando que já estava no ritmo da instalação do Vmware, instalei aquela mesma versão em um DELL 1950 (sim, eu gosto de DELL), mas dessa vez fui mais esperto, acessei o site do VMware HLC e vi se o Servidor era compativel.
Após ver que iria funcionar, acessei a BIOS e habilitei o modo de paravirtualization. IMPORTANTE: você precisa desligar o servidor da tomada pra que esse modo seja realmente habilitado.
Efetuei a instalação do Vmware sem problemas, ele até reconheceu a placa de rede e sozinho, incrivel,,,,
Fiz todas as configurações como coloquei no outro Post.
Agora vem a pergunta, para que colocar um post para falar só isso?
Simples, só para avisar que se não habilitar a opção de paravirtualização do 1950 utilizar Windows Server nesse servidor fica quase impossível. E que não consegui colocar Linux 64bits, ele nem lia a mídia.

Vmware Esxi

Instalei na semana passada o Vmware Esxi em um Dell Optiplex 755 (isso mesmo um desktop)
Como muitas coisas, essa não foi simples,,, Mas vou explicar o caminho das pedras hehehe

Na BIOS do Optiplex existem 2 opções que devem ser alteradas:
1º Intel VM de Disable para Enable
2º A configuração do HD deve ser alterada para SATA, se não o Esxi não reconhece o disco.

Siga a instalação como nesse video: http://www.vm-help.com/esx/esx3i/ESX_3i_install/ESX_3i_install.html
A instalação não demorou mais que 7 minutos.

Após carregar a interface de administração pressione F2 para acessa o modo de configuração, coloque uma senha de root e tente colocar o endereço IP da placa, quando pressionar enter para acessar a placa ele informará que resetará as configurações da placa e pede para pressionar F11, pressione F11 e nada vai acontecer
Pressione ALT+F1 e digite unsupported (você não conseguirá ler o que está digitando) e pressione enter, em seguida coloque a senha de root, feito isso digitar lspci -v | grep -i “network” se ele não retornar resultado o Esxi não tem suporte para sua placa de rede (o que deve acontecer se você está instalando no Optiplex 755).
O que acontece, a placa de rede Intel que acompanha esse desktop é um modelo e1000e e o Esxi só reconhece e1000 nesse caso, você terá que colocar outra placa de rede. (tentei vários outros métodos, até instalar o pacote de atualização do Esx SP2 em cima da instalação do Esxi mas não funcionou).
Quando você colocar uma nova placa de rede, para ver os modelos compativeis acesse esse link: http://www.vmware.com/resources/compatibility/search.php (aproveite e veja se a sua maquina/servidor é compativel com a versão Esxi), vá nas opções de rede e coloque o IP para seu servidor Vmware.

Depois de instalado e configurado vamos habilitar modo de SSH (ele vem desabilitado por padrão):
Na tela do desktop pressione ALT+F1 e digite unsupported pressione enter em seguida a senha do root.
no prompt digite:
vi /etc/inetd.conf
localize a linha referente ao #SSH e apague o #
salve o arquivo usando :wq
e reinicie a maquina

Quase tudo pronto, após a maquina iniciar acesse-a através do IE ou Firefox e clique em Download VMware Infrastructure Client e instale o cliente do VMware em sua maquina.

Após estes passos o seu servidor de virtualização está pronto para uso.

DETALHE: se você fez o cadastro correto no site da VMware, redeberá o número de série para ativar seu Esxi, caso contrário ele expira em 60 dias.

Enem versão 2008

01 – “O problema da amazônia tem uma percussão mundial. Várias Ongs já se estalaram na floresta.”
(e levaram o disco da Xuxa onde ela canta “Brincar de Índio”)

02 – “A amazônia é explorada de forma piedosa.” (Imagine se não fosse?…)

03 – “Vamos nos unir juntos de mãos dadas para salvar o planeta.” (o mundo tem mais um Capitão Planeta?)

04 – “A floresta tá ali paradinha no seu lugar e vem o homem e creu nela.” (velocidade 5 do créu!)

05 – “Tem que destruir os destruidores por que o destruimento salva a floresta.” (pra deixar bem claro o tamanho da destruição) Continue reading Enem versão 2008

Não se pode ter tudo

Aconteceu com uma professora, que durante a aula, falava a seus alunos
sobre as diferenças, entre os ricos e os pobres.
Júlia levanta o dedo:
– Senhora, meu pai tem tudo: TV, telescópio, DVD, Mercedes…
– Tudo bem, diz a professora, mas será que tem uma lancha?
Júlia reflete e diz: – Bem, não…
A professora disse:
– Viu, não podemos ter tudo.
– Professora, disse Artur, meu pai tem tudo: TV, telescópio, DVD,
Mercedes, Lancha,..
– Sim, responde a professora, mas será que tem um avião particular?
Depois de refletir,
Artur responde:
– Bem, não..
Está vendo que não se pode ter tudo na vida. Disse a professora.
Joãozinho levanta o dedo e diz:
-Professora, meu pai, agora tem tudo, pois sábado passado, quando
minha irmã apresentou seu namorado, corinthiano, tatuado, de
brinquinho e bonezinho, cueca aparecendo, o papai disse:
– PUTA QUE PARIU! ERA SÓ O QUE ME FALTAVA!

E a briga começou

Minha esposa sentou-se no sofá junto a mim enquanto eu passava pelos canais.

Ela perguntou, “O que tem na TV? ”

Eu disse, “Poeira. ”

E a briga começou…

====================================================================

Minha esposa estava dando dicas sobre o que ela queria para seu aniversário que estava próximo.

Ela disse, “Quero algo brilhante que vá de 0 a 200 em cerca de 3 segundos. ” Continue reading E a briga começou

Como ver a versão do SQL

Muitos já sabem que se utilizar o:

select @@version

terá as informações sobre a versão do SQL onde você está executando este select.
Mas se você executar:

SELECT
CAST( SERVERPROPERTY( ‘MachineName’ ) AS varchar( 30 ) ) AS MachineName ,
CAST( SERVERPROPERTY( ‘InstanceName’ ) AS varchar( 30 ) ) AS Instance ,
CAST( SERVERPROPERTY( ‘ProductVersion’ ) AS varchar( 30 ) ) AS ProductVersion ,
CAST( SERVERPROPERTY( ‘ProductLevel’ ) AS varchar( 30 ) ) AS ProductLevel ,
CAST( SERVERPROPERTY( ‘Edition’ ) AS varchar( 30 ) ) AS Edition ,
( CASE SERVERPROPERTY( ‘EngineEdition’)
WHEN 1 THEN ‘Personal or Desktop’
WHEN 2 THEN ‘Standard’
WHEN 3 THEN ‘Enterprise’
END ) AS EngineType ,
CAST( SERVERPROPERTY( ‘LicenseType’ ) AS varchar( 30 ) ) AS LicenseType ,
SERVERPROPERTY( ‘NumLicenses’ ) AS #Licenses;SELECT @@VERSION AS [SQL Server Details];