È possibile emulare una vera stampante di rete, cioè eseguire un vero firmware in VM?

8

Sono arrivato alla sezione relativa allo sfruttamento delle stampanti di rete durante un corso sulla sicurezza. Sotto "stampante di rete" capisco i dispositivi standalone con un collegamento ethernet \ wireless dedicato, in ascolto sulla porta 9100, con qualche interfaccia di amministrazione (web, snmp, app personalizzata del venditore) accessibile in rete, o qualcosa del genere. Ci sono stati diversi attacchi che mi piacerebbe davvero provare a riprodurre, ma sicuramente non voglio comprarli tutti (in realtà alcuni di loro mi costerebbero una fortuna). Ma sembra che oggigiorno la maggior parte di questi dispositivi esegua una sorta di Linux come firmware (almeno il più costoso di essi) e questo firmware è facile da acquisire. Quindi ho pensato che potrebbe esserci qualche progetto che mira a emularne alcuni (beh, abbiamo GNS per Cisco, quindi perché no?).

Devo chiarire: non sto parlando di una stampante virtuale condivisa dall'host MS Windows o di una generica linux box con qualche demone di stampa generico in ascolto sulla porta 9100. Ho bisogno di un firmware esatto di alcune stampanti di rete realmente esistenti in esecuzione su una macchina virtuale di sorta. Non è necessario stampare effettivamente qualcosa (come, per file), ma da tutte le altre prospettive deve gestire tutte le connessioni e le richieste come farebbe quello vero.

Cordiali saluti e grazie per l'aiuto in anticipo.

    
posta tis 29.03.2015 - 14:45
fonte

1 risposta

3

Suggerirei il software SIMICS di Virtutech. Si noti che Virtutech è stata acquistata da Intel e assegnata alla propria filiale: Wind River.

Simics è un SIMULATORE, che ha importanti distinzioni da un EMULATORE (come qemu). Vedi link per le specifiche sulle differenze.

Simics simula molte (centinaia?) architetture. Selezionate quello specifico a cui siete interessati (nel vostro caso, l'architettura in uso dalla stampante desiderata) e caricate il suo ambiente all'interno di simics. Quindi si carica il software (kernel e SO se ha un sistema operativo) che si desidera testare. Successivamente esegui simics e avvia ed esegue il software di destinazione esattamente come verrebbe eseguito sull'hardware nativo. Questo è un vantaggio principale dei simulatori contro gli emulatori.

Con le simulazioni puoi mettere in pausa l'esecuzione, impostare i breakpoint nel kernel e invertire un crash! In effetti, è possibile riscontrare un arresto anomalo e quindi eseguirlo in modo efficace al contrario per capire cosa ha portato al crash. Non è possibile farlo facilmente in un emulatore e anche se si dovesse tentare di farlo, lo stato interno dell'emulatore differisce dall'architettura hardware reale del target, in modo che i risultati vengano mescolati.

BLUF: hai bisogno di un SIMULATORE non di un EMULATORE.

[modifica]: collegamento a informazioni simic: link

    
risposta data 30.03.2015 - 23:33
fonte