Windows: qualsiasi metodo per forzare la conferma dell'utente prima che il browser apra un URL richiesto da un'app desktop esterna?

3

Un robusto firewall in uscita proteggerà le applicazioni desktop direttamente collegandosi a Internet senza la tua autorizzazione. Tuttavia, poiché il browser è un'applicazione generalmente autorizzata per l'accesso a Internet, ho iniziato a vedere che più applicazioni aggirano questo inviando una richiesta URL al browser. Questo è particolarmente sospetto quando la query GET include lunghe stringhe criptiche ...

Qualcuno sa di eventuali soluzioni Windows o multipiattaforma che chiedono conferma all'utente prima di procedere all'URL o almeno controllare preventivamente una lista bianca / lista nera?

Per i miei scopi, qualsiasi blocco che si verifica solo dopo che il browser ha tentato di raggiungere l'URL non è adatto; anche se questo è comune per motivi diversi in un contesto aziendale.

Chiarificazione: questa conferma utente dell'URL in uscita dovrebbe essere riservata agli URL richiesti al di fuori del browser. Ad esempio, alcuni bloatware OEM o un'app gratuita blackbox decidono di aprire una finestra del browser senza autorizzazione a xyz.com/cgi?mysterious_string per l'installazione, la disinstallazione o qualche altra decisione ermetica delle app.

    
posta LateralFractal 08.09.2013 - 04:26
fonte

5 risposte

1

In realtà esiste una soluzione semplice: creare un'applicazione che accetta un singolo parametro della riga di comando (l'URL) e avvia il browser direttamente con quell'URL dopo che è stata visualizzata una finestra di conferma. Imposta questa applicazione come browser predefinito.

Quando il sistema vede un oggetto ShellExecute o CreateProcess con un URI http:// come destinazione, passa l'esecuzione al browser predefinito come impostato nel registro. Il tuo programma può intercettarlo prima di consegnarlo al browser reale.

Pseudocodice:

int main (int argc, string[] argv)
{
    if (argc != 1)
        return -1;
    string url = argv[1];

    if (MessageBox("Are you sure you want to go to " + url + "?", YesNo) == Yes)
    {
        CreateProcess("path/to/firefox.exe", url);
        return 0;
    }
    else
        return -1;
}
    
risposta data 23.10.2014 - 12:37
fonte
1

Un'altra soluzione è creare o modificare un browser esistente, per non consentire alcun tipo di digitazione esterna dell'URL. Potresti persino utilizzare una tastiera dello schermo o simili per impedire ai programmi dannosi di utilizzare SendKeys(); e potresti avere tastiera dello schermo e molte altre funzionalità di sicurezza, e conferma all'utente se il browser viene chiamato esternamente con un URL come argomento. Quindi devi solo approvare questo browser nel tuo firewall.

    
risposta data 22.10.2014 - 09:36
fonte
0

Ci sono alcuni approcci diversi.

Un'opzione sarebbe implementare un proxy di filtro dei contenuti. È possibile installarne uno localmente o a livello di rete. È possibile forzare una lista bianca e quindi configurarla per richiedere ogni URL non incluso nella lista bianca. Tuttavia, immagino che la maggior parte delle persone che lavorano con una whitelist sia un enorme dolore. Tuttavia, molti proxy di filtro dei contenuti gestiscono blacklist o hanno euristiche per analizzare una pagina prima di caricare la pagina.

Molti browser e motori di ricerca ora identificano pagine veramente dannose prima che vengano caricate.

In Internet Explorer puoi configurare Zone di sicurezza e applicare diversi livelli di sicurezza basati su questo. Ad esempio, è possibile aggiungere siti ai siti "attendibili" ai quali si applica meno controllo e quindi ci sono siti "limitati" che sono più o meno una lista nera. C'è un'impostazione generale per "Internet", è possibile personalizzare il livello per i siti Internet (che sono ovviamente esclusivi di quelli presenti nell'elenco "Trusted") per fare cose come disabilitare plugin, disabilitare download, ecc. Non credo potresti richiedere un prompt per ciascun sito nell'area Internet, ma penso che i siti nell'area Ristretta possano essere bloccati o obbligare l'utente a cancellare un messaggio di avviso. Non sono sicuro che le impostazioni della Zona abbiano effetto su altri browser poiché vi è una certa integrazione con le impostazioni Internet di IE e il sistema operativo.

Ci sono anche un numero qualsiasi di plugin per i vari browser per aggiungere blacklist, euristica e molte altre funzionalità di sicurezza. Uno che potrebbe essere adatto alle tue esigenze è Web of Trust , che ha implementazioni per più browser.

    
risposta data 08.09.2013 - 08:06
fonte
0

Suggerirei questo: utilizzare un proxy, che inizialmente blocca tutte le richieste. Per ogni richiesta bloccata, per autorizzarli, dovresti digitare un captcha o un altro fattore di sfida che il programma dannoso NON sarà in grado di passare.

Se il captcha viene passato, il sito in questione verrà aggiunto permanentemente a una lista bianca che gli consentirà di passare ogni volta. Naturalmente, il sistema non dovrebbe nemmeno passare la richiesta DNS Prima che l'url sia confermato.

Potresti anche avere un "log" dove puoi digitare come link e vedere tutti i siti che sono stati bloccati e permessi. E sblocca importanti siti di terze parti che ad esempio caricano il contenuto dello script. (e possibile rimuovere siti dalla lista bianca)

L'uso di un software locale per bloccare le chiamate esterne al browser Web non è sicuro! Un programma dannoso può sempre bypassarlo. Pensa al clickjacking, al controllo remoto (stile VNC) e così via. Potrebbe persino fare un SendKeys('http://www.maliciousurl.com{ENTER}'); non appena si fa clic sulla barra degli indirizzi nella barra degli indirizzi per digitare il proprio URL. E non appena l'url viene caricato, è troppo tardi.

Una soluzione captcha impedirà l'accesso per qualsiasi URL dannoso, che a sua volta impedirà a qualsiasi software di connettersi al malintenzionato per Controllo remoto. Quindi questo renderebbe un momento 22 per l'attaccante: al controllo remoto, avrebbe bisogno del suo server approvato, ma per ottenere il suo server approvato, ha bisogno di controllo remoto. Quindi l'unico modo per aggirare il sistema sarebbe quello di costruire un decodificatore captcha, ma se il captcha è buono, dovrebbe essere piuttosto impossibile.

La cosa buona è che farà sì che il tuo sistema "impari", ad esempio ogni volta che autorizzi un sito, verrà salvato, così il sistema apprenderà automaticamente quali siti visiti regolarmente, così otterrai captcha ogni A partire dalla prima ora in cui usi il sistema in pratica, ma a poco a poco non dovrai mai digitare un catpcha.

    
risposta data 22.10.2014 - 09:25
fonte
0

Non ho visto nulla di pivot tra il browser e l'utente che può informarli prima che venga stabilita la connessione. Qualsiasi componente aggiuntivo o applicazione richiederebbe un trattamento di battitura serio con così tante variabili. Diamo un'occhiata:

Requester (via browser whether initiated or not) --> browser --> Go get this malice.com/bad.cgi

Fino a che punto pensi che saresti in grado di elaborare le iterazioni quando bad.cgi cambia ogni N minuti, secondi, ecc.? Dimentica le iterazioni, cosa hai intenzione di fare quando la richiesta diventa:

Requester --> browser --> www.urlshortenerservice.com/tempURI

La connessione è / era già iniziata. Per quanto ne sappia, la malizia potrebbe verificarsi sul servizio di abbreviazione degli URL prima di essere trasferita su una pagina legittima.

La mia opinione in merito a malware / siti / reti dannosi è la lista nera sul lato OUTBOUND dell'equazione. Ho notato la menzione di "zone di sicurezza" che non sempre funzionano. Ci sono stati casi in cui gli autori di malware acquistano spazio pubblicitario legittimo per infettare i visitatori. Immagina quanto segue: attacchi dannosi acquistano parole e grafici pubblicitari su Yahoo.com. È un sito autorizzato, il browser nella sua saggezza "zone di sicurezza" consentirebbe la connessione. Non esiste un metodo definitivo per impedire che ciò accada, indipendentemente dalla profondità della "ispezione approfondita dei pacchetti".

Sul rovescio dell'equazione, ricorda, noi (tu) stiamo cercando di impedire alla tua macchina di fare una scelta sbagliata (connessione). Gli operatori di siti Web dannosi / malevoli spesso programmano diversi meccanismi per "uscire", ad esempio:

maliciousSomething --> try getting here --> Interwebs ; if fail then ;
try getting here instead --> Interwebst ; if fail then ;
generate obfuscation --> try getting here

Qual è la comunanza qui? ... La destinazione "qui" dove "qui" può essere isolato non solo sul corpo. firewall, ma anche su firewall locali (locali come nei firewall di Windows). Il rovescio della medaglia è che gli autori dannosi compromettono continuamente le macchine, quindi la lista nera, la whitelist è una battaglia persa.

Se le cose sono "così estreme" dove la sicurezza è della "massima" priorità, allora ti consiglio di utilizzare un proxy (Squid o così) insieme a e cancellando a priori le stringhe potenzialmente pericolose prima che venga effettuata la connessione. per es.

machineOnNetwork --> gohere.com/malicious.js --> proxy --> interwebs
proxy --> before I send you anywhere... Let me regex check and replace things --> interwebs

Anche questo diventa ingombrante dal momento che potresti avere una quantità infinita di regole regex alla fine della giornata. Quello che hai postato è una battaglia in corso che la maggior parte dei fornitori di AV può fare quotidianamente, oltre a sviluppatori di software. Mi piacerebbe vedere la tua soluzione alla fine della giornata. Se mi chiedi, ci sono solo bandaids a questo problema.

    
risposta data 22.10.2014 - 15:51
fonte

Leggi altre domande sui tag