¡Bienvenid@ a La bloguera.net! Iniciar sesión | ÚNETE a la web | Ayuda

Gabriel Carreras

Plataformas Microsoft. Recopilacion de Post Interesantes...
Análisis de logs de IIS utilizando Log Parser
Log Parser es una herramienta que permite analizar gran cantidad de datos de forma muy eficiente utilizando una sintaxis similar a SQL. Log Parser soporta una serie de formatos de entrada y de salida, estos son algunos:

 

FORMATOS DE ENTRADA

(W3C) - Logs de IIS

(HTTPERR) - Logs de HTTP.sys

(EVT) - Logs de eventos NT

(ETW) - Logs de ETW

(URLSCAN) - Logs de URLSCAN

(NETMON) - Trazas de Network Monitor

(XML) - Ficheros XML genéricos

(TEXTWORD) – Ficheros TXT genéricos

Etc.

FORMATOS DE SALIDA

(NAT) - Columnas Tabuladas

(CSV) - Comma Separated Value

(TSV) - Tab Separated Value

(XML) - XML

Etc.

 

 

 

 

 

Para el análisis de logs de IIS, una de las grandes cualidades de Log Parser es que se pueden realizar consultas sobre múltiples ficheros de log simultáneamente (por ejemplo, la carpeta entera de logs de IIS) de forma que podemos filtrar y agregar varios GB de datos y obtener sólo la información que nos interesa.

 

A mí personalmente me resulta más cómodo guardar las queries de Log Parser en ficheros *.bat dado que habitualmente hay que hacer pequeñas modificaciones y es fácil que se nos cuele algún error de sintaxis, y localizarlo y corregirlo en una consola de comandos CMD.EXE puede ser un poco tedioso.

 

A continuación os muestro algunos ejemplos de consultas de Log Parser que me han resultado útiles en alguna ocasión analizando logs de IIS. Dado que Log Parser no permite incluir retornos de carro en la cadena que contiene la query, las consultas se hacen menos legibles. Espero que aún así, los ejemplos sean los suficientemente claros.

 

¿Qué paginas tardan más tiempo en ejecutarse?

CONSULTA:

C:\program files\log parser 2.2>logparser.exe "SELECT COUNT(*) As Hits, AVG(time-taken) As AverageTimeTaken, MAX(time-taken) As MaxTimeTaken, TO_LOWERCASE(cs-uri-stem), sc-status, sc-substatus INTO [nombre_fichero_salida].txt FROM [ruta_completa_logs_IIS]\ex*.log GROUP BY TO_LOWERCASE(cs-uri-stem), sc-status, sc-substatus HAVING Hits > 500 ORDER BY AverageTimeTaken DESC"  -i:IISW3C -o:NAT -rtp:-1

 

RESULTADO:

Hits AverageTimeTaken MaxTimeTaken TO_LOWERCASE(cs-uri-stem)           sc-status sc-substatus

---- ---------------- ------------ ----------------------------------- --------- ------------

13   58496            388546       /index.html                         401       5

60   2860             35577        /delegconfig/default.aspx           200       0

28   1481             10874        /delegconfig/default.aspx           401       5

13   1328             1328         /                                   401       2

13   299              734          /delegconfig                        401       2

26   35               578          /delegconfig/default.aspx           401       2

12   33               78           /index.html                         200       0

13   29               93           /delegconfig/wrkstainfo.dll         200       0

14   26               62           /delegconfig/images/information.gif 200       0

13   22               109          /delegconfig/scripts/images.js      200       0

 

 

Extraer todos los errores HTTP registrados

CONSULTA:

C:\program files\log parser 2.2>logparser.exe "SELECT cs-uri-stem, cs-method As meth, sc-status As stat, sc-substatus As substat, WIN32_ERROR_DESCRIPTION(sc-win32-status) as sc-win32-desc INTO [nombre_fichero_salida].txt FROM [ruta_completa_logs_IIS]\ex*.log WHERE sc-status BETWEEN 400 AND 599"  -i:IISW3C -o:NAT -rtp:-1

 

RESULTADO:

cs-uri-stem               meth stat substat sc-win32-desc

------------------------- ---- ---- ------- ---------------------------------------------------

/DelegConfig/Default.aspx GET  401  2       No credentials are available in the security pack…

/DelegConfig/Default.aspx GET  401  1       The operation completed successfully.

/DelegConfig/SetSPN.aspx  POST 401  1       The operation completed successfully.

/prueba/                  GET  403  14      Access is denied.

/DelegConfig              GET  401  2       No credentials are available in the security pack…

/DelegConfig              GET  401  1       The operation completed successfully.

/iisadmpwd/anot3.asp      GET  404  0       The operation completed successfully.

/DelegConfig              GET  401  2       No credentials are available in the security pack…

/DelegConfig              GET  401  1       The operation completed successfully.

/DelegConfig/Default.aspx GET  404  2       The operation completed successfully.

 

 

Extraer todas las peticiones que se han realizado desde una IP específica

CONSULTA:

C:\program files\log parser 2.2>logparser.exe "SELECT date, time, time-taken, c-ip, cs-uri-stem, sc-status INTO [nombre_fichero_salida].txt FROM [ruta_completa_logs_IIS]\ex*.log WHERE c-ip = '157.58.114.46'" -i:IISW3C -o:NAT -rtp:-1

 

RESULTADO:

date       time     time-taken c-ip          cs-uri-stem                            sc-status

---------- -------- ---------- ------------- -------------------------------------- ---------

2007-08-21 13:19:20 15         157.58.114.46 /DelegConfig/Images/Information.gif    200

2007-08-21 13:19:21 15         157.58.114.46 /DelegConfig/Images/Warning.gif        200

2007-12-14 12:06:35 593        157.58.114.46 /                                      401

2007-12-14 12:06:42 390        157.58.114.46 /iisadmpwd/anot3.asp                   404

2007-12-14 12:08:07 31         157.58.114.46 /index.html                            200

2007-12-14 12:08:15 62         157.58.114.46 /index.html                            200

2007-12-14 13:07:31 11858      157.58.114.46 /DelegConfig/Default.aspx              200

2007-12-14 13:07:31 15         157.58.114.46 /DelegConfig/Scripts/StyleSheet.css    200

2007-12-14 13:07:38 0          157.58.114.46 /iexplore.exe.config                   404

2007-12-14 13:07:41 2390       157.58.114.46 /DelegConfig/Default.aspx              200

 

 

Extraer todos los intentos de ataque de inyección de SQL a mi sitio web

CONSULTA:

C:\program files\log parser 2.2>logparser.exe "SELECT * INTO [nombre_fichero_salida].txt FROM [ruta_completa_logs_IIS]\ex*.log WHERE cs-uri-query LIKE '%CAST(%' OR cs-uri-query LIKE '%DECLARE%'" -i:IISW3C -o:NAT -rtp:-1

 

Espero que estos ejemplos os den una idea del tipo de información que podemos sacar de los logs de IIS. En cuanto a los temas de seguridad, como el ejemplo de inyección de SQL, aclarar que la query es meramente un ejemplo. El hecho de que dicha query no de resultados, no significa que el sitio web no haya sido atacado o sea susceptible a un ataque.

 

Para ampliar la información sobre los ataques de inyección de SQL, como detectarlos y prevenirlos, consultad los siguientes enlaces:

 

Filtering SQL injection from Classic ASP

http://blogs.iis.net/nazim/archive/2008/04/28/filtering-sql-injection-from-classic-asp.aspx

 

Anatomy of a SQL Injection Incident

http://blogs.technet.com/neilcar/archive/2008/03/14/anatomy-of-a-sql-injection-incident.aspx

 

SQLInjectionFinder.exe: herramienta para detección automática de ataques de inyección de SQL

http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=WSUS&ReleaseId=13436

 

 

En el momento de escribir este post la versión actual es Log Parser 2.2 y se puede descargar desde aquí.

 

 

Este articulo fue publicado por - Daniel Mossberg.

Posted: jueves, 30 de abril de 2009 10:44 por gcarreras
Archivado en:

Comentarios

Aún no ha hecho nadie ningún comentario. Escribe alguno y sé el primero :P

No se permiten comentarios de usuarios anónimos