veja uma rápida análise do ultrasurf, saiba como detectá-lo usando snort, saiba como bloqueá-lo usando shellscript & netfilter/iptables
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
32 Comentários »
RSS feed for comments on this post. TrackBack URL








[...] por guto carvalho (gutoΘgutocarvalho·net) – referência [...]
Se alguem estiver usando plataforma windows pode bloquear criando uma regra de hash dentro das gpo’s pra cada versão do programa. Pelo menos é assim que resolvi esse problema!
Não conhecia o Ultrasurf, mas gostei da implementação, resta saber se depois disso o pessoal do ultrasufr vai alterar o programa, mas é o velho jogo de gato e rato, hehehe.
Anderson,
Boa dica, valeu ;)
Kevin-Moc,
Provavelmente vai mudar, mas ai estudamos uma nova forma de pegar ele, fique tranquilo ;)
[]’s
Guto
Estou tendo problemas com o freegate, que é muito parecido com o ultrasurf, será que esta regra também funciona com ele?
David,
Não funciona, a regra serve apenas para o UltraSurf, procure na bleedingsnort ou na emerge threats por algo que detecte o freegate, caso não exista, você vai precisar usar o tcpdump ou wireshark para pegar as assinaturas do freegate e depois criar uma regra para o snort.
[]’s
Guto
uso o ultra surf no meu trampo, queria saber pq ele detona o internet explorer ? depois de usar ele nao consigo mais entrar na internet ? pq
Tadeu,
Sugiro que você procure o site do programa e entre nos fóruns do projeto.
Não uso windows ou IE, e a notícia veiculada aqui é sobre como detectar e bloquear o Ultrasurf e não como “usá-lo”.
[]’s
Guto
Depois de ler os relatos acima fiz o teste de bloquear a saída da porta 53 em tcp e udp. Deixei só liberada para o DNS interno. Aparentemente bloqueou o UltraSurf e o Freegate. Gostaria que mais pessoas testassem e verificassem se dará o mesmo resultado que estou tendo.
RMorais,
Boa dica, lhe dou retorno ;)
E o TOR já tentou bloquear?
[]’s
Guto
Ola pessoal fiz o modelo do “RMorais” e deu certo até a versão 9.1, mais ja saiu uma nova versão 9.2 que não estou conseguindo bloquear, gostaria de poder contar com a ajuda de todos vocês….eu utilizo o Sonicwall como Firewall e o websense como proxy da rede….
obrigado pela dica e pela atenção.
att,
Eduardo Scheidet
é cara, aqui na facul o sysadmin (meu professor de SO), desistiu de tentar bloquear, e acabou por liberar o acesso a orkut e msn..
foda bagarai.
Carlos,
Faz um tempinho que não coloco a mão no snort, na época tínhamos conseguido bloquear, se lançaram uma versão nova tem-se que rastear a nova assinatura e criar uma nova regra no snort, demanda tempo e paciência ;)
[]’s
Guto
A versão 9.2 ainda está sendo bloqueada pela versão da Rule, a regra para o freegate também já foi publicada :P
aqui
alert udp $HOME_NET any -> $EXTERNAL_NET 53 (msg:”ET POLICY Possible External FreeGate DNS Query”; content:”|03 77 36 35 0d 7a 69 79 6f 75 6c 6f 6e 67 6c 69 76 65 03 63 6f 6d 00|”; classtype:policy-violation; threshold:type limit, track by_src,count 3, seconds 30; sid:2008748; rev:2;)
”
Abs[]
Belas dicas. Ainda estou estudando redes e vou indicar esta página a uns amigos q estão com problemas com esses malditos.. ehehhehe
VLW
Um abraço
Junior,
Preciso de algo é só falar ;)
[]’s
Guto
Coloquei o squid (c proxi autenticado) e bloqueou legal, o Ultrasurf 9.2 não consegue logar no server dele, não testei c o freegate ou outros, mas é certo q proxi autenticado barra o ultrasurf.
Vinicius Kruz,
Bom saber, autenticação é sempre a melhor solução por questões de rastreabilidade e controle de acesso, só de ter autenticação você já inibe inúmeros programas, o ultrasurf é apenas 1 deles ;)
A questão é que nem todo o ambiente tem autenticação para navegar.
De qualquer forma valeu pelo retorno :)
[]’s
Guto
Tentei fazer o que estava no site: http://gutocarvalho.net/mediawiki/index.php/NoSurf, o script nao esta funcionando esta dando este erro. poderia me ajudar!!!!!!
cat: snort.log: Arquivo ou diretório não encontrado
./noSurf.sh: line 25: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 27: $a2: ambiguous redirect
./noSurf.sh: line 48: $a3: ambiguous redirect
cat: /tmp/blocked: É um diretório
cat: ips.txt: Arquivo ou diretório não encontrado
O enderecos IP abaixo foram bloqueados por possivel utilizacao de ultrasurf:
cat: /tmp/blocked: É um diretório
cat: ips.txt: Arquivo ou diretório não encontrado
rm: imposível remover `/tmp/blocked’: É um diretório
Josuel,
O script era um exemplo de filtragem para àquela linha que estava no tutorial, dependendo da versão do snort e da saída no log você vai precisar fazer pequenos ajustes no script para capturar corretamente a informação que deseja, isso requer um pouco de conhecimento em shellscript, sed, awk, cada caso varia.
Como está a saída em seu log?
[]’s
Guto
Bom dia,
/var/log/snort/portscan.log /var/log/snort/alert /var/log/snort/portscan2.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 snort adm
sharedscripts
postrotate
/etc/init.d/snort restart > /dev/null 2>&1
endscript
}
estou com a ultima versão.
Josuel,
Isso ai é a configuração de logrotate do snort e não a saída do log do snort.
[]’s
Guto
blz, guto obrigado pela ajuda, mais nao tenho muita experiencia na area ainda.
Josuel,
Procure ler o guiaFocaLinux para se ambientar no linux, veja o básico de shellscript, principalmente SED/AWK, depois de uma boa lida na documentação do snort, é preciso entender primeiro como eles funcionam antes de fazer as regras ;)
[]’s
Guto
é meu amigo, funciona muito bem até a verão 9.1, daí pra frente a coisa muda e a regra não funciona.
Mauricio P. S.
Maurício,
Já era de se esperar que a galera do ultrasurf corresse por fora, entenda que eles não são bobos é claro que a cada nova versão eles
vão contornar os meios de detecção, agora meu amigo a única saída é fazer um novo trace do funcionamento do ultrasurf, para isto analise o comportamento via e ethereal ou tcpdump afim de descobrir a nova assinatura do ultrasurf, assim você poderá adaptar a regra existente.
[]’s
Guto
Aew galera fazia tempinho que nao dava as caras por aqui… eu consegui bloquear o ultra-surf aqui na firma onde trabalho, e nao foi nem com firewall nem com proxy, o pessoal aqui utiliza “macafe”como anti-vírus e assim, ele identifica todos os executaveis feito na maquina em uma range de data, ai conseguimos pegar as versões que estavam sendo usadas (isso quando se usava proxy sem autenticação) ai o que fazemos, pqgamos o “rash” do programa e bloqueamos ele tanto no anti-vírus quando no dominio, e olha, ficou super legal, pq os camarada pode musar o nome dele etc, mais nao vai conseguir mudar o rash, hehehe…funcionou assim, mais com autenticação no squid junto com o AD, nao vai nem a pal… também funciona, independente da maneira que sera feita…
o mais legal tbm é utilizar autenticação transparente pro usuario, usando o ident ou o winbind que vai via protocolo mtnl… bom se houver mais alguma duvida… pode me mandar e-mail que a gente resolve junto…
– O Mundo seria bem melhor se tivessemos o código fonte –
OpenSource…
scheidet.
Esta técnica de bloquear o hash do binário funciona bem, já foi inclusive abordada algo similar nas policies do AD, no AV também é uma opção, obrigado pela dica ;)
vem aí o ultrasurf 9.5 ultrareach spain!!!1
Olá, boa noite!
Preciso de ajuda, minha irmã mais nova baixou o maldito ultrasurf em meu computador, e agora não sei como faço para desinstalar o mesmo!
Gostaria muito de sua ajuda!
Barbara,
Sugiro que você procure algum fórum sobre seu sistema operacional para verificar como desinstalar este programa.
Aqui estamos tratando o bloqueio na rede e não no computador do usuário.
[]’s
Guto