Obteniendo Datos Analizando Peticiones HTTP

Este es un pequeño código PHP que muestra cómo recabar datos sobre un cliente analizando las peticiones HTTP que el mismo realiza.

La idea es generar un servicio que, al recibir una petición HTTP, devuelva una imagen. Pero que, además, deje registro de la fecha y hora, la dirección IP del cliente que realizó la petición, y el User-Agent del mismo.

Teniendo esto, podemos adjuntar dicha imagen a, por ejemplo, un correo electrónico, para que cuando alguien abra dicho correo, su cliente realice la petición de la imagen al servidor, y quede registro de lo sucedido.

<?php

$logfile = 'log.txt';

$date = date('Y/m/d H:i:s');

$ipaddr = $_SERVER['REMOTE_ADDR'];

$uagent = htmlentities($_SERVER['HTTP_USER_AGENT']);

$logstring = "$date - $ipaddr - $uagent\n";

file_put_contents($logfile,$logstring, FILE_APPEND);

header('Content-Type: image/jpeg'); readfile('image.jpg');

?>

Podemos acceder a una versión hosteada en Runnable de este código aquí http://code.runnable.com/VpkevIx3DvkIq5HR/spy-for-php.

Nota: En el caso del código hosteado en Runnable, la IP pública que van a ver no será la de ustedes. Esto es debido a la configuración de la infraestructura de red.

Obviamente, este programa es extremadamente básico, pero sirve para demostrar el concepto. Por otra parte, teniendo la dirección IP y el User-Agent del cliente, podemos utilizar otros servicios para obtener muchos más datos del mismo, como:

  • País de Origen
  • Proveedor de Internet
  • Vulnerabilidades en el Software

Para el país de origen y el proveedor de internet, podemos utilizar algún servicio como el de MaxMind http://www.maxmind.com, que es gratuito y no requiere registro.

Para buscar vulnerabilidades, disponemos de varios servicios, como:

http://www.securityfocus.com

http://www.exploit-db.com

https://nvd.nist.gov

Esto es todo por ahora. Espero que les sirva de utilidad, tanto el código como las explicaciones.

Escrito por: Fabian Martínez Portantier