veja uma rápida análise do ultrasurf, saiba como detectá-lo usando snort, saiba como bloqueá-lo usando shellscript & netfilter/iptables

FONTE: http://gutocarvalho.net/wordpress/archives/454

Para quem não conhece, o ULTRASURF é um software desenvolvido pela empresa ULTRAREACH, este software permite que os usuários em redes que possuem um rígido controle de conteúdo para acesso web consigam burlar esta segurança utilizando um túnel criptografado via porta 443/TCP Através deste túnel eles conseguem acesso automático a um pool de servidores de proxy anônimo, que provavelmente são máquinas da rede que foram invadidas.

Usando o ultrasurf estes usuários conseguirão acessar qualquer site web e baixar qualquer tipo de arquivo. O problema é que os ingênuos usuários que infrigem as normas de TI das instituições na qual trabalham, não pensam em nenhum momento que o pessoal da ULTRAREACH pode (e com certeza tem) ter um sniffer capturando todo o tipo de informação dos espertinhos que se acham crackers por utilizarem tal programa, incluindo senhas de acesso aos sistemas internos e a sites, números de cartão de crédito, perfil de acesso de cada usuário, tudo isto vai parar na mão da ULTRAREACH que vende a ilusão de privacidade. ao usuários do programa. Outra possibilidade que ainda estou analisando é o ultrasurf possuir em seu código algum tipo de sistema VPN bem simples que permitiria que as pessoas da ULTRAREACH possam acessar a rede do usuário, e isto é na minha opinião o fator mais grave do uso do túnel por este programa. Bom nem precisa dizer que o ultrasurf é um binário executável, não temos acesso ao código fonte, portando não temos como saber o quão malicioso é seu código, resta-nos a engenharia reversa.

O Ultrasurf é um programa que testa a capacidade do sysadmin pois não é uma tarefa simples bloqueá-lo, seja utilizando sistemas proxy como SQUID, mesmo com dansguardian e similares, ou através de filtros de pacotes como o netfilter/iptables, digo isto pois tudo acontece depois que a conexão SSL é estabelecida, e este tipo de conexão normalmente é liberada pois existe uma grande gama de serviços na internet que utiliza acesso seguro (SSL/443/TCP). O problema é que não existe um IP único que você pode bloquear, pois eles tem um pool de servidores possibilitando queo cliente abra conexões SSL para endereços aleatórios.

Isto estava tirando o sono de muitos sysadmin mundo afora. Alguns foram radicais e bloquearam qualquer acesso a porta 443, liberando apenas os sites necessários, algo como uma big-whitelist. Nem preciso dizer que isto gerou caos e desordem em muitas instituições.

Bom, felizmente este mês o Sr. Augusto Ferronato publicou na SNORT-BR uma regra criada pela equipe de segurança do SERPRO-RECIFE que detecta o uso do ULTRASURF. A equipe do SERPRO fez uma análise das conexões do ultrasurf e identificou que um dos comportamentos do programa era o envio de uma requisição DNS para servidores externos com um pacote com o tamanho de 554 bytes, sendo 480 bytes desdes com valor igual a 0, isto acontece sempre que o cliente é iniciado.

A primeira regra publicada foi pelo Augusto (baseada na rule do serpro) foi:

alert udp $HOME_NET any -> !$HOME_NET 53 (msg: “Consulta de DNS Externo - Possivel Ultrasurf”; content:”|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|”; classtype: policy-violation; sid: 1000059; rev:1; )

Depois da publicação, Rodrigo Montoro (Sp0oKeR) fez um ajuste para melhorar a visualização do log.

alert udp $HOME_NET any -> !$HOME_NET 53 (msg: “[OSSEC] Consulta de DNS Externo Possivel Ultrasurf”; content:”|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00|”; classtype: policy-violation;threshold:type limit, track by_src, count 1, seconds 5; sid:1000059; rev:2; )

Com este ajuste o SNORT envia apenas 1 alerta para o arquivo de log mesmo que existam N tentativas em menos de 5 segundos, deixando a leitura do log mais clean.

Através do OSSEC HIDS o sysadmin pode criar um ação para ser executada baseando-se nos alertas do log do SNORT, esta seria a maneira mais indicada de executar uma ação. Uma outra alternativa é criar um shellscript bem simples que leia o log buscando as informações para que seja executada uma ação, seja enviado um alerta por e-mail, seja bloqueando os endereços IP via netfilter/iptables.

Pensando na segunda opção, criei um script para ler o log, bloquear o ip e enviar uma notificação ao sysadmin, veja o script em minha wiki clicando no link abaixo:

http://gutocarvalho.net/mediawiki/index.php/NoSurf

Essa regra do snort foi testada até a versão 9.1 do UltraSurf e funciona muito bem.

Deixo aqui um agradecimento especial ao pessoal do SERPRO-Recife por criar e compartilhar a regra. Agradeço ao Sr. Augusto Ferronato por publicar a regra no SNORT-BR e agradeço também o Sp0oKeR por otimizar a regra para facilitar a leitura dos logs.

Espero que estes exemplos de compartilhamento de informação, código, conhecimento e experiências sejam seguidos sempre ;)

Referências:
http://listas.cipsga.org.br/cgi-bin/mailman/listinfo/snort-ids
http://snort.linuxsecurity.com.br/
http://www.snort.org.br/
http://www.snort.org

[]’s
Guto


Comentários

Postagens mais visitadas