Índice Virii Hacking Guide 01

== Remote Procedure Call(RPC) ==

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 ]=---------------------------------------------------------------=|