LA DANZA DE MAC’S Y TIPOS DE TRAMA

Posted by Star | Posted in | Posted on 20:32

No puedo terminar esta parte sin comentar algo que es muy importante a la hora de analizar el tráfico de tramas de datos.

Como dije al comienzo de este documento, cuando existen datos a transmitir, o mejor dicho, cuando el tipo de trama en la FC es de datos (10) las direcciones MAC “bailan” dependiendo de si están activos o no los bits toDS y FromDS, te pongo una imagen que vale mas que mil palabras:


Y un ejemplo general…


Un
cliente envía un ping al punto de de acceso, por tanto toDS está a uno (1) y FromDs estará a cero (0)
    En la cabecera MAC de la trama las direcciones MAC1, Mac2 y Mac3 serían: MAC1 = BSSID (la MAC del punto de acceso) MAC2 = Origen (la MAC del cliente) MAC3 = Destino (la MAC del punto de acceso
Ahora el punto de acceso respondeFromDS = 1 y ToDS=0
    MAC1= Destino (la MAC del cliente) MAC2= BSSID (la MAC del punto de acceso) MAC3= Origen (la MAC del punto de acceso)
Observa que en este caso no es el consabido destino-origen-bssid, realmente esto sólo se cumple cuando ToDS y FromDS están a cero (comunicación ad-hoc o por ejemplo, tramas de administración)

También puedes pensar que para qué 3 MAC’s?? si la comunicación es entre dos… claro, cuando la comunicación es entre punto de acceso y cliente (exclusivamente) pues es como “raro”, pero imagina que la comunicación es entre dos clientes inalámbricos… por ejemplo STA-01 hace un ping a STA-99

STA-01 enviará una trama de datos hacia el punto de acceso pero con destino a STA-99, bits toDS a 1 y FromDS a 0
    MAC1 = BSSID (mac del punto de acceso) MAC2 = Origen (mac de STA-01) MAC3 = Destino (mac de STA-99)
El punto de acceso enviará los datos a STA-99 con bit toDS a 0 y FromDS a 1
    MAC1 = Destino (Mac de STA-99) MAC2 = BSSID (Mac del punto de acceso) MAC3 = Origen (Mac de STA-01)
STA-99 recibe el paquete y responde al ping… lo enviará hacia el sistema de distribución con destino a STA-01 (bit FromDS =0 y toDS=1)
    MAC1= BSSID (mac del punto de acceso) MAC2 = Origen (MAC de STA-99) MAC3 = Destino (MAC de STA-01)
Por último, el punto de acceso envía el paquete a STA-01 con bits FormDS=1 y toDS=0
    MAC1 = Destino (Mac de STA-01) MAC2 = BSSID (Mac del punto de acceso) MAC3 = Origen (Mac de STA-99)
No olvides esto!!! Será importante a la hora de “colocar” bien las MAC’s cuando usemos herramientas del tipo aircrack-ng o las nuestras propias.

Para saber si una trama viaja desde o hacia el sistema de distribución (y así colocar las mac’s en su orden correcto) sólo tendremos que comprobar el byte 1 de Frame Control, imagina que capturas una trama de datos que es algo así:


  Código:
08 42 2c 00 00 00 1d …….


Lo que tendremos que hacer es “analizar” el segundo byte de la FrameControl, por ejemplo, para saber si FromDS está activado:

Supongamos que tenemos un array llamado paquete[] que tiene todos y cada uno de los valores de la trama, de tal modo:


  Código:
paquete[0]=0x08 paquete[1]=0x42 paquete[2]=0x2c y así hasta el final…


El que nos interesa es paquete[1], si hacemos un AND con 0x01 ó con 0x02 obtendremos 1 ó 2 dependiendo del estado de toDS y de FromDS:


  Código:
If paquete[1] AND 0x02 = 0x02 entonces es un paquete FromDS activado If paquete[1] AND 0x01 = 0x01 entonces es un paquete toDS activado


También podríamos comprobarlo así:


  Código:
Estado= paquete[1] AND 0x03 Switch (Estado) {    Case 0: es un paquete con FromDS y TodS a cero, probablemente de una        Una estación a otra estación (modo as-hoc)    Case 1: Es un paquete con FromDS a cero y ToDS a uno, probablemente de        Un cliente al punto de acceso    Case 2: Es un paquete con FromDS a uno y toDS a cero, probablemente de         Un punto de acceso a un cliente    Case 3: Es un paquete con FromDs a uno y ToDS a uno, probablemente de Un punto de acceso a otro punto de acceso (modo wds) }


Así mismo, si deseáramos averiguar si se trata de una trama de datos, podríamos hacer algo asi:


  Código:
   If paquete[0] AND 0x0c = 0x08 se trata de un paquete de datos    If paquete[0] AND 0x0c = 0x00 se trata de una trama de administración    If paquete[0] AND 0x0c = 0x04 se trata de un trama de control


Observa que ahora se analizó el byte cero del paquete correspondiente.

Para saber si un paquete es QoS o no, también comprobaremos el byte cero.


  Código:
   If paquete[0] AND 0x80 = 0x80 se trata de un paquete QoS


Esto viene a cuento porque en el momento que estemos preparados, vamos a crear pequeños “programas” para poder analizar el tráfico y/o enviar tramas “a nuestro gusto”.

Comments (0)

Publicar un comentario