Python Forensics - Analyse des réseaux

Le scénario des environnements réseau modernes est tel que les enquêtes peuvent être compliquées en raison d'un certain nombre de difficultés. Cela peut se produire que vous répondiez à une assistance en cas de violation, que vous enquêtiez sur des activités internes, que vous effectuiez des évaluations liées à la vulnérabilité ou que vous validiez une conformité réglementaire.

Concept de programmation réseau

Les définitions suivantes sont utilisées dans la programmation réseau.

  • Client - Le client fait partie de l'architecture client-serveur de la programmation réseau qui s'exécute sur un ordinateur personnel et un poste de travail.

  • Server - Le serveur fait partie de l'architecture client-serveur qui fournit des services à d'autres programmes informatiques sur le même ordinateur ou sur d'autres.

  • WebSockets- Les WebSockets fournissent un protocole entre le client et le serveur, qui s'exécute sur une connexion TCP persistante. Grâce à cela, des messages bidirectionnels peuvent être envoyés entre la connexion de socket TCP (simultanément).

Les WebSockets viennent après de nombreuses autres technologies qui permettent aux serveurs d'envoyer des informations au client. Hormis la négociation de l'en-tête de mise à niveau, WebSockets est indépendant de HTTP.

Ces protocoles permettent de valider les informations envoyées ou reçues par les utilisateurs tiers. Le cryptage étant l'une des méthodes utilisées pour sécuriser les messages, il est également important de sécuriser le canal par lequel les messages ont été transférés.

Considérez le programme Python suivant, que le client utilise pour handshaking.

Exemple

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

Production

Il produira la sortie suivante -

Le serveur acceptant la demande de canal de communication inclura le script suivant.

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

Le client et le serveur créés à l'aide de la programmation Python écoutent le numéro d'hôte. Initialement, le client envoie une demande au serveur en ce qui concerne les données envoyées dans le numéro d'hôte et le serveur accepte la demande et envoie une réponse immédiatement. De cette façon, nous pouvons avoir un canal de communication sécurisé.