Foro de elhacker.net

Seguridad Informática => Hacking Ético => Mensaje iniciado por: .rn3w. en 8 Enero 2020, 02:25



Título: Obtener informacion de los paquetes
Publicado por: .rn3w. en 8 Enero 2020, 02:25
esta es mi anterior pregunta: https://foro.elhacker.net/hacking_avanzado/hacer_un_ids_con_redes_neuronales-t502082.0.html

necesito obtener informacion de los paquetes de redes, instale snort y cuando lo ejecuto obtengo mensajes parecidos a este:

Código:
WARNING: No preprocessors configured for policy 0.
01/07-20:36:47.454886 2803:9400:3:5fc9:5599:9c50:4514:c593:40540 -> 2a03:2880:f043:11:face:b00c:0:2:443
TCP TTL:64 TOS:0x0 ID:0 IpLen:40 DgmLen:72
***A**** Seq: 0xC4357D2B  Ack: 0xFCC31DA3  Win: 0x26E  TcpLen: 32
TCP Options (3) => NOP NOP TS: 1697228946 1613132354

no entiendo mucho sobre ese mensaje cual es la informacion relevante?


Título: Re: Obtener informacion de los paquetes
Publicado por: AlbertoBSD en 8 Enero 2020, 02:47
Realmente casi todo es relevante, si es un IDS realmente debería detectar la actividad normal contra la de un Intruso valga la Redundancia.

Segun veo tu paquete:
IP de origen
2803:9400:3:5fc9:5599:9c50:4514:c593
Puerto
40540
 con Destino a
2a03:2880:f043:11:face:b00c:0:2
Puerto 443 (HTTPS)
TTL:64 (De salida por default en sistemas muchos sistemas Linux)

Existen muchos vectores de ataque entonces lo que tendría que hacer tu IDS es primero aprender cual es la actividad normal y posteriormente detectar anomalías.

Por ejemplo ese es solo el paquete IP, sobre el va algo de data TCP 32 bytes Y sobre eso van datos que procesa el navegador del cliente y el servidor WEB (Para este caso).
Otra cosa, para comunicaciones que viajan sobre SSL no podrás ver los datos que realmente se enviando por que esta cifrados.

Es algo bastante complejo, si necesitas un background de Redes y de Paquetes.

Saludos!


Título: Re: Obtener informacion de los paquetes
Publicado por: .rn3w. en 8 Enero 2020, 02:53
Hola Alberto, primeramente te quiero agradecer en esta oportunidad por tanta ayuda que me brindaste en el pasado (hace como 5 años) muchas gracias!!!

entonces con esta informacion ya puedo generar patrones para poder entrenar las redes neuronales?
como puedo generar patrones con estas variables?
tengo otra pregunta:

influye en algo este warning: WARNING: No preprocessors configured for policy 0.?




Título: Re: Obtener informacion de los paquetes
Publicado por: AlbertoBSD en 8 Enero 2020, 03:04
Hola Alberto, primeramente te quiero agradecer en esta oportunidad por tanta ayuda que me brindaste en el pasado (hace como 5 años) muchas gracias!!!

No pues de que :) aqui estamos para ayudar

influye en algo este warning: WARNING: No preprocessors configured for policy 0.?

No influye, básicamente te indica que no tiene ningun preproceso configurado, snort ademas de poder mostrarte la información, se puede configurar como IDS con ciertas reglas.


entonces con esta información ya puedo generar patrones para poder entrenar las redes neuronales?

Tengo una idea muy vaga y escueta sobre como programar una red neuronal, alguna vez vi algunos videos sobre  como hacerlo y en mi cabeza solo estaba pensando en la vaga idea que eso lo podría realizar mediante grafos (Siendo los nodos las neuronas y las aristas las dendritas), pero realmente nunca lo puse en practica.

Pues la información esta bien para empezar aun que como te comento existen varios protocolos y familias ya todo depende del alcance que quieras tener con tu IDS.

Por poner un ejemplo básico PING
[Paquete IP][Paquete ICMP]

Ejemplo básico HTTP
[Paquete IP][Paquete TCP][Paquete HTTP]

Ejemplo básico HTTPS
[Paquete IP][Paquete TCP][Paquete HTTPS (Cifrado)]

Y asi por no decir IPv4 y IPv6


Título: Re: Obtener informacion de los paquetes
Publicado por: .rn3w. en 8 Enero 2020, 03:11
necesito variables que puedan llegar a ser unicas para diferenciar y de esa manera armar un patron unico para el aprendizaje de la red neuronal


como puedo obtener mas informacion con snort?

Código:
[Paquete IP][Paquete ICMP]
Ejemplo básico HTTP
[Paquete IP][Paquete TCP][Paquete HTTP]
Ejemplo básico HTTPS
[Paquete IP][Paquete TCP][Paquete HTTPS (Cifrado)]
IPv4 y IPv6


si lo configuro como ids puedo obtener mas informacion?



de toda esta informacion, creo que aun nada es unico para formar un patron diferenciable entre los demas

Código:
IP de origen
2803:9400:3:5fc9:5599:9c50:4514:c593
Puerto
40540
 con Destino a
2a03:2880:f043:11:face:b00c:0:2
Puerto 443 (HTTPS)
TTL:64 (De salida por default en sistemas muchos sistemas Linux)


en la informacion de paquete que datos son unicos y diferenciables entre los demas?



Título: Re: Obtener informacion de los paquetes
Publicado por: AlbertoBSD en 8 Enero 2020, 03:45
necesito variables que puedan llegar a ser unicas para diferenciar y de esa manera armar un patron unico para el aprendizaje de la red neuronal

En general cada paquete es unico

de toda esta informacion, creo que aun nada es unico para formar un patron diferenciable entre los demas

Lo que estas viendo es una vista resumida del paquete por ejemplo para TCP tiene mas datos:

(http://web.deu.edu.tr/doc/oreily/networking/firewall/figs/fire0603.gif)

si lo configuro como ids puedo obtener mas información?

Creo que tiene el modo --verbose donde incluso te muestra la data final en formato hexadecimal...

No, si lo configuras como IDS vas a cargarle la mano mas al procesador. Ya pesado mostrar los paquetes.


Título: Re: Obtener informacion de los paquetes
Publicado por: .rn3w. en 10 Enero 2020, 03:04
En general cada paquete es unico
me puedes explicar porfavor como puedo visualizar que cada paquete es unico porfavor


Título: Re: Obtener informacion de los paquetes
Publicado por: AlbertoBSD en 10 Enero 2020, 05:45
Valida la ayuda de snort, debe de tener un parámetro que te muestre el paquete entero en formato hexadecimal. Ahorita no recuerdo cual es la opción y no tengo instalado snort en ninguno de mis equipos.


Detalles de la estructura del paquete TCP
https://www.geeksforgeeks.org/services-and-segment-structure-in-tcp/

Detalles de la estructura del paquete IP
https://www.tutorialspoint.com/ipv4/ipv4_packet_structure.htm

Ambos realmente son un solo paquete. Tienen ciertos valores y/o parámetros que generalmente los hacen únicos (a ambos vistos como uno solo)

Si lo quieres integrar todo en uno solo te recomiendo que en lugar de snort utilizes libpcap, ya que se puede integrar desde C/C++ para leer los paquetes que llegan a la tarjeta de red directamente desde desde el lenguaje y procesar los datos que quieras directo a tus redes neuronales.

Saludos!


Título: Re: Obtener informacion de los paquetes
Publicado por: .rn3w. en 11 Enero 2020, 05:22
obtengo este mensaje de error

WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.
WARNING: No preprocessors configured for policy 0.


cuando ejecuto sudo snort -b este comando lo saque de http://www.adminso.es/index.php/SNORT-Modos_de_ejecuci%C3%B3n

creo que ese comando es al que te refieres?


Título: Re: Obtener informacion de los paquetes
Publicado por: .rn3w. en 11 Enero 2020, 15:04
estuve viendo este video https://www.youtube.com/watch?v=1lDfCRM6dWk&t=595s, y al final obtiene los datos en hexadecimal, esta bien ?





Título: Re: Obtener informacion de los paquetes
Publicado por: AlbertoBSD en 11 Enero 2020, 16:14
Si es lo que decía yo desde el principio, obtener los datos en hexadecimal.

Sin embargo considera ahora como vas a procesar la salida del snort?

Desde el otro Topic que abristes te recomende utilizar la librería que utiliza Snort para realizar lo mismo "Libpcap" Con ella puede obtener el paquete completo mediante programación y pasar la información directamente a lo que quieres hacer.

¿Que lenguaje de programación vas a utilizar?

Te puse los links para que veas toda la información que contiene los puro paquetes de cabecera esto sin incluir la data que procesan al final las aplicaciones cliente y servidor

Paquete Completo:
[Paquete o Header IP][Paquete o Header TCP][Data que procesa el cliente o Servidor]


Título: Re: Obtener informacion de los paquetes
Publicado por: .rn3w. en 11 Enero 2020, 16:42
Citar
Desde el otro Topic que abristes te recomende utilizar la librería que utiliza Snort para realizar lo mismo "Libpcap" Con ella puede obtener el paquete completo mediante programación y pasar la información directamente a lo que quieres hacer


esa parte creo que la hare manualmente o talves lo haga al final, primero quiero obtener datos y empezar a jugar con las redes neuronales para obtener resultados, y hacer varios experimentos

Citar
¿Que lenguaje de programación vas a utilizar?

utilizare python


ahora tengo otra duda, utilizando tcpdump otengo este error:


sudo tcpdump -i eth0
[sudo] password for ubuntu:
tcpdump: eth0: No such device exists
(SIOCGIFHWADDR: No such device)



trate de seguir el video https://www.youtube.com/watch?v=1lDfCRM6dWk&t=595s pero obtengo el error de arriba, como solucionarlo?




probando ifconfig obtengo esto:

Código:
ifconfig
enp2s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether e0:3f:49:c9:af:31  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 3178  bytes 297846 (297.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3178  bytes 297846 (297.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.36  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 2803:9400:3:914:3c1b:1b65:aa2d:9e13  prefixlen 64  scopeid 0x0<global>
        inet6 2803:9400:3:914:64d6:de3c:8ad8:4601  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::3dcc:21ce:8499:8fbd  prefixlen 64  scopeid 0x20<link>
        ether 6c:71:d9:8e:88:54  txqueuelen 1000  (Ethernet)
        RX packets 190027  bytes 250743229 (250.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 138770  bytes 19710730 (19.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



 en mi caso eth0 es wlp3s0 y con eso lo solucione



 Creo que la otencion debe ser dinamica por ello estuve intentando mediante la libreria Libpcap, pero no encuentro la manera de generar un csv con tal libreria


esto me podria ayudar, http://yuba.stanford.edu/~casado/pcap/section1.html?

ello me genera un archivo .out pero no puedo abrirlo, que hago porfavor ayudame @AlbertoBSD



 Estoy queriendo usar este tutorial

http://tonylukasavage.com/blog/2010/12/19/offline-packet-capture-analysis-with-c-c----amp--libpcap/

no entiendo esta parte

// open capture file for offline processing
  descr = pcap_open_offline("http.cap", errbuf);

cuando ejecuto su codigo falla en esa parte, yo por mi parte capture un archivo .pcap sera que me sirva? lo capture asi sudo tcpdump -w enp0s3-26082018.pcap -i wlp3s0

en consola obtego esta informacion
Código:

tcpdump: listening on wlp3s0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C637 packets captured
639 packets received by filter
0 packets dropped by kernel



[MOD] No se hace multiple post, se usa "modificar" para añadir comentarios.





Título: Re: Obtener informacion de los paquetes
Publicado por: AlbertoBSD en 14 Abril 2020, 23:57
Siento no haber contestado antes, acabo de entrar al foro depues de algo de tiempo.

Nunca he usado pyton lo siento.

Citar
// open capture file for offline processing
  descr = pcap_open_offline("http.cap", errbuf);

Eso el de alugun codigo en C supongo, se trata de una linea para abrir el archivo de paquetes capturados "http.cap" de forma offline, esto es primero los capturas con algun otro programa y posteriormente lo analisas con el programa en escrito en C.

Realmente no se como ayudarte mas, yo programaria toda la red neuronal en C y/o C++, pero realmente no se como estés trabajando con python, realmente nunca lo he utilizado y nunca lo utilizare.

Saludos



Título: Re: Obtener informacion de los paquetes
Publicado por: .rn3w. en 15 Abril 2020, 02:14
Amigo @AlbertoBSD te comento que ya programe las redes neuronales, ahora necesito obtener datos reales para probarlo en mi red neuronal, es decir que quiero obtener los datos de informacion de tcp, y demas puertos con la libreria libpcap, esa informacion lo debo tener en un .csv para entrenar mi red neuronal.

tengo este un archivo con extension .pcap