Python Forensics - Análisis forense de redes

El escenario de los entornos de red modernos es tal que la investigación puede resultar complicada debido a una serie de dificultades. Esto puede suceder ya sea que esté respondiendo a un soporte de incumplimiento, investigando actividades internas, realizando evaluaciones relacionadas con la vulnerabilidad o validando un cumplimiento normativo.

Concepto de programación de red

Las siguientes definiciones se utilizan en la programación de redes.

  • Client - El cliente es parte de la arquitectura cliente-servidor de la programación de red que se ejecuta en una computadora personal y una estación de trabajo.

  • Server - El servidor es una parte de la arquitectura cliente-servidor que proporciona servicios a otros programas de computadora en la misma u otras computadoras.

  • WebSockets- WebSockets proporciona un protocolo entre el cliente y el servidor, que se ejecuta a través de una conexión TCP persistente. A través de esto, se pueden enviar mensajes bidireccionales entre la conexión de socket TCP (simultáneamente).

Los WebSockets vienen después de muchas otras tecnologías que permiten a los servidores enviar información al cliente. Aparte del protocolo de enlace del encabezado de actualización, WebSockets es independiente de HTTP.

Estos protocolos se utilizan para validar la información enviada o recibida por terceros usuarios. Dado que el cifrado es uno de los métodos utilizados para proteger los mensajes, también es importante proteger el canal a través del cual se han transferido los mensajes.

Considere el siguiente programa de Python, que el cliente usa para handshaking.

Ejemplo

# client.py
import socket

# create a socket object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# get local machine name
host = socket.gethostname()
port = 8080

# connection to hostname on the port.
s.connect((host, port))

# Receive no more than 1024 bytes
tm = s.recv(1024)
print("The client is waiting for connection")
s.close()

Salida

Producirá la siguiente salida:

El servidor que acepta la solicitud de canal de comunicación incluirá el siguiente script.

# server.py
import socket
import time

# create a socket object
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# get local machine name 
host = socket.gethostname()
port = 8080

# bind to the port
serversocket.bind((host, port))

# queue up to 5 requests 
serversocket.listen(5)

while True:
   # establish a connection 
   clientsocket,addr = serversocket.accept()
   print("Got a connection from %s" % str(addr))
   currentTime = time.ctime(time.time()) + "\r\n"
   clientsocket.send(currentTime.encode('ascii'))
   clientsocket.close()

El cliente y el servidor creados con la ayuda de la programación de Python escuchan el número de host. Inicialmente, el cliente envía una solicitud al servidor con respecto a los datos enviados en el número de host y el servidor acepta la solicitud y envía una respuesta de inmediato. De esta forma, podemos tener un canal de comunicación seguro.