Mostrando entradas con la etiqueta software. Mostrar todas las entradas
Mostrando entradas con la etiqueta software. Mostrar todas las entradas

martes, 8 de marzo de 2016

KeRanger: Descubierto ransomware para MAC (OS X)



Autor: Diego Jurado


Buenas a todos hackers!!
Hoy vamos a hablaros sobre un tema que nos acontece, es la noticia del momento y es que era solo cuestión de tiempo pero finalmente podemos decir: OS X ha sido vulnerado.
Hasta ahora, los usuarios de Apple podían presumir de ser uno de los únicos sistemas operativos que no había sufrido de las amenazas de Internet, pero esto ya es historia.

El 4 de marzo de este mismo mes, se registró el primer ataque de ransomware, bautizado como KeRanger dirigido a usuarios de Apple y esto es un problema, especialmente para los amantes de las descargas, ya que este ´malware´ ha sido difundido a través de software torrent y puede afectar a cualquier tipo de Mac, siempre que el usuario se encargue de ejecutar la aplicación asociada.

El único ransomware conocido para OS X hasta ahora fue descubierto por Kasperky Lab en 2014, fue denominado como FileCoder y estaba incompleto, mientras que KeRanger , según los investigadores de Palo Alto, se trata de "el primer ransomware completamente funcional que se ha visto en la plataforma OS X".



¿Qué es un Ransomware?

Un ransomware (del inglés ransom = rescate / ware = software) se trata de un tipo de programa informático malicioso, que encripta y restringe el acceso generalmente a archivos o partes del sistema que ha sido vulnerado.
Una vez se tienen los datos encriptados, la única forma de recuperar estos archivos es mediante el pago de un rescate que se le pide al usuario. 

Esto supone un daño crítico, especialmente a empresas u organizaciones que dependen de sus archivos y que se han visto en más de una ocasión a pagar dicho rescate, como por ejemplo hace un mes, un hospital en los Angeles se vio obligado a pagar 40 bitcoins (equivalente a $16700) para recuperar parte de sus sistema que fue afectado por un ramsomware.






KeRanger Ransomware

Para la propagación de este ransomware, los atacantes se aprovecharon de una actualización de Transmission, un cliente de BitTorrent para OS X que llevaba dos años sin actualizarse.
Los creadores inyectaron KeRanger en dos instaladores de la versión 2.90, aprovechando que esta es una aplicación de código abierto (open source).




La aplicación infectada con KeRanger estaba firmada con un certificado de desarrollador de Apple, que lograba evitar que Gatekeeper (mecanismo de seguridad integrado en OS X) detectase la aplicación como peligrosa y rechazase su instalación.

Cuando un usuario instala la aplicación, un ejecutable embebido en la misma, pasa a formar parte del sistema. Es entonces cuando KeRanger (a los 3 días aproximadamente) se conecta con sus servidores de control y comando en la conocida red Tor y comienza a cifrar ciertos tipos de documentos y archivos de datos del sistema.


Estos son algunos de los tipos de documentos que se cifran: 




Tras finalizar este proceso, se solicita automáticamente al usuario afectado que pague un BitCoin ($400 aproximadamente) a una dirección especifica para poder recuperar sus documentos. 

Se dice que KeRanger sigue en proceso de desarrollo, y este malware intenta cifrar tambien el contenido de las copias de seguridad de Time Machine para prevenir recuperar información desde sus copias de seguridad. 




¿Como detectarlo y como protegerse?

Como era de esperar, la reacción ha sido rápida, y desde Transmission ya se han dado cuenta, y han lanzado una nueva version 2.92, donde se ha eliminado el ransomware. Esta actualización ha pasado a ser obligatoria para todos los usuarios  de la aplicación.

Pero,  ¿como podemos saber si estamos infectados?, ¿como nos protegemos?

Si vamos a Transmission y hacemos clic en Mostrar contenido del paquete con el segundo botón del ratón, podremos observar que hay un archivo extra denominado General.rtf en la ruta:
Transmission.app/Content/MacOS/Transmission. 

Este archivo de texto no es más que un ejecutable empaquetado con UPX 3.91.

Cuando el usuario infectado ejecuta la aplicación, dicho archivo se copia en la ubicación: 
Library/kernel_service y se ejecuta el servicio antes de que ninguna interfaz aparezca para recolectar información del modelo de Mac y su identificador UUID.

Estos datos se envían a un servidor externo, y este devuelve una respuesta informando sobre el rescate.



Si queremos saber si hemos sido infectados, debemos seguir los siguientes pasos: 
  • Abrir Terminal o Finder y verificar si tenemos el archivo General.rtf en nuestro equipo. Para ello basta con mirar las rutas: 

          /Applications/Transmission.app/Contents/Resources/General.rtf           /Volumes/Transmission/Transmission.app/Contents/Resources/

  • Mediante el Monitor de actividad, deberemos verificar los procesos que están activos. Si encontramos uno llamado "kernel_service" ejecutandose, deberemos hacer doble click sobre él, ir a la opción de Archivos y puertos abiertos (Open Files and Ports) y ver si hay un archivo con el nombre: /Users/<username>/Library/kernel_service , en este caso, forzaremos el cierre.

  • Por último, comprobaremos si los archivos: kernel_pid, kernel_time, kernel_complete o kernel_service existen en la carpeta Library directory, en este caso los eliminaremos.



Recomendaciones

Desde aqui, recomendamos siempre tener una copia de seguridad disponible, por si alguna vez sufrimos este tipo de ataques, con ella estaremos mucho más seguros.

Es importante concienciarse de que todos nuestros datos están expuestos, y de que todos somos vulnerables. 

Este es el primer caso de ransomware que hace que el Mac (OS X) ya no pueda mantener su reputación como bastión de seguridad por encima de Windows.



"Pienso que los virus informáticos muestran la naturaleza humana: la única forma de vida que hemos creado hasta el momento es puramente destructiva"  - Stephen Hawking -



sábado, 20 de febrero de 2016

Aplicaciones Web (II)

La arquitectura de tres niveles se basa en tres capas:
  • Capa de presentación: Se encarga de mostrar la información recibida por parte del servidor web al cliente. Es el código del lado del cliente formado por el lenguaje de marcado como HTML o lenguajes como CSS, Javascript...
  • Capa lógica: Es la capa principal y más compleja, ya que es la encargada del funcionamiento de la aplicación web. Las peticiones http gestionadas por el servidor web buscara el recurso solicitado y hará a su vez una petición de traducción al servidor de aplicaciones traduciendo el código del lado del servidor escrito en un lenguaje predeterminado. Este resultado se enviará al servidor web y este a su vez al cliente. Esta capa divide el código del lado del servidor en tres partes: 
    • Modelo: Es la asociación entre la información entrante por la capa de negocio, por ejemplo lenguaje SQL del servidor de base de datos; y el formato o lenguaje de programación de la aplicación del lado del servidor de aplicaciones. 
    • Vista: Es la presentación expuesta al usuario en el navegador. 
    • Controlador: Comunica y maneja las peticiones realizadas por cliente/servidor.
  •  Capa de negocio: Es la capa donde se encuentran los datos. Los datos son información, y debe siempre permanecer protegida ante ataques mal intencionados y oculta ante los usuarios. Se gestiona mediante un sistema de gestión de bases de datos. El servidor de aplicaciones, realizará una petición al servidor de base de datos para obtener datos necesarios para la aplicación, por ejemplo el login a Gmail.



Desarrollo y lenguajes:
Los desarrolladores de aplicaciones web son programadores que dependiendo del lado cliente/servidor donde se encuentren, usarán un lenguaje de programación distinto.


  • Programación Back-end: Una persona que se dedique a desarrollar aplicaciones web del lado del servidor, trabajara con lenguajes como PHP, Python, Ruby, .Net, SQL, Javascript, etc. Es la parte oculta al usuario y encargada del funcionamiento de la aplicación. 
  • Programación Front-end: Parte del desarrollo encargada de la apariencia final cara al usuario desde el navegador. Los lenguajes típicos son HTML5, CSS, Javascript entre otros. 
  • Programación Full-stack: Debido a la arquitectura de tres niveles y la diferenciación de back-end y front-end, existirán desarrolladores encargados de una parte de la aplicación web. Por ejemplo un desarrollador de back-end, programara en PHP y en SQL para el acceso a las bases de datos. Sin embargo, se considera un lenguaje full-stack a aquel que se usa tanto en el lado del cliente como en el servidor, un ejemplo claro es Javascript.



Existe una variedad amplia de lenguajes de programación para crear aplicaciones web, siempre ayudados de un marco de trabajo o frameworks. Los lenguajes más usados son:
  • Javascript: Es un lenguaje usado en el lado del cliente, pero esta escalando puestos obteniendo mucha fuerza en el lado del servidor debido al servidor node.js y el uso del framework Angular.js creado por Google.
  • Perl: Es un lenguaje muy potente para el manejo de ficheros tomando características del lenguaje C.
  • Python: Es un lenguaje sencillo y potente, muy usando en aplicaciones de redes y seguridad informática. Tiene un framework bastante conocido llamado Django.
  • Ruby: Es un lenguaje interpretado sencillo y potente como python. Posee un framework llamado Ruby on Rails, que permite la creación de aplicaciones web con buenos resultados visuales siguiendo el modelo MVC (Modelo-Vista-Controlador), y se puede instalar en cualquier servidor web. 
  • Java: Es un lenguaje potente y versátil con grandes posibilidades de crear aplicaciones web de todo tipo. Muy potente en aplicaciones relacionadas con la red. 
  • C#: Lenguaje creado por propietarios, Microsoft. Usado para servidores .NET.
  • PHP: Es un lenguaje scripting del lado del servidor más utilizado. Se basa en el lenguaje C y en Perl, y se encuentra incrustado en código HTML de una página web, mediante la apertura de una etiqueta <?php. La página web tendrá una extensión distinta, en este caso .php, donde el servidor web detecta que es de un tipo de aplicación realizando dicha petición al servidor de aplicaciones. Existe un framework llamado Zend.
  •  JSP: Es similar al anterior pero basado en Java. La extensión de este tipo de archivos son .jsp.
  • ASP: De igual similitud a los dos anteriores pero basado en Microsoft. 


 Tipos de servidores web existentes en el mercado. Los más populares son:
  • Apache: Es un servidor web muy potente y usado. Es gratuito y de código abierto. Para programar en PHP, lo mas normal es usar un servidor web Apache.
  • nginx: Su característica principal en la que destacar es la prestación que ofrece cuando hay que atender numerosas conexiones. Esta cogiendo actualmente bastante aceptación en el mercado. 
  • IIS: Es propietario de Microsoft. Tiene licencia, aunque aparece como componente en los sistemas operativos Windows Server. 
  • Apache Tomcat: Servidor web para ejecutar aplicaciones de tipo Java.
  • Node.js: Servidor web de Javascript con el modulo Express.js.




En cuanto al sistema operativo donde instalar nuestro servidor web, podemos mencionar tres opciones:
  • Windows: Actualmente es el sistema operativo a nivel usuario que más demanda existe en el mercado. Tenemos la opción de instalar un servidor web Apache o IIS propietario de Microsoft. Lo ideal en este entorno de trabajo, es usar un Windows Server como sistema operativo del servidor. 
  • Linux: Su cuota de mercado es mucho menor que la de Windows pero en cuanto a sistema operativo posee numerosas herramientas y un entorno comunitario muy rico para el desarrollo web. Debido al auge de Apache este servicio corre la mayoría de las veces sobre un sistema Linux, ya sea un Debian, Ubuntu o CentOS. Existen más diversidad de distribuciones gratuitas y el coste económico que supone contratar un servidor real en Internet con este S.O.
  • OSX: Cada vez más en la actualidad, infinidad de usuarios disponen equipos de esta marca. Por ello cada vez más desarrolladores programan aplicaciones web para este sistema operativo. También este sistema operativo al igual que Linux están basados en Unix.

Aplicaciones Web (I)

Buenos días hackers!
Esta es una entrada distinta y no menos importante. En informática una aplicación es un software que permite al usuario realizar una determinada tarea o servicio.
Una aplicación web es simplemente un software creado para ejecutarse mediante un navegador (el cliente). La diferencia clara con las aplicaciones de escritorio, es que estas pueden acceder a todo el hardware del ordenador. En una aplicación web el hardware queda oculto al programador.
Otra diferencia existente esta, en que los navegadores no tienen la capacidad para compilar código de lenguajes como C o Java, pero si tienen interpretes muy potentes para lenguajes como Javascript, como por ejemplo el motor V8 del navegador Chrome.
Existen unas ventajas y desventajas de las aplicaciones web frente a las aplicaciones de escritorio.

Ventajas:


  • Gran compatibilidad: No requieren un sistema operativo en concreto, tanto en entornos de escritorio como en móviles. El único requisito es disponer de un navegador instalado en el sistema.
  • Mantenimiento: Las aplicaciones web se actualizan, pero solo en el servidor donde se alojan, eso quiere decir que el usuario no tiene que actualizar nada y menos instalar nada en su ordenador. Como se dijo anteriormente únicamente del navegador (cliente).
  • Uso sencillo por los usuarios: El navegador es el software usado, y es bien conocido por todo el mundo con una interfaz gráfica sencilla e intuitiva. 
  • Datos almacenados en base de datos.
  • Bajo coste: No existe formato físico de la aplicación web, es digital donde el software se encuentra en Internet. 
  • Sencilla accesibilidad: Las aplicaciones web son accesibles desde cualquier máquina y desde cualquier parte del mundo. Existe una interrelación entre usuario y aplicación.


Desventajas:


  • Hardware desaprovechado: No es necesario tener un ordenador más o menos potente que otro, ya que las aplicaciones web depende únicamente del navegador.
  • Conectividad: Sin conexión a Internet, las aplicaciones web carecen de sentido. Aunque actualmente esto no es un problema ya que estamos interconectados. 
  • Dificultad para el desarrollador: Existe una dificultad clara para el programador frente a desarrollar una aplicación de escritorio. El proceso es diferente debido a la conexión a Internet, la depuración de código en diferentes lenguajes y la espera de peticiones a los servidores. 
  • Control excesivo de nuestra información: Una aplicación de escritorio, al poder estar offline nuestros datos e información se queda almacenada en nuestra máquina sin que exista peligro alguno, a no ser que exista conexión a internet y mediante un troyano nos puedan estar espiando de una forma u otra. En una aplicación web los datos se almacenan en servidores de bases de datos, dependemos de terceras personas y de la ética de la empresa que almacenan nuestros datos de que no se corra el peligro de fugas de información. Si una persona mal intencionada accede al servidor de base de datos, puede obtener información confidencial de miles o millones de usuarios, poniendo en peligro dicha integridad.  

Los lenguajes y tecnologías en el lado del cliente son los elementos, una vez traducidos, para ser interpretado por el navegador normalmente en un documento HTML.
El cliente realiza una petición http al servidor web a la espera de una página que contiene código HTML y otros elementos pertenecientes a otros lenguajes, como por ejemplo:


  • CSS: Es un lenguaje de estilos que permite modificar la apariencia de una web. Es importante debido a que el cliente, a parte de esperar una completa funcionalidad de la aplicación web, exige cierta belleza en la apariencia. 
  • Javascript: Es un lenguaje sencillo y potente interpretado, cuyo código se puede incluir en una página web. Permite cierto dinamismo en la página al igual que interactividad. También es un lenguaje en el lado del servidor, convirtiéndose en un lenguaje full-stack. 
  • Flash: Es un software que se suele incrustar en el código HTML de tipo object haciendo referencia a un archivo de tipo SWF. Los archivos reproducibles de Adobe Flash, que tienen generalmente la extensión de archivo SWF, pueden aparecer en una página web para ser vistos en un navegador web, o pueden ser reproducidos independientemente por un reproductor Flash.
  • Silverlight: Es similar al anterior, pero propietario de Microsoft. 
  • Applets de Java: Se incrusta en el código HTML con el nombre de applet. Estan escritos en el lenguaje de programación Java. Pueden ejecutarse en el navegador requiriendo de Java Virtual Machine (JVM). 

 Esquema de el lado del cliente: 


El cliente introduce una dirección para realizar una petición http al servidor web. Los paquetes http salen por el router domestico hasta nuestro proveedor de servicios (ISP), para realizar la petición al servidor web solicitando un recurso. El servidor web busca dicho recurso y envia al cliente un documento HTML con elementos incrustados (SWF, Javascript, applet de Java...) que será interpretado por el navegador. 
Una vez el navegador lo interpreta, muestra al usuario con un formato entendible.

En la actualidad están en desuso tecnologías avanzadas en el lado del cliente como puede ser Flash, debido al auge de HTML5. Sin embargo Javascript es cada vez más potente, obligando a los navegadores a procesar aplicaciones más avanzadas en este lenguaje. Todo el proceso descrito anteriormente es oculto al usuario, y con un fin favorable al no tener que instalar nada en su máquina, simplemente tener el navegador actualizado.
  

Funcionamiento del lado del servidor: La programación web como se explico antes, dista de una clara diferencia con la programación de aplicaciones de escritorio. Esta diferencia reside en que dependiendo del lado del cliente (navegador) o el lado del servidor (servidor web), se usará un distinto lenguaje de programación. 
Cuando el cliente hace una petición http a un recurso web, el servidor que contiene dicho recurso se encuentra con componentes del lado del servidor (PHP, .NET, Python...) y pide al servidor de aplicaciones la traducción en formato entendible por el cliente (navegador). El resultado lo envía el servidor web o servidor http al cliente. 
La mayoría de veces, las peticiones http son la entrega de un documento HTML.
Los servidores web tienen la capacidad de resolver las peticiones http, pero no traducen el código de los documentos que se entregan al cliente, es decir, se necesita de los servidores de aplicaciones para su traducción. 
Los servidores de aplicaciones traducen el código a través de lenguajes del lado del servidor como pueden ser Python, PHP o Java. Además el código del lado del servidor puede implicar el acceder a otros servidores como por ejemplo un servidor de base de datos.
Actualmente los servidores web actuan también como servidores de aplicaciones ya que estos son simples módulos de software, aunque es importante la diferencia ya que unos se encargan de resolver peticiones http y los otros de traducir lenguajes de servidor.

La ventaja existente de este funcionamiento es que la parte pesada se la lleva la parte del servidor en cuanto a trabajo de procesamiento se refiere.
Al ver la diferencia entre los distintos lados de este funcionamiento, es un proceso complejo el desarrollo web debido a la existencia de los elementos del lado del cliente (front-end) y del servidor (back-end). Por tanto habrá personal dedicada a distintos lenguajes de programación para una misma aplicación web.

Google Analytics