Safely Experimenting With Sockets

6

Sto imparando sulla programmazione di socket TCP / IP e (Berkeley / UNIX). Diciamo che ho due scenari:

1) Scrivo due programmi in C, un client e un server, e li lego ciascuno a una porta non conosciuta sullo stesso host (Linux), e faccio esperimenti con lo scambio di dati usando le mie abilità C (principianti) .

2) Eseguo il server su Linux ed eseguo il client da un Windows che si trova sulla stessa LAN (dietro NAT). Penso che questo significhi che la porta di Windows sia "attiva aperta"? (Si noti che non conosco ancora nulla su WinSock o sul NAT.)

In ognuno di questi casi, è ipotizzabile che alcuni bot possano eseguire la scansione delle porte aperte mentre uno o entrambi i programmi sono in esecuzione dietro NAT? In tal caso, c'è un modo per un utente malintenzionato di vedere l'origine dei programmi personalizzati che sto utilizzando e sfruttare i puntatori usati male, fare sovraccarichi di buffer, ecc.? Questa è una rete domestica, e non c'è motivo per cui qualcuno possa sceglierla specificamente.

    
posta Vale132 20.12.2015 - 20:01
fonte

1 risposta

4

Ho già avuto la possibilità che i bot si connettessero alle mie applicazioni durante le sperimentazioni con applicazioni client / server (solo su porte ben note, comunque). Tuttavia, il potenziale di abuso è piccolo. I robot che si connettono a host casuali di solito prima tentano di rilevare con le impronte digitali quale applicazione è in esecuzione (cosa che fallirà perché nessuno conosce l'applicazione esistente) e quindi eseguire exploit noti contro tale applicazione (non ne conosceranno nessuno per un'applicazione che non hanno mai visto).

Se vuoi essere più attento (o semplicemente sbarazzarti del rumore), puoi configurare il tuo router per disabilitare il port forwarding per l'applicazione server. In questo modo può essere raggiunto solo dalla LAN locale.

Se vuoi essere veramente attento, usa il software di virtualizzazione per eseguire client e server su macchine virtuali che comunicano attraverso una rete virtuale.

Se vuoi essere paranoico totalmente pazzo attento, disconnetti sia il client che il server da Internet e falli comunicare su una LAN cablata con airgapped.

Per quanto riguarda la tua domanda "c'è un modo per un utente malintenzionato di vedere l'origine dei programmi personalizzati che sto utilizzando": hai intenzionalmente scritto un programma che risponde con il proprio codice a determinati messaggi di rete (ad esempio una rete Quine )? In caso contrario, un errore non intenzionale che causa questo è abbastanza improbabile, specialmente se si considera che i programmi C di solito non hanno più accesso al proprio codice dopo la compilazione. Una vulnerabilità di sovraccarico del buffer che scarica parti del codice compilato dell'applicazione è concepibile, ma l'attaccante dovrebbe investire parecchio lavoro per decodificarlo e trovare più exploit. E dubito che qualcuno si sarebbe preso la briga di investire così tanto lavoro per preparare un programma di test da uno studente che potrebbe non eseguirlo mai più.

    
risposta data 20.12.2015 - 22:45
fonte

Leggi altre domande sui tag