Haka: parte II (reglas de seguridad)

14:36 0 Comments A+ a-


Hola amigos y lectores de Underc0de!

Hace unos días compartimos post sobre Haka, el nuevo lenguaje de seguridad informática. Hoy traemos una segunda parte sobre la sintaxis de sus reglas de seguridad.
...

Haka ofrece una forma sencilla de escribir reglas de seguridad para filtrar, modificar, crear e inyectar paquetes. Según expertos de auditoría de seguridad informática, cuando se detecta un flujo con algo malicioso, pueden informar los usuarios o pueden dejar el flujo. Los usuarios pueden definir escenarios más complejos para mitigar el impacto de un ataque. Por ejemplo, se puede alterar peticiones http y obligar a los navegadores obsoletos para actualizar o falsificar paquetes específicos para engañar herramientas de análisis de tráfico.
La siguiente regla es una regla de filtrado de paquetes básico que bloquea todas las conexiones de una dirección de red.
local ipv4 = require(“protocol/ipv4”)
local tcp = require(“protocol/tcp_connection”)
local net = ipv4.network(“192.168.101.0/24”)
haka.rule{
   hook = tcp.events.new_connection,
   eval = function (flow, pkt)
       haka.log(“tcp connection %s:%i -> %s:%i”,
           flow.srcip, flow.srcport,
           flow.dstip, flow.dstport)
       if net:contains(flow.dstip) then
           haka.alert{
               severity = “low”,
               description = “connection refused”,
               start_time = pkt.ip.raw.timestamp
           }
           flow:drop()
     end
   end
}
Las primeras líneas del código cargan los disectores de protocolo, Ipv4 y TCP explica profesor de hacking, Mike Stevens. La primera línea se encarga de paquetes IPv4. Después usamos un disector de TCP de estado que mantiene una tabla de conexión y gestiona flujos de TCP. Las siguientes líneas, definen la dirección de red que debe ser bloqueada.
La regla de seguridad se define a través de palabras clave haka.rule. Según expertos de servicios de auditoría informática las reglas de haka son muy útiles. Una regla de seguridad está hecha de un gancho y una función de evaluación eval. El gancho es un evento que activará la evaluación de la regla de seguridad. 
En este ejemplo, la regla de seguridad se evaluará en cada intento de establecimiento de conexión TCP. Los parámetros pasados a la función de evaluación dependen del evento explica el experto de servicios de seguridad informática. En el caso del evento new_connection, eval toma dos parámetros: flow y pkt. Lo primero de ellos tiene detalles sobre la conexión y el segundo es una tabla que contiene todos los campos del paquete TCP.
Según recomendación del profesor, en el núcleo de la regla de seguridad debemos registrar en haka.log primero alguna información acerca de la conexión actual. Luego, comprobamos si la dirección de origen pertenece a la gama de direcciones IP’s no autorizadas. Si la prueba tiene éxito, elevamos una alerta (haka.alert) y liberamos la conexión. Menciona asimismo, Roberto Talles,  que se tenga en cuenta que se informa sólo algunos detalles de la alerta. Se puede añadir más información, como el origen y el servicio de destino.
Utilizamos hakapcap herramienta para probar nuestra filter.lua regla en un archivo de pcap trace filter.pcap:
$ hakapcap filter.lua filter.pcap

De aquí en adelante, en los resultados sale algo de información sobre disectores cargados y reglas registrados. El resultado muestra que Haka logró bloquear conexiones dirigidas a dirección 192.168.101.62:
En el ejemplo anterior, hemos definido una sola regla para bloquear las conexiones. Uno puede escribir un conjunto de reglas de firewall usando la palabra clave haka.group . En este caso, la configuración, se puede elegir un comportamiento por defecto (por ejemplo, bloquear todas las conexiones) si ninguno de la regla de seguridad autoriza explícitamente el tráfico.
Fuente: noticiasseguridad.com
Visítanos en Underc0de