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