Direkt ein Tool dafür kenn ich nicht, hab mir für meinen Headerbanner allerdings eben diese Funktion erstellt.

Statt auf die Ziel URL zu linken, wird beim Klick zuerst auf eine interne Datei geleitet (mittels TAN) , dort wird dann IP, ggf. userid oder Nickname sowie Zeit mitgeloggt.
Wenn alles ok ist erfolgt sofortige Weiterleitung zum eigentlichen Ziel der Kampagne.

PHP-Code:
<?
if (!$_SERVER['HTTP_REFERER']) die();

@require_once ('lib/functions.lib.php');
@db_connect();
@require_once ('lib/session.lib.php');
$tan = addslashes($_GET['tan']);
// habe hier meine eigene Header Tabelle, nicht vms_gebuchte_werbung!

$werbung = mysql_fetch_assoc(db_query("SELECT tan,ziel,sponsor FROM vms_headerwerbung WHERE tan = '".$tan."' LIMIT 1"));
db_query("UPDATE vms_headerwerbung SET klicks = klicks + 1 WHERE tan = '".$werbung['tan']."'");

if ($_SESSION['uid'] > 0) {
$userid = $_SESSION['uid'];
} else {
$userid = 0;
}

 $dateiinhalt = ''.$userid.' - '.$ip.' - '.$werbung['ziel'].' - '.date("d.m.Y - H:i:s", time()).''."\n";
 $datei = fopen("headerdatei.txt","a");
 fwrite($datei, $dateiinhalt);
 fclose($datei);
 db_close();

header("Location: ".$werbung['ziel']);
?>
Man muss hier nur das Auslesen der Kampagne anpassen, da ich dort ne andere Tabelle hab. Ebenso für den Query danach, der klicks+1 rechnet (User können sehen wie oft auf ihre gebuchten Kampagnen geklickt wurde)

Den Namen der erstellten Logdatei würd ich natürlich ändern, damit andere nicht draufschauen können oder per CHMOD den Zugriff unterbinden.

MFG