Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: z3nth10n en 16 Agosto 2019, 06:27 am



Título: Como sniffear un websocket?
Publicado por: z3nth10n en 16 Agosto 2019, 06:27 am
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
  1.            using (var ws = new WebSocket("ws://hits.dwyl.io"))
  2.            {
  3.                ws.OnMessage += (sender, e) =>
  4.                    Console.WriteLine(e.Data);
  5.  
  6.                ws.Connect();
  7.                Console.ReadKey(true);
  8.            }

Pero recibo el siguiente error:

Citar
16/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.


Título: Re: Como sniffear un websocket?
Publicado por: MinusFour en 16 Agosto 2019, 07:32 am
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:

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

Y te devuelve un "sid" que luego lo usas

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

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