Como sniffear un websocket?

Iniciado por z3nth10n, 16 Agosto 2019, 06:27 AM

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

z3nth10n

Buenas chicos, me gustaría sniffear un websocket por tal de conseguir cierta información (no sensitva) acerca de los hits que reciben ciertos repositorios asociados a un servicio de terceros el cual expone dicha información, con el único propósito de analizar esa información, crear un ranking y analizar ciertas tendencias e información estadística de repositorios en Github.

Explicado mi propósito, os comento el problema que tengo... Resulta ser que  he tirado por el camino sencillo y me he buscado un cliente de Websockets, el cual se conecte a un servidor, en C#.

Aquí está la url donde se expone dichos datos: http://hits.dwyl.io, como véis en el source code se está utilizado Socket.io para conectarse a dicho websocket. En la consola se muestra un error 400 (donde se muestra con una clave/sid de acceso: "ws://hits.dwyl.io/socket.io/?EIO=3&transport=websocket&sid=6qKFrfR_NwJSJwqPAAOL", de esta clave hablaremos ahora después).

La cosa está en que yo en C#, estoy usando esta lib (https://github.com/sta/websocket-sharp#websocket-client), la cual tiene un ejemplo claro.

He intentado conectar el websocket a esta uri: "ws://hits.dwyl.io"

Código (csharp) [Seleccionar]

           using (var ws = new WebSocket("ws://hits.dwyl.io"))
           {
               ws.OnMessage += (sender, e) =>
                   Console.WriteLine(e.Data);

               ws.Connect();
               Console.ReadKey(true);
           }


Pero recibo el siguiente error:

Citar16/08/2019 6:16:12|Fatal|WebSocket.doHandshake|Not a WebSocket handshake response.

Googleando un poco, todo apunta a que se requiere algún tipo de SSID/key para poder acceder a la petción o algo, he estado mirando el source code de socket.io (https://github.com/socketio/socket.io/blob/e0b2cb0c5a9af768a48c43f65643412cc8edc7df/docs/API.md y la documentación), pero sin suerte, no he encontrado nada relevante, ni si quiera definiciones de eventos como aquí ponen (http://hits.dwyl.io/client.js) "news" o "hits". Ni si quiera he encontrado algo en una base de datos de exploit para la version 2.0.3 de socket.io... Así que por ese motivo, dejo que me guiéis en este rompecabezas, para ver que podría hacer al respecto.

Un saludo.

Interesados hablad por Discord.

MinusFour

Ese servidor websocket tiene problemas. Por otro lado, no necesitas usar websocket, la misma pagina usa un modo secundario de socket.io, polling que hace una petición cada tantos segundos. Primero cargas está URL:


http://hits.dwyl.io/socket.io/?EIO=3&transport=polling


Y te devuelve un "sid" que luego lo usas


http://hits.dwyl.io/socket.io/?EIO=3&transport=polling&sid=xxxxxxx


Y ahi es cuestión de estar refrescando cada tanto.