Persistenza via Terminal Services DLL: Terminal Services DLL (T1505.005)

La tecnica T1505.005 descrive l'abuso del componente Terminal Services di Windows — rinominato Remote Desktop Services nelle versioni server più recenti — per ottenere persistenza sui sistemi compromessi. Il meccanismo sfrutta il fatto che i servizi Windows eseguiti tramite processi generici come svchost.exe caricano una DLL di servizio il cui percorso è memorizzato nella chiave di registro ServiceDll. Per Terminal Services il valore predefinito punta a termsrv.dll in *%SystemRoot%\System32*, referenziato in *HKLM\System\CurrentControlSet\services\TermService\Parameters*.

Un attaccante può sostituire la DLL originale, applicarvi una patch binaria, oppure modificare il valore ServiceDll per puntare a una libreria arbitraria. Le finalità sono duplici: eseguire payload custom mantenendo la funzionalità legittima del servizio, oppure abilitare funzioni abusabili di RDP come le sessioni concorrenti multiple, che nelle edizioni client di Windows sono normalmente disabilitate e generano prompt di logout per l'utente locale.

Inquadrata nella tattica TA0003 (Persistence), questa tecnica offre un canale di accesso remoto stabile, resistente ai riavvii e mimetizzato dietro un servizio di sistema legittimo. L'impatto è particolarmente critico su server esposti a Internet o su workstation privilegiate, dove l'attaccante può stabilire sessioni RDP parallele senza allertare l'utente. MITRE documenta due mitigazioni (M1024, M1047) e una strategia di detection dedicata (DET0212), a testimonianza della rilevanza operativa del vettore.

In un contesto di red team autorizzato, la simulazione di T1505.005 parte dall'ottenimento di privilegi SYSTEM o Administrator sul target — condizione necessaria per modificare la chiave TermService\Parameters e per sostituire termsrv.dll in System32, protetta da Windows Resource Protection.

La catena tipica prevede tre fasi. Prima si arresta il servizio con sc.exe stop TermService (nativo Windows), verificando eventuali dipendenze con sc.exe qc TermService. Successivamente si prende ownership del file con takeown /f %SystemRoot%\System32\termsrv.dll e si concedono permessi di scrittura tramite icacls %SystemRoot%\System32\termsrv.dll /grant Administrators:F. Infine si sostituisce la DLL o si modifica il valore di registro con reg add "HKLM\System\CurrentControlSet\services\TermService\Parameters" /v ServiceDll /t REG_EXPAND_SZ /d "C:\path\evil.dll" /f.

Un caso didattico ampiamente documentato è la patch di termsrv.dll per abilitare sessioni RDP concorrenti su Windows 10/11. Il progetto RDPWrap (open source, repository stascorp/rdpwrap su GitHub, non più attivamente manutenuto ma ancora funzionante con file INI aggiornati dalla community) implementa questa modifica come wrapper che intercetta le chiamate di termsrv.dll senza toccare il binario originale, riducendo il rischio di rollback via Windows Update. L'installazione avviene con install.bat e la verifica con RDPConf.exe.

Per scenari offensivi più realistici, il red teamer può sviluppare una DLL proxy che riesporta tutte le funzioni di termsrv.dll originale (rinominata) aggiungendo logica di backdoor nel DllMain. Tool come DLLProxyGenerator (open source, disponibile su GitHub) o Spartacus (open source, repository Accenture/Spartacus) automatizzano la generazione degli stub di forwarding a partire dall'analisi della export table.

Dopo il deploy si riavvia il servizio con sc.exe start TermService e si verifica il caricamento con tasklist /svc /fi "imagename eq svchost.exe" individuando il PID che ospita TermService, poi listdlls.exe -p (Sysinternals, gratuito) per confermare che la DLL modificata sia mappata.

Regola d'ingaggio fondamentale: operare solo in lab isolati o ambienti autorizzati con Rules of Engagement scritte. La modifica di termsrv.dll è invasiva, sopravvive ai riavvii e può interferire con aggiornamenti di sicurezza; prevedere sempre snapshot di rollback e restauro del binario originale a fine esercizio con sfc /scannow.

Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.
We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.