Autor Tema: parches que vais a necesitar en 3.8 en adelante  (Leído 34829 veces)

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

alist3r

  • Visitante
parches que vais a necesitar en 3.8 en adelante
« en: 31-08-2013, 22:27 (Sábado) »
compat-wireless ha sido renombrado a "backports" dentro de la estructura de fuentes del kernel linux, y las modificaciones a partir de 3.8 han sido lo suficientemente profundas como para romper los parches anteriores.

aqui teneis algunos parches que, aunque de momento NO estan listados oficialmente en la web de aircrack-ng, son utiles y/o necesarios para conseguir utilizar correctamente algunas de las caracteristicas básicas de auditoria wireless como son el modo monitor y la posiblidad de realizar ataques de fragmentación.
 
1 - Prevenir el negative one en aicrack - parte 1 - Error "-EBUSY"
https://gist.github.com/alist3r/6400421

2 - Prevenir el negative one en aicrack - parte 2 - Habilita la consulta al channel_ctx por parte de SIOCGIWFREQ incluso en modo monitor (necesario para algunos drivers)
https://gist.github.com/alist3r/6405555

3 - Prevenir que el kernel sobreescriba de las cabeceras QoS de los paquetes inyectados
https://gist.github.com/alist3r/6400494

4 - Reparar el mal funcionamiento del ataque de fragmentación en las rtl8187
https://gist.github.com/alist3r/6400564

5 - Compatibilizar las Ralink con el reaver wps (UNTESTED)
https://gist.github.com/alist3r/6401757
el parche 2 deberia resolver el problema sin tener que aplicar este parche, aunque hace falta que USUARIONUEVO lo compruebe.

Funcionamiento de los distintos drivers despues de aplicar estos parches:

ath9k
reaver OK, airodump OK (alister)

rtl8192se
reaver OK, airodump OK (alister)

Captura de kernel 3.10.10 con los parches, funcionando en  rtl8192se


« Última modificación: 02-09-2013, 04:02 (Lunes) por alister »

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #1 en: 31-08-2013, 22:34 (Sábado) »
compat-wireless ha sido renombrado a "backports" dentro de la estructura de fuentes del kernel linux, y las modificaciones a partir de 3.8 han sido lo suficientemente profundas como para romper los parches anteriores.

aqui teneis algunos parches que, aunque de momento NO estan listados oficialmente en la web de aircrack-ng, son utiles y/o necesarios para conseguir utilizar correctamente algunas de las caracteristicas básicas de auditoria wireless como son el modo monitor y la posiblidad de realizar ataques de fragmentación.
 
Prevenir el negative one
https://gist.github.com/alist3r/6400421

HASTA AHORA , estube basandome/usando/modificando , algunos de los que publico   Mathy Vanhoef , su patch eran para los backports o compat-drivers ( no confundir con compat-wireless que ya no existen )  , y siempre para aplicar sobre kernel , me tocaba modificar / adaptar sus poarches.


de los que publica en su web , ... los ultimos de las ramas 3.8 y 3.9 no me sirvieron de nada ...

http://www.mathyvanhoef.com/2012/09/compat-wireless-injection-patch-for.html


voy a mirar esos que me propones , ...supongo que son para rama 3.10 ya que de hay hacia abajo son compat-drivers y solo d ela 3.10 hacia arriba son backports.

alist3r

  • Visitante
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #2 en: 31-08-2013, 22:43 (Sábado) »
yo tengo un 3.10.10 andando ok.
de todos modos estoy probando en una atheros de la serie 9000, que son muy agradecidas.

prueba a ver qué obtienes tú con estos parches.  mathy se ha ido dando cuenta de mas cosas.
« Última modificación: 31-08-2013, 22:43 (Sábado) por alister »

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #3 en: 31-08-2013, 22:47 (Sábado) »
ya he visto el patch , ...ya contaba con ese.


traducido el kernel ...quiere evitar que si existen mas interfaces y no son en modo monitor te denienga el modo monitor.

hace una comprobacion y si existen interfaces normales, te dice que -EBUSY ,

el parche elimina esa comprobacion.


Pero en las ramas nuevas , el kernel comprueba mas veces esos detalles ...por eso me quedo a medias.

Puedo crear interfaces en monitor , pero si esta la interface real levantada ( por ejemplo que el gestor de redes la tenga asiganada ) . .. obtengo el bonito channel -1



Haz esta prueba , pon a escanear con airodump ...u levanta tu interface real "wlanX" , y veras que bonito.  ;D

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #4 en: 31-08-2013, 22:56 (Sábado) »
de hecho las ramas 3.6 y 3.7 funcionan perfectas , nada mas anulando esa comprobacion.

pero como digo de hay hacia arriba , el kernel hace varias comprobaciones, ademas de esa.

alist3r

  • Visitante
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #5 en: 31-08-2013, 23:01 (Sábado) »
el kernel ...quiere evitar que si existen mas interfaces y no son en modo monitor te denienga el modo monitor.

desde el mainline opinan que, para proteger el funcionamiento de las interfaces managed, las interfaces monitor NO pueden cambiar de canal. no deniegan el modo monitor en si mismo, solo deniegan el hopping, porque implícitamente rompería las conexiones de las interfaces managed.

es muy coherente.
al margen de que nos resulte molesto en auditorias.

Citar
Pero en las ramas nuevas , el kernel comprueba mas veces esos detalles ...por eso me quedo a medias.

no, si te creo. por higiene y por estabilidad yo siempre mato dhclient, wicd, wpasupplicant, destruyo las interfaces managed... y si hay problemas de convivencia, perfectamente he podido no enterarme.

voy a hacer pruebas, pero sobre todo a buscar mas checks en el código. no puede haber tantas! todas deben estar concentradas en chan, y en tx, no hay mas sitio para ellas.

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #6 en: 31-08-2013, 23:08 (Sábado) »
revisa el parche de mathy , las encontro , pero el patch en si no me es fucnional del todo , algo falla por que si la interface esta arriba, game over.


El problema es que la gente no puede estar sube/baja ..segun chip y uso de la herramienta de turno.


ralink 3070 para inyectar pines necesita la interface real arriba wlanX UP

pero si haces eso , airodum ..te da channel -1


___________________

ya te digo la formsa mas rapida y visual de comprobarlo es


poner en monitor, lanzar airodump-ng y mantener la ventana activa...

entonces abre otra shell ...y levanta la interface real wlanX , veras como en airodump te aparece el mensaje de marras.

un ejemplo ... network-manager maneja simultaneamente todas las interfaces wioreless ...manteniendolas "up"  , aunque no estes conectado ...esa seria una situacion en la que el usuario de a pie se veria forzado a matar networkmanager , wpa_supplicant y mil cosas mas , para evitar el dichoso negative.



yo mire muchas veces el codigo , pero no lo comprendo , asi que es como si leyese un libro en chino.

Hay que comprender las funciones, para anular las que nos interesan.
« Última modificación: 31-08-2013, 23:10 (Sábado) por USUARIONUEVO »

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #7 en: 31-08-2013, 23:12 (Sábado) »
alist3r , mira aqui...  cfg.c  , este pertenece a un 3.8  , seguramente en los kernele 3.10 el code a cambiado.

para que evas como se las gastan tus amigos de kernel.org  ;D


Código: [Seleccionar]
diff -r 6b71629b673d net/mac80211/cfg.c
--- a/net/mac80211/cfg.c Tue May 28 16:57:23 2013 -0400
+++ b/net/mac80211/cfg.c Tue May 28 17:16:15 2013 -0400
@@ -799,7 +799,8 @@ static int ieee80211_set_monitor_channel
  ret = ieee80211_vif_use_channel(sdata, chandef,
  IEEE80211_CHANCTX_EXCLUSIVE);
  }
- } else if (local->open_count == local->monitors) {
+ // Patch: Always allow channel change, even if a normal virtual interface is present
+ } else /*if (local->open_count == local->monitors)*/ {
  local->_oper_channel = chandef->chan;
  local->_oper_channel_type = cfg80211_get_chandef_type(chandef);
  ieee80211_hw_config(local, 0);
« Última modificación: 31-08-2013, 23:14 (Sábado) por USUARIONUEVO »

Desconectado sanson

  • Moderador Global
  • *
  • Mensajes: 8419
Re: Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #8 en: 31-08-2013, 23:16 (Sábado) »
Miedo me dan las propuestas de alister .  Todavía me estoy recuperando de la ultima vez

Saludos

alist3r

  • Visitante
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #9 en: 31-08-2013, 23:17 (Sábado) »
revisa el parche de mathy , las encontro , pero el patch en si no me es fucnional del todo , algo falla por que si la interface esta arriba, game over.

te parchea bien pero no te sirve. ¿no?

Citar
El problema es que la gente no puede estar sube/baja ..segun chip y uso de la herramienta de turno.
ya

Citar
ralink 3070 para inyectar pines necesita la interface real arriba wlanX UP

pero si haces eso , airodum ..te da channel -1


si, eso arrojan las pruebas.

Citar
yo mire muchas veces el codigo , pero no lo comprendo , asi que es como si leyese un libro en chino.

Hay que comprender las funciones, para anular las que nos interesan.

Con Kolivas era un anestesista sin formación en ciencias de la computación... hasta que de tanto machacar el código del kernel se ha convertido en el principal proveedor de parches con mejoras para el escritorio :)

entender el código del stack wireless es relativamente sencillo en comparacion con, por ejemplo, los IO schedulers o las interfaces NUMA.

Con una buena depuración, se puede encontrar el origen de un problema y depurarlo.
Voy a recompilar con algunos debugs y forzar la situacion a ver si me peta a mi tambien.
« Última modificación: 31-08-2013, 23:18 (Sábado) por alister »

alist3r

  • Visitante
Re: Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #10 en: 31-08-2013, 23:20 (Sábado) »
Miedo me dan las propuestas de alister .  Todavía me estoy recuperando de la ultima vez

Saludos

de eso aprendí que la filosofia "a-medida", que es la que sigo en el trabajo o en otros proyectos más especifícos, no sirve para nada cuando tienes una distro de difusión masiva.

consecuencias: cuatro PCs corriendo como el viento, y 4000 sin el soporte hardware necesario.

por ahí habra un post, o más de uno, pidiendo disculpas a afectados.

PD: incluso a max moser le pasó lo mismo en la primera entrega de Kali.
« Última modificación: 31-08-2013, 23:22 (Sábado) por alister »

alist3r

  • Visitante
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #11 en: 31-08-2013, 23:32 (Sábado) »
alist3r , mira aqui...  cfg.c  , este pertenece a un 3.8  , seguramente en los kernele 3.10 el code a cambiado.

para que evas como se las gastan tus amigos de kernel.org  ;D


Código: [Seleccionar]
diff -r 6b71629b673d net/mac80211/cfg.c
--- a/net/mac80211/cfg.c Tue May 28 16:57:23 2013 -0400
+++ b/net/mac80211/cfg.c Tue May 28 17:16:15 2013 -0400
@@ -799,7 +799,8 @@ static int ieee80211_set_monitor_channel
  ret = ieee80211_vif_use_channel(sdata, chandef,
  IEEE80211_CHANCTX_EXCLUSIVE);
  }
- } else if (local->open_count == local->monitors) {
+ // Patch: Always allow channel change, even if a normal virtual interface is present
+ } else /*if (local->open_count == local->monitors)*/ {
  local->_oper_channel = chandef->chan;
  local->_oper_channel_type = cfg80211_get_chandef_type(chandef);
  ieee80211_hw_config(local, 0);

ahora vas entrando en la sintonia de Con Kolivas... por algo está peleado con algunos hackers del kernel y con la filosofia general de desarrollo xD

la interfaz de config? tiene sentido. voy a ver.

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #12 en: 31-08-2013, 23:33 (Sábado) »
El pasado , pasado es.

Estamos aqui para mejorar el presente/futuro  ...o intentarlo.

Lamentarse de lo pasado ya no nos sirve mas que de experiencia.

Para aprender hay que errar , y desgraciadamente solo nos acordamos de lo malo  y no de lo bueno , ... en la distro hay muchos scripts , obra de alist3r y berni69  ...  alist3r mejoro airoscript , entre otros ,pero de eso nadie se cuerda , una lastima.


Yo si que me acuerdo , por que uso a diario stripdir por ejemplo ...evitando stripar los binarios de ciertas toold con comprobador de checksum md5 como es el feedingbootle.


El fue el primero aqui que puso un kernel 3.0 en las lives ... por ejemplo ...

Podria estar asi y hacer un post hyperlargo , pero lo dejare aqui.


ESTE POST ES PARA OTRA COSA
« Última modificación: 31-08-2013, 23:44 (Sábado) por USUARIONUEVO »

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #13 en: 31-08-2013, 23:36 (Sábado) »
alist3r , mira aqui...  cfg.c  , este pertenece a un 3.8  , seguramente en los kernele 3.10 el code a cambiado.

para que evas como se las gastan tus amigos de kernel.org  ;D


Código: [Seleccionar]
diff -r 6b71629b673d net/mac80211/cfg.c
--- a/net/mac80211/cfg.c Tue May 28 16:57:23 2013 -0400
+++ b/net/mac80211/cfg.c Tue May 28 17:16:15 2013 -0400
@@ -799,7 +799,8 @@ static int ieee80211_set_monitor_channel
  ret = ieee80211_vif_use_channel(sdata, chandef,
  IEEE80211_CHANCTX_EXCLUSIVE);
  }
- } else if (local->open_count == local->monitors) {
+ // Patch: Always allow channel change, even if a normal virtual interface is present
+ } else /*if (local->open_count == local->monitors)*/ {
  local->_oper_channel = chandef->chan;
  local->_oper_channel_type = cfg80211_get_chandef_type(chandef);
  ieee80211_hw_config(local, 0);

ahora vas entrando en la sintonia de Con Kolivas... por algo está peleado con algunos hackers del kernel y con la filosofia general de desarrollo xD

la interfaz de config? tiene sentido. voy a ver.


Pues estoy casi convencido que no es el unico que hay ( comprobadores de asignacion para los canales usables ).

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #14 en: 31-08-2013, 23:43 (Sábado) »
Me voy bajando los patches del primer pòst , i los voy a intentar aplicar al 3.10.10 y te comento si dan algun error al aplicarlos.


Aunque cuento 3 , y nos falta el dramatico ....  ;D


GRACIAS.


De todas formas lo primero es lo primero ... tienes que llegar a reproducir dicho problema, si no , no sabras si tus pruebas tienen exito o no.

como ya te dije , la via rapida es ...poner airodump y levantar la interface real wlan ...y mirar si en airodump , se cuela el channel -1
« Última modificación: 31-08-2013, 23:47 (Sábado) por USUARIONUEVO »

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #15 en: 31-08-2013, 23:55 (Sábado) »
sobre un kernel 3.10.10

parche    3.8-monitor-mode-busy-channel-patch

Código: [Seleccionar]
patching file net/wireless/chan.c
patch: **** malformed patch at line 11:

los otros dos aplican sin rechistar.

alist3r

  • Visitante
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #16 en: 31-08-2013, 23:56 (Sábado) »
Código: [Seleccionar]
alex@engetsu:~/src/linux-3.10.10$ grep -irl monitors net
net/wireless/core.h
net/wireless/nl80211.c
net/wireless/chan.c
net/mac802154/monitor.c
net/mac802154/rx.c
net/mac802154/tx.c
net/mac802154/mac802154.h
net/ceph/mon_client.c
net/mac80211/status.c
net/mac80211/util.c
net/mac80211/iface.c
net/mac80211/rx.c
net/mac80211/main.c
net/mac80211/ieee80211_i.h
net/mac80211/cfg.c


Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #17 en: 31-08-2013, 23:59 (Sábado) »
jajajaj , para que veassss ,ya sabia yo que se comprobaria mas veces ...madre de dios.

alist3r

  • Visitante
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #18 en: 01-09-2013, 00:10 (Domingo) »
son referencias a las interfaces en modo monitor.
pero no creas eh.

el código de las interfaces 802.15.4 no nos afecta

nos afectan mac802.11 y wireless

la mayoria son referencias a las mismas rutinas, por lo que el análisis se concentra.

de momento, voy a probar este parche, que es una suma de tu parche y el anterior

Código: [Seleccionar]
alex@engetsu:~/src/patches/wifi$ combinediff -U 1 3.8-monitor-mode-busy-channel-patch monitor-part2  > 3.8-monitor-mode-busy-channel-patch-parts1+2.patch
alex@engetsu:~/src/patches/wifi$ cat 3.8-monitor-mode-busy-channel-patch-parts1+2.patch
--- a/net/wireless/chan.c 2013-08-29 18:47:51.000000000 +0200
+++ b/net/wireless/chan.c 2013-08-31 22:20:45.014734447 +0200
@@ -441,4 +441,2 @@
  return -EOPNOTSUPP;
- if (!cfg80211_has_monitors_only(rdev))
- return -EBUSY;
 
only in patch2:
--- a/net/mac80211/cfg.c Tue May 28 16:57:23 2013 -0400
+++ b/net/mac80211/cfg.c Tue May 28 17:16:15 2013 -0400
@@ -801,3 +801,4 @@
  }
- } else if (local->open_count == local->monitors) {
+ // Patch: Always allow channel change, even if a normal virtual interface is present
+ } else /*if (local->open_count == local->monitors)*/ {
  local->_oper_channel = chandef->chan;

que como es de esperar se aplica perfecto
Código: [Seleccionar]
alex@engetsu:~/src/linux-3.10.10$ patch -p1 --dry-run < ../patches/wifi/3.8-monitor-mode-busy-channel-patch-parts1+2.patch
patching file net/wireless/chan.c
patching file net/mac80211/cfg.c
Hunk #1 succeeded at 808 with fuzz 1 (offset 7 lines).
« Última modificación: 01-09-2013, 00:13 (Domingo) por alister »

Desconectado USUARIONUEVO

  • Moderador
  • *
  • Mensajes: 14478
Re: parches que vais a necesitar en 3.8 en adelante
« Respuesta #19 en: 01-09-2013, 00:10 (Domingo) »
sobre un kernel 3.10.10

parche    3.8-monitor-mode-busy-channel-patch

Código: [Seleccionar]
patching file net/wireless/chan.c
patch: **** malformed patch at line 11:

los otros dos aplican sin rechistar.


bueno pues el que tienes de channel busy ..lo he transformasdo ...al de mathy ,y aplica perfecto , ademas dejas info del por que se anula la opcion.


Código: [Seleccionar]
diff -r 6b71629b673d net/wireless/chan.c
--- a/net/wireless/chan.c Tue May 28 16:57:23 2013 -0400
+++ b/net/wireless/chan.c Tue May 28 17:16:15 2013 -0400
@@ -439,8 +439,10 @@ int cfg80211_set_monitor_channel(struct
 {
  if (!rdev->ops->set_monitor_channel)
  return -EOPNOTSUPP;
- if (!cfg80211_has_monitors_only(rdev))
- return -EBUSY;
+ // Always allow user to change channel, even if there is another normal
+ // virtual interface using the device.
+ //if (!cfg80211_has_monitors_only(rdev))
+ // return -EBUSY;
 
  return rdev_set_monitor_channel(rdev, chandef);
 }