Python Forensics - Network Forensics

Lo scenario dei moderni ambienti di rete è tale che l'indagine può essere complicata a causa di una serie di difficoltà. Questo può accadere sia che tu stia rispondendo a un supporto per violazione, indagando su attività interne, eseguendo valutazioni relative alla vulnerabilità o convalidando una conformità normativa.

Concetto di programmazione di rete

Le seguenti definizioni vengono utilizzate nella programmazione di rete.

  • Client - Il client è una parte dell'architettura client-server della programmazione di rete che viene eseguita su un personal computer e una workstation.

  • Server - Il server fa parte dell'architettura client-server che fornisce servizi ad altri programmi per computer nello stesso o in altri computer.

  • WebSockets- I WebSocket forniscono un protocollo tra il client e il server, che funziona su una connessione TCP persistente. Attraverso questo, i messaggi bidirezionali possono essere inviati tra la connessione socket TCP (simultaneamente).

I WebSocket vengono dopo molte altre tecnologie che consentono ai server di inviare informazioni al client. Oltre all'handshaking dell'intestazione di aggiornamento, WebSocket è indipendente da HTTP.

Questi protocolli vengono utilizzati per convalidare le informazioni inviate o ricevute dagli utenti di terze parti. Poiché la crittografia è uno dei metodi utilizzati per proteggere i messaggi, è anche importante proteggere il canale attraverso il quale i messaggi sono stati trasferiti.

Considera il seguente programma Python, che il client usa per handshaking.

Esempio

# 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()

Produzione

Produrrà il seguente output:

Il server che accetta la richiesta di canale di comunicazione includerà il seguente 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()

Il client e il server creati con l'aiuto della programmazione Python ascoltano il numero di host. Inizialmente, il client invia una richiesta al server rispetto ai dati inviati nel numero host e il server accetta la richiesta e invia immediatamente una risposta. In questo modo, possiamo avere un canale di comunicazione sicuro.