Compromissione Binari: Compromise Host Software Binary (T1554)
La tecnica T1554 — Compromise Host Software Binary rientra nella tattica TA0003 (Persistence) e descrive la modifica di eseguibili legittimi già presenti su un sistema per garantire all'attaccante un accesso persistente. L'approccio sfrutta il fatto che client SSH, browser, daemon di rete, componenti VPN e applicazioni di produttività vengono invocati continuamente da utenti e servizi: patchando il binario, l'avversario ottiene esecuzione ricorrente senza dover creare nuovi artefatti facilmente individuabili.
Le varianti osservate spaziano dalla sostituzione integrale del file (come nel caso di client OpenSSH trojanizzati) al patching mirato dell'entry point o della Import Address Table, fino alla modifica di script interpretati che compongono appliance di rete. La tecnica si colloca tipicamente nella fase post-exploitation della kill chain, dopo l'ottenimento di privilegi sufficienti a scrivere su percorsi protetti come /usr/bin, C:\Windows\System32 o le partizioni di firmware di dispositivi embedded.
I dati MITRE ATT&CK associano a T1554 2 gruppi APT noti (APT5 e UNC3886), 16 famiglie malware e 3 campagne documentate, tra cui l'attacco al settore energetico ucraino del 2016, la campagna Cutting Edge contro Ivanti Connect Secure e il progetto RedPenguin sui router Juniper. L'unica mitigazione codificata è M1045 (Code Signing), che ne conferma la natura sistemica: la difesa passa da un'infrastruttura di verifica dell'integrità piuttosto che da un singolo controllo endpoint.
Sul fronte offensivo, T1554 richiede due prerequisiti operativi: privilegi di scrittura sul path del binario e capacità di preservare la funzionalità originale per evitare detection immediata da parte dell'utente. In un contesto red team autorizzato, la simulazione parte dall'analisi statica del bersaglio con radare2 (open source) o Ghidra (open source), utili per identificare l'entry point e le sezioni patchabili senza alterare i checksum interni.
Su Linux, la tecnica più didattica è il replacement di un client OpenSSH per intercettare credenziali. Dopo aver ottenuto root, si compila una versione modificata dei sorgenti OpenSSH (patchando auth-passwd.c per loggare le password in chiaro) e la si posiziona in /usr/bin/ssh preservando timestamp e permessi originali con touch -r originale nuovo e chmod --reference=originale nuovo. Per evitare rimozione tramite aggiornamenti si può bloccare il pacchetto con apt-mark hold openssh-client o, su sistemi RPM, con yum versionlock add openssh-clients.
Su Windows, il patching dell'IAT o dell'entry point di un eseguibile firmato si presta bene alla simulazione con LIEF (open source), libreria Python che permette di iniettare sezioni PE e riscrivere le import table mantenendo il file caricabile. Un flusso tipico prevede: caricare il PE con lief.parse(), aggiungere una nuova sezione con shellcode, redirigere l'entry point e salvare il file. La firma digitale viene invalidata, quindi in laboratorio si testa contro sistemi con enforcement disattivato o con certificati self-signed installati nello store trusted.
Su macOS, ThiefQuest ha mostrato il pattern del file prepending: si concatena il proprio codice davanti all'eseguibile bersaglio e si delega l'invocazione dell'originale tramite fork. La simulazione richiede la firma ad-hoc con codesign -s - --force binario per superare Gatekeeper in ambiente lab, dove la notarizzazione è disabilitata.
Per scenari su appliance di rete (Ivanti, Fortinet, Juniper) il patching riguarda script Python o Perl (visits.py, querymanifest.cgi, DSUpgrade.pm): l'inserimento di poche righe che invocano una reverse shell condizionata a un header HTTP specifico consente di simulare le webshell osservate in Cutting Edge. Strumenti come Frida (open source) permettono di prototipare hook dinamici prima di consolidarli in patch statiche, riducendo l'impatto sui sistemi di test.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo