Utenti privati bassi per Servizi Windows

2

Si tratta della configurazione sicura dei servizi di Windows. Ho notato molte volte che gli sviluppatori di software, quando progettano software per la piattaforma Windows, non dedicano abbastanza tempo al principio del minimo privilegio. Perché è così facile e veloce, installano i loro servizi per funzionare come LOCAL SYSTEM anche se privilegi inferiori farebbero bene, ad esempio, l'accesso al file system e al registro per i binari e la configurazione e l'accesso alla rete per accettare le connessioni in entrata e connettersi a un database . Su Windows, ci sono, tuttavia, gli utenti SERVIZIO LOCALE e SERVIZIO DI RETE.
Ecco la mia domanda: Posso eseguire un server semplice (come descritto sopra, accesso al file system / registro, accesso alla rete) come SERVIZIO DI RETE? Questi 2 utenti sono forniti da MS per una situazione del genere? O sono come uno sviluppatore che dovrebbe indagare su me stesso ogni volta quali sono i privilegi necessari anche se il mio servizio non fa nulla di straordinario? Se ad es. Il SERVIZIO DI RETE non è sufficiente, quali strumenti dovrei usare per creare un utente per seguire ancora il principio del privilegio minimo? Trovo questo estremamente rilevante. Se si riesce a inserire il codice in un'applicazione php in esecuzione su apache come www-data, è comunque necessario un noioso escalation dei privilegi per compromettere completamente la macchina. Su Linux questo particolare problema è risolto molto meglio per impostazione predefinita.

    
posta kaidentity 11.10.2016 - 09:09
fonte

2 risposte

2

Here is my question: Could I run a simple server (like described above, access to file system/registry, network access) as NETWORK SERVICE? Are these 2 users provided by MS for such a situation?

Sì, puoi e dovresti. L'account del servizio di rete è (come ricordo) l'account macchina con privilegi minimi con autorizzazioni limitate. In realtà si otterrà un'eccezione insufficiente, se risulta, l'applicazione richiede risorse per le quali l'account del servizio di rete non ha i diritti. Dovresti quindi semplicemente concedere i diritti a qualunque risorsa tu stia cercando di accedere e poi costruire su quello, ma per i tuoi requisiti di alto livello che descrivi qui, l'accesso al file / registro e alla rete dovrebbe essere sufficiente.

È vero che se l'applicazione crea una nuova chiave di origine o di registro del registro degli eventi, è necessario concedere esplicitamente i diritti all'account del servizio di rete, non dovrebbe essere un grosso problema per te / devops.

Potresti anche considerare l'utilizzo di un account di dominio, ad esempio se vuoi isolare la tua applicazione / servizio da come dovrei dirlo: un permesso frammentato nel tempo cambia all'account generale del servizio di rete.

Ti suggerisco di leggere su quegli account in generale: link

If you succeed to inject code into a php application running on apache as www-data you still need a tedious privilege escalation to fully compromise the machine

indipendentemente da priv. Esc. di (www) è noioso o meno noioso (personalmente penso che sia puro divertimento), se sei a quel punto in cui hai trovato un bug nel tuo servizio che può essere privato. intensificato, di solito si riduce a una scarsa gestione delle patch sulla tua confezione e non tanto al tuo servizio in quella fase.

    
risposta data 11.10.2016 - 17:55
fonte
1

Il privilegio è l'ultimo pensiero che potresti voler manipolare come programmatore e la ragione è ovvia: raramente ottieni l'errore appropriato se l'app ha privilegi insufficienti che non otterrai: Insufficient privilege exception . Questa è una buona ragione per cui i programmatori evitano un tale dolore.

Quindi nel migliore dei casi dovresti rivedere questa parte nelle fasi finali dello sviluppo quando tutto funziona e è stato testato. Quindi abbassa i privilegi e prova tutte le funzionalità fino a dove non sei OK.

Lo schema che stai seguendo è fornito dal livello di hosting della tua app. Ad esempio, le app .NET di default hanno meno privilegi rispetto a Local System .

Infine, se l'hacker arriva trovando problemi di sicurezza nel tuo codice personalizzato, allora è veramente interessato e non è degli exploit copia / incolla, ragazzo quindi la parte difficile è spezzare il tuo codice e trovare un bug di escalation di privilegi è solo una questione di tempo / soldi. Questo La vulnerabilità di escalation dei privilegi del kernel Linux era disponibile dal 2012 (compresa la maggior parte dei dispositivi Android) fino al recente.

    
risposta data 11.10.2016 - 11:26
fonte