miércoles, 26 de febrero de 2014

Infectando mediante Autorun




Hoy vamos a ver como se puede distribuir malware a través de medios extraíbles mediante los ficheros Autorun.

Antes de nada vamos a explicar un poco que son estos Autorun.

Tal y como bien define la Wikipedia, "se denomina Autorun a la capacidad de varios sistemas operativos para ejecutar una acción determinada al insertar un medio extraíble como un CD, DVD o Memoria flash."

En los sistemas Windows los Autorun se realizan mediante un fichero en texto plano llamado autorun.inf y debe estar dentro del dispositivo.

La estructura de dicho fichero es la siguiente:

    [AutoRun]
    Open=nombre_fichero_a_ejecutar
    Label=Etiqueta_Unidad
    icon=nombre_icono_unidad
    UseAutoPlay=1

    [Content]
    MusicFiles=Y
    PictureFiles=N
    VideoFiles=N

    [ExclusiveContentPaths]
    carpeta1
    carpeta2
    carpeta3subcarpeta

    [IgnoreContentPaths]
    carpeta4
    carpeta2subcarpeta5

    [DeviceInstall]
    DriverPath=carpeta_drivers_controladores

 Cuando se introduzca un medio extraible con dicho fichero, el sistema operativo leerá el autorun.inf y mostrará la siguiente pantalla:

Una vez la victima pinche sobre el icono que hayamos preparado, ejecutará los parámetros que mande el fichero autorun.inf.

Bien, ya sabemos como funciona, asi que vamos al lío.

Esta vez utilizaremos SET para crear nuestro autorun, aunque podemos hacerlo manualmente si queremos.

Seleccionamos la opción 1.


Ahora la opción 3 (Infectious Media Generator).


Elegimos la opción 2.


Ahora se nos pedirá la IP a la que tiene que conectar el payload, es decir nuestra IP, y el tipo de payload que deseamos elegir.


Por último, elegiremos como queremos que encodee nuestro "pequeñin", y pondremos el puerto al que queremos que se conecte.
Una vez pulsemos enter empezará a crearnos los archivos.


Ahora copiaremos los 2 archivos creados a nuestro USB y se lo pasamos a nuestra victima para que lo abra.
Una vez pinche sobre nuestro programa mediante la opcion de reproduccion automatica, nos brindará nuestra querida sesión xD




¿Cómo protegernos?

Para eso debemos ir a: Panel de control\Hardware y sonido\Reproducción automática


Una vez ahí, desmarcamos la opción de usar la reproducción automática.

Como viene siendo habitual, os dejo un video en el que podeis ver como hacer todo esto.



Saludos!!!


Referencias
http://es.wikipedia.org/wiki/Autorun
http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=498#autorun



 **No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

sábado, 22 de febrero de 2014

Antivirus - Métodos de detección de Malware



Hoy vamos a hablar de los métodos que utilizan los Antivirus para detectar malware.

Básicamente se utilizan tres métodos para detectar malware:
  • Detección mediante firmas.
  • Detección mediante Heurística.
  • Detección mediante string signatures.

La detección mediante firmas es la más extendida. Este método calcula el hash del fichero y contrasta dicho hash con una base de datos para ver si coincide con otro que ya haya sido detectado como malware.
Evidentemente este método no es muy efectivo, ya que con sólo modificar 1 bit del fichero cambiará su hash y por tanto ya no será detectado.

El siguiente método, el método de heurística, es bastante más efectivo y se basa en el comportamiento del ejecutable.
Es decir, según las acciones que realice en el sistema se identificará como malware o no.
 Pero ¿que pasaría si modificamos el binario y por ejemplo le añadimos unos cuantos saltos (JMP) en el código?
Obviamente estaríamos cambiando su comportamiento...

El último método, string signatures, se basa en identificar cadenas de texto o cadenas binarias de un fichero para identificarlo como malware.
Es decir, si por ejemplo el codigo de un virus contiene la palabra "3st@m0s_Pr0b@nd0", se utilizará dicha cadena de texto como firma para su detección.
Pero claro, también podríamos probar a encodear (ofuscar) dicho código para que el Antivirus no pueda reconocer la cadena. Para esto se suelen utilizar los crypters.

Como podéis ver todo tiene su vuelta de hoja... aunque en la práctica es bastante más complejo de lo que parece.

Para realizar estas tareas necesitaremos editores en hexadecimal, depuradores de codigo y desensambladores, así que os dejo algunos para que os vayáis familiarizando:

- Ollydbg (Depurador)
- IDA Pro (Desensamblador)
- HxD (Editor Hexadecimal)

Para terminar os dejo con un video, disfrutarlo!!!



Saludos.


Referencias
http://moisesrbb.tripod.com/unidad5.htm#u511
http://www.mkit.com.ar/blog/bypassing-av/
http://www.securitybydefault.com/2013/07/funcionamiento-de-los-crypters.html


 **No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

jueves, 20 de febrero de 2014

Google Hacking



Hoy vamos a ver una técnica ampliamente usada que nos servirá para obtener información sobre nuestros objetivos, esta se llama Google Hacking.

¿En qué consiste?

Consiste en realizar búsquedas a través del buscador google que permiten detectar fugas de información, vulnerabilidades en sistemas informáticos, obtener información sobre personas o entidades tales como DNI, fechas de nacimiento, salario, domicilio, telefono, etc...

Esta técnica debe utilizarse a la hora de realizar un test de intrusión, ya que obtendremos muchísima información valiosa que nos ayudará durante todo el proceso.

Los parámetros utilizados para realizar dichas consultas en google se llaman "operadores".

En la red se pueden encontrar multitud de consultas ya preparadas con dichos operadores, estas se llaman "Google Dorks".

Pasemos a ver algunos de los operadores que tiene google:

Intitle: sirve para buscar palabras en el titulo de una página.



 Inurl: sirve para buscar palabras que las contenga una url.
 

Allinurl: La misma que la anterior pero con más palabras.


Intext: sirve para buscar en el texto de una página.


Filetype: sirve para buscar por el tipo de archivo: PDF, XLS, MP3, DOC, JPG, etc.


Site: sirve para filtrar la búsqueda a un dominio (.com, .ru, .es, etc...)


Estos son solo unos pocos operadores de todos los que se disponen, suficientes para empezar a investigar por vosotr@s mism@s.
Además podemos utilizar todos los que necesitemos en una misma consulta, es decir, que hay bastante con los que jugar xD.


¿Cómo se puede evitar esta técnica?
  •  Configurar correctamente el archivo robots.txt: Este archivo permite indicarle a los crawlers que carpetas dentro del servidor no debe indexar y cuales sí.
  • Utilizar meta-etiquetas (meta-tag): Con estas etiquetas también podemos indicarle a los crawlers que no indexen dicha página. Ejemplo:
<META NAME=”ROBOTS” CONTENT=”NOINDEX, NOFOLLOW”>
  • Deshabilitar listado de directorios: Mediante esta opción el atacante tiene una completa noción de los archivos disponibles dentro del servidor. La funcionalidad debe deshabilitarse a través de los archivos de configuración.
  •  Configurar correctamente fichero .htaccess: Este archivo permite, entre otras funcionalidades, restringir el acceso a directorios críticos, por lo que, aunque Google indexe un directorio crítico, el atacante no podrá acceder al directorio o fichero.

Os dejo a vosotros mismos que descubráis todos los operadores disponibles y también que veáis el poder que tiene esta técnica, seguro que os gustará.

Saludos!!!


Referencias:
http://www.exploit-db.com/google-dorks/
http://0xword.com/es/libros/20-libro-hacking-buscadores-google-bing-sodan-robtex.html
http://www.galinus.com/es/articulos/operadores-y-comandos-google.html
https://sites.google.com/site/recursosdweb20idiomas/google
http://antoniogonzalezm.es/tag/google-dorks/
http://www.welivesecurity.com/la-es/2012/06/21/google-dorks-ocultar-informacion-critica-servidores/
http://www.omarbv.com/google-dorks-buscando-identidades/
http://hacknode.blogspot.com.es/2012/06/como-defendernos-de-los-google-hackers.html


 **No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

domingo, 16 de febrero de 2014

Crackeando Hashes


Como ya dije en la entrada anterior, vamos a ver como podemos conseguir la contraseña cifrada a partir de su hash.

Para conseguir dicha clave utilizaremos dos programas, OclHashcat y Crunch.


Atacando SHA-1 - Diccionario

Lo primero que haremos será generar nuestro diccionario con Crunch.



Una vez generado, utilizaremos OclHashcat para realizar el ataque por diccionario.



Ahí tenemos la contraseña ;)


Crackeando MD5

Ahora vamos a crackear un hash MD5.
Para esto tenemos que introducir el siguiente comando en OclHashcat:


Dependiendo de la potencia de nuestra GPU tardará más o menos...



Listo! ya tenemos crackeado el md5! La contraseña como podéis ver es 11vpwc2.

Os dejo con un par de video-tutoriales, disfrutarlos.

Generar diccionarios (Crunch) - http://www.youtube.com/watch?v=Ev6DVENGOhI
Cracking MD5 HashCat - http://www.youtube.com/watch?v=6W7P2CQZAKc


Espero que les haya gustado.

Saludos.


Referencias
http://hashcat.net/oclhashcat/
http://www.oxid.it/projects.html


 **No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

miércoles, 12 de febrero de 2014

Identificando el tipo de algoritmo de un hash.


Los Hashes son algoritmos que consiguen crear a partir de una entrada una salida alfanumérica de longitud normalmente fija que representa un resumen de toda la información que se le ha dado, es decir, a partir de los datos de la entrada crea una cadena que solo puede volverse a crear con esos mismos datos.

Ejemplos de hashes:

- Hash MD5: 2a2e9a58102784ca18e2605a4e727b5f
- Hash SHA-1: d5aa170e875913b89d169c57b96b452548fabfff
- hash SHA-256: d4584547c7f6a01a40bb8d863ab2c134e0c51ce353c0ca2fd93857961d750658

Imaginemos que tenemos una base de datos con las contraseñas cifradas y desconocemos el tipo de algoritmo que se ha utilizado para cifrar dichas contraseñas.

Pues bien, os voy a enseñar dos formas con las que podemos identificar el tipo de cifrado utilizado.
  • Hash-identifier.
  • DuckDuckGo.
Hash-identifier es un script escrito en Python y desarrollado por Zion3R de Blackploit.
Dicho script nos permitirá identificar el tipo de cifrado utilizado.Veámos un ejemplo de su funcionamiento.

Lo primero que debemos hacer es ejecutar el script:


Bien, ahora nos pide que introduzcamos el hash, lo introducimos y pulsamos enter.


Como podemos ver ya tenemos identificado el tipo de hash (MD5).
**Nota: En algunos casos existen muchas posibilidades de hashes, por ejemplo, no se puede saber si un hash es MD5, MD5 doble o MD5(Sha1) hasta que es descifrado.**
 

 Ahora probaremos con DuckDuckGo, que hace poco ha añadido varias funciones, entre ellas identificar el tipo de hash.
Para poder aprovechar esta función, debemos escribir lo siguiente:


Ahora el buscador nos mostrará el algoritmo utilizado y las búsquedas relacionadas con dicho hash.


Sencillo ¿no? xD

En el siguiente post veremos como podemos conseguir la contraseña de un hash mediante ataques de fuerza bruta.

Saludos!!!


Referencias
http://www.genbetadev.com/seguridad-informatica/que-son-y-para-que-sirven-los-hash-funciones-de-resumen-y-firmas-digitales
http://www.redeszone.net/2014/02/01/duckduckgo-ahora-permite-generar-hashes-identificar-algoritmos-y-crackear-hashes/
http://www.hackplayers.com/2012/01/script-para-identificar-hashes-de.html
http://code.google.com/p/hash-identifier/



 **No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

lunes, 10 de febrero de 2014

Listado de herramientas Online para el Análisis de Malware


Muy buenas!!!

Os dejo con un pequeño listado de herramientas Online que os ayudarán en vuestros análisis de malware.


Scanner y Sandbox Online

Comodo Automated Analysis System - http://camas.comodo.com/
Valkyrie - http://valkyrie.comodo.com/
Anubis - http://anubis.iseclab.org/
urlQuery - http://urlquery.net/
Malwr - https://malwr.com/
Eureka - http://eureka.cyber-ta.org/
Virustotal - https://www.virustotal.com/es/
Joe Sandbox Document Analyzer (PDF, RTF, MS Office) - http://www.document-analyzer.net/
ThrearExpert - http://www.threatexpert.com/submit.aspx
VirSCAN - http://www.virscan.org/
Jotti - http://virusscan.jotti.org/es
VisualThreat - http://www.visualthreat.com/
XecScan (PDF & MS Office)- http://scan.xecure-lab.com/
Xandora - http://www.xandora.net/xangui/



Listas de bloqueo de IPs y URLs maliciosas (Blacklists)

Atlas - https://atlas.arbor.net/
Malc0de Database - http://malc0de.com/database/
ScumWare - http://www.scumware.org/
SpyEye tracker - https://spyeyetracker.abuse.ch/monitor.php?browse=binaries
Sucuri SiteCheck - http://sitecheck.sucuri.net/scanner/
Blade-Defender - http://www.blade-defender.org/eval-lab/
Avg Web Page Scanner - http://www.avg.com.au/resources/web-page-scanner/
Reputation Authority - http://www.reputationauthority.org/
URLVoid - http://urlvoid.com/
SenderBase - http://www.senderbase.org/
herdProtect - http://www.herdprotect.com/knowledgebase.aspx


Mirrors de Webs vulneradas

Xssed - http://www.xssed.com/
Zone-h - http://www.zone-h.org/


Saludos.


**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.** 

sábado, 8 de febrero de 2014

Pentesting - Fingerprinting




Hoy toca hablar del segundo proceso que se lleva a cabo en un Test de Penetración: Fingerprinting.

¿En qué consiste?

Básicamente en lo mismo que en el proceso de Footprinting, recopilar toda la información posible sobre la entidad objetivo.
En este proceso la información que se pretende conseguir es la siguiente:
  • Listado de puertos.
  • Listado de servicios.
  • Productos y versiones.
  • Configuraciones.
  • Vulnerabilidades en aplicaciones.
  • Tipos de Sistemas Operativos.
  • Topología de la red.
  • Transferencias de zona.
  • Metodos HTTP permitidos.
  • etc.
Para intentar reconocer que Sistema Operativo tiene un equipo (OS Fingerprinting), podemos hacerlo de dos maneras:
  • OS Fingerprinting Activo: se basa en el hecho de que cada sistema operativo responde de forma diferente a una gran variedad de paquetes malformados. De esta manera, utilizando herramientas que permitan comparar las respuestas con una base de datos con referencias conocidas, es posible identificar cuál es el sistema operativo.
  • OS Fingerprinting Pasivo: no se realiza directamente sobre el sistema operativo objetivo. Este método consiste en el análisis de los paquetes que envía el propio sistema objetivo a través de técnicas de sniffing. De esta forma, es posible comparar esos paquetes con una base de datos donde se tenga referencias de los distintos paquetes de los diferentes sistemas operativos y, por lo tanto, es posible identificarlos.
 El método activo es mucho más directo y fiable ya que se realiza directamente sobre el sistema operativo objetivo, pero genera demasiado ruido en la red.
Sin embargo, el método pasivo no es directo pero es mucho más silencioso, ya que intercepta los paquetes que genera la máquina objetivo para poder contrastarlo con una base de datos y así determinar de que tipo de Sistema Operativo se trata.

 Como en la anterior entrada, os pongo unos pocos programas como referencia para poder realizar esta tarea:
  • Ettercap - Passive TCP/IP stack fingerprinting.
  • NetworkMiner - Passive DHCP and TCP/IP stack fingerprinting.
  • Nmap - Comprehensive active stack fingerprinting.
  • p0f - Comprehensive passive TCP/IP stack fingerprinting.

Saludos!!!

Referencias
http://en.wikipedia.org/wiki/TCP/IP_stack_fingerprinting#Fingerprinting_tools
http://blogs.eset-la.com/laboratorio/2012/10/18/pentesting-fingerprinting-para-detectar-sistema-operativo/
http://www.sans.org/reading-room/whitepapers/protocols/os-application-fingerprinting-techniques-1891



 **No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

jueves, 6 de febrero de 2014

Pentesting - Footprinting




Un Pentest (Test de Penetración) es un procedimiento metodológico y sistemático en el que se simula un ataque real a una red o sistema, con el fin de descubrir y reparar sus problemas de seguridad.

Para ello, se debe seguir una metodología, en la que los procesos de ésta misma son:
  • Footprinting.
  • Fingerprinting.
  • Análisis de vulnerabilidades.
  • Explotación de vulnerabilidades.
  • Post-Explotación.
  • Generación de informes.

Hoy vamos a hablar del primer proceso, el llamado Footprinting.

¿En qué consiste?

Pues este paso consiste básicamente en recoger toda la información pública sobre nuestro objetivo, como pueden ser:
  • Datos de servidores.
  • Datos de clientes.
  • Datos de personas.
  • Proveedores.
  • Tecnologías usadas.
  • Servicios que se ofrecen.
  • etc...
Este paso se realiza haciendo búsquedas a través de internet, es decir, que en ningún momento hay conexión directa con el objetivo.

Al ser pública esta información y no tomar ningún contacto, no se comete ningún delito.

Pongámonos en el caso de que el objetivo de nuestro test de intrusión es una empresa.
Para realizar el proceso de Footprinting deberíamos:
  1. Visitar la página web de dicha empresa para hacernos una idea de qué tipo de empresa es y qué ofrece ésta. Buscar en dicha web ficheros que deberían estar protegidos (htpasswd), emails,  formularios, intranets, certificados, enlaces, documentos, posibles vulnerabilidades conocidas, etc...
  2. Utilizar los buscadores de Internet para seguir buscando información de la entidad, como la caché de los buscadores que a veces arrojan información vital (enlaces a bases de datos, paneles de login, usuarios y contraseñas, metadatos, impresoras, servidores internos, etc...) para nuestro test de intrusión. No sólo debemos limitarnos a utilizar un sólo buscador, si no que cuantos más utilicemos más información podremos obtener, ya que hacen las mismas consultar ni utilizan la caché de la misma manera. También debemos utilizar técnicas de Google Hacking y Bing Hacking.
  3. Visitar los servicios web que muestran el dominio, la IP, DNS, localización geográfica, transferencias de zona, etc...
  4. Documentos oficiales del estado (BOE).
  5. Buscar páginas de error para identificar el sistema operativo, ya que algunos administradores se olvidan de personalizar o filtrar los errores 404, que si están por defecto mostrarán algo parecido a esto:
  6. Buscar directorios ocultos mediante fuzzing.
  7. Buscar en las Redes Sociales.

Existen multitud de maneras, programas y servicios con los que podemos buscar dicha información, os dejaré unos cuantos para que tengáis un pequeña referencia a la hora de realizar el proceso de Footprinting:

  • IANA - Internet Assigned Numbers Authority.
  • ICANN - Internet Corporation for Assigned Names and Numbers.
  • Central Ops - Ip´s, Domains, Email´s, Ping, Nslookup, etc...
  • IP2Location - Geolocation information ISP.
  • Robtex - DNS, Ip´s, Domain´s, Blacklist, Nslookup, etc...
  • Whois.net - Domain Name Registration.
  • Maltego - Information Gathering.
  • SpiderFoot - Information Gathering.
  • TheHarvester - Information Gathering.
  • Wfuzz - Fuzzing.
  • 123People - Phone book/ Electoral Role Information.
  • Social Networks - Facebook, Twitter, Tuenti, Google+, Linkedin, etc...

Para terminar con esta entrada, les dejo con unas diapositivas sobre el proceso de Pentest.


Saludos!!!


Referencias:
http://www.0daysecurity.com/penetration-testing/network-footprinting.html
http://en.wikipedia.org/wiki/Footprinting
http://www.websec.es/2012/10/09/footprinting-primera-fase-de-una-auditoria/
http://www.dragonjar.org/como-realizar-un-pentest.xhtml
http://la-biblia-del-footprinting.googlecode.com/files/La_Biblia_del_Footprinting.pdf



**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.** 

martes, 4 de febrero de 2014

SQL Injection - Introducción



Según se define en Microsoft, SQL Injection es un ataque en el cual se inserta código malicioso en las cadenas que posteriormente se pasan a una instancia de SQL Server para su análisis y ejecución.

Es decir, en este ataque se aprovecha un mal filtrado en la entrada de datos para así realizar la consulta que queramos en la base de datos.

¿Que alcance tiene esta técnica?

Pues bien, si tuviesemos una web vulnerable a SQL Injection, cualquier atacante podría extraer/modificar/borrar toda nuestra base de datos incluyendo usuarios y contraseñas que se almacenasen en ella, hacerse con el control de dicha web, hacer un defacement, meter codigo malicioso para infectar a los visitantes, etc.

Un ataque así realizado a una simple página personal no tendría mucha repercusión, pero imaginemos que dicho ataque, se realizase a una gran empresa o a una web que ofrezca un software muy popular que utilicen muchas personas.
Si fuese así y se diese a conocer dicho ataque, bajaría mucho la confianza de dicho sitio, mucha gente ya no visitaría la web y la empresa perdería reputación, clientes y dinero.

¿Qué tipos de lenguajes de programación son vulnerables?

La inyección se puede realizar cualquier lenguaje que sea capaz de llamar a la base de datos y concatenar los datos que le pasen, aunque PHP y ASP son los más habituales.

¿Cómo sabemos si una web es vulnerable a SQL Injection?

Imaginémos que tenemos una web con, por ejemplo, una galeria de imágenes.
Cuando accedemos a la sección de la galeria nos muestra una url como esta:

http://miwebvulnerable.com/gallery.php?id=1

Normalmente para identificar si es vulnerable o no, se le añadiría una comilla detras del "1" y si fuese vulnerable podrían pasar 4 cosas:
  • La web se desfigura.
  • Muestra un mensaje de error.
  • Tarda mucho en recargar la página.
  • La web no se desfigura, no muestra errores y muestra la página tal y como estaba sin tardar en cargar.
 Si diesemos con cualquiera de los 3 primeros casos, estaríamos ante una web vulnerable.

Ahora si quisiesemos realizar una consulta, deberíamos identificar antes el tipo de base de datos, ya que cada una utiliza sus propias consultas. Ejemplo:

Sacar version en MySQL: php?id=1 UNION SELECT @@version--
Sacar version en Postgres SQL: php?id=1 UNION SELECT version()--
Sacar version en oracle: php?id=1 UNION SELECT version()--

¿Cómo podemos identificar la base de datos de un sitio web?

Existen diferentes herramientas que ayudan a identificar un sistema, una de ella es HttpPrint.
Esta herramienta se utiliza en el proceso de Fingerprinting y su función se basa en analizar el orden de las cabeceras de las respuestas HTTP, de los códigos de error cuando haces petición con un método no válido, versión de HTTP inexistente, o intentando usar un protocolo incorrecto.
Los servidores web no responden de la misma manera a estas situaciones, y esto se puede aprovechar para reconocer el comportamiento de un servidor en concreto.

¿Cómo proteger una web ante SQL Injection?
  •  Debemos aplicar una estricta validación a los datos.
  •  Evitar que se pueda ejecutar más de una sentencia SQL en el mismo comando.
  • Restringir los tipos de datos aceptados.
  • Utilizar funciones ya preparadas para realizar el trabajo con la Base de datos, como por ejemplo en PHP la función mysql_real_escape_string.
  • Implementar Web Application Firewall, como por ejemplo, Kona.


Esto ha sido todo por hoy.

Saludos!!!


Referencias:
http://technet.microsoft.com/es-es/library/ms161953%28v=sql.105%29.aspx
http://foro.elhacker.net/tutoriales_documentacion/tutorial_de_inyeccion_sql_sql_injection-t98448.0.html
http://spanish.akamai.com/enes/html/solutions/prevent_sql_injection_attack.html
https://www.youtube.com/watch?feature=player_embedded&v=LSySUX8n-PQ#t=327



**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**