AIDE - Capturar las conecciones salientes

  • 6 Respuestas
  • 654 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Adalher

  • *
  • Underc0der
  • Mensajes: 86
  • Actividad:
    3.33%
  • Reputación 0
    • Ver Perfil

AIDE - Capturar las conecciones salientes

  • en: Septiembre 01, 2019, 12:32:16 pm
Hola a todos,

¿cómo puedo capturar las conecciones salientes de mi navegador en Android con Java? Osea, ¿cómo puedo bloquear una página web en Android con Java?


Gracias y saludos

Desconectado grep

  • *
  • Underc0der
  • Mensajes: 187
  • Actividad:
    0%
  • Reputación 4
    • Ver Perfil
    • Grep's personal site

Re:AIDE - Capturar las conecciones salientes

  • en: Septiembre 01, 2019, 10:23:06 pm
Hola,

Creo que lograr eso de bloquear el acceso a ciertos dominios o páginas es posible, pero la solución NO se puede lograr con pocas líneas de código, suponiendo que el objetivo es hacer una app que intercepte el tráfico en un Android sin rootear. Por eso, creo que usar una app como AIDE para desarrollar aplicaciones es impractico, yo preferiría hacerlo desde una computadora.


¿cómo puedo capturar las conecciones salientes de mi navegador en Android con Java?
Entendiendo que deseas hacer eso desde otra aplicación funcionando en el mismo sistema Android, tengo entendido que una aplicación puede tomar el control del tráfico entrante y saliente creando un servicio VPN el cual por defecto captura el tráfico de todas las aplicaciones. A continuación te dejo enlaces que explican como crear un servicio VPN y algunas apps de ejemplo.

Android VPN Developers Guide
https://developer.android.com/guide/topics/connectivity/vpn
VpnService
https://developer.android.com/reference/android/net/VpnService
Sample app: ToyVpn (from offical Android samples)
https://android.googlesource.com/platform/development/+/master/samples/ToyVpn
Sample app: LocalVPN
https://github.com/hexene/LocalVPN
Full sample app: NetGuard
https://github.com/M66B/NetGuard



¿cómo puedo bloquear una página web en Android con Java?
Una vez que logres interceptar el tráfico que pasa por la interfaz VPN (aqui tengo entendido que este será todos los headers y el payload de la capa IP), supongo que podrías parsear el contenido con las apis de java y determinar que respuesta devolver, la original o una creada por vos.

Espero que esto pueda servirte para orientarte un poco, no puedo dar códigos de ejemplo porque nunca antes indagué en el tema.

Saludos
« Última modificación: Septiembre 01, 2019, 10:25:45 pm por grep »

Desconectado Adalher

  • *
  • Underc0der
  • Mensajes: 86
  • Actividad:
    3.33%
  • Reputación 0
    • Ver Perfil

Re:AIDE - Capturar las conecciones salientes

  • en: Septiembre 04, 2019, 07:59:54 am
Hola grep,

Citar
Por eso, creo que usar una app como AIDE para desarrollar aplicaciones es impractico, yo preferiría hacerlo desde una computadora.
Tienes razón. Lo que pasa es que mi Network no cumple con los requisitos para instalar Android Studio. Es por eso que lo hago con AIDE.

Tengo una pregunta con respecto a este código:
Código: Java
  1. package com.mycompany.myapp2;
  2.  
  3. import android.app.*;
  4. import android.os.*;
  5.  
  6. import android.net.VpnService;
  7.  
  8. public class MainActivity extends Activity
  9. {
  10.     @Override
  11.     protected void onCreate(Bundle savedInstanceState)
  12.     {
  13.         super.onCreate(savedInstanceState);
  14.         setContentView(R.layout.main);
  15.      
  16.       run();
  17.     }
  18.    
  19.    public void run() {
  20.       VpnService.prepare(MainActivity.this);
  21.       VpnService.Builder builder = new VpnService.Builder();
  22.  
  23. // Create a local TUN interface using predetermined addresses. In your app,
  24. // you typically use values returned from the VPN gateway during handshaking.
  25.       ParcelFileDescriptor localTunnel = builder
  26.          .addAddress("192.168.2.2", 24)
  27.          .addRoute("0.0.0.0", 0)
  28.          .addDnsServer("192.168.1.1")
  29.          .establish();
  30.    }
  31. }
  32.  

AIDE me larga el siguiente error: A reference to an enclosing class is required.

No lo entiendo. Que tengo que hacer para solucionar este problema?


Gracias y saludos

Desconectado grep

  • *
  • Underc0der
  • Mensajes: 187
  • Actividad:
    0%
  • Reputación 4
    • Ver Perfil
    • Grep's personal site

Re:AIDE - Capturar las conecciones salientes

  • en: Septiembre 04, 2019, 03:12:48 pm
Esto tiene que ver con el lenguaje en sí.

La clase "VpnService" tiene una clase interna, no static, llamada "Builder". El hecho de que esta clase interna no sea static impide que la misma pueda ser intanciada de la manera en la que intentas hacerlo.

Existen dos formas de instanciar la clase "Builder", y las dos requieren de una instancia de VpnService o una instancia de una clase que la extienda.

1) Crear una clase que extienda "VpnService" e intanciar "Builder" dentro de la misma:

Código: Java
  1. import android.net.VpnService;
  2.  
  3. public class MyVpnService extends VpnService {
  4.     ...
  5.  
  6.     public Builder getBuilder() {
  7.         Builder builder = new Builder();
  8.         // or VpnService.Builder builder = new VpnService.Builder();
  9.         ...
  10.     }
  11.    
  12.     ...
  13. }
  14.  


2) Usar una instancia ya creada de "VpnService" y a partir de la misma crear una instancia de "Builder":

Código: Java
  1. import android.net.VpnService;
  2.  
  3. public class Config {
  4.     ...
  5.  
  6.     public VpnService.Builder getBuilderOfVpnService(VpnService service) {
  7.         VpnService.Builder builder = service.new Builder();
  8.     }
  9.  
  10.     ...
  11. }
  12.  


Ahora me translado al entorno de la aplicación Android en si. Para poder usar VpnService es obligatorio crear una clase que la extienda (como lo hice en el primer ejemplo), esta clase sera el servicio que tienes que poner a funcionar. La documentatión misma lo dice:

Citar
To add a VPN service to your app, create an Android service inheriting from VpnService.

puedes observar la app de ejemplo de google para orientarte un poco:
https://android.googlesource.com/platform/development/+/master/samples/ToyVpn

Espero que esto pueda servirte.

Saludos

Desconectado Adalher

  • *
  • Underc0der
  • Mensajes: 86
  • Actividad:
    3.33%
  • Reputación 0
    • Ver Perfil

Re:AIDE - Capturar las conecciones salientes

  • en: Septiembre 07, 2019, 09:38:27 am
Hola grep,

1) La primera manera en que instancias Builder... es necesario el método de tipo Builder?

2) Para poder interceptar el tráfico saliente tengo que llamar al método establish de la clase Builder cada vez que lo quiero hacer? Y luego tengo que leer de alguna forma el dato de tipo ParcelFileDescriptor que este método retorna?

La app de ejemplo de google, aparte de poder tener unos fallos al ser ejecutada, creo que tiene más bien el fin de ser conectada a un servicio de VPN real que interceptar el tráfico.


Gracias y saludos

Desconectado grep

  • *
  • Underc0der
  • Mensajes: 187
  • Actividad:
    0%
  • Reputación 4
    • Ver Perfil
    • Grep's personal site

Re:AIDE - Capturar las conecciones salientes

  • en: Septiembre 07, 2019, 03:51:44 pm
Hola Adalher,

1) La primera manera en que instancias Builder... es necesario el método de tipo Builder?
Te refieres a  "getBuilder()"?, no es necesario, solo quería señalar que la única forma de obtener una instancia de Builder de la forma "new Builder()" es si esto se hace dentro de una clase que extienda a VpnService.

2) Para poder interceptar el tráfico saliente tengo que llamar al método establish de la clase Builder cada vez que lo quiero hacer? ...
La guia dice:
Citar
Call VpnService.Builder.establish() so that the system establishes the local TUN interface and begins routing traffic through the interface.
La respuesta es no, al invocar establish, la interfaz es creada y la misma interceptará el tráfico. No tienes que  llamarla más de una vez.


... Y luego tengo que leer de alguna forma el dato de tipo ParcelFileDescriptor que este método retorna?
si, la instancia de tipo ParcelFileDescriptor devuelta por establish la debes usar para leer y escribir los paquetes IP al buffer de esta interfaz de red creada con establish.

puedes observar esta clase en el proyecto LocalVPN para ver como es usada la instancia de ParcelFileDescriptor:
https://github.com/hexene/LocalVPN/blob/master/app/src/main/java/xyz/hexene/localvpn/LocalVPNService.java



La app de ejemplo de google, aparte de poder tener unos fallos al ser ejecutada, creo que tiene más bien el fin de ser conectada a un servicio de VPN real que interceptar el tráfico.
Solo para aclarar algo, ese "servicio de VPN" en la guía lo conocen como "VPN gateway". Aunque un poco más complejo, puedes ver este proyecto que no usa ningun VPN gateway y lo único que hace es reenviar los paquetes:
https://github.com/hexene/LocalVPN

Saludos
« Última modificación: Septiembre 07, 2019, 03:53:26 pm por grep »

Desconectado Adalher

  • *
  • Underc0der
  • Mensajes: 86
  • Actividad:
    3.33%
  • Reputación 0
    • Ver Perfil

Re:AIDE - Capturar las conecciones salientes

  • en: Septiembre 08, 2019, 10:01:56 am
Hola grep,

muchas gracias por tu ayuda. Esta vez no la merecía.


Gracias y saludos

 

[SOLUCIONADO] Como desencriptar un .cap al capturar el handshake de una red wifi

Iniciado por Sebastopin

Respuestas: 6
Vistas: 15739
Último mensaje Noviembre 20, 2017, 07:16:04 am
por Hu3c0
capturar el nombre de un archivo en un evento de copiarlo o moverlo

Iniciado por trevanyam

Respuestas: 0
Vistas: 1010
Último mensaje Febrero 07, 2018, 05:58:47 pm
por trevanyam
[SOLUCIONADO] Capturar Handshake WPA-WPA2 CCMP PSK Help

Iniciado por d3vilz5

Respuestas: 5
Vistas: 8195
Último mensaje Septiembre 27, 2013, 03:01:43 pm
por Snifer
[SOLUCIONADO] Como capturar cookies de sesión.

Iniciado por La-Bestia

Respuestas: 12
Vistas: 5888
Último mensaje Mayo 24, 2017, 11:41:16 pm
por ANTRAX
[SOLUCIONADO] Fallo al Capturar Handshake con Aircrack-ng

Iniciado por Kelo_07

Respuestas: 4
Vistas: 2981
Último mensaje Febrero 01, 2017, 11:15:15 am
por Kelo_07