Ho un'applicazione web ASP.Net MVC 4 ospitata su un server Windows 2008. L'applicazione è protetta da un provider di appartenenze ASP.Net personalizzato. Solo gli utenti a cui è stata concessa l'autorizzazione dall'amministratore hanno accesso. L'applicazione contiene dati medici sensibili di individui.
Recentemente, ho scoperto che 60 su 320 utenti registrati inviano richieste sospette al mio sito web. Queste richieste ottengono una risposta 404 dello stato HTTP, in quanto non esistono sul mio sito e sono inadeguate. Ad esempio, questo è il sottoinsieme di URL che contengono "admin":
/_vti_bin/_vti_adm/admin.dll
/admin.php
/admin/597ea5fc-0805-4b3c-8ab8-3d5320d8683c
/admin/chgpwd.php
/admin/default.asp
/AdminHTML/parse_xml.cgi
/admin-serv/authenticate
/admin-serv/config/admpw
/advwebadmin/adminsettings/browsewebalizerexe.asp
/advwebadmin/SQLServ/sqlbrowse.asp
/iisprotect/admin/GlobalAdmin.asp
/mailman/admin/mailman
/phpmyadmin/sql.php
/scripts/admin.cgi
/shop/admin.php
/shopscript/admin.php
/SiteServer/admin/
/store/admin.php
Ci si può aspettare un piccolo danno da una richiesta come /store/admin.php, poiché nessun file .php è presente sul server. Mi disturba ancora, perché i miei utenti sono loggati quando arrivano le richieste. Cioè, sessioni e cookie di autenticazione vengono inviati con le richieste. Pertanto, se è stata inviata una richiesta valida, il server potrebbe divulgare informazioni sensibili nella risposta, poiché il server ritiene che le richieste siano autentiche. Io uso un token anti-contraffazione per prevenire la falsificazione di richieste tra siti, ma questo eviterà richieste di richieste maligne. Questi sono quasi altrettanto problematici, a causa dei dati sensibili sul sito. Inoltre, se le richieste sospette provengono effettivamente dal browser dell'utente, non esiste "cross-site".
Finora, sono stato in grado di confermare che le richieste autenticate arrivano quando l'utente sta effettivamente utilizzando l'applicazione. Cioè, le richieste sospette arrivano tra richieste valide e il mio registro mostra anche che gli utenti hanno effettuato l'accesso. Ora sto cercando di registrare le richieste complete, inclusi l'indirizzo IP di origine, le intestazioni HTTP e i cookie. Non banale, poiché la mia applicazione si trova dietro un server proxy inverso.
Nel frattempo mi chiedo quale possa essere l'origine di queste richieste, considerando che molti dei miei utenti sono coinvolti. Potrebbe essere:
- Molti malware presenti nei browser degli utenti?
- Altro malware sui client?
- Attacchi man-in-the-middle?
- Malware sul server web?
- Malware distribuito dalla mia applicazione web, javascript?
Inoltre, l'applicazione web viene regolarmente sottoposta a scansione da uno strumento di test McAfee Penetration. Questo strumento non esegue il login. Ho scoperto che anche gli URL tutti in richieste sospette, creati da sessioni utente, sono eseguiti da McAfee (205 diversi URL, finora). McAfee stessa, tuttavia, ne usa molti altri (3300+). Questo mi fa domandare se le richieste degli utenti possano essere confuse da qualche parte nella rete, a causa del caching o di qualsiasi altra cosa, in modo che io stia effettivamente guardando un non-problema. Certo, ho un problema molto più grande se le richieste sono confuse. D'altra parte, le richieste sono correlate al tempo con le sessioni utente, non con gli intervalli di esecuzione dei test di penetrazione e forse gli URL sono solo le vulnerabilità che il malware sta cercando.