¿Quién te choco? Hackeando Patentes

  • 27 Respuestas
  • 20492 Vistas

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado hdbreaker

  • *
  • Ex-Staff
  • *****
  • Mensajes: 411
  • Actividad:
    0%
  • Reputación 0
  • HD_Breaker
  • Skype: hdbreaker96
  • Twitter: @SecSignal
    • Ver Perfil
    • Security Signal
    • Email

¿Quién te choco? Hackeando Patentes

  • en: Febrero 06, 2015, 01:27:07 am
You are not allowed to view links. Register or Login
by hdbreaker


Hace algún tiempo tuve la mala fortuna de estar envuelto en un accidente de trafico algo grave, donde yo por viajar en moto, me lleve la peor parte. Totalmente en contra a lo que esperaba, el responsable del accidente no se detuvo a asistirme, por su parte prefirió darse a la fuga.

Luego de todos los protocolos médicos, unos cuantos moretones y tras no encontrar respuestas en la policía por falta de testigos, decidí comenzar una búsqueda personal de identificación del vehículo con el único dato que había logrado divisar en el golpe.
###su numero de patente###

Por cuestiones de confidencialidad no utilizare la patente real del agresor sino una que alcance a leer en el registro del automotor mientras realizaba los tramites del seguro.


¿La pregunta?

Existe algún sistema que me permita consultar los datos y el estado de un vehículo que transita en la calle actualmente? La respuesta es si!


Luego de algunas consultas a google, logre dar con un servicio de Rentas en la provincia de Buenos Aires que nos permite consultar el estado de deuda de patentes de un vehículo.


You are not allowed to view links. Register or Login


El mismo tiene dos formas de funcionar, si no eres el propietario solamente puedes obtener los datos correspondiente a deudas sobre el automóvil pero el sistema no te permite acceder a las secciones que identifica a la persona registrada en el Registro del Automotor como titular del vehículo.


Por otro lado, para comprobar la titularidad del vehículo, el sistema solicita ingresar un numero de verificación especial único que solo el dueño del automóvil debe poseer, ya que el mismo sirve para imprimir boletas de pago de deudas que incluyen los datos personales del propietario del automotor, de esta forma garantiza la privacidad de los datos de los usuarios.

You are not allowed to view links. Register or Login

Lo primero que podemos analizar en el sitio, es que el dígito especial y verificador del sistema, solo acepta valores que van desde 00 a 99 (el valor no es tan único como uno cree)


En fin, la patente a estudiar en esta entrada sera JMO089, luego de realizar algunas pruebas manuales podemos apreciar que el captcha del sistema nunca es actualizado una vez que nos encontramos asociado a una sesión, permitiéndonos probar de forma manual las 99 combinaciones posibles hasta dar con la correcta.



You are not allowed to view links. Register or Login


En la imagen podemos apreciar que el captcha no cambia a medida que vamos probando posibles combinaciones numéricas hasta lograr dar con el correcto, por lo que da la posibilidad de programar un Brute Forcer que valla probando todos los valores posibles hasta dar con el indicado. Pero un ataque así representa un problema al tener que enfrentarnos con un captcha, cosa que no estaba dispuesto por una falta de tiempo para programar un You are not allowed to view links. Register or Login.

La pregunta que me formule fue:

Cual es la forma en que el sistema valida el valor correcto del dígito verificador?

Lo primero que pensé es que el sistema validaba el valor del lado del servidor luego de la consulta, por lo que me puse a comprobar las peticiones que realizaba el sitio al momento de enviar el formulario. Para esto utilice Live HTTP headers


You are not allowed to view links. Register or Login


Al encontrarme con esto, no podía creer lo que estaba viendo, técnicamente hablando si una validación no presenta una petición web hacia el Backend, quiere decir que la validación se esta realizado del lado del cliente osea:

EL SISTEMA VALIDA POR JAVASCRIPT!

Esto implica que el algoritmo de validación del código verificador se encuentra servido en algún archivo javascript del lado del navegador, por lo que me puse a analizar el source html del documento para lograr identificar algún indicio de la validación. Lo primero que analice fueron los siguientes archivos:



You are not allowed to view links. Register or Login

Dentro del archivo consultaDatos.js encontré la siguiente función con un nombre revelador: validaDatos

You are not allowed to view links. Register or Login
if (!check.checked && patente.valido(dom1) != true)

En la misma función se puede apreciar  en las lineas remarcadas la estructura donde se decide el mensaje de patente valida cumpliendo los requisitos de que el checkbox se encuentre marcado y el resultado de la función patente.valido() sea el necesario para resolver de forma correcta la estructura de decisión if().


El problema resulto que la función patente.valido() no se encontraba dentro del mismo documento, por lo que debía encontrar el fichero donde se encontraba la misma.

Para lo que no conozcan el funcionamiento de javascript, les aclaro que los ficheros js representan un gran código estructurado dividido en distintos archivos para mejorar su organización, pero siempre que estos archivos sean incluidos en el html los mismos pueden realizar llamadas a las funciones definidas entre ellos como si todos fueran miembros de la misma clase.


Luego de buscar un poco, llegue al siguiente archivo:

You are not allowed to view links. Register or Login

Dentro del mismo podemos obtener la estructura del código validador:

You are not allowed to view links. Register or Login

Función Completa: You are not allowed to view links. Register or Login

Luego de analizar detenida mente el código pude develar el comportamiento final del mismo.

El código calcula el dígito verificador en base a la patente del vehículo, sustituyendo las letras por números especiales para formar una cadena decimal, que luego suma según su indice, pares por un lado e impares por otro, como si de un array se tratase.


You are not allowed to view links. Register or Login

Luego si estos valores separados (digi1 y digi2) tienen un largo superior a un dígito (0 a 9), vuelve a sumarlos respectivamente hasta obtener 2 números de forma independiente con un largo de un dígito (0 a 9).


Y luego los concatena para obtener el numero mágico verificador:
You are not allowed to view links. Register or Login

Lo que resulta algo cómico es que esta función no tiene ninguna protección, y puede ser llamada desde la consola de desarrollo de Google Chrome o Firefox:

You are not allowed to view links. Register or Login
Con este numero verificador podemos realizar la consulta de forma exitosa:

You are not allowed to view links. Register or Login

Al momento de solicitar una factura podemos apreciar los datos personales como el nombre del titular registrado y la dirección residencial del mismo:

You are not allowed to view links. Register or Login

Realizando un poco de ingienería inversa desarrolle el siguientes scripts que permiten calcular cualquier dígito verificador solo con el numero de patente:
(Próximamente estaré agregando su versión en Python desarrollada por [Q]3rv[0]):

Ruby:


Código: You are not allowed to view links. Register or Login
require 'colorize' #by hdbreaker

class Calculate

  def initialize()
    #inicializo array asociativo de clase
    @letrasValidas ={'A' => '14','B' => '01','C' => '00','D' => '16','E' => '05','F' => '20','G' => '19',
                     'H' => '09','I' => '24','J' => '07','K' => '21','L' => '08','M' => '04','N' => '13',
                     'O' => '25','P' => '22','Q' => '18','R' => '10','S' => '02','T' => '06','U' => '12',
                     'V' => '23','W' => '11','X' => '03','Y' => '15','Z' => '17',' ' => '60',};
  end

  #Funcion para calcular el numero de patente
  def calculate(patente)
    patAux = patente.upcase;
    pares = 0;
    impares = 0;

    #Bloque para sustituir las letras por los numeros correspondisntes
    @letrasValidas.each { |key|
      if(patAux.include? key[0])
        patAux = patAux.gsub(key[0], key[1]);
      end
    }

    #Sumo los imares por un lado y los pares por el otro
    for x in (0...patAux.length)
      if (x % 2 == 0)
        pares += patAux
  • .to_i;[/li][/list]
          else
            impares += patAux
  • .to_i;[/li][/list]
          end
        end

        #Si la sumatoria de los pares da un numero mayor a 1 digito, los sumo nuevamente hasta obtener 1 digito
        digi1 =pares.to_s;
        while (digi1.length > 1)
          pares = 0;
          for x in (0...digi1.length)
            pares += digi1
  • .to_i;[/li][/list]
          end
          digi1 = pares.to_s;
        end

        #Si la sumatoria de los impares da un numero mayor a 1 digito, los sumo nuevamente hasta obtener 1 digito
        digi2 =impares.to_s;
        while (digi2.length > 1)
          impares = 0;
          for x in (0...digi2.length)
            impares += digi2
  • .to_i;[/li][/list]
          end
          digi2 = impares.to_s;
        end

        ###############Salida en Pantalla###############
        puts "\n############## Rentas Ciudad de Buenos Aires ##############".green
        puts "URL: ".green+"https://lbserver02.agip.gob.ar/ConsultaPat/index.html".red
        puts "Dominio: ".green+patente.red
        puts "Verificador: ".green+digi1.red+""+digi2.red
        puts "\n"
      end
    end

    if(ARGV.length==1)
      obj = Calculate.new()
      obj.calculate(ARGV[0].to_s)
    else
      puts "Usage: ruby calculate.rb [patente]"
    end


    You are not allowed to view links. Register or Login


    Espero que esta entrega sirva para concientizar sobre la seguridad de nuestros datos personales, ya que recordemos que el fallo se encuentra en una red gubernamental que expone de forma descarada los datos personales de las personas.

    Y si eres conductor... no vallas por la calle creyéndote intocable, nunca sabes con quien te puedes cruzar ni para que pueda utilizar tus datos, tal vez te encuentres con una persona que en vez de reportar el fallo utilice tu información para encontrarte, ir hacia tu casa y romperte las piernas.

    Saludos!

    Fuente: You are not allowed to view links. Register or Login
« Última modificación: Febrero 06, 2015, 05:52:30 pm por Expermicid »

Ser Libres es un Privilegio por el cual pocos estamos dispuestos a correr el riesgo

Desconectado kity54

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

Re:¿Quién te choco? Hackenado Patentes

  • en: Febrero 06, 2015, 05:22:24 am
Interesante aporte, buscaba algo asi y no lo pude encontrar !!

Desconectado MagoAstral

  • *
  • Underc0der
  • Mensajes: 115
  • Actividad:
    0%
  • Reputación 0
  • Nada resulta más engañoso que un hecho evidente.
    • Ver Perfil

Re:¿Quién te choco? Hackenado Patentes

  • en: Febrero 06, 2015, 05:14:45 pm
Muy interesante, la verdad lo leere cuando tenga tiempo. Eres de las personas que mas valoro sus aportes en esta comunidad me gusta sobre todo  a parte de la presentación que su contenido es atractivo me quito el sombrero antes usted.
Un saludo!
Lo que sabemos es una gota de agua; lo que ignoramos es el océano.

Desconectado hdbreaker

  • *
  • Ex-Staff
  • *****
  • Mensajes: 411
  • Actividad:
    0%
  • Reputación 0
  • HD_Breaker
  • Skype: hdbreaker96
  • Twitter: @SecSignal
    • Ver Perfil
    • Security Signal
    • Email

Re:¿Quién te choco? Hackenado Patentes

  • en: Febrero 06, 2015, 05:57:38 pm
You are not allowed to view links. Register or Login
Muy interesante, la verdad lo leere cuando tenga tiempo. Eres de las personas que mas valoro sus aportes en esta comunidad me gusta sobre todo  a parte de la presentación que su contenido es atractivo me quito el sombrero antes usted.
Un saludo!

Muchas gracias! y gracias a todos los lectores q valoran el trabajo de un researcher, da gusto compartir información y estudiar nuevas vulnerabilidades o simplemente curiosidades cuando los lectores agradecen, comparten o simplemente dan su opinion al respecto, creo q una comunidad esta para eso, para que entre todos podamos obtener una vista mucho mas objetiva y profesional sobre un fallo! Te invito pases a mi blog!

Ser Libres es un Privilegio por el cual pocos estamos dispuestos a correr el riesgo

Desconectado Jimeno

  • *
  • Ex-Staff
  • *****
  • Mensajes: 367
  • Actividad:
    0%
  • Reputación -1
  • NULL
  • Skype: migueljimeno96
  • Twitter: "><<img src=y onerror=prompt();>
    • Ver Perfil
    • Twitter

Re:¿Quién te choco? Hackeando Patentes

  • en: Febrero 06, 2015, 06:31:11 pm
Madre mía, menuda ñapa hacer eso desde el lado del cliente... jajajaja. Enorme la idea de automatizarlo, HD!
Contacto: @migueljimeno96 -

Desconectado hdbreaker

  • *
  • Ex-Staff
  • *****
  • Mensajes: 411
  • Actividad:
    0%
  • Reputación 0
  • HD_Breaker
  • Skype: hdbreaker96
  • Twitter: @SecSignal
    • Ver Perfil
    • Security Signal
    • Email

Re:¿Quién te choco? Hackeando Patentes

  • en: Febrero 06, 2015, 07:17:44 pm
You are not allowed to view links. Register or Login
Madre mía, menuda ñapa hacer eso desde el lado del cliente... jajajaja. Enorme la idea de automatizarlo, HD!
En el blog esta el codigo en Python tambien!

Ser Libres es un Privilegio por el cual pocos estamos dispuestos a correr el riesgo

Desconectado - ALEAJANDRO -

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

Re:¿Quién te choco? Hackeando Patentes

  • en: Agosto 08, 2015, 01:45:57 am
Terrible post! Es increíble todo, desde encontrar la vulnerabilidad, explotarla y encima automatizarla!  ;D
Sin duda fue un excelente trabajo!

Desconectado rush

  • *
  • Underc0der
  • Mensajes: 383
  • Actividad:
    0%
  • Reputación 7
  • Skype: iruxh1773
    • Ver Perfil

Re:¿Quién te choco? Hackeando Patentes

  • en: Agosto 08, 2015, 02:24:53 am
Tremendo post!!!! Felicidades muy buen aporte, aca en mexico es diferente ya que para consultar necesitas el numero de matricula mas aparte los ultimos tres digitos(dependiendo de la ciudad) de el numero de tarjeta de circulacion del vehiculo estos numeros son unicos y no se de que manera se calcula un numero de circulacion, pero felicidades me gusto bastante.
You are not allowed to view links. Register or Login


Desconectado c0n

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

Re:¿Quién te choco? Hackeando Patentes

  • en: Agosto 08, 2015, 05:29:56 pm
Estos posts en forma de relato son cojonudos. Me pregunto qué otros sitios institucionales de allí tienen la misma implementación...

Kudos hdbreaker

Desconectado erdosain9

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

Re:¿Quién te choco? Hackeando Patentes

  • en: Septiembre 17, 2015, 04:54:22 pm
Esto está muy bueno! Peeero me genera este error

/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- colorize (LoadError)
   from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
   from funca.rb:1:in `<main>'


Alguna idea???? saludos y muchas gracias!

pd; le saqué la primer línea del código y me genera entonces este error
funca.rb:56:in `calculate': undefined method `green' for "\n############## Rentas Ciudad de Buenos Aires ##############":String (NoMethodError)
   from funca.rb:66:in `<main>'

Desconectado hdbreaker

  • *
  • Ex-Staff
  • *****
  • Mensajes: 411
  • Actividad:
    0%
  • Reputación 0
  • HD_Breaker
  • Skype: hdbreaker96
  • Twitter: @SecSignal
    • Ver Perfil
    • Security Signal
    • Email

Re:¿Quién te choco? Hackeando Patentes

  • en: Octubre 01, 2015, 02:04:36 am
You are not allowed to view links. Register or Login
Esto está muy bueno! Peeero me genera este error

/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- colorize (LoadError)
   from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
   from funca.rb:1:in `<main>'


Alguna idea???? saludos y muchas gracias!

pd; le saqué la primer línea del código y me genera entonces este error
funca.rb:56:in `calculate': undefined method `green' for "\n############## Rentas Ciudad de Buenos Aires ##############":String (NoMethodError)
   from funca.rb:66:in `<main>'

Huep! Sorry por la respuesta, no ando muchos por estos pagos, el problema lo tienes porq te falta la gema colorize, prueba:

sudo gem install colorize

y cuando termine la instalación, vuelve a ejecutar el código. Saludos!

Ser Libres es un Privilegio por el cual pocos estamos dispuestos a correr el riesgo

Desconectado karancho

  • *
  • Underc0der
  • Mensajes: 8
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

Re:¿Quién te choco? Hackeando Patentes

  • en: Octubre 05, 2015, 12:09:12 pm
Excelente nota.

Muy didáctica, muy bien explicada.

Estimado, le solicito permiso para desarrollarla como ejemplo, con fuente, por supuesto, en mis clases de capacitación.

Pienso que puede servir especialmente para motivar a que las personas aprendan la importancia de entender Javascript, Ruby y las herramientas de desarrollo del navegador, de una forma amena y divertida.

Desconectado hdbreaker

  • *
  • Ex-Staff
  • *****
  • Mensajes: 411
  • Actividad:
    0%
  • Reputación 0
  • HD_Breaker
  • Skype: hdbreaker96
  • Twitter: @SecSignal
    • Ver Perfil
    • Security Signal
    • Email

Re:¿Quién te choco? Hackeando Patentes

  • en: Octubre 11, 2015, 12:35:04 am
You are not allowed to view links. Register or Login
Excelente nota.

Muy didáctica, muy bien explicada.

Estimado, le solicito permiso para desarrollarla como ejemplo, con fuente, por supuesto, en mis clases de capacitación.

Pienso que puede servir especialmente para motivar a que las personas aprendan la importancia de entender Javascript, Ruby y las herramientas de desarrollo del navegador, de una forma amena y divertida.

Si karancho, no tengo problema, un gusto que compartas mis estudios, pensamiento distribuido y open source es lo que le falta al mundo.

PD: Eres karancho de Lugmen Mendoza? de ser así hemos compartido mesa en algun momento de la vida, saludos!

Ser Libres es un Privilegio por el cual pocos estamos dispuestos a correr el riesgo

Desconectado willymtx

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

Re:¿Quién te choco? Hackeando Patentes

  • en: Noviembre 27, 2015, 05:08:17 pm
Un excelente aporte. sigue asi y muchos exitos...!

Desconectado ragnar

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

Re:¿Quién te choco? Hackeando Patentes

  • en: Mayo 16, 2016, 02:14:42 pm
Excelente post!!!  además bien explicado y detallado

Enviado desde mi GT-I9300 mediante Tapatalk


Desconectado TioNacho

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

Re:¿Quién te choco? Hackeando Patentes

  • en: Mayo 16, 2016, 03:26:00 pm
la unica palabra que puedo decir esto es "IMPRESIONANTE" y la duda que tengo es
para que usaste sus datos personales? tiene las piernas rotas?

Desconectado jona872

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

Re:¿Quién te choco? Hackeando Patentes

  • en: Junio 11, 2016, 04:13:07 pm
Genial! mas allá del (conocimiento + ganas de compartir), el enfoque de fallo de vulnerabilidad que le das, cuando comúnmente esta todo plagado de "vamos a hachear y romper todo" (que es lo que busca la mayoría de la gente).


Slds!
« Última modificación: Junio 11, 2016, 05:36:12 pm por jona872 »

Desconectado N0M4D3

  • *
  • Underc0der
  • Mensajes: 9
  • Actividad:
    0%
  • Reputación 0
  • Skype: Dark_OW3
    • Ver Perfil
    • Email

Re:¿Quién te choco? Hackeando Patentes

  • en: Junio 16, 2016, 10:28:45 am
sinceramente, muy buen aporte, aunque soy un novato todavía (y siempre lo seré  ;D) me atrapo la forma de explicar que tienes la facilidad con la que me ayudo a entender lo que hiciste es increíble... muy buen aporte gracias por compartirlo :D ;D

Desconectado Abnormality

  • *
  • Underc0der
  • Mensajes: 392
  • Actividad:
    0%
  • Reputación 0
  • %SystemRoot%
    • Ver Perfil
    • Email

Re:¿Quién te choco? Hackeando Patentes

  • en: Junio 16, 2016, 04:26:58 pm
You are not allowed to view links. Register or Login
sinceramente, muy buen aporte, aunque soy un novato todavía (y siempre lo seré  ;D) me atrapo la forma de explicar que tienes la facilidad con la que me ayudo a entender lo que hiciste es increíble... muy buen aporte gracias por compartirlo :D ;D

No te tires para abajo, todos empezamos siendo novatos!

Desconectado fecauded

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

Re:¿Quién te choco? Hackeando Patentes

  • en: Julio 01, 2016, 07:36:22 pm
grandioso es leer estos aporte por parte de usted , saludos
maneje con cuidado

 

[Metasploit] Hackeando XAMPP Remotamente (Windows XP - 7 - 8)

Iniciado por CalebBucker

Respuestas: 4
Vistas: 6258
Último mensaje Diciembre 23, 2012, 10:08:37 pm
por CalebBucker