Usando ex .: Ubuntu o Windows: Posso vedere la memoria di un processo che sto eseguendo?

1

Se non ho privilegi di amministratore o di root su un computer desktop e sto eseguendo un gestore di password, posso vedere il contenuto della memoria di quel gestore di password o autorizzazioni più alte necessarie?

Quindi sto eseguendo un processo (utente "foobar", non root) e voglio visualizzare l'intero contenuto della memoria del gestore password (es .: la password che lo sblocca).

    
posta Peter 17.08.2017 - 10:26
fonte

1 risposta

1

Sì, puoi leggere la memoria dei processi che possiedi.

Su Windows è necessario aprire un handle per il processo con PROCESS_VM_READ rights, e puoi usare ReadProcessMemory per leggere la memoria di quel processo (non sorprendentemente). È necessario essere in esecuzione in un contesto con il token di sicurezza appropriato per far corrispondere una regola nel DACL (elenco di controllo di accesso) del processo o ottenere un privilegio che consenta l'accesso al processo globale (ad esempio SeDebugPrivilege).

Su Linux puoi leggere /proc/$pid/mem se sei il proprietario di quel processo o root.

Questo è interamente dal design. I processi esistono sotto il tuo contesto di sicurezza, quindi puoi accedervi. Se esegui codice dannoso sotto lo stesso contesto di sicurezza, ha accesso a tutto ciò che fai.

C'è comunque un vantaggio da uno scenario simile in un moderno sistema Windows - livelli di integrità . I processi possono essere suddivisi in diversi livelli di integrità che descrivono la loro affidabilità . Un processo di bassa integrità è limitato da molte operazioni, compreso l'accesso interprocesso a processi ad alta integrità. Il confine tra bassa integrità e alta integrità viene spesso gestito tramite prompt di elevazione UAC (User Access Control) e desktop sicuro. Ad esempio, KeePass utilizza questo in modo che un browser che sfrutta l'esecuzione di codice in un processo a bassa integrità non possa ottenere l'accesso diretto al processo KeePass. Sebbene UAC stesso non sia considerato un limite di sicurezza, i livelli di integrità sono.

Molti gestori di password tentano anche di rendere difficile la decodifica della chiave principale e della password dai dump della memoria. Su Windows è possibile utilizzare la API CryptProtectMemory per crittografare i dati in memoria utilizzando una chiave memorizzato nel sottosistema dell'autorità di sicurezza locale (LSASS) che è protetto dal sistema operativo, richiedendo quindi privilegi amministrativi (SYSTEM, infatti) per scoprire la chiave.

Linux con le patch grsecurity ha alcune restrizioni sull'accesso a /proc che può anche fornire alcuni vantaggi in termini di sicurezza in questi tipi di scenari, anche se non sono abbastanza esperto nelle opzioni grsec o internals Linux per sapere esattamente come funzionano e cosa esattamente impediscono.

    
risposta data 17.08.2017 - 11:45
fonte

Leggi altre domande sui tag