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

OSINTretasNoHayPastebines

Buenas amigos de la seguridad y de la informática en general. Soy Fare9, y hoy traigo una herramienta que empecé hace un poquito de tiempo, como trabajo para una asignatura de seguridad en sistemas distribuidos, en concreto un trabajo de OSINT.

Pueden encontrar el código en el siguiente github: https://github.com/Fare9/OSINTretasNoHayPastebines

Pensaba yo, así para mis adentros, qué podría hacer como trabajo de OSINT, así para conseguir una buena nota, lo típico era coger shodan, o buscar cosas o gente en google, maltego... Y pensé, bueno ya que puedes buscar a gente en google y entregarlo pues "De 0 a Stalker", pero no, era demasiado creepy y no tenía gracia, ya que no estaba realizando ningún programa. Y a un compañero se le ocurrió "¿y si haces una herramienta que haga búsquedas de pastebin en fuentes públicas?". Y dije, normalmente lo complicado de pastebin, es obtener una buena URL con información, por tanto, podemos buscar URLs en fuentes públicas.

Pensé en una aplicación que tuviera consola, ya que así todo parece más de hackiers y esas cosas, además así que se muestren cosas chulas y logos... En un futuro añadiré el poder usarlo por medio de argumentos.
Además dije, esto se merece algún título absurdo, así que ahí fue "OSINTretasNoHayPastebines" (el primer borrador la parte de "Tre", no llevaba 'r', pero era un trabajo de clase).

Está implementado por medio de módulos, los cuales heredan de una clase base, estos acceden a las fuentes de información y antes de añadir una URL, consultan a ver si devuelve respuesta desde pastebin. Como conseguí que pastebin me baneara, pues añadí el uso de la red tor, así las peticiones se harían a través de otras IPs, no es 100% fiable, pero ayuda bastante.

Actualmente, tengo implementado 4 módulos:

  • Búsquedas en pastebin: busco en los últimos subidos, y en los más visitados, además si alguno de estos es un pastebin de un usuario, busco también dentro de este usuario.
  • Búsquedas en twitter: busco ciertas cadenas en tweets, los cuales contengan URLs de pastebin, normalmente en twitter, suelen salir los enlaces a noticias más novedosos.
  • Búsquedas en google: una gran base de datos mundial de información, como no, mejor si sabes buscar en esta base de datos. Uso un par de google dorks sencillos para permitir una búsqueda más "inteligente" en google de enlaces a pastebin con contenido interesante.
  • Búsquedas en bing: más o menos como Google, tarda más, pero obtenemos una gran cantidad de información.
Para verlo todo más claro, vamos a poner imagenes y dibujitos de esos que me gustan tanto a mi:
A continuación mostraré un poco su uso:

Aqui un Logo muy chulo, que va apareciendo linea a linea, para dar esa impresión de los videojuegos de toque clásico, este logo fue una genialidad de: https://github.com/syntax-samurai/ .
Pero lo que nos viene a interesar en este post, es la siguiente consola:
Tenemos una consola básica de comandos, la cual puede obtenerse más información con el comando "help":

Si tecleamos cada uno de estos comandos sin añadir nada más podremos obtener más ayuda, pero bueno son un poco "auto-explicativos" (creo que es término existe). Tenemos diferentes variables que podemos establecer, así como distintos módulos o crawlers, antes de cargar un crawler, podemos modificar las variables, y así modificar algunos comportamientos de este.
Vamos a ver un poco que variables nos podemos encontrar, para ello podemos escribir "set" y nos devolverá todas las variables disponibles:
Vemos algunas cosillas interesantes, entre estas, pues por ejemplo time_crawl, es el tiempo que durarán algunos de los plugins, por ejemplo el de twitter, se buscarán URLs de pastebin en twitter durante un tiempo igual al establecido.
use_tor nos valdrá para realizar las comprobaciones de las URLs encontradas, a través de TOR, así como las búsquedas a través de TOR, así evitamos que pastebin nos banée. Verbosity una variable ya bastante conocida, para mostrar mayor o menor información.

Vamos por ejemplo a establecer verbosity a 3, time_crawl = 15 segundos y cargar y ejecutar el crawler de twitter. Este tiempo, normalmente tomaremos el doble, ya que en el crawler se hacen esperas activas de 2 segundos, por tanto los segundos que entran por los que salen:
Aquí la configuración básica para el crawler de twitter, este crawler tira de selenium y beautifulSoup, por tanto en el readme, viene lo necesario a instalar para el crawler.

Bien, pues lo ejecutamos a ver que pasa:
Empezamos con el logging en twitter.


Empiezan entonces las búsquedas, según algunos valores fijados en el código (se pueden modificar perfectamente).

Se checkean las URLs encontradas para ver si aún siguen existiendo en pastebin.

Al finalizar el módulo, podemos hacer "show urls" para obtener las urls encontradas:
Estas URLs pueden ser guardadas y luego cargadas de nuevo, gracias a una última función que implementé que usa numpy para guardar la lista.

Estableceremos entonces unas cadenas de búsqueda:


Y finalmente para la búsqueda y que pastebin no banée a nadie, establecemos use_tor a true, y empezamos la búsqueda con search...
Como esto tarda un rato, escribiré una lista de chistes malos de Arguiñano, para aumentar el odio irracional ante este hombre mayor:

Cual es el colmo de un astronauta? Que se quede sin espacio

- Hola quería unas gafas para leer. 
- Si ayer le vendí unas. 
- Es que ya me las he leído. 


¿Dónde estudian los niños belgas? En los coles de Bruselas

Pueden seguir viendo chistes así en esta cuenta: https://twitter.com/chistesargui?lang=es 

 Una vez acabada la ejecución podemos mirar con show reconocimientos, lo que ha salido de la búsqueda:

Como vemos, hemos obtenido muchas URLs de pastebin (es posible encontrar muchas más), y además hemos obtenido resultados al buscar cadenas en estos enlaces.
Esta herramienta es una herramienta que me llevó poco hacerla, y seguramente contenga muchos errores, para cualquier cosa pueden contactarme por twitter @Fare9, o por el correo electrónico que aparece en el código.

Espero guste, y que puedan hacer uso de estas pequeñas herramientas.

Gracias y hasta la próxima.

Análisis Dinámico en AndroidSwissKnife

Buenas Amigos de Estación Informática. Soy Fare9 y hoy os traigo una nueva actualización de mi herramienta AndroidSwissKnife. ANDROIDSWISSKNIFE




A pesar de estar estos dos últimos días jodido ( con fecha de referencia 28/10/2016 ), he intentado hoy escribir sobre mi última actualización de AndroidSwissKnife (algo que ya llevaba un tiempo en el tintero). Hace ya tiempo que empecé a leer sobre análisis de malware en Android, pero no se me había ocurrido añadir análisis dinámico a mi herramienta, y en cuanto conocí DroidBox dije "Muy interesante, ¿por qué no?" . A los que no tengáis ni idea de que es haré una pequeña explicación:

DroidBox es una herramienta escrita en python la cual te permite levantar un emulador de android con unas imágenes del sistema modificadas, las cuales al ejecutar ciertas funciones, mostrarán por el log de android (se puede ver a través de logcat) la información en un formato JSON (ejemplo en un SMS el número a quien se envía, en una modificación el archivo modificado...). Tras esto va reuniendo la información para luego mostrarla al usuario igual en formato JSON. Para ejecutar la aplicación y en concreto la clase principal (MAIN o LAUNCHER), utiliza una librería llamada monkeyrunner la cual te permite conectar con un dispositivo, instalar una apk, ejecutar una función de la apk, hacer capturas de pantalla, hacer clicks en la pantalla... Me ha parecido una librería tan explendida que hasta famosos la usan:




El código de DroidBox puede ser consultado en: https://github.com/pjlantz/droidbox/tree/master/droidbox4.1.1

A vista de que era una opción bastante interesante, me decidí en incluir el código con distintas modificaciones en el framework AndroidSwissKnife, tuve que realizar modificaciones en distintas funciones al tener que pasar código a Python3 y además como las librerías de XML me parecen un poco aburridas y complejas de usar, me decanté por el gran amigo de los Crawler's programmers BeautifulSoup, el cual de momento funciona bien. Además añadí Burpsuite, a la hora de realizar el análisis dinámico se abrirá una ventana con Burpsuite y después nos pedirá el nombre del emulador, tras esto, creará una carpeta con apktool donde sacará el AndroidManifest para reconocer las partes del APK, y finalmente ejecutará en el emulador la aplicación y empezará a sacar logs (recomiendo dejar cargar el emulador, nunca fue muy bien ese emulador de android la verdad).

Por tanto vamos a ejecutar la aplicación a ver que tal funciona, para animar un poco hoy la sesión con un poco de música, dejo una canción que me encanta y además está cantada por una buena amiga (Fight Together - Español , Fight Together - Català )

  1.  Primero hay que instalar AndroidSwissKnife (hay una pequeña función de instalación, pero todo lo que se pueda hacer manualmente no está de más).
  2. Tras esto elegiremos una APK para realizar el análisis dinámico:
  3. Después (estando dentro de la misma carpeta que el apk) ejecutamos lo siguiente:
    androidSwissKnife.py -a 2abff9ab25d8b9909f23783f20757e612a3eaa02.apk --DroidBox 
  4. Tras esto y un poco de paciencia, tendremos abierto un Burpsuite donde podremos establecer el proxy, y establecer Intercept en OFF para no tener problemas (pestaña Proxy -> Intercept is Off), también la aplicación nos pedirá el nombre de nuestro emulador (en mi caso Sandbox):
  5. Tras esto, abrirá otro terminal, en el cual empezará a ejecutar el emulador, además en el terminal que ya teníamos abierto, empezará a usar apktool para poder conseguir el AndroidManifest de la aplicación. Tras esto nos mostrará el nombre del archivo, sus diferentes hashes (MD5,SHA1,SHA256), y finalmente diferentes partes del Manifest (uses-permissions,permissions,activities,MainActivity...).
  6. Una vez tengamos cargado el emulador, pulsaremos ENTER en nuestro terminal:
  7. Entonces monkeyrunner empezará a funcionar, conectará con el dispositivo, instalará la aplicación y finalmente ejecutará la clase principal.
     
  8. Una vez acabado, empezará el análisis dinámico y la recolección de logs, para ello podemos interactuar con el emulador y con la aplicación, con lo cual conseguiremos más logs en nuestro programa. Para finalizar simplemente tendremos que pulsar CTRL-C:
  9. Una vez pulsado CTRL-C nos mostrará en formato JSON, los logs sacados por la herramienta. Y aquí vendrá la pericia del auditor para poder saber que a accedido, o si realizó accesos a internet, o envío de SMS...
Y bueno hasta aquí, la ampliación de la herramienta AndroidSwissKnife para análisis de aplicaciones Android, aún está en una fase algo beta, tiene algunos problemillas pero se irán solucionando (cosillas varias, como por ejemplo un thread que no finaliza, fallos en algun log...), puede que la opción de burpsuite se vuelva opcional, ya que alguna aplicación pueden detectar proxies y cosillas así.
Aún así presentaré esta herramienta en el SEC/ADMIN de este año. Espero os guste y cualquier cuestión en mi github teneis un email de contacto, así como una pestañita de issues, donde dejar vuestros problemas con la herramienta.

DroidOL: Nuevo marco para detectar Malware en Android



Hola a tod@s


DroidOL y es un marco de detección de malware adaptable y escalable basado en aprendizaje en línea. Un grupo de investigadores de la Universidad Tecnológica de Nanyang, Singapur, han creado una nueva solución para la detección de malware para Android a gran escala.


DroidOL alcanza una precisión superior a través de la extracción de características de alta calidad de gráficos de flujo de control entre procedimiento (ICFGs) de aplicaciones, que son conocidos por ser fuerte contra la evasión y la ofuscación técnicas adoptadas por el malware explican los investigadores.



Utilizaban el núcleo gráfico de Weisfeiler-Lehman (WL) para extraer rasgos semánticos de ICFGs y finalmente, en línea aprender a distinguir entre aplicaciones benignas y maliciosas.


“En un análisis comparativo a gran escala con más de 87.000 aplicaciones, DroidOL alcanza exactitud 84.29% superando a dos técnicas de malware de vanguardia por más de 20% “

"Nuestros resultados experimentales indican que enfoques de aprendizaje basado en línea son altamente convenientes para la detección de malware reales" apuntaban los investigadores.


El malware para android ha crecido mucho en los últimos años y sus capacidades han crecido enormemente, por ello es necesario nuevas técnicas efectivas para detectarlo y no ir siempre por detrás de los ciberdelincuentes.

No seáis malos. 



Crea troyanos indetectables con HaCoder



Hola a tod@s

HaCoder.py es herramienta Python para generar troyanos totalmente imperceptibles para la gran mayoría de los antivirus, a día de hoy detectado tan sólo por el 3,3% de los cuales no son lo más conocidos del mercado. El ordenador víctima tendrá una puerta trasera sin percatarse de nada.

Antes de comenzar, vamos a analizar exactamente lo que vamos a realizar. Queremos generar .py backdoor y convertir a archivo ejecutable independiente (.exe), iniciar el controlador para coger todas las llamadas entrantes de tráfico víctima, para ello la víctima debe ejecutar nuestro archivo de backdoor, ¿cómo? pues por ejemplo sitios de seriales, en pendrive un poco de ingeniería social, etc.

Esta es muy buena técnica ya que utiliza cifrado AES, se cifra todo el tráfico de comunicación entre agresor y víctima. No hay dispositivo o aplicación que pueda leer sin la clave secreta de AES.


Utilice bajo propia responsabilidad. Esta herramienta está creada únicamente con fines educativos, al igual que informamos en nuestro disclosure con el resto de post de la web.


Comencemos, lanzamos HaCoder.py, una herramienta muy intuitiva similar a Metasploit o SET. En tan sólo 4 pasos tenemos nuestro backdoor creado:

  1. Introducir nuestra IP.
  2. El puerto, el 8080.
  3. Copiar y pegar la AES Key que se ha generado.
  4. Guardar en la ruta que se desee el .py creado.
Automáticamente quedará el handler a la escucha, esperando que se ejecute nuestro troyano.

Imagen 1: Generar Backdoor con HaCoder.py



Me he decantado por un nombre atractivo como serial :p, a continuación copiamos nuestro archivo serial.py en una maquina Windows para la segunda fase en la que convertiremos el .py en .exe. Para ello es necesario instalar la herramienta pyinstaller.py.

Procedemos con la siguiente sentencia:
pyinstaller.py serial.py --onefile --noconsole

Imagen 2: Convertir .py a .exe



Como se puede observar en la siguiente imagen se ha creado el archivo ejecutable.

  
Imagen 3: serial.exe creado con éxito



A continuación ejecutamos el troyano camuflado en la máquina víctima, en cuestión de segundos ya tenemos a la víctima.
 
Imagen 4: Información de la víctima infectada

Entramos en la primera víctima, como vemos tenemos un abanico de posibilidades, desde descargar archivos, subir archivos, keylog o una utilidad muy importante como es la persistencia.


Imagen 5: Opciones disponibles del troyano



Pienso que lo más importante en un test de penetración es poder crear persistencia. Aunque la víctima reinicie el PC se ha creado una puerta trasera y el atacante se paseará como perro por sus casa. Por ello lo primero que haremos es agarrarnos al PC como si fuéramos una garrapata :-), con el siguiente comando:
persist 

Imagen 6: Crear persistencia


También, porque no, vamos a ver qué archivos nos interesa para la descarga, con el siguiente comando:
download archivo

Imagen 7: Download de archivos




Lo más interesante es que es prácticamente indetectable a los antivirus, para muestra un botón.
 
Imagen 8: Analizar el troyano con Virus Total



Tan sólo 6/55 han detectado al troyano, es decir el 3,3% una cifra muy pobre, además ninguno son de los más usados y conocidos en el mercado por los usuarios. Por otro lado, otro dato importante a aportar es que cuando sea detectable por la mayoría de antivirus tan sólo cambiando el AES secreto y otra vez a correr. Sin duda una muy buena alternativa a Metasploit y su encodeado con shitaka ga nai.


No seáis malos.

Más info aquí: https://github.com/LukaSikic/HaCoder.py