He estado trabajando en cómo encontrar el uso del mensajero en línea (por ejemplo, imo.im, ebuddy) usando Wireshark. Lo estoy haciendo, ya que necesito crear casos de uso de SIEM (gestión de eventos de información de seguridad) que detecten el uso de web-messenger en línea.
Para hacer un poco de investigación, me puse un par de mensajes en línea y encendí el Wireshark en segundo plano. Después de un par de minutos de navegar por los sitios de mensajería en línea, detuve el Wireshark y fui directo al análisis. Al principio, no encontré nada especial / único que me diga (como usuario) un servicio / protocolo de mensajería en línea que utilicé, ya que todos estos sitios funcionan en http o https.
Sin embargo, a medida que profundizo, encuentro algo interesante. La referencia se da a continuación:
Hypertext Transfer Protocol
HTTP/1.1 200 OK\r\n
**[Expert Info (Chat/Sequence): HTTP/1.1 200 OK\r\n]**
[Message: HTTP/1.1 200 OK\r\n]
[Severity level: Chat]
[Group: Sequence]
Request Version: HTTP/1.1
Status Code: 200
Response Phrase: OK
Content-Encoding: gzip\r\n
Cache-Control: max-age=10800\r\n
Content-Type: text/html; charset=utf-8\r\n
Date: Thu, 24 Jan 2013 17:58:46 GMT\r\n
Expires: Thu, 24 Jan 2013 20:58:46 GMT\r\n
Last-Modified: Thu, 24 Jan 2013 01:07:06 GMT\r\n
p3p: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"\r\n
Server: ECS (fra/D439)\r\n
SVR: SP002B7\r\n
Vary: Accept-Encoding\r\n
X-Cache: HIT\r\n
Content-Length: 387\r\n
\r\n
Content-encoded entity body (gzip): 387 bytes -> 942 bytes
Line-based text data: text/html
He buscado el código src y al lado de PI_CHAT
constante declaración en el archivo de cabecera expert.c
. Si sigo el código en packet-http.c
, veo el siguiente código.
saw_req_resp_or_header = TRUE;
if (is_request_or_reply) {
char *text = tvb_format_text(tvb, offset, next_offset - offset);
if (tree) {
hdr_item = proto_tree_add_text(http_tree, tvb,
offset, next_offset - offset, "%s", text);
}
expert_add_info_format(pinfo, hdr_item, PI_SEQUENCE, PI_CHAT, "%s", text);
if (reqresp_dissector) {
if (tree) req_tree = proto_item_add_subtree(hdr_item, ett_http_request);
else req_tree = NULL;
reqresp_dissector(tvb, req_tree, offset, line,
lineend, conv_data);
A partir del código anterior es difícil comprender en qué condiciones o entrada se establece la variable PI_CHAT
. Además del código, si alguien puede explicar en términos teóricos cómo Wireshark detecta el comportamiento de chat. La teoría que he leído en los sitios oficiales de Wireshark dice que la información de los expertos es detectar cambios que son anormales / anomalías en la naturaleza. Estoy más interesado en saber la parte del 'cómo'.