it-swarm.dev

Perché devi essere un amministratore per creare un collegamento simbolico in Windows?

In Linux ogni utente può creare collegamenti simbolici, ma in Windows ho bisogno di una riga di comando di amministrazione, altrimenti mklink fallisce. Perché?

71
ripper234

Per impostazione predefinita, solo gli amministratori possono creare collegamenti simbolici, poiché sono gli unici che hanno il privilegio SeCreateSymbolicLinkPrivilege trovato sotto Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment\ concesso.

Da Microsoft TechNet: Impostazioni dei criteri di sicurezza Novità per Windows Vista :

I collegamenti simbolici (collegamenti simbolici) possono esporre vulnerabilità della sicurezza in applicazioni non progettate per gestire collegamenti simbolici.

23
ordag

Non è più del tutto (vedi sotto) il caso a partire da Windows 10 Insiders build 14972 (aggiornamento dei creatori di Windows 10 ~ 1703).

Tuttavia, dai commenti sotto il post del blog, le preoccupazioni relative ai problemi menzionati nelle altre risposte sono ancora lì e, per utilizzare questo nuovo comportamento, è necessario:

  • abilita la modalità sviluppatore sul tuo computer
  • passare un SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE flag all'API CreateSymbolicLink
8
MayeulC

Linux ha una struttura di file/utente compartimentata. Ciò significa che "programma A" non può eseguire "attività B" a meno che non sia correlato a "spazio su disco C". Quindi i link simbolici non influiscono in modo logistico su nulla in termini di penetrazione del rischio perché l'intero sistema operativo è basato sull'assunzione di azione-> permesso.

O per dirla in altro modo, creare un gazillion symlink non ti aiuta se sei un hacker con nient'altro che permessi di basso livello. Quindi, su Linux o MacOS non ti aiuta.

Tuttavia, su Windows non hai un "programma A" che esegue un programma diverso dalla persona che ha effettuato l'accesso ... quindi la persona che ha effettuato l'accesso può eseguire "attività B" ovunque lo desideri. Quindi DEFINITAMENTE ti aiuta ad avere la penetrazione a livello di collegamenti simbolici perché puoi ignorare i file reali comunemente trovati con payload virale e nascondere che l'hai fatto.

Quindi, senza il livello di protezione symlink, un virus potrebbe infettarti, eseguire come payload molti link simbolici per dire, reindirizzare "Explorer.exe "a un falso" exactly-as-windows-made-it-except-with-a-payload Explorer.exe".

Perché dovresti farlo? Sinceramente è la chiave del regno. Potresti reclutare quel computer in modo affidabile in un bot teoricamente attivando la sua strada verso il futuro, ecc. Ci sono milioni di modi per cui questo è meglio che semplicemente "avere un'infezione" perché la maggior parte delle persone li rimuove quando li vede, e questo potrebbe essere nascosto.

5
Mr Heelis

Ho trovato il motivo del lancio di Vista. Il motivo dato solo per gli amministratori è molto semplice. Non si tratta di problemi di sicurezza non specificati, è necessario aggiornare migliaia di software per utilizzare le chiamate API che letteralmente non esistevano prima di essere aggiunte per evitare buchi di sicurezza durante l'attraversamento di collegamenti simbolici.

Windows è orribilmente vulnerabile alle corse simboliche dei collegamenti; ci sono modi per evitarlo, in un certo senso, ma praticamente nessuna applicazione utilizza le API in questo modo. Anche Microsoft non accetta i bug di sicurezza che coinvolgono corse simboliche di link. Ho appena provato a segnalarne uno tre mesi fa.

4
Joshua

Hardlink e giunzioni di directory si trovano solo all'interno di una partizione (non può esserci un hardlink da un'unità a un'altra o addirittura verso una posizione di rete).

D'altra parte, SymLink può anche collegarsi da una posizione sul sistema che sembra "sicura" a una posizione di rete.

1
StefanA