Nivel básico - Hacking desde 0 para principiantes parte 1
Primer nivel del curso. Analizamos todos los conocimientos y técnias de hacking básicas que utilizaremos en niveles de mayor de ficultad en el curso hacker desde 0, orientado tanto a principiantes que están empezando a descubrir el mundo de la seguridad informática en todas sus vertientes como a profesionales y administradores de redes y servidores que quieran ampliar sus conocimientos. Estas son las páginas hackers que formarán tu base de conocimientos y te mostrarán paso a paso como ser un hacker profesional. No se trata de un simple manual de hacker, se trata de un curso completo.
Red TOR, descarga e instalación para deep web
Continuando con la serie de artículos relacionados a la Deep web, hoy veremos cómo instalar el software Tor, algunas ventajas e inconvenientes de su uso y las distribuciones Linux que lo traen por defecto.
Iniciemos viendo cómo instalarlo en Windows, o en un tu propia máquina virtual si no quieres correr riesgos, antes de empezar con la parte técnica de éste artículo me gustaría dejar dicho que no recomiendo usar la red Tor desde Windows o algún otro Sistema operativo que no esté pensado para este fin, la razón es muy sencilla, en un Sistema operativo de estas características, generalmente tenemos instaladas aplicaciones que podrían descubrir nuestra ubicación geográfica real, IP o algún dato que no convenga exponer, por ejemplo el Javascript en tu navegador o algún software P2P que conecte a una fuente de forma directa. Dicho esto vamos al procedimiento.
Cómo Instalar el software Tor en Windows.
Lo primero que tenemos que hacer es acudir a la página principal de Tor Project, en el enlace https://www.torproject.org/ ahí podemos ver el botón “DownloadTor” damos clic ahí y vemos qué fue lo que descargamos.
Al momento de escribir esta entrada, el navegador Tor se encuentra en su versión 4.0.8 y como puedes apreciar en la imagen, esta descarga funciona para Windows 10, 8, 7, Vista y XP, así que funciona para la mayoría de los usuarios.
Al dar clic en “DownloadTor Browser” nos descarga un archivo .exe que servirá para nuestros fines, basta con esperar a que termine la descarga, ir al directorio en el que guardamos dicha descarga y ejecutarlo.
La instalación es un procedimiento normal de Windows (siguiente > siguiente …)
Seleccionar el lenguaje de la instalación:
Elegir la ubicación dela instalación:
Y listo, esperamos a que termine:
Una vez finalizado, yo dejé marcada la opción “Ejecutar Tor Browser Bundle” y di clic en “Terminar”, inmediatamente después de eso, me apareció la ventana de configuración inicial del navegador Tor.
Cómo configurar el navegador de la red TOR en Windows
Una vez hecha la instalación del navegador TOR tenemos que hacer una configuración inicial muy sencilla para poder empezar a navegar de forma anónima y poder adentrarnos en la deep web.
Aquí podemos ir por dos caminos, dar clic al botón “Conectar” o dar clic al botón “Configurar” te recomiendo ir por “Conectar” ya que como puedes ver en la imagen, esto funciona en la mayoría de las situaciones, si todo en tu sistema es correcto el navegador Tor empezará a conectarse con a red Tor (imagen anterior) y al conectarse podrás ver la pantalla que te presento en la segunda imagen.
Y tras este paso si todo ha ido bien se os abrirá vuestro navegador TOR dándoos la enhorabuena por la instalación y configuración hecha:
Una vez que te encuentres en esta pantalla, estarás conectado a la red Tor y listo para navegar en sus escondrijos, te recomiendo leer todas las recomendaciones antes de acceder, ya que como hemos comentado en diversas ocasiones, navegar por esta red no te garantiza al 100% el anonimato, ten mucho cuidado con lo que haces y como te adelantaba en la primera entrada (podemos aprovechar este pie para ligar esta entrada con la primera) un alto porcentaje de lo que te ofrecen en la Deep Web, es un fraude, no veo en qué caso podrías necesitar comprar algo en esa red, pero si es tu caso, ten mucho cuidado y prepara tu cartera de Bitcoins, te hará falta.
Ventajas e inconvenientes del uso de la red Tor
Este tema es algo subjetivo ya que yo no sería capaz de listar ventajas e inconvenientes del uso de la red Tor sin involucrar mi propia experiencia con dicha red, es por eso que el tema se vuelve un poco delicado, en la entrada anterior ya he compartido algunas de las páginas a las que se puede acceder mediante esta red, te recomiendo iniciar tu viaje por la WikiTor que es un punto de inicio bastante claro respecto a qué existe en la red (o al menos lo que ellos tienen identificado) y tiene buenas listas en las que te aclaran si un servicio es un fraude o no, aunque estas listas no están soportadas por una entidad 100% confiable y a riesgo de sonar como disco rayado, recuerda que en la red Tor, nada ni nadie es 100% confiable, si quieres hacer uso de algún servicio, vas a tener que arriesgarte y probarlo, si te decides por favor compártenos tu experiencia… A menos de que hayas contratado algo ilegal en cuyo caso sería preferible que mantengas esa información como privada, por seguridad de ambas partes.
Ventajas de usar la red Tor.
El mismo sitio oficial nos da una muestra de quién y para qué usa la red Tor, por ejemplo, Familia y amigos, es gente común y corriente (¿?) que usa la red Tor para comunicarse con sus familiares sin riesgo de que sus comunicaciones sean interceptadas y su información pueda ser usada para chantajes o similares, yo me pregunto ¿Qué clase de comunicaciones familiares necesitan este nivel de protección? Sin lugar a dudas hay matrimonios que las puedan necesitar, es una buena opción para ellos.
Negocios, en este rubro puedes usar la red Tor para investigar a tu competencia y mantener tus comunicaciones seguras, tal vez te veas en la necesidad de enviar un secreto industrial y la red Tor podría ser tu mejor aliado para conseguir hacerlo sin arriesgar toda tu operación.
Activistas, dada la reciente situación económica en el mundo, el activismo ha pasado a ser el pan de todos los días para un grupo cada vez más numeroso de gente, personas que quieren reportar abusos en zonas peligrosas, tal vez quieran reportar actos corruptos o algún hecho que la prensa no quiere o puede dar a conocer, definir un punto de encuentro o las acciones a tomar en cierto evento, de esta forma es posible comunicar cualquiera de los anteriores ejemplos, aunque como siempre, el ser humano es el eslabón más débil de la cadena y en mi opinión solo existe una cosa más peligrosa que no ser anónimo y es, creer que eres anónimo, piénsalo un poco.
Ya en un plano más profesional tenemos a los reporteros que utilizan Tor para proteger a sus fuentes, ubicaciones y en sí, su trabajo, además de las aplicaciones militares y de inteligencia que utilizan las agencias de seguridad, recuerda que esta red se inició como una aplicación militar, el objetivo inicial era ese, si nuestras comunicaciones son interceptadas, que vayan encriptadas, creo que este punto es muy claro y revelador respecto al nivel de seguridad que la red Tor nos puede ofrecer.
Inconvenientes de usar la red Tor.
Como he repetido hasta el cansancio, los fraudes, muchos de los servicios ofrecidos en esta red son fraudes o trampas puestas ahí por agencias de seguridad que van en busca de delincuentes de un perfil muy específico, como ya he comentado también, soy un estudiante de la carrera de Psicología así que entiendo un poco de la forma en la que la gente es engañada en esta red, he quedado fascinado con algunos artículos que he leído ya que es sencillamente ingeniería social lo que aquí funciona como no podría funcionar en la red común, explico por qué.
Cuando una persona ve una oferta “muy buena” suele dudar de su veracidad es natural que si vemos un anuncio que ofrece un auto del año con solo 200 dólares de enganche más 100 dólares bimestrales durante un año pensemos “¡Sí, claro!” y casi automáticamente desechemos esa “oferta” como algo viable, la gente más avispada o interesada haría una investigación en forma consultando todos y cada uno de los puntos en la oferta, ¿Quién respalda dicha oferta? ¿Cómo funciona? ¿Qué opinan otros usuarios? ¿Cuentan con una ubicación física en la que pueda ir a verificar todo lo que dicen? Y un sinfín de preguntas más que deben de tener respuesta antes de proceder con la adquisición de dicho bien, si lo primero que vemos es “Deposita tus 200 dólares de enganche y te contactaremos por correo” evidentemente es un fraude y tenemos que salir de ahí corriendo, la “virtud” de la red Tor, es que la mayoría de las ofertas funcionan bajo un esquema muy distinto al que les acabo de plantear, es decir, no ves el fraude por una sencilla razón, el vendedor es tan anónimo como el comprador (seguramente mucho más) y puede ofrecer lo que quiera, simple y sencillamente, es un trato de fe, de confianza y que ambas partes deben cumplir, otro punto importante es que muchos bienes ofrecidos en esa red, son ilegales, así que se amparan en algo tan sencillo como efectivo, no vas a ir corriendo a la policía a denunciar que te estafaron cuando pretendías comprar medio kilo de cocaína base.
¿Escalofriante no?
Los vendedores en la red Tor ofrecen bienes y servicios que no podrían ser adquiridos de una forma lícita, en la mayoría de los casos solo poseer esos bienes es un delito, así pues, puedes ver mensajes ofreciendo armas escondidas en televisores, drogas escondidas en jamones o aparatos para clonar tarjetas desarmados y listos para que los armes y los pongas a funcionar en tu casa, todo parece ser “legal” a un nivel vendedor/comprador y es eso lo que hace que la gente caiga y siga cayendo en este tipo de fraudes, te ofrecen mucho por mucho y no hay forma de saber quién es quién en la transacción, si piensas comprar algo, revisa que acepten pagos vía escrow que es un sistema que “protege” tu dinero y no lo libera sin tu consentimiento.
Pensé mucho en escribir estas líneas porque soy un fiel seguidor de las leyes ya que no me gusta meterme en problemas, siempre me voy por el camino largo aunque signifique más tiempo y recursos, con tal de evitar problemas, pero es bien cierto que es mi deber también exponer las cosas como son y no como yo quisiera que fueran, una vez expuesto mi argumento, vamos ver el otro inconveniente que hay al navegar en la red Tor.
Probablemente tu cuentes con algo ilegal en tu poder o bases tu negocio en la venta de algo ilegal, pongamos por ejemplo, plutonio (para no herir sensibilidades) tienes una tonelada de plutonio y quieres comercializarla al mejor postor, piensas “venderé este plutonio en la red Tor, anónimo y rápido” hasta aquí parece ser un buen plan, así que creas tu sitio .onion y empiezas con la venta del plutonio, 600 bitcoins por kilo, de pronto aparece un comprador muy interesado en el tema, te comenta que quiere 10 kilos y que te los paga ya mismo, haces la transacción y ¡Voilà! Has ganado tus primeros 6000 bitcoins, ¡Espectacular! ¿Qué más puedes pedir? Envías el plutonio a tu comprador (a un apartado postal por supuesto) y continúas tu negocio emocionado por la primera venta, un par de días después te contacta otro comprador, esta vez quiere 20 kilos, pero te pide otro tipo de entrega o envío, esta vez te dice “necesito que lo mandes por estafeta a esta dirección” Tú piensas “por 20 kilos te la llevo a otro continente en mi bicicleta” así que accedes, te paga los 20 kilos, empaquetas el plutonio y corres a la oficina de estafeta que más te convenga, ya puede ser una cerca de tu casa o no, eso depende de ti, así que vas hasta el otro lado de la ciudad, ya que quieres seguir siendo “anónimo” y no quieres que relacionen la ubicación de esa oficina con la seguridad de tu hogar, este negocio parece ser el indicado, he ganado casi 20,000 bitcoins en poco tiempo y con mucha seguridad, al otro día de haberse concretado la entrega tu segundo comprador pide 10 kilos más, quiere el envío tal como lo hicieron antes y tu claro, confías en que todo marche sobre ruedas, así que recibes el pago, empaquetas el plutonio, sales de tu hogar rumbo a la paquetería y… 35 policías apuntándote con armas te detienen, te acusan de terrorismo y de vender un material controlado ¿Qué salió mal?
Primero que nada, vas a ir muchos años a prisión, porque te tienen con las manos en la masa, segundo nunca fuiste anónimo y desde el principio te estaban monitoreando y voy a explicarte qué pasó.
La primer compra fue hecha por un policía que quería verificar la verdad de tu anuncio, si tenías o no el plutonio que estabas ofreciendo, cuando se dio cuenta de que era cierto, se pusieron en marcha muchos mecanismos oficiales (y sus recursos) para darte caza, el segundo comprador era el mismo policía salvo que ahora quería delimitar geográficamente tu ubicación, existe un número limitado de oficinas Estafeta en cualquier lugar y tomando en cuenta la hora del pago contra la hora del envío, es fácil calcular un rango de acción, no pudiste haber viajado mucho tiempo si te pagaron en la mañana y entregaste por la tarde, viajar hasta el otro lado de la ciudad, no fue de mucha utilidad, después, ese tipo de oficinas cuentan con cámaras de seguridad que monitorean todo lo que sucede adentro o afuera ¿Fuiste en tu propio vehículo? ¿Llegaste disfrazado de algo? ¿Usaste ropa que al momento de tu detención se encuentra en el cesto de la ropa sucia? Buscarán cualquier pequeño detalle para relacionarte a las ventas anteriores ¿Recordaste limpiar las huellas del embalaje del plutonio? ¿Y las huellas de la pluma con la que firmaste con un nombre falso el envío? Qué contrariedad.
Si a esta increíble historia le cambias la palabra “plutonio” por “pistola” o “drogas” verás que no es tan increíble, evidentemente un trabajo de inteligencia policial no se basa en un par de cuentas falsas en dos semanas, a veces se toman años y mucho, mucho dinero, pero eventualmente, van a dar contigo, por más cuidadoso que seas, siempre hay una forma y para la policía y sus accesos, esa forma es todavía más fácil.
Este ejemplo que te puse a manera de historia, es solo uno de los muchos que podría poner, el policía también podría ser un vendedor y en este caso, sabe exactamente a dónde vas a ir a recoger tu paquete y cuando ¿Te arriesgas?
Distribuciones Linux que se conectan conTor por default
Ya vimos cómo acceder y qué podemos encontrar ahí, ahora pasaré a explicarte una distribución basada en Linux que promete el mayor anonimato posible en la red, esta es Tails, esta distribución es parte del proyecto Tor
Al momento de escribir este artículo, Tails va en su versión 1.3.2, puedes descargar este sistema operativo mediante descarga directa o torrent, te recomiendo descargar tu Tails mediante torrent, ya que si tienes algún problema con la conexión, la luz, etc. Puedes retomar la descarga sin miedo a que pueda estar corrupta o ser inservible, son más o menos 910 MB, el tiempo de descarga dependerá de la velocidad de tu red, en mi caso se llevó 17 minutos aproximadamente.
Después de descargar la imagen de Tails, es muy recomendable que valides su integridad, si descargaste vía torrent, verás en la misma carpeta de descarga un archivo .sig, esa es la firma con la cuál verificarás tu descarga, te recomiendo leer muy bien la FAQ de Tails, en la que se responden la mayoría de dudas que van surgiendo cuando se inicia en el uso de Tails
Aunque en general debemos de leer la documentación de Tails al completo, nunca está de más el conocimiento.
Una de las ventajas que tiene Tails sobre otros sistemas es que lo puedes usar en modo “Live” desde un CD, DVD, USB o tarjeta SD, esto significa que no necesitarás instalar nada en tu sistema (aunque se puede si así lo quieres) así cuando apagues tu Tails, se eliminará cualquier cosa que pudiera haber quedado registrada… En tu computadora, actividad más allá de tu computadora, no es tan fácil de eliminar.
Tails por defecto “maquilla” tu MAC y esto quiere decir que oculta la dirección física de tu dispositivo de red, así como también se conecta a la red Tor por defecto, tiene un navegador “inseguro” aunque el navegador por default es el que vimos antes, Navegador Tor.
Y claro, como he venido diciendo a lo largo de esta serie, nada es infalible, Tails mejora tu privacidad en la red, pero NADA la puede asegurar al 100%, sobretodo tus hábitos de navegación y la forma en la que tú mismo cuides de tu seguridad, es por eso que recomiendo leer siempre las sugerencias que nos dan en torproject.org o en tails.boum.org ya que ahí nos enteraremos mejor y a más detalle, qué puede dejarnos visibles en la red.
Una vez que tengas tu Tails corriendo, podrás navegar a través de la red común de forma anónima, así como a través de la red Tor.
Controla otra PC desde la tuya
Estás trabajando en una computadora en tu casa u oficina, pero necesitas acceder a otra computadora para tomar un archivo o abrir una aplicación. Por lo tanto, ambos equipos deben ser accesibles para ti al mismo tiempo. ¿Qué puedes hacer? Mientras este otro equipo esté encendido, puedes iniciar sesión en él y controlarlo remotamente mediante la función Conexión a Escritorio remoto (RDC) en Windows.
A través de RDC, puedes acceder remotamente a varios equipos a través de la misma red. También puedes utilizarla para acceder a PCs en diferentes redes a través de Internet, pero eso requiere algún conocimiento de cortafuegos y reenvío de puertos. Así que en esta historia, nos enfocaremos en iniciar sesión en otra PC que se ejecute en la misma red que tu computadora actual. Vamos a ver cómo funciona.
En primer lugar, tú o alguien más tendrá que iniciar sesión físicamente en la PC remota, la PC a la que deseas acceder desde lejos. Inicia el Panel de control. En el campo Búsqueda de Panel de Control en la esquina superior derecha, escribe la palabra remoto. En los resultados de búsqueda, haz click en el enlace "Permitir acceso remoto a su equipo".
Aparecerá la ventana Propiedades del sistema. En la ficha Remoto, examina la sección para Escritorio remoto y asegúrate de que la opción "Permitir conexiones remotas a este equipo" esté habilitada. También puedes activar la casilla de verificación "Permitir conexiones sólo desde equipos que ejecutan Escritorio remoto con autenticación de nivel de red (recomendado)". Esto no es obligatorio. Pero añade una capa adicional de seguridad al requerir la autenticación del usuario de conexión, por lo que no hay ninguna razón para no activarla. Haz click en Aceptar.
Cualquier usuario que tenga una cuenta administrativa en la PC remota puede acceder a ella, por lo que la opción más fácil es utilizar dicha cuenta para iniciar sesión remotamente. Tu PC ya debe tener una cuenta con derechos de administrador.
Para comprobar esto, inicia el Panel de control. En el campo Búsqueda de Panel de Control en la esquina superior derecha, escribe la palabra usuarios. En los resultados de búsqueda, haz click en el enlace "Cuentas de usuario". En la ventana "Hacer cambios en su cuenta de usuario", haz click en el enlace "Administrar otra cuenta". Mira las cuentas enumeradas y ve cuál está designada como Administrador.
Ahora inicia sesión en la PC cliente, es decir, la PC que deseas utilizar para acceder al equipo remoto. Presiona Win + R. En el campo Abrir en la ventana Ejecutar, escribe mstsc.exe para iniciar la característica Conexión a Escritorio remoto. En la ventana RDC, escribe el nombre o la dirección IP de la PC remota en el campo Computadora. Haz click en el botón Mostrar opciones.
Escribe el nombre de usuario de la cuenta de administrador que utilizarás para iniciar sesión. Haz click en Conectar.
Ingresa tu contraseña cuando te la pida y luego haz click en Aceptar.
Ahora debes estar conectado a la computadora remota, lo que te permite ejecutar aplicaciones, abrir y trabajar con archivos, y el uso de Internet. En la parte superior de la pantalla hay una barra de conexión azul con varias opciones. Esa barra de conexión desaparece después de un corto tiempo, pero volverá a aparecer si mueves el mouse a la parte superior de la pantalla.
Los controles en el lado izquierdo de la barra te permiten fijar la barra y comprobar la velocidad de conexión. Los controles en el lado derecho de la barra incluyen un botón de minimización para reducir la ventana remota a la barra de tareas, un botón Restaurar hacia abajo para reducir el tamaño de la ventana y un botón Cerrar para finalizar la sesión remota.
Después de terminar la sesión, abre RDC de nuevo (Win + R> escribe mstsc.exe en la ventana Ejecutar). Haz click en el botón Mostrar opciones. Ahora puedes ajustar configuraciones si lo deseas. En la pestaña General, marca la opción "Siempre pedir credenciales" si no deseas introducir tu contraseña cada vez que te conectes.
En la ficha Pantalla, puedes cambiar el tamaño de la ventana remota de pequeña a grande.
En la ventana de Recursos Locales puedes configurar los ajustes de audio remoto y elegir cuándo aplicar combinaciones de teclas.
Y en la pestaña Experiencia, puedes seleccionar la velocidad de conexión para controlar el rendimiento.
Servidor proxy. Oculta tu identidad
Seguimos con nuestros tutoriales de servidores específicos. Hoy vamos a centrarnos en los los servidores de tipo proxy. Por lo general son servidores cuya función es interponerse entre la página web que queremos visitar, o servidor donde nos queremos conectar y nosotros de tal forma que no el servidor objetivo jamas pueda saber que realmente somos nosotros quienes estamos accediendo a la información.
Ventajas de utilizar un servidor proxy
Los servidores proxys son servidores que cumplen una función que a nosotros nos puede venir bien en diversas situaciones. Como siempre el que nosotros podamos sacar un partido mayor o menor va a depender siempre de nuestra capacidad de imaginación.
Para los administradores de redes (sobre todo en empresas) este tipo de servidores pueden ser utilizados para que los ordenadores de los empleados no sean los que salgan directamente a internet. Con esto ganan 2 cosas, por un lado pueden filtrar ciertas páginas webs y por otro lado protegen a los usuarios. Para entender cómo se realizan estas dos funciones vamos a ver el esquema básico de conexion con un servidor proxy intermediando
Como se puede observar en el esquema el servidor proxy está en la fontera entre internet y la red local. Aclarar que los servidores proxies no son sustitutos de los cortafuegos, y aunque ambos están en la frontera, el proxy suele colocarse justo detrás del cortafuegos para que también esté protegido. Cuando un PC de la red interna quiere visitar una página lo que hace en realidad es pedírsela al servidor proxy. Una vez hecha la petición el servidor proxy hará dos comprobaciones. La primera será mirar si la web solicitada está en su lista de webs permitidas (si se tiene configurado un proxy restrictivo) o mirará que no esté en su lista de webs denegadas (si ste tiene configurado en modo permisivo). En el caso de que la web no esté restringida el servidor proxy pasará a servirla al PC que la solicitó. Para poder servirla será el proxy quien se comunique con la web (ubicada en la red externa, internet), la analice y se la sirva al cliente. Si la página contenía algun tipo de código malicioso en javascript y el servidor proxy lo detecta lo eliminará y protegerá al PC sirviéndole la página limpia de código malicioso.
Los servidores proxies ayudan a descongestionar la red. Esto es otra ventaja para los administradores de redes ya que con el mismo ancho de banda pueden responder a una demanda superior de peticiones. Cuando un servidor proxy visita una web a la vez que la sirve al cliente que se la ha solicitado también puede guardarla en su memoria caché por un tiempo determinado si se ha habilitado esta opción en la configuración. En caso afirmativo, el servidor proxy irá almacenando cada web que se le solicite en su memoria hasta llegar al tope máximo. Entonces cada vez que se le hace una nueva petición, justo después de comprobar que la web solicitada no está restringida comprobará si la tiene almacenada en su memoria caché, de ser así, no tendrá que acceder a internet para descargarla de nuevo, se la servidrá directamente de su memoria caché. De este modo si 10 clientes piden visitar una web el servidor proxy solo tendrá que hacer una petición para satisfacer la demanda de 10 reduciendo así 9 peticiones. Esto es especialemente útil en contenido multimedia que suele ser bastante pesado.
Como consecuencia directa del punto anterior mejoran notablemente la velocidad de carga de las páginas webs. Al no tener que solicitar la página web al servidor en internet es como si el servidor estuviera en la red local, con lo que el usuario final percibe una mejora en los tiempos de carga en las páginas que más se visitan.
Un servidor proxy elimina las restricciones por ubicación. En muchos países (sobre todo orientales) el gobierno impone fuertes restricciones de acceso a la información. Bloqueando todos aquellos sitios webs que ellos consideran que no deberían ser visitados por sus ciudadanos. Con independencia de si esto está bien o está mal, un ciudadano que viva en un lugar que tenga restricciones de este tipo puede utilizar un servidor proxy ubicado en otro país y así saltar esta restricción. Para lograrlo lo único que debe tener en cuenta es que desde su PC pueda conectar con la IP del servidor proxy extranjero.
Un servidor proxy te evita bloqueos por IP. Cuando nos vemos obligados a compartir una red (en hoteles, cibercafés, redes públicas...) estamos compartiendo nuestra IP pública con todos los usuarios de la red local en la que estamos conectados. Recordad, en una red local cada dispositivo tiene una IP privada que lo identifica dentro de la red, pero todos comparten la misma IP pública. Si un usuario realiza una acción que conlleve un baneo en un portal de la IP pública que compartes con dicho usuario si dispones de un servidor proxy ubicado fuera de la red podrás seguir accediendo ya que será tu servidor proxy quien acceda al portal web por ti con su IP pública.
Un servidor proxy OCULTA TU IDENTIDAD. En internet tu identidad es tu IP, en el momento que pones un servidor proxy por medio es su IP la que sale al mundo para darte las páginas que solicitas. Normalmente no hay necesidad de ocultar tu IP a las webs que visitas, pero en algunas ocasiones puede que no quieras dejar constancia de que has estado ahí. En este caso un servidor proxy es justo lo que necesitas. Quizá puedas preguntarte que aunque el servidor final desconozca tu IP el proxy podría guardar una relacción entre tu IP y lo que has vistado. Esto es cierto, el servidor proxy tiene la capacidad de almacenar que página web ha pedido cada IP. Para resolver este problema existen dos vías. La primera es utilizar proxies que sean "anónimos". Los más cautelosos incluso utilizan varios proxies encadenados, y cuando digo varios me refiero a 10 o 12 y además ubicados en distintos países. Con que solo 1 de la cadena no tenga el log el rastreo será imposible. La otra vía, la que utilizan algunos crackers (hackers con malas ideas) consiste en acceder al PC de un usuario, ya sea buscando un fallo de seguridad o aplicando técnicas de ingeniería social e instalar un servidor proxy en su ordenador sin que el usuario tenga constancia. De este modo el cracker utilizar a su víctima como servidor proxy y todo lo que haga lo hará desde la IP pública de su víctima.
DESventajas de utilizar un servidor proxy
Como toda herramienta, informática o no, siempre hay una parte positiva y una negativa. Los serviores proxies no son una excepción y al igual que nos dan una serie de ventajas como las que hemos visto también conllevan algunos riesgos la utilización de los mismos. En las siguientes líneas vamos a ver los principales problemas y casuísticas que se han dado por utilizar servidor proxies:
Interceptación del tráfico. Si nosotros tenemos una red con 100 dispositivos y alguien se propone interceptar el tráfico de los 100 dispositivos tiene varias opciones. La primera y mas tediosa ir buscando fallos de seguridad dispositivo a dispositivo hasta tener controlados los 100. Esto evidentemente es una tarea bastante larga y con un alto riesgo de que salte una alarma en algún dispositivo y se descubra. Ahora, si todo el tráfico pasa por el servidor proxy, el atacante solo debe centrarse en acceder al servidor proxy, si lo consigue habrá intercpetado de un plumazo el tráfico de todos los dispositivos.
Modificación de la información. Si alguien con malas intenciones consigue acceso al servidor proxy, podrá ver las páginas que hay cacheadas en memoria, o modificar las reglas por las que se rige el servidor proxy, y manipular las páginas que se entregan a los usuarios finales. Tengas el sistema de contraseñas que tengas con este método pueden acceder a casi cualquiera. Pongamos el caso, el atacante crea una máquina virtual y en ella instala un servidor LAMP (servidor para montar páginas webs). Sobre ese servidor LAMP monta una réplica de una página en la que tu tienes usuario y contraseña. Ahora en el servidor proxy hace que cuando le pidas dicha página en vez de la original te de la réplica. En cuanto trates de logearte en la web falsa lo que estarás haciendo es darle tu usuario y clave al atacante.
Problemas de incoherencia. Si tienes activada la opción de cacheo de páginas puede darse el caso de que un usuario esté viendo contenido que haya sido modificado, o incluso borrado, pero que el proxy aún no lo ha vuelto a recachear. Por este motivo es más recomendable activar solo el cacheo de contenido multimedia, imágenes, vídeos, archivos de sonido... que no son tan propensos a cambiar en el tiempo.
Denegación de servicio DOS. Si alguien de forma intencionada o no satura el servidor proxy éste dejaría de atender las peticiones de los demás usuarios, imposibilitando así su acceso a internet.
DOM y Javascript, Controlando una página web
En las publicaciones anteriores hemos ido tomando una formación en Javascript que nos va a permitr ahora poder ver cómo de forma sencilla podemos trabajar con todos los elementos que constituyen una página web. Ya conocemos como trabajar con variables en el lenguaje javascript, como crear nuestras propias funciones javacript para crear pequeños scripts de código que realicen cualquier acción que necesitemos. Conocemos las estructuras de control que nos permiten dentro de una función o código tomar decisiones, realizar repeticiones múltiples de acciones y controlar el flujo de ejecución de nuestro programa o script.
En nuestra última publicación estuvimos viendo a fondo todo lo que son los objetos en javascript, la cual ya era una publicación que se apoyaba en un alto grado en todas las publicaciones anteriores. Todo esto era necesario puesto que la definición de DOM no es ni mas ni menos que Document Object Model ('Modelo de Objetos del Documento' o 'Modelo en Objetos para la Representación de Documentos').
DOM web html y seguridad informática
El DOM en una página web es la jerarquía de objetos del lado del cliente, que son los objetos que representan todos los elementos gráficos de la pantalla. ¿Qué quiere decir esto? Que controlando el DOM nosotros podemos controlar todos los objetos que componene la página web; como son: formularios html, imágenes mostradas en la web, las capas (divs), las tablas, los enlaces existentes, los estilos css... en definitiva todo lo que el usuario ve en la página web.
Cuando estas programando tu propia página web, ya sea en un hosting en la nube o en un servidor virtual como vimos en la publicación sobre cómo virtualizar un ubuntu server puedes utilizar javascript para programar acciones, eventos y funciones que mejoren la experiencia del usuario en tu página web. Sin embargo, desde el punto de vista de la seguridad informática cuando se realiza una inyección de código javascript un atacante adquiere la capacidad de modificar todo el DOM de tu página web. Lo cual significa que podrá modificar todo el contenido de la misma.
Este es el motivo por el que llevamos ya varias semanas estudiando a fondo el lenguaje javascript. Como auditores de seguridad, una vez encontrada una vulnerabilidad es necesario medir el impacto de la misma para poder definir con precisión su nivel de impacto en nuestra página web. No es lo mismo conseguir inyectar un código javascript que permita modificar contenido no crítico de la página web que conseguir inyectar un código javascript que sea capaz de controlar el formulario donde el usuario tiene preguardada su contraseña y enviarla por correo al atacante. En el caso de un foro si ha conseguido inyectar un código como el que acabamos de comentar todos los usuarios pertenecientes a dicho foro estarán expuestos a que su contraseña sea capturada por el atacante.
Pero esto no es todo lo que un atacante experimentado podría logar a hacer mediante la inyección de código javascript. Un atacante podría inyectar un pequeño script que autopublicara bajo el nombre del usuario que está visitando el foro un mensaje que el atacante a predefinido, esto podría ser parte de un plan de apoyo para aplicar ingeniería social y hacer que el administrador del foro crea que alguien le ha pedido cierta información crítica. Del mismo modo un atacante podría inyectar un código que hiciera una redirección a un sitio web que tuviera alojado algún tipo de malware y que se autodescargara al ordenador del visitante desde algún servidor FTP del atacante.
Las posibilidades que se presetan cuando alguien consigue controlar el DOM de una página web son casi infinitas
El límite lo pone la formación que el auditor de seguridad o el atacante tenga. Por ello alguien que se mete en el mundo de la seguridad informática pretendiendo sólamente utilizar programas y scripts ya creados por otros sin entender los conceptos fundamentales no podrá explotar al máximo las posibildades que una vulnerabilidad web permite, y este hecho le incapacitará en la mayoría de las ocasiones a conseguir su objetivo puesto que cada web, cada programa, cada código tiene diferencias y dificultadas que tendrán que ser tratados de forma individualizada.
DOM javascript, tutorial de control
Antes de poder ver las técnicas de inyección de código capaces de realizar todo lo expuesto anteriormente se debe aprender a controlar el DOM de un sitio web con javascript. De nada te servirá ser capaz de inyectar código si luego no eres capaz de programar las acciones que pretendes llevar a cabo. Como auditor de seguridad también necesitarás conocer cómo se trabaja el DOM con javascript por si te encuentras un script ya inyectado y deseas analizarlo. En multitud de ocasiones conocer lo que un atacante prentende hacer puede llevarte a dar con el. Si conoces su estrategia puedes adelantarte, enviarle datos falsos, o iniciar un rastreo hasta intentar dar con la persona que ha conseguido hacer la intrusión en tu web.
Lo que vamos a ver ahora es cómo se organiza la jerarquía de objetos en el DOM y mostrar cómo se puede acceder a ellos insertando un código javascript en cualquier lugar de la página web.
Funciones y objetos en javascript
Tras algunos días viendo aspectos técnicos de javascript llega el momento de unir todos los conocimientos adquiridos con el objetivo de comprender y crear códigos javascript más complejos. Como ya vimos javascript juega un papel fundamental en el hacking y es este mismo motivo por el que llevamos ya varias publicaciones descubriendo a fondo el lenguaje javascript.
Funciones javascript
En casi la totalidad de los lenguajes de programación encontramos la característica de poder utilizar funciones y procedimientos. Javascript no iba a ser menos y como tal nos permite definir nuestras propias funciones a la vez que nos permite utilizar muchas nativas del lenguaje. Lo cual nos simplificará el trabajo si estamos del lado de la programación y nos ayudará a comprender el código si estamos desde el punto de vista del auditor de seguridad.
¿Qué es una función para javascript?
De manera formal una función es un algoritmo que recibe determinado/s parámetro/s y devuelve el resultado de haber realizado con ellos una secuencia de operaciones y/o sentencias. Aunque si prefieres una definición un poco más amigable podemos definir una función como "una caja" en la que tu metes unos datos y te devuelve un resultado sin que tu tengas que preocuparte de cómo lo hace. Podemos crear funciones encargadas de buscar alguna palabra dentro de un texto, funciones que verifican la fortaleza de una contraseña, etc etc...
Características de los objetos javascript
Soportan ocultamiento y encapsulamiento de datos, lo que significa que los aspectos de un objeto que son accesibles a otros objetos están separados de las características internas del objeto, las cuales quedan ocultas o no para otros objetos, dependiendo si están o no encapsuladas.
Serán las funciones miembro que componen a cada objeto quienes definan su comportamiento.
Pueden comunicarse con otros objetos, por lo que se harán funciones miembro accesibles desde el exterior, quienes actuarán de interfaz entre los diferentes módulos del programa. Pueden tomar propiedades y configuraciones de otros objetos.
Los objetos con la misma estructura y comportamiento se suelen agrupar en clases.
Una clase es un tipo de datos definido por el programador, que determina las estructuras de datos y las operaciones asociadas con ese tipo. Cada clase es un modelo que describe el conjunto de objetos del mismo tipo. Cada vez que se construye un objeto de una clase, se crea una instancia de esa clase. Cada instancia u objeto de una clase tiene su propio valor para cada uno de sus datos miembro pero comparte los mismos nombres y operaciones que otros objetos de la misma clase.
Polimorfismo
Esto significa que la misma operación puede comportarse de la misma manera en diferentes clases, en un sentido literal significa la cualidad de tener más de una forma con el mismo comportamiento. Este concepto puede resultar algo complicado de asimilar para aquellos de vosotros que este es vuestro primer contacto con la programación orientada a objetos. Pero para poder verlo con más claridad vamos a ver algunos ejemplos prácticos de esta característica:
En un lenguaje de programación el operador "+" representa la suma de 2 números que pueden ser 2 enteros o 2 reales. En un lenguaje orientado a objetos como es javascript, nosotros podemos definir el operador "+" para que sea capaz de sumar nuestros objetos. Imaginad que nosotros tenemos el objeto "cliente" tal y como vimos unas líneas mas arriba. ¿Qué ocurriría si hicieramos cliente1+cliente2? No tendría mucho sentido sumar dos objetos de tipo cliente, pero nosotros podemos indicar que el operador "+" utilizado para el objeto cliente sume (o haga cualquier otra operación) con sus variables internas.
Herencia
Esto marca la capacidad de compartir operaciones y propiedades entre clases, basadas en relaciones jerárquicas, esta propiedad será quien nos permita construir objetos a partir de otros existentes. Para poder comprender mejor esta característica imaginad que de nuestro objeto ya definido "cliente" queremos sacar un nuevo objeto llamado "clienteVIP" el cual queremos que contenga las mismas características que el objeto "cliente" con algunas más añadidas. Nosotros podríamos directamente crear un nuevo objeto desde cero llamado "clienteVIP" pero si hacemos uso de la herencia tanto solo debemos debemos crear un objeto heredado de cliente y añadir las características extra que necesitamos. Otra ventaja que nos da la herencia en objetos es que si nosotros hacemos un cambio en el objeto padre, los hijos de ese objeto heredarán también este cambio, con lo que nuestro código será mucho mas fácil de mantener y corregir.
Los objetos en POO son fácilmente reutilizables
Esta es una de las razones principales para justificar la utilización de esta metodología en la mayoría de los casos, por esta razón cualquier aplicación POO suele venir con un conjunto de clases predefinidas, que permitirá ahorrar tiempo y esfuerzos en el desarrollo de aplicaciones. La reusabilidad no es algo espontáneo, hay que planificarla pensando
más allá de la aplicación inmediata, e invertir un poco de esfuerzo extra en un diseño más general que nos ahorrar mucho esfuerzo futuro.
Hay varios mecanismos de abstracción involucrados en POO.
Agregación/Descomposición
La agregación consiste en el tratamiento de una colección de conceptos como si fueran un único concepto, la descomposición es el mecanismo inverso a la agregación,.
Clasificación/Instanciación.
La clasificación consiste en agrupar entidades que comparten características comunes en una clase sobre la cual se cumplen condiciones uniformes, la instanciación consiste en obtener entidades que cumplen con las propiedades asociadas a la definición de una clase.
Generalización/Especialización.
La generalización consiste en la extracción a partir de una o varias clases, de la descripción de una clase más general que contiene los conceptos comunes a ellas y suprime las diferencias detalladas en las descripciones de cada clase, el proceso de especialización es el que crea una clase nueva a partir de una clase ya existente agregando detalles adicionales a su descripción.
El papel de Javascript en el hacking
Muchos de vosotros quizá hayáis oído hablar de la técnica "inyección de código javascript". Lo que hoy vamos a ver son las bases necesarias para comprender los ataques de inyección de código Javascript, cómo funcionan, que objetivos pueden llegar a alcanzarse con esta técnica y cómo evitar ser víctimas de este tipo de ataques si somos nosotros los que jugamos como defensa de un portal web.
¿Qué es Javascript?
Javascript es un lenguaje de programación interpretado, no es compilado, o sea que es leído e interpretado directamente por el navegador como código fuente cuando éste lee la página. Esto quiere decir que no bajamos un archivo .exe, .com, o lo que sea ya compilado para que al ejecutarlo de un resultado sino que tenemos el código a ejecutar metido en el código fuente de nuestra página web. Tal como en HTML, el explorador lee el código y hace lo que debe hacer.
Es un lenguaje de scripts, por lo que un programa en JavaScript estaría conformado por pequeños scripts, cada uno de estos scripts serían miniprogramas y se interpretarán línea por línea mientras que la aplicación sigue su ejecución normal.
Es un lenguaje orientado a eventos, Javascript está capacitado para detectar muchísimos eventos y reaccionar a ellos con una acción programada por nosotros. Un evento es un suceso que ocurra durante la interacción del usuario y el navegador. Al ser guiado por eventos, no tenemos una función principal que se ejecute antes que de las demás, sino que tendremos varias funciones que se irán ejecutando según proceda.
Es un lenguaje orientado a objetos, aunque sería mejor decir que su estructura está basada en objetos. Al margen de cuestiones técnicas el caso es que tiene una biblioteca de objetos predefinidos que podremos utilizar para facilitar la tarea de programar nuestros scripts.
¿Para qué se utiliza Javascript?
La función principal de Javascript es dar órdenes al navegador del usuario para que haga justo lo que queremos que haga. Esto desde el punto de vista del hacking y la seguridad informática es sin duda alguna una característica más que atractiva ya que nos permite interactuar con el navegador del usuario de forma directa. Con javascript nosotros podemos validar un formulario html para evitar que el usuario nos envíe datos erróneos, por ejemplo, podemos detectar campos vacíos que son obligatorios y si el usuario pulsa sobre enviar decirle que primero ha de rellenar estos campos, ya que si no lo hace no podrá completar el registro. Con Javascript podemos crear todos estos efectos de transiciones de imágenes que acostumbramos a ver en múltitud de páginas web. Desde hace ya unos años existe una librería de funciones escirtas en Javascript llamada Jquery. Esta librería es código libre, gratuita y la podrás descargar sin problemas. En definitiva, Javascript fue desarrollado con la clara intención de mejorar la experiencia de un usuario en un sitio web.
¿Qué papel juega Javascript en el hacking?
Javascript es una pieza clave y fundamental en multitud de técnicas de hacking que iremos viendo con posteriordad, tiene cabida en técnicas de Phising (suplantación de identidad) técnicas avanzadas en ataques de tipo Cross site Scripting XSS (Robo de sesiones) y multitud de técnicas que describiremos cuando tengamos las bases para comprender cómo funcionan y cómo se utilizan.
Como te habrás dado cuenta, cualquier programa que interactua de forma directa con el usuario es una amenaza para el mismo. Cuando tu eres capaz de dar órdenes al PC de alguien sin que este lo "autorice" entonces estás ganando control sobre su máquina. Javascript hace exactamente esto, dar órdenes al navegador del usuario; normalmente para mejorar su experiencia al navegar en una web, pero como todas las tecnologías, también se ha utilizado para provocar daños en el equipo de la víctima, acceder a información confidencial o tomar el control total del equipo. Con el paso de los años los navegadores han ido evolucionando, ganando en seguridad y evitando aquellos scripts hechos en Javascript que intentan vulnerar la seguridad del equipo, no obstante, y de forma paralela también se han desarrollado plugins para los navegadores que evitan que se ejecute ningún código Javascript en el equipo. Un plugin muy popular que hace esto es NoScript. El problema de este tipo de plugins es que al evitar que se ejecute Javascript también evitarán que se ejecute el código bueno, no hacen distinción alguna entre código malicioso y código bueno. Así que lo que ganas en seguridad lo pierdes en usabilidad, y en este caso en concreto pierdes mucho más de lo que ganas. De ahí la importancia de navegar siempre en internet con un navegador actualizado que sea capaz de bloquear por si solo aquellas funciones de Javascript maliciosas y permita las inocuas.
Hasta pudiera parecer que la parte "negativa" de Javascript solo está al alcance de aquellos webmasters que elaboren sitios con el objetivo de hacerse con el control de los internátuas que acaben ahí. Esto no es así. Evidentemente hay sitios creados específicamente para que cuando alguien los visite con un navegador desactualizado (normalmente internet explorer) se infecten los equipos. Pero dentro del hacking y javascript este tipo de técnicas es de las menos comunes ya que Google suele detectar este tipo de script rápidamente y avisa a los internáutas con carteles de este estilo:
Y aunque el usuario es libre de ignorar esta advertencia esta medida hace que la gran mayoría de los internáutas no vayan al sitio web. Además Google penaliza las páginas que tienen código Javascript malicioso haciendo que no aparezcan en el buscador, y de aparecer que aparezcan en posiciones bastante bajas.
La gran potencia de Javascript en el mundo del hacking reside en que utilizando técnicas y metodologías es posible que un usuario normal sin ser el dueño de un sitio web sea capaz de meter código javascript en el sitio. Esta última frase puede parecer un tanto díficil de comprender, sobre todo para aquellos de vosotros que estaís empezando y lleváis relativamente poco tiempo en el mundo de la seguridad informática y el hácking ético.
¿Cómo puede alguien meter código Javascript en mi sitio web?
Hay multitud de técnicas para lograr este fin, lo primero que debemos de hacer es conocer el lenguaje para poder comprender cómo trabaja y valorar su alcance. La lección de hoy pretende dar una visión general del papel que juega este lenguaje en la web desde el punto de vista de la seguridad informática.
En las Webs 2.0 que son aquellas en las que el internátua no solo es un receptor de información sino que puede interactuar con la web (foros, redes sociales, portales....) estamos dejando al usuario introducir información en nuestra web. Nosotros no podemos confiar en que va a meter justo lo que le pedimos, ya que el usuario puede meter cualquier cosa y es nuestra responsabilidad validar en el servidor los datos que el internátua nos está facilitando. Vamos a poner un ejemplo práctico de esta escenografía.
Suponed que llegaís a un foro en el que el registro es libre, os registráis y ya estaís preparados para abrir hilos o responder en aquellos que ya estén abiertos. Abrís un nuevo hilo en el que sabéis que gran parte del foro va a visitarlo porque habéis creado un título para el hilo bastante llamativo. Ahora en vez de escribir un texto normal vosotros metéis un código javascript que hace que todo aquel usuario que vea vuestro hilo os envíe un mensaje con su "cookie" del foro (las cookies son pequeños archivos que tiene el navegador para controlar entre otras cosas la sesión del usuario, y a los cuales Javascript es capaz de leer, modificar, crear y eliminar). Esta cookie vosotros podéis integrarla en vuestro navegador, y una vez hecho esto apareceréis logeados como el usuario al cual le habéis robado la cookie, si además este usuario es administrador del foro ya tenéis acceso completo.
Este tipo de ataques son de lo más básicos y antiguos que se puede realizar con Javascript, la gran mayoría de foros no os permitirán meter código javascript, y de permitirlo no se publicará o se publicará "capado" para que no se ejecute. En el peor de los casos (para el atacante) llegará incluso una alerta al administrador del foro con el intento de hacking. Así que cuando en las próximas lecciones empecemos a ver pequeños scripts en Javascript no os recomendamos que salgáis ahí a intentar colocarlos en foros. Cuando alguien intenta inyectar código Javascript en un sitio de estas características ha de buscar la forma de hacerlo de la forma mas silenciosa posible, un buen webmaster lo pondrá realmente difícil y tendrá medios para detectar este tipo de ataques, uno más mediocre lo pondrá más fácil.
¿En qué radica la dificultad o facilidad a la hora de inyectar código Javascript?
El ejemplo visto en las líneas anteriores ilustra una inyección de código Javascript básica, un foro en el que no hay restricción alguna, metemos código javascript y se publica sin más. Normalente esto no te va a funcionar en ningún foro, hace unos años si funcionaba, pero hoy ya no, al menos no de forma tan trivial. Por ello cuando un atacante quiere estudiar la forma de inyectar código javascript ha de tener máximo de información posible de lo que quiere hacer. Y por este motivo en lecciones anteriores os mostramos cómo instalar un servidor LAMP virtualizado y vimos los distintos campos de los formularios HTML para que antes de hacer pruebas la web objetivo podáis replicar el sitio y hacer las pruebas en local sin levantar sospechas, una vez que la técnica está depurada y funcionando en vuestro entorno virtual de pruebas entonces llega el momento de realizar el ataque. Imaginad que detectáis que alguien utiliza un foro basado en la tecnología PHPBB entonces vosotros podéis descargarlo, y configurarlo lo más parecido posible al foro real, y dentro de vuestro entorno virtual controlado probáis distintas inyecciones para ver el resultado hasta llegar a vuestro objetivo.
En este post todos pueden comentar