Sei sulla pagina 1di 16

Jugando con UPnP y tomado el control...

Universal Plug And Play. Conveniente o arriesgado? Est bien empezar este hilo con una pregunta, verdad? Pues para que mantengis la expectacin de este laaarrrgoooo post y no aburra a las ovejas, os dir que conseguiris al final del mismo: A.- Abrir puertos en un router, firewall, SIN NECESIDAD DE AUTENTICARSE, vamos, sin saber la contrasea de administracin, sin permiso del propietario, etc... AUNQUE ESTN CERRADOS POR EL ADMINISTRADOR!!!! Y lo que es mejor... NADIE LO SABR porque no aparecen a simple vista B.- Habilitar el control remoto de esos dispositivos SIN NECESIDAD DE AUTENTICARSE Y NADIE LO SABR porque no aparece a simple vista C.- Averiguar Contraseas WAP,. WEP. Etc. De puntos de acceso SIN NECESIDAD DE AUTENTICARSE D.- Averiguar informacin sensible de los dispositivos administrados, como puertas de enlace, Ips, NAT, etc.. SIN NECESIDAD DE AUTENTICARSE E.- Conectarnos a una cmara IP SIN NECESIDAD DE AUTENTICARSE Y mas cosas, aquello que permita el dispositivo... alguna restriccin hay, pocas, depende del hardware. Las pruebas y ejemplos estn basados en router, puntos de acceso y gateways de Cisco/LinkSys, pero no es una vulnerabilidad de ese fabricante, SON TODOS!!! D-Link, SpeedTouch, Zyxel, y un largo etctera, todo aquello que es compatible con UPnP y que est activado.... os recuerdo que casi la totalidad de dispositivos home de ese tipo traen habilitada esta funcin POR DEFECTO!!! Espero haber captado vuestra atencin nada ms empezar... as que mientras continuis leyendo, os recomiendo que DESHABILITIS esa funcin YA!!!!! Bueno, todos hemos odo hablar de esto en muchas ocasiones, seguro que es conocido por mas de uno de los que por aqu pululamos, el caso es que yo (nosotros) vamos a verlos desde el otro lado... Muchos dispositivos y programas que existen hoy en da se disean con el soporte UPnP (Universal Plug and Play), quien no ha insertado su memoria flash o conectar una impresora que en sus especificaciones dice que es compatible UPnP!!! No obstante, este sistema no es slo un mecanismo sencillo y simple para insertar hardware o manejar algunos programas... si, si, progrmas... es que no habis usado nuestra querida mula?? Skype?? BitTorrent?? Pues por alguna parte de sus configuraciones existen opciones para UPnP.... y??? Qu es eso??? Pues UPnP en realidad es un PROTOCOLO de comunicaciones, Microsoft lo impuls a principios de los aos 90

para simplificar y encontrar dispositivos de red, pero no es exclusivo de Microsft, como ya he dicho, muchos otros programas y dispositivos pueden usarlo y lo usan hoy en da, tambin Linux, FreeBSD, por ejemplo. La pila de protocolos UPnP se basa en protocolos bien definidos en Internet, concretamente en HTTP. XML y SOAP... ya hablaremos de ello. Y qu ventajas puede tener usar dispositvos UPnP (por ejemplo un Router con esa opcin habilitada) y un programa compatible (poir ejemplo el e-mule, o el Messenger) Pus que SIN NECESIDAD de hacer NAT en el router, o en el cortafuegos, se puede acceder a la red y compartir o sencillamente, no mapear esos puertos... Otras aplicaciones como VoIP (Voz sobre IP) utilizan paquetes ms complejos con protocolos H323 SIP,. Una manera de usarlo sin problemas es mediante UPnP... Vamos que lo que parece ser una ventaja, insertar hardware, usar telefona IP u otros de los programas mencionados, puede ser un RIESGO de seguridad importante. La idea de UPnP es que los programas puedan abrir los puertos que necesiten en el cortafuegos dinmicamente, sin intervencin expresa del administrador, noooo,. No es un fallo de seguridad, puede ser una ventaja o como empezaba este post: Conveniente o arriesgado? Pues vamos a ver como funciona... evitar en la medida de lo posible irme por las ramas y centrarme en los ejemplos, sin mucha teora y descripcin profunda... a ver si me sale. Paso 1.- Direccionamiento Desde dentro de una LAN necesitamos una IP vlida, bien asignada por un servidor DHCP automticamente o bien de manera esttica, y si no?? Pues en el caso de Windows nos brinda el fabuloso zeroth, vamos que nos asignar una direccin de APIPA (169.254.xxx.xxx) lo que llamamos el auto-direccionamiento, algunas distribuciones de Linux como Fedora, tambin lo incluye. El caso es que bien con una direccin de APIPA o una automtica o esttica, necesitamos IP y ya la tenemos, no?? Paso 2..- Descubrimiento Una de las cosas que la mquina hace cuando se une a la red pregunta si existen servicios UPnP, para ello enva una serie de mensajes a una direccin de MULTIDIFUSION (Multicast). Los equipos con capacidades UPnP escuchan ese multicast, en la direccin 239.255.255.250 y de forma estndar por el puerto 1900 No recuerdas que es el multicast??? Pues ya sabes.. el Taller de TCP/IP jajaja... bueno, digamos que hay cuatro grandes formas de dirigirse a una mquina:

1.- Unicast, comunicaciones de uno a uno 2.- Broadcast, comunicaciones de uno a todos 3.- Multicast, comunicaciones de uno a varios 4.- Any cast, que es como un multicast pero se elige a uno de esos varios. A lo que vamos, nuestra mquina enva mensajes de descubrimiento a la red para averiguar si existe algn dispositivo con capacidades de UPnP, si es as responder a nuestros mensajes de descubrimiento. Esos mensajes se lanzan en UDP a la red en un formato parecido a este: Cdigo: Received 17/01/2008 at 21:16:29 M-SEARCH * HTTP/1.1 MX: 10 ST: ssdp:all HOST: 239.255.255.250:1900 MAN: "ssdp:discover" De ste paquete hay que observar varias cosas: Algo tiene que ver http como aparece en la primera lnea, ya veremos a continuacin que esos mensajes y sus respuestas contienen el protocolo http, por ello tambin se le llama HTTPU (http bajo UDP) que no es otra cosa que una variante del conocido protocolo WEB http MX: 10 Es una notificacin que se enva para advertir a los dispositivos UPnP que deben enviar sus respuestas en los prximos 10 segundos. ST: ssdp:all SSDP es un protocolo (Simple Service Discovery Protocol) o Descubrimiento sencillo de servicios, que no es otra cosa que el mecanismo para descubrir esos dispositivos y servicios UPnP, se pueden enviar en forma unicast o multicast y como he dicho se utiliza para descubrir servicios en redes basadas en el Universal Plug and Play (UPnP). HOST: 239.255.255.250:1900 Como ya se apunt antes, es la direccin multicast y puerto por el que atienden los dispositivos UpnP. MAN: ssdp:discover Eso, el tipo de mensaje SSDP que se enva. Si existe alguien que atienda esa peticin, responder algo como esto: Cdigo: Received 17/01/2008 at 21:16:31 HTTP/1.1 200 OK ST: upnp:rootdevice EXT: SERVER: VxWorks/5.4.2 UPnP/1.0 iGateway/1.1 USN: uuid:B9AE88EA-0D56-49EF-A178-AA9CC8F15656::upnp:rootdevice CACHE-CONTROL: max-age = 126 LOCATION: http://192.168.1.1:2869/IGatewayDeviceDescDoc Content-Length: 0 Que sin entrar en muchos detalles son las cabeceras con el tipo de mquina, nombre del servidor, cach, localizacin, etc...

Una de las cosas que ya sabemos gracias a este mtodo es la direccin IP del mismo, fjate en la cabecera LOCATION, ah tienes la direccin IP de ese cortafuegos, el puerto para ser administrado por UpnP y eso que pone: IgatewayDeviceDescDoc, no es otra cosa que la pgina a la que podemos acceder. Vamos, que si accedemos con el explorador (IE, firefox o el que uses) y pones en la barra de direccin Cdigo: http://192.168.1.1:2869/IGatewayDeviceDescDoc Tendras que recibir algo como esto: Cdigo: <?xml version="1.0" ?> - <root xmlns="urn:schemas-upnp-org:device-1-0"> - <specVersion> <major>1</major> <minor>0</minor> </specVersion> - <device> <deviceType>urn:schemas-upnporg:device:InternetGatewayDevice:1</deviceType> <friendlyName>WRT54G</friendlyName> <manufacturer>Linksys</manufacturer> <manufacturerURL>http://www.linksys.com/</manufacturerURL> <modelDescription>WRT54G</modelDescription> <modelName>WRT54G</modelName> <modelNumber>WRT54G-01</modelNumber> <modelURL>http://www.linksys.com/</modelURL> <serialNumber>A0001</serialNumber> <UDN>uuid:B9AE88EA-0D56-49EF-A178-AA9CC8F15656</UDN> <UPC>IGateway-01</UPC> - <iconList> - <icon> <mimetype>image/gif</mimetype> <width>118</width> <height>119</height> <depth>8</depth> <url>/intoto.GIF</url> </icon> </iconList> - <serviceList> - <service> <serviceType>urn:schemas-upnporg:service:Layer3Forwarding:1</serviceType> <serviceId>urn:upnp-org:serviceId:L3Forwarding1</serviceId> <SCPDURL>/L3ForwardingDescDoc</SCPDURL> <controlURL>/L3ForwardingCtrlUrl</controlURL> <eventSubURL>/L3ForwardingEvtUrl</eventSubURL> </service> </serviceList> - <deviceList> - <device> <deviceType>urn:schemas-upnp-org:device:WANDevice:1</deviceType> <friendlyName>WANDevice</friendlyName> <manufacturer>Linksys</manufacturer> <manufacturerURL>http://www.linksys.com/</manufacturerURL> <modelDescription>WRT54G</modelDescription> <modelName>WRT54G</modelName>

<modelNumber>WRT54G-01</modelNumber> <modelURL>http://www.linksys.com/</modelURL> <serialNumber>A0006</serialNumber> <UDN>uuid:6A55E32D-646D-4D39-89A2-627F82DD7999</UDN> <UPC>IGateway-01</UPC> - <serviceList> - <service> <serviceType>urn:schemas-upnporg:service:WANCommonInterfaceConfig:1</serviceType> <serviceId>urn:upnp-org:serviceId:WANCommonIFC1</serviceId> <controlURL>/WANCommonIFCCntrlUrl</controlURL> <eventSubURL>/WANCommonIFCEvtUrl</eventSubURL> <SCPDURL>/WanCommonIFCDescDoc</SCPDURL> </service> </serviceList> - <deviceList> - <device> <deviceType>urn:schemas-upnporg:device:WANConnectionDevice:1</deviceType> <friendlyName>WANConnectionDevice1</friendlyName> <manufacturer>Linksys</manufacturer> <manufacturerURL>http://www.linksys.com/</manufacturerURL> <modelDescription>WRT54G</modelDescription> <modelName>WRT54G</modelName> <modelNumber>WRT54G-01</modelNumber> <modelURL>http://www.linksys.com/</modelURL> <serialNumber>A0006</serialNumber> <UDN>uuid:9709A398-04F5-4ACE-927E-9C79E7434897</UDN> <UPC>IGateway-01</UPC> - <serviceList> - <service> <serviceType>urn:schemas-upnporg:service:WANEthernetLinkConfig:1</serviceType> <serviceId>urn:upnp-org:serviceId:WANEthernetLinkC1</serviceId> <controlURL>/WANEthernetLinkCfgUrl</controlURL> <eventSubURL>/WANEthernetLinkCfgUrl</eventSubURL> <SCPDURL>/WanEthernetLinkCfgDescDoc</SCPDURL> </service> - <service> <serviceType>urn:schemas-upnporg:service:WANIPConnection:1</serviceType> <serviceId>urn:upnp-org:serviceId:WANIPConn1</serviceId> <controlURL>/WANIPConnCtrlUrl</controlURL> <eventSubURL>/WANIPConnEvtUrl</eventSubURL> <SCPDURL>/WanIPConnectionDescDoc</SCPDURL> </service> </serviceList> </device> </deviceList> </device> </deviceList> <presentationURL>http://192.168.1.1:80/</presentationURL> </device> </root>

Aunque luego analizaremos (un poco) ese contenido XML, acabamos de saber dos cosas:

Primero: La IP del router, igual no le das importancia porque eso se puede averiguar con un simple ifconfig o ipconfig, pero... y si no tuvieses IP vlida en esa red??? Pues sabiendo que es una 192.168.1.1, ya puedes ponrtela una a mano de ese rango. Segundo: El router responde a determinadas pginas sin necesidad de autenticarse, vamos, que aun desconociendo el usuario y contrasea del mismo, nos ha sacado ese tocho por pantalla... y si hace eso, seguro que escupe mas informacin.... al tiempo, que todo llega en esta vida... Haremos un alto en el camino para ir practicando... Nos vamos a descargar una pequea utilidad que nos facilitar el trabajo (es libre) http://www.intel.com/cd/ids/developer/asmo-na/eng/downloads/upnp/tools/218896.htm? desturl=http://softwarecommunity.intel.com/isn/downloads/zips/IntelToolsForUPnPTechnology.zip http://www.intel.com/cd/ids/developer/asmo-na/eng/downloads/upnp/tools/218896.htm? desturl=http://softwarecommunity.intel.com/isn/downloads/zips/IntelToolsForUPnPTechnology_v2.zip Eso no es ms que un esnifer... bueno, tiene alguna que otra utilidad interesante... pero de momento basta saber eso. Una vez instalada, se ejecuta y pulsando F5 buscar dispositivos UpnP por la red y obtendremos los mensajes de descubrimiento y las respuestas.... como en esta pantalla del ejemplo anterior:

Sigamos... que ya me fui por las ramas... jajaja. Como acabamos de ver, los dispositivos que atienden a UPnP se descubren y responden con mensajes en cabeceras http y ficheros XML, a intervalos regulares siguen enviando esas cabeceras y mensajes a los equipos que se suscriben a esa direccin de multicast, y por cierto, en algunas ocasiones puedes recibir cabeceras NT en lugar de ST, es lo mismo, no importa. Paso 3.- Descripcin El dispositivo UPnP tambin ofrece una descripcin de las cosas que puede hacer va XML, para ello podemos fijarnos en el esnifer en las URL que sigue a la cabecera LOCATION, antes vimos una que era: Cdigo: http://192.168.1.1:2869/IGatewayDeviceDescDoc

Si seguimos investigando con el esnifer encontraremos otras, depender del tipo de dispositivo, eso te lo dejo a ti... que es sencillo, no? A lo que vamos, que en esa pgina XML del ejemplo va embebido las cosas que podemos hacer con l mediante UPnP, el servicio, el tipo de servicio, los puntos de control, etc.. cuando vayamos al ejemplo prctico le daremos utilidad. Paso 4.- Control En este paso el dispositivo queda a la escucha de los puntos de control, los servicios que admite los enva mediante HTTPU (http bajo UDP) en el fichero XML , un recorte de la salida: Cdigo: <service> <serviceType>urn:schemas-upnporg:service:WANIPConnection:1</serviceType> <serviceId>urn:upnp-org:serviceId:WANIPConn1</serviceId> <controlURL>/WANIPConnCtrlUrl</controlURL> <eventSubURL>/WANIPConnEvtUrl</eventSubURL> <SCPDURL>/WanIPConnectionDescDoc</SCPDURL> </service>

Esto no es otra cosa que la forma en la que podremos acceder a la interface WAN (WANIPConnection), el servicio (WANIPConn1), la URL de control (WANIPConnCtrlUrl), los sucesos (/WANIPConnEvtUrl) y la direccin web del mensaje XML descubierto (SCPDURL /WANIPConnection) Ya les daremos uso... calma que ahora estamos aprendiendo el funcionamiento del protocolo. En este paso se utiliza otro protocolo mas... SOAP. Podemos enviar preguntas SOAP a ControlURL, SOAP es un protocolo que se ejecuta bajo http y usa XML para describir la funcin a llamar, el servidor responder a esa llamada. SOAP se usa frecuentemente para hacer usos de algunos servicios Web. Paso 5. Sucesos Los puntos de control anteriores guardan el estado que el dispositivo enviar, el dispositivo los registra y hay que suscribirse a ellos. Una vez que el dispositivo ha registrado el punto de control enviar o recibir mensajes con su estado para mas tarde poder recibir las actualizaciones. Todo esto mediante HTTPU. Paso 6.- Presentacin Pues es cmo el dispositivo presentar esa informacin a los mortales, vamos lo que est mas cerca de nosotros que de las mquinas, ya sea mediante un interface web o lo que sea. Resumiendo: Con UPnP, cuando un usuario conecta un dispositivo a la red, el dispositivo se autoconfigura. El mecanismo de transporte es http bajo UDP enviados a direcciones IP de multicast Utiliza mensajes de descubrimiento, descripcin de los servicios, puntos de control, eventos/sucesos y presentacin de los resultados para ello se apoya en protocolos del tipo SSDP, SOAP y archivos XML. Es inseguro porque no requiere autenticacin, cualquier host de la red puede usar esa pila de protocolos para controlar o averiguar informacin de la mquina que tenga habilitada los servicios UPnP. Como el dispositivo se autoconfigura se pueden enviar mensajes con valores manipulados a los servicios que ofrece. Bien... y ahora lo bueno Cmo podemos explotar todo esto? Pues se me ocurren varias maneras, todo depende del lado de la red en la que estemos... Supongamos que formamos parte de esa red, imaginemos que somos un usuario mas y que el admin. De nuestra empresa, colegio, instituto u oficina tiene TODOS los puertos capados.... La respuesta es enviando mensajes SOAP al dispositivo para abrir los puertos que queramos,

Y si estamos fuera? Pues poniendo en marcha un servidor web malicioso que al visitarlo envie esos mismos mensajes. En este artculo me voy a centrar en la primera posibilidad (ojito que se puede hacer desde el otro lado del router, desde Internet, eso queda para una posterior ampliacin) Voy a tratar ese caso, un router con TODOS los puertos cerrados y le vamos a abrir puertos haciendo NAT hacia una mquina de la red sin saber ni la contrasea ni gaitas. Ya... pero cmo? con qu? Pues primero con otro programita del tipo esnifer que vimos antes, que es como mas visual, despus con scripts en perl o phyton..., al gusto... Venga por lo primero, que as daremos uso a lo aprendido. Vamos a descargar e instalar esto: http://www.hilisoft.com/UPnP/download/UPnPBF11.exe Al ejecutarlo veremos esto o similar:

Lo primero que haremos es un UpnP Discover

Ahora vamos a ir expandiendo el rbol del/los dispositivos encontrados...

Como ves se eligi de la lista de dispositivos y servicios la conexin WAN (que est resaltada en azul) Bajo ella encontraremos suscripciones, Propiedades, Acciones y variables. Ahora (aunque no es necesario del todo) pinchamos con el botn derecho del ratn sobre eso que tenemos resaltado y seleccionamos Suscribe

En la parte derecha de la ventana nos informar si se efectu o no...

De momento todo bien, seguimos... Abrimos el rbol que pone Actions y veremos un listado de lo que podemos hacer...

Como ves hay muchas cosas... las que nos interesan en este caso son: GetGenericPortMappingEntry: Que nos permitir ver los puertos mapeados dinmicamente. AddPortMapping: Que nos permitir abrir un puerto a una ip, vamos el NAT esttico de toda la vida... eso del Nateo, mapeo o como gusten.... DeletePortMapping: Que nos permitir eliminar el puerto abierto con anteioridad IMPORTANTE: Al hacer NAT de este modo, no esperis ver en el panel web del router o dispositivo esas entradas, recuerda que SON DINMICOS y no se muestran en la lista esttica de puertos mapeados!!!! Qu mas puedes pedir??? Vamos a hacer NAT sin permiso del admin. De la red, sin saber la contrasea del router y sin ser descubiertos!!!! Qu mas??? Un caf??? Venga, al tajo... Haremos lo siguiente para comprobar que se hizo bien... podremos netcat a la escucha para simular que existe un servicio... y luego iremos a una de esas webs que escanean puertos online para ver si apareci el puerto como abierto... Todava no hemos hecho nada, por tanto nos debe decir que el puerto est cerrado... Netcat a la escucha...

Ahora vamos a upseros y que nos escaneen la conexin: (solo se muestra un extracto de la pantalla, la del puerto 8080 que abrimos con el netcat) http://www.upseros.com/portscan.php

Y por supuesto en nuestro netcat no se habr registrado ninguna conexin....

Claro... est cerradito... pues vamos a abrirlo Expandimos el rbol de AddPortMapping y sobre esa entrada pulsamos botn derecho y Set Value

Tenemos que informar de los siguientes valores: NewRemoteHost: Que ser la direccin IP del host remoto al que permitimos la conexin entrante... es decir la IP de upseros.com que es: 69.93.0.234 ah!!! Que quieres aceptar conexiones entrantes de cualquier direccin??? Pues pondremos la 0.0.0.0 NewExternalPort: Puerto del router cara a Internet, en el ejemplo: 8080 NewProtocol: Eso, el protocolo, UDP, TCP, en nuestro caso TCP NewInternalPort: Puerto por el que escuchar la mquina interna, en nuestro caso tambin el 8080 NewInternalClient: La direccin IP de la mquina interna, en este caso es la 192.168.1.100. NewEnabled: Admite valores 0 para deshabilitar o 1 para habilitar la entrada... por supuesto pondremos un 1 NewPortMappingDescription: Pues nada, como lo queremos llamar... por ejemplo ponemos Puerto Pirata NewLeaseDuration: Es el tiempo durar en la memoria del router la entrada NAT, si queremos hacerlo para siempre pondremos un 0 No hace falta que vayas seleccionando uno a uno y dando Ok, basta con abrir el men desplegable e ir aadiendo

esos valores que puse antes y al final pulsas en OK: Al final la cosa queda as:

Vale, ahora volvemos a pulsar sobre la entrada AddPortMapping con el botn derecho del ratn y seleccionamos Execute Action

Y ale!!!! Volvemos a upseros....

TATACHNNNNN!!! Y en nuestro netcat:

NAT en marcha!!!! POR DIOS SANTO!!!! Esto es un chollito para virus, troyanos, o para poner Routers Zombies por la red... es peligroso y si me apuras muy, muy, muy PELIGROSO no opinas igual??? A poco que hayas prestado atencin, podrs manejar otras entradas, consultar los puertos dinmicos que han hecho NAT mediante UPnP, Cerrarlos, y averiguar otro tipo de informacin... Bueno, lo de los scripts, venga... primero uno sencillito para averiguar la IP Externa.... Cdigo: #!c:\python24\phyton.exe import os from SOAPpy import * endpoint = "http://192.168.1.1:2869/WANIPConnCtrlUrl" namespace = "urn:schemas-upnp-org:service:WANIPConnection:1" soapaction = "urn:schemas-upnporg:service:WANIPConnection:1#GetExternalIPAddress" server = SOAPProxy(endpoint, namespace) print "External IP", server._sa(soapaction).GetExternalIPAddress() El resultado de ejecutar ese cdigo os entregar la IP externa, la pblica o la que estis usando como pasarela de vuestra red. Cmo conozco lo valores de las variables endpoint, namespace y soapaction?? Pues al principio de este post, capturamos con el esnifer de Intel varios paquetes, uno de ellos en sus cabeceras era: Cdigo: LOCATION: http://192.168.1.1:2869/IGatewayDeviceDescDoc De ah conseguimos la IP y el puerto por el que el router escuchar los mensajes SOAP que le enviemos, en mi ejemplo es la 192.168.1.1 y puerto 2869 De dnde sale eso de WANIPConnCtrlUrl que le sigue en la variable endpoint? De aqu: Cdigo: <serviceType>urn:schemas-upnporg:service:WANIPConnection:1</serviceType> <serviceId>urn:upnp-org:serviceId:WANIPConn1</serviceId> <controlURL>/WANIPConnCtrlUrl</controlURL> <eventSubURL>/WANIPConnEvtUrl</eventSubURL>

<SCPDURL>/WanIPConnectionDescDoc</SCPDURL> </service> Pues de la captura XML que tambin puse antes... si te fijas en el cdigo XML que sigue al servicio WANIPConnection, la URL de control <controlURL> es esa misma. La variable namespace contiene urn:schemas-upnp-org:service:WANIPConnection:1 que es el tipo de servicio <serviceType> La variable soapaction contiene urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress Es el mensaje SOAP, que es la identificacin del servicio seguido del carcter # y la variable que queremos consultar, si echas un vistazo a la herramienta UPnP Browser que usamos para mapear el puerto a mano vers que una de las acciones que se pueden realizar es esa misma:

Y para hacer NAT pirata Cdigo: #!c:\python24\phyton.exe import os from SOAPpy import * endpoint = "http://192.168.1.1:2869/WANIPConnCtrlUrl" namespace = "urn:schemas-upnp-org:service:WANIPConnection:1" soapaction = "urn:schemas-upnporg:service:WANIPConnection:1#GetExternalIPAddress" server = SOAPProxy(endpoint, namespace) print "External IP", server._sa(soapaction).GetExternalIPAddress() soapaction2= "urn:schemas-upnporg:service:WANIPConnection:1#AddPortMapping" server._sa(soapaction2).AddPortMapping(NewRemoteHost="0.0.0.0", NewExternalPort=8080, NewProtocol="TCP", NewInternalPort=8080, NewInternalClient="192.168.1.100", NewEnabled=0, NewPortMappingDescription="Puerto Pirata",

NewLeaseDuration=0) Observa que lo nico que se aadi es la variable soapaction2 que es muy similar a la explicada antes, excepto que la accin a ejecutar es #AddPortMapping (lgico...) Y que el envo al Server.sa contiene los valores que vimos anteriormente en el NAT que hicimos con la aplicacin UPnP Browser... creo que est claro y no precisa de mucha mas explicacin. Si usis Python para Windows, yo us ActivePython, tambin debis instalar y construir los Mdulos SOAPpy y fpconst, podis descargarlo en Activepython para Windows: http://www.activestate.com/store/download_file.aspx?binGUID=2aef8c32-5d4e-4ddc-b46b-83c709648b49 Los de LiNUX, ya lo sabemos.... jejeje. Mdulos: SOAPpy para Windows: http://downloads.sourceforge.net/pywebsvcs/SOAPpy-0.12.0.zip?modtime=1109073015&big_mirror=0 SOAPpy para LiNUX: http://downloads.sourceforge.net/pywebsvcs/SOAPpy-0.12.0.tar.gz?modtime=1109072997&big_mirror=0 fpconst para Windows: http://downloads.sourceforge.net/rsoap/fpconst-0.7.3.zip?modtime=1163603913&big_mirror=0 fpconst para LiNUX: http://downloads.sourceforge.net/rsoap/fpconst-0.7.3.tar.gz?modtime=1163603900&big_mirror=0 Y por hoy, ya est bien.... no sin antes decir una cosa y agradecer otra.... Decir que existen troyanos que explotan esto mismo, as que cuidado, que podemos montar un web Server malvado que haga un NAT de este estilo, que muchos routers permiten la administracin remota mediante UPnP... cuidado.... Y el agradecimiento, a Death_Master que si algo s de Python, o por lo menos entender como es ese lenguaje es gracias a l... y ya puestos a un seor que se llama Armijn Hemel al cual no tengo el gusto de conocer pero que ilumin en su momento a este Vikingo para trastear con estas cosas del UPnP y que para desgracia de mis alumnos tienen que soportar de vez en cuando... Saludos. PD: Se me olvidaba... espero que con esto tengas mas respuesta relativa a este post.... jejeje, no haber preguntado :P http://www.wadalbertia.org/phpBB2/viewt ... light=upnp Byes....... Y otra cosa.... lee.... si reiniciamos el router o lo que sea, se eliminar este tipo de "azaa".... desactivad todos la opcin de UPnP, estis avisados...

Potrebbero piacerti anche