Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Registrar ocurrencia de eventos

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en C Sharp al registrar el momento de ocurrencia de eventos excepcionales. Las bitácoras son esenciales al momento de tomar medidas correctivas cuando se presenta un evento de seguridad.

Necesidad

Almacenar el momento de ocurrencia de situaciones excepcionales en C#.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en C#.

  2. Se requiere registrar eventos relevantes en bitácoras.

  3. Los eventos deben contener el momento de ocurrencia (fecha, hora, segundos, mili-segundos y zona horaria). [3]

Solución

Incluso las aplicaciones más seguras pueden fallar en algún momento. Cuando se presentan fallos de seguridad es indispensable realizar una trazabilidad del error para determinar sus causas, alcance, y tomar las medidas correctivas y preventivas necesarias. Los archivos que guardan eventos relevantes del sistema y la aplicación se denominan bitácoras o logs.

Para crear una bitácora adecuadamente es necesario registrar otras variables además del evento en sí. Entre ellas cabe destacar el momento de ocurrencia del evento. Conociendo la fecha, el día, la hora, minuto, segundo y mili segundo en el que se presentó el evento permite sesgar la investigación a intervalos cercanos del mismo, ahorrando tiempo y recursos valiosos en una situación de emergencia.

En este artículo mostraremos cómo configurar las bitácoras para que registren el momento exacto de ocurrencia de un evento relevante para el sistema en C#. Para ello debemos realizar la siguiente serie de pasos:

  1. El primer paso es importar las clases necesarias. En este caso utilizaremos las clases básicas System y System.IO:

    logevents.cs
    1
    2
    using System;
    using System.IO;
    
  2. Se define el nombre del programa, en este caso Program y el método inicial Main. Una vez hecho esto se procede a definir la bitácora de eventos access.log. Definiremos el evento peligroso como Dangerous behavior utilizando la función writeLog:

    1
    2
    3
    4
    class Program {
        static void Main(string[] args) {
            writeLog("access.log", "Dangerous behavior");
        }
    
  3. El método writeLog permite escribir el mensaje message en el archivo file con la fecha exacta de ocurrencia usando UTC como zona horaria:

    1
        private static void writeLog(String file, String message) {
    
  4. Declaramos las variables: logFile contiene el descriptor del archivo de la bitácora y logDate contiene el mensaje en el formato definido por RFC 1123 [2] e incluyendo los milisegundos de ocurrencia [1]:

    1
    2
    3
    4
    5
        StreamWriter logFile;
        String logDate = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now)
                        .ToString("ddd, dd MMM yyyy HH':'mm':'ss.fff 'GMT'");
    
        String log = string.Format("[{0}]: {1}", logDate, message);
    
  5. Si el archivo no existe lo creamos utilizando la función StreamWriter. En caso contrario, utilizamos el método AppendText para agregar una nueva línea a nuestra bitácora:

    1
    2
    3
    4
    5
    6
    7
        if (!File.Exists(file)) {
          logFile = new StreamWriter(file);
        }
    
        else {
          logFile = File.AppendText(file);
        }
    
  6. Escribimos el mensaje en el archivo de bitácora y cerramos el recurso:

    1
    2
    3
    4
        logFile.WriteLine(log);
        logFile.Close();
      }
    }
    

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:




Haz un comentario

Estado de los servicios - Términos de Uso