Por: Inferninh0 1 - Introducao 2 - Enumerando os servicos de RPC 3 - Exploits para Buffer Overflow nos servicos de RPC 4 - Como se proteger 4.1 - bloqueando a enumeracao de RPC 4.2 - Patches 5 - Finalizando 6 - Link's e Referencias -=[ 1 ]=- .---------------. | Introducao \___________________________________________________________ `----------------------------------------------------------------------------' O RPC (Remote Procedure Call) define um protocolo para execucao remota de procedures em computadores ligados em rede, ou seja, permite que programas de um computador executem programas num outro computador.. O protocolo RPC pode ser implementado sobre diferentes protocolos de transporte, portanto nao possui portas especificas e como alternativa se registra no daemon de mapeamento de portas (portmapper). Nao cabe ao RPC especificar como a mensagem e enviada de um processo para outro, mas somente especifica-la e interpreta-la. A sua implementação depende, portanto, de sobre qual protocolo de transporte vai operar. * Sobre TCP nao e necessario preocupar-se com time-outs, retransmissoes, duplicatas. * Sobre UDP e necessario preocupar-se com time-outs, retransmissoes, duplicatas. Uma mensagem RPC tem tres campos inteiros: -Remote Program Number; -Remote Program Version Number; -Remote Procedure Number. Alem, e claro, dos parametros especificos a chamada. A operacao do RPC pode ser descrita nos seguintes passos: -Coleta os dados dos parametros; -Forma a mensagem; -Envia a mensagem; -Espera a resposta; -Devolve a resposta atraves dos parametros. Pode ser mantida a analogia entre chamadas remotas e as chamadas locais com as seguintes ressalvas: -Manipulacao de Erros Falhas no servidor remoto ou na rede devem ser explicitamente manipuladas quando usamos RPC; -Variaveis Globais Como o servidor nao tem acesso ao lado cliente ( a seu espaço de endereçamento), nao podemos usar variaveis globais, somente parametros. -Performance Chamadas remotas operam normalmente a uma ou mais ordens de magnitude mais lentamente. -Autenticacao Pelo fato das chamadas remotas trafegarem sobre redes inseguras, a autenticacao das mensagem pode (deve) ser necessaria. -=[ 2 ]=- .----------------------------------. | Enumerando os servicos de RPC \________________________________________ `----------------------------------------------------------------------------' Para determinar se um servidor esta usando algum servico de RPC podemos utilizar o bom e velho "nmap", que em primeiro lugar ira fazer a varredura de porta em seguida ira definir quais delas sao servicos RPC, sobrecarregando cada porta com comandos RPC NULL. # nmap -sS -sR 127.0.0.1 Starting nmap V. 3.00 ( www.insecure.org/nmap/ ) Interesting ports on localhost.localdomain (127.0.0.1): (The 1597 ports scanned but not shown below are in state: closed) Port State Service (RPC) 21/tcp open ftp 80/tcp open http 111/tcp open sunrpc 139/tcp open netbios-ssn 2049/tcp open nfs (nfs v2-3) 4045/tcp open lockd (nlockmgr v1-4) Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds Observe q o servico de RPC e identificado e listado entre parenteses. Outra forma de determinarmos quais servicos RPC estao ativos e consultando o daemon de mapeamento de portas atraves do comando rpcinfo. # rpcinfo -p 127.0.0.1 program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100003 2 udp 2049 nfs 100021 1 udp 4045 nlockmgr 100021 3 udp 4045 nlockmgr -=[ 3 ]=- .------------------------------------------------------. | Exploits para Buffer Overflow nos servicos de RPC \____________________ `----------------------------------------------------------------------------' Apos a varredura e identificado o servico RPC no servidor o "hacker" pode comecar a explorar falhas, os mais visados sao "rpc.ttdbserverd", "rpc.cmsd" e "rpc.statd". Estes serviços geralmente sao explorados pelos ataques de buffer overflow, que sao bem sucedidos, pois os programas que implementam as RPCs nao fazem a devida verificaçao de erro. Uma vulnerabilidade do tipo buffer overflow permite que um atacante envie dados pelos quais o programa nao esta esperando, e como o programa nao faz a devida verificacao de erro, termina por passar estes dados para o processamento. Abaixo segue uma lista de entradas CVE que apontam para diversos exploits e explicacao de cada um, voce pode pesquisa-los no seguinte endereco http://www.securityfocus.com/bid/cveid/ CVE-1999-0003, CVE-1999-0693, CVE-1999-0696, CVE-1999-0018, CVE-1999-0019, CVE-1999-0704, CAN-2001-0236, CVE-2000-0666 -=[ 4 ]=- .--------------------. | Como se proteger \______________________________________________________ `----------------------------------------------------------------------------' 4.1 - bloqueando a enumeracao de RPC ------------------------------------- O ideal seria eliminar ao maximo o uso de servicos de chamadas a procedimentos remotos, mais como isso nem sempre e possivel, e indicado usar regras no firewall para bloquear o portmapper (porta 111) e todas as outras portas que nao sao necessarias explicitamente. 4.2 - Patches -------------- Caso seja inevitavel o uso de RPC, ao menos instale os patches mais recentes. Para patches de Solaris: http://sunsolve.sun.com/ Para o IBM AIX: http://techsupport.services.ibm.com/support/rs6000.support/downloads http://techsupport.services.ibm.com/rs6k/fixes.html Para patches SGI: http://support.sgi.com/ Para patches Compaq (Digital Unix): http://www.compaq.com/support Para Linux: http://www.redhat.com/support/errata/RHSA -2000-039-02.html -=[ 5 ]=- .----------------. | Finalizando \__________________________________________________________ `----------------------------------------------------------------------------' Explorar chamadas a procedimentos remotos (RPC) e algo mais comum do que voce imagina e tao eficiente quanto, nao e atoa que o uso de buffer overflow nesses servicos, encabecam a lista top20, em sistemas unix, das principais falhas de seguranca do SANS e FBI, procurar por este tipo de servico em servidores unixes e bem interessante pois podem ser encontradas ainda falhas em NFS mal configurados e por ai vai, mais isso ja e assunto para outro txt. ;) -=[ 6 ]=- .-------------------------. | Link's e Referencias \_________________________________________________ `----------------------------------------------------------------------------' Referencias ------------ http://www.sans.org/top20/ Link's Interessantes --------------------- http://www.infoshack.cjb.net http://cdm.hacking.la http://www.infernoz.kit.net http://coracaodeleao.virtualave.net http://www2.dct.ufms.br/~hrhp http://jerryslater.host.sk/ ************************* The Virii Hacking Group Writted by Inferninho ************************* |=[ EOF ]=---------------------------------------------------------------=|