Llamada a Procedimiento Remoto

De EcuRed
RPC
Información sobre la plantilla

RPC es un protocolo que permite a un programa de ordenador ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambos.

El RPC (del inglés Remote Procedure Call, Llamada a Procedimiento Remoto) es un protocolo que permite a un programa de ordenador ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambos. El protocolo es un gran avance sobre los socketsusados hasta el momento. De esta manera el programador no tenía que estar pendiente de las comunicaciones, estando éstas encapsuladas dentro de las RPC.

Contenido

RPC

RPC es la transferencia sincrónica de datos y control entre dos partes de un programa distribuido a través de espacios de direcciones disjuntas.“La manera en que RPC logra hacer esto,es por medio de lo que se conoce como STUB. En el caso del STUBservidor, se conoce como SKELETON. Estos Stubs y Skeletons permiten que al momento de ser invocada la función remota esta pueda ser quot; simulada localmente quot .

Objetivos de RPC

Diferencias con llamadas locales(LPC)

El mecanismo de RPC

Ejemplos:

Características del Stub

La base del mecanismo RPC consiste en la introducción de “representantes” que “hacen como si” fuesen el cliente/servidor

Características del Skeleton

En el lado servidor, el representante del cliente se llama Skeleton

La Interface

La interfaz que proporciona el servidor se refiere a la “forma” de las llamadas exportadas por el servidor Una interface es el principal acuerdo entre el componente de software y el cliente. El lenguaje de definición de interfaces (IDL) fue desarrollado para que los objetos en lenguajes diferentes puedan invocarse entre sí. Corba usa CORBA IDL, Sun propone XDR para su RPC, DCE usa su IDL para RPC, Microsoft usa DCOM IDL. Un punto interesante. Es si estos IDLs exponen las interfaces de manera tal que sean comprendidos por cualquier objeto invocante.

Funcionamiento del compilador de interfaces

La Interface de RPC Para la comunicación entre el servidor y el cliente, se trabaja con interfaces, que deben ser implementadas por el servidor y/o cliente,para que los STUBs puedan realizar la transparencia para ambos.Además esto evita que deba existir una definición local real de la clase remota, es decir, en el cliente solo debe estar definida la interface, no la clase remota

Ejemplos de entornos RPC

Las RPC son muy utilizadas dentro del paradigma cliente-servidor. Siendo el cliente el que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o función y enviando éste de vuelta el resultado de dicha operación al cliente. Hay distintos tipos de RPC, muchos de ellos estandarizados como pueden ser:

Modelo de Objetos de Componentes Distribuidos

El Modelo de Objetos de Componentes Distribuidos, es una tecnología propietaria de Microsoft para desarrollar componentes software distribuidos sobre varios ordenadores y que se comunican entre sí. Extiende el modelo COM de Microsoft y proporciona el sustrato de comunicación entre la infraestructura del servidor de aplicaciones COM+ de Microsoft. La adición de la quot;Dquot; a COM fue debido al uso extensivo de DCE/RPC, o más específicamente la versión mejorada de Microsoft,conocida como MSRPC.


Éste último es el más utilizado debido a que, como ya hemos comentado en bastantes ocasiones, es el sistema operativo más utilizado y por tanto, los servicios (la mayoría) que ofrece su empresa creadora también lo son. El ejemplo más común y el más claro con el que se puede explicar este tipo de protocolo son las famosas actualizaciones de Windows. El cliente (en este caso nuestro PC) se conecta con los servidores de Microsoft para solicitar actualizaciones, de haber alguna de éstas, se realiza el proceso de que caracteriza a los RPC. No solo existe este tipo de aplicación para este tipo de protocolo en realidad son bastantes los usos que se les pueden dar, pero este es el más sencillo y común de entender.

DCOM

DCOM permite que el programador COM amplie sus componentes a través de la red, dándoles los beneficios de la informática distribuida. Cuando el cliente y el componente residen en el mismo equipo se comunican con la ayuda de procedimientos de llamada local (LPC), pero a través de la red tienen que utilizar el DCOM estándar construido por Microsoft. Los Componentes COM a través de la red se comportan del mismo modo que si estuviesen en la misma máquina con el cliente.

Component Object Model (COM)

Component Object Model (COM) es una plataforma de Microsoft para componentes de software introducida por dicha empresa en 1993. Esta plataforma es utilizada para permitir la comunicación entre procesos y la creación dinámica de objetos, en cualquier lenguaje de programación que soporte dicha tecnología. El término COM es a menudo usado en el mundo del desarrollo de software como un término que abarca las tecnologías OLE, OLE Automation, ActiveX, COM+ y DCOM. Si bien COM fue introducido en 1993, Microsoft no hizo énfasis en el nombre COM hasta 1997.

COM

Esencialmente COM es una manera de implementar objetos neutral con respecto al lenguaje, de manera que pueden ser usados en entornos distintos de aquel en que fueron creados, a través de fronteras entre máquinas. Para componentes bien creados, COM permite la reutilización de objetos sin conocimiento de su implementación interna, porque fuerza a los implementadores de componentes a proveer interfaces bien definidos que están separados de la implementación. Las diferentes semánticas de reserva de memoria están acomodadas haciendo a los objetos responsables de su propia creación y destrucción por medio del contador de referencias. Se puede hacer casting entre distintos interfaces de un objeto por medio de la función QueryInterface().El método preferido de herencia en COM es la creación de subobjetos a los que se delegan las llamadas a métodos ( llamado agregación ).

COM (Component Object Model

COM (Component Object Model: En este tipo de entornos las interfaces de los componentes publican un conjunto de apuntadores a tablas de memoria (tablas virtuales de funciones); el llamado entre componentes se hace a través de los apuntadores, las interfaces son definidas utilizando el lenguaje IDL (Interface Description Language). DCOM (Distributed Component Object Model) Se utiliza para aplicaciones distribuidas, para el llamado de mensajes utiliza RPC (Remote Procedure Call).

Autorooter

Autorooter Se trata de un gusano/troyano multi-componentes, que se aprovecha de la vulnerabilidad en la interface RPC DCOM de Microsoft descrita como crítica en el boletín de seguridad MS03-026 de Microsoft.Peligrosidad: 1 - Mínima Difusión: Baja Fecha de Alta:04-08-2003 Nombre completo: Worm.W32/Autorooter Tipo: [Worm] - Programa que se replica copiándose entero (sin infectar otros ficheros) en la máquina infectada, y a través de redes de ordenadores Plataforma: [W32] - Ejecutable PE (.EXE, .SCR, .DLL) que corre en Windows de 32 bits: 95, 98, Me, NT, 2000, XP, 2003 Alias:Win32/Autorooter.A (Enciclopedia Virus), Trj/Autorooter.A (Panda Security), CIREBOT (PerAntivirus), Backdoor.IRC.Cirebot (Symantec), Win32.RPC.A (Computer Associates), Worm.Win32.Autorooter (Kaspersky), RPC (F- Secure), Downloader-DM (McAfee), Exploit-DcomRpc (McAfee),Troj/Autoroot-A (Sophos)

Detalles del virus

Detalles del virus Está diseñado para propagarse a través de redes locales y globales, pero sus rutinas no están completadas en algunas de las versiones detectadas. El nombre del gusano es tomado de los siguientes textos encontrados en su componente principal: rpc autorooter by ERIC RPC autorooter El gusano está compuesto por un archivo comprimido auto extraíble, en formato Win32 SFX ZIP, de 114 Kb aprox., que incluye tres archivos en su interior:


Cuando el paquete SFX es ejecutado, se extraen los tres archivos en el raíz de la unidad C, y se ejecuta automáticamente el archivo principal: RPC.EXE. RPC.EXE instala y ejecuta el servidor FTP (TFTPD.EXE), en el puerto 69, e intenta descargar el archivo LOLX.EXE de un sitio remoto. Este último es un conocido troyano de acceso remoto de la familia del SDBOT. El gusano busca luego máquinas remotas e intenta establecer una conexión con el puerto 445. Los componentes principales están programados en Microsoft Visual Basic. Seguramente es el prototipo de un nuevo tipo de gusano que explora las debilidades en la interface RPC (Remote Procedure Call) que permiten la ejecución arbitraria de código en Windows NT 4.0, 2000 y XP. Se recomienda la instalación del parche de Microsoft y bloquear los puertos TCP 135, 139 y 445 con su cortafuegos local.

Fuente