Ciao a tutti. Mi sono da poco avvicinato al linguaggio python e sto da poco (finalmente) iniziando a creare semplici programmi di rete mediante l'utilizzo dei moduli socket.
Avevo in mente un'ideuzza a scopo puramente didattico.
Vorrei creare due applicativi, un server e un client:
- Il client dovrebbe mandare dei pacchetti ICMP non convenzionali al server. Per 'non convenzionali' intendo che essi, a differenza dei normali pacchetti ICMP, devono avere nel campo DATA una determinata stringa (es: un banalissimo 'Hello world\n')
- Il server deve essere in grado di:
* non curarsi dei pacchetti ICMP convenzionali come ad es quelli derivanti da un ICMP echo request.
* stampare a video quelli contenenti una particolare stringa presente nel campo DATA (in questo caso 'hello world').
Un applicativo di questo tipo potrebbe essere una interessante backdoor "informativa" capace di fornire informazioni riguardo un'eventuale macchina remota, se ad es, si riempisse la stringa con informazioni riguardanti il sistema interessato.
La scelta del protocollo ICMP, inoltre, si rivelerebbe una scelta azzeccata in quanto:
- inizializzando una connessione TCP essa verrebbe quasi sicuramente intercettata e bloccata da un eventuale firewall.
- quasi sempre la maggior parte dei firewall non effettua un blocco riguardo l'apparentemente innocuo protocollo ICMP in uscita.
Come idea non mi appare malvagia e mi piacerebbe implementarla a manina.
A riguardo mi sorgono però dubbi inerenti l'effettiva capacità del linguaggio python.
Se mediante il linguaggio C sarebbe sufficiente forgiare l'intero pacchetto utilizzando le RAW_SOCKET col python come si potrebbe fare?
Riesce tale linguaggio ad arrivare ad un così basso livello?
Esistono librerie utili a riguardo?
Sono disponibili le originali RAW_SOCKET del linguaggio C? Se si si utilizzano allo stesso modo?
Ringrazio anticipatamente chiunque trovando interessante un'applicativo di questo tipo voglia aiutarmi nel suo sviluppo.
Un saluto.![]()