Dotless IP: Otra forma más de llamar a un host en red

Hoy leía sobre el funcionamiento del malware Zyklon (https://thehackernews.com/2018/01/microsoft-office-malware.html) y me llamó la atención que el malware se descarga el payload final conectándose a una dirección IP “dotless” (por ejemplo http://3627732942).

Las direcciones dotless o direcciones decimales son los valores decimales de las direcciones ipv4 representadas con notación de octetos, pero sin separar en octetos. Suena confuso, pero es que me explico fatal, así que siguiendo las palabras de Confucio: “Me lo contaron y lo olvidé. Lo vi y lo entendí. Lo hice y lo aprendí”, vamos a hacer un ejemplo sencillo para que quede claro convirtiendo la IP más famosa del mundo: 127.0.0.1.

Teniendo en cuenta que son octetos debemos tener en cuenta 8 bits por cada número, así que siendo los valores 127=1111111, 0=0 y 1=1 rellenamos con ceros el resto del octeto para completarlo, quedando así: 01111111.00000000.00000000.00000001

Ya no nos queda casi nada. Eliminamos los puntos, juntamos todo en una cadena larga y lo convertimos a decimal.

01111111000000000000000000000001 = 2130706433

Así que, si lo hemos hecho bien, para acceder a 127.0.0.1 tendríamos que llamar a http://2130706433. Pongámoslo a prueba.


Como se ve, al llamar a la dirección dotless se resolvió como 127.0.0.1, así que nuestra conversión es correcta.

¡Si tienes alguna duda deja tu comentario!

Contribución gracias a 'elvecinodeabajo'

Comentarios

  1. Puedes explicar la siguiente operacion?
    127 * 0x1000000
    Gracias

    ResponderEliminar
    Respuestas
    1. No sé de dónde sacas esa operación, pero entiendo que el 127 en decimal se multiplicaría por el valor de 1000000 en hexadecimal (16777216), porque nos lo indica el sufijo '0x', así que la operación quedaría en:
      127 * 0x1000000 = 127 * 16777216 = 2130706432
      ¿Era esa la duda?

      Eliminar
  2. Nada tiene que ver con hexadecimal. Fue muy clara la explicacion.

    La direccion a convertir a dotless es en este ejemplo: 127.0.0.1
    Cada direccion IPv4 esta basada en 32-bit, 8 bits (1 byte) por cada punto. (8 bits x 4 decimales = 32 bits).

    Para convertir a dotless primero se convierte cada byte de la direccion IPv4 a decimal siguiendo la regla de octetos, es decir, 127 a decimal es 1111111 que para formar el byte completo se le agrega un 0 (cero) a la izquierda y queda 01111111. Lo mismo se hace con los demas bytes.

    Asi quedaria mas claro, siguiendo la tabla inferior de izquierda a derecha...

    IPv4 Byte | Binario | Binario (Octetos) | Decimal IPv4 Dotless
    --------------------------------------------------------------
    127 | 1111111 | 01111111 |
    0 | 0 | 00000000 | 2130706433
    0 | 0 | 00000000 |
    1 | 1 | 00000001 |

    --------------------------------------------------------------
    01111111 00000000 00000000 00000001
    01111111000000000000000000000001 = 2130706433

    ResponderEliminar
    Respuestas
    1. Fijándome ahora mismo me di cuenta de que la operación 127*0x1000000 funciona, porque 2130706432 más el ultimo bit suman 2130706433, que, efectivamente, es la ip dotless de 127.0.0.1.
      Aparte de eso, el comentario es muy apropiado, porque podemos multiplicar el primer octeto por 0x1000000, el Segundo por 0x10000, el tercero por 0x100 y el ultimo por 0x1, sumarlos todos y nos da el resultado correcto. Si queremos hacer un script que calcule las dotless lo tenemos bastante fácil.
      Por otro lado, me alegro de que se entendiera el artículo, aunque veo que no era cosa mía: Es difícil de simplificar para explicar. xD

      Eliminar
  3. IPv4 Decimal | Binario | Binario (Octetos) | Decimal IPv4 Dotless
    --------------------------------------------------------------
    127 | 1111111 | 01111111 |
    0 | 0 | 00000000 | 2130706433
    0 | 0 | 00000000 |
    1 | 1 | 00000001 |

    --------------------------------------------------------------
    01111111 00000000 00000000 00000001
    01111111000000000000000000000001 = 2130706433

    ResponderEliminar

Publicar un comentario