Tengo un programa C # que hace exactamente esto. Tuve un problema en Server 2008 R2 donde el registro de eventos no siempre enumeraba las direcciones IP del usuario (si se conectaban desde los clientes más nuevos de Escritorio remoto). Algunos servicios implementan su propio proveedor de verificación de credenciales que no proporciona toda la información que desea.
http://cyberarms.net/security-insights/security-lab/remote-desktop-logging-of-ip-address-%28security-event-log-4625%29.aspx
Sin embargo, para el Escritorio remoto descubrí que entrar en "Configuración de host de sesión de Escritorio remoto" y cambiar la conexión RDP-TCP para tener la capa de seguridad de "Capa de seguridad RDP" en lugar de "Negociar" o "SSL (TLS 1.0)" trajo de vuelta el Direcciones IP.
Si realmente desea hacer esto es otra pregunta para usted: "Si selecciona la capa de seguridad RDP, no puede usar la autenticación de nivel de red".
Encontré http://www.windowsecurity.com/articles/logon-types.html útil. Utilicé EventLogWatcher y me uní a "* [System / EventID = 4625 o System / EventID = 4624]" para poder restablecer un recuento incorrecto si el usuario realmente se equivocó de contraseña. También incluí en la lista blanca :: 1, 0.0.0.0, 127.0.0.1 y "-". Es posible que desee o no incluir en la lista blanca direcciones IP de LAN / administración.
Utilizo Forefront TMG, así que utilicé la API para agregar direcciones IP incorrectas a un grupo de IP de esa manera y le pedí a Cisco que agregue acceso API a uno de sus enrutadores SMB (¡lo que me han asegurado que podrían hacer!)
Si desea utilizar el Firewall de Windows nativo para bloquearlos, eche un vistazo a la API para eso ("netsh advfirewall").
Permito x número de intentos antes de prohibir y un éxito restablecerá el conteo.