Pillole di Malware Analysis: Tecniche di Antidebugging #3

Nella pillola precedente vi avevo parlato delle tecniche antidebugging utilizzate dai malware e vi avevo parlato dell'utilizzo della primitiva CreateToolhelp32Snapshot per ricercare un processo.
Oggi vi mostro una routine scritta in C per dimostrarvi come si può fare.
Ho commentato il codice per renderlo più leggibile.
Innanzitutto bisogna partire con un punto nel corpo del malware nel quale si esegue un if di questo tipo

if processExists("OllyDbg.exe")
     faiqualcosaltro();
else
     faidelmale();

In pratica la funzione processExists cerca in memoria il processo OllyDbg.exe (il debugger) e se lo trova al posto di comportarsi come vorrebbe fa qualcos'altro, inducendo in errore l'analista.
Il cuore di questa routine è processExists che vi metto qui sotto:


int processExists(const wstring nome_processo)
{
Int processFound=0; // processFound = 0 se il processo non viene trovato, altrimenti è 1
HANDLE Hsnapshot; // conterrà la fotografia della memoria con tutti i processi attivi
if ((Hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) == INVALID_HANDLE_VALUE)
{
throw runtime_error("CreateToolhelp32Snapshot ha fallito con il seguente errore: " + to_string(GetLastError()));
}

PROCESSENTRY32 pe; // conterrà le informazioni sul processo corrente recuperato dallo snapshot
ZeroMemory(&pe, sizeof(PROCESSENTRY32W)); // pulisco l'area di memoria a cu punta pe rimpendola di zeri
pe.dwSize = sizeof(PROCESSENTRY32W);
Process32First(Hsnapshot, &pe); // prendo il primo processo nello snapshot. Qui avrei dovuto controllare l'eventuale errore di Process32First ;-)
if (pe.szExeFile == nome_processo) // Il campo szExeFile della struttura PROCESSENTRY32 contiene il nome del processo
    {
       processFound=1;
    }
else
    {
     while (Process32Next(Hsnapshot, &pe))
        {
            if (pe.szExeFile == nome_processo)
                {
                processFound=1;
                break;
                }
        }
    }
    return processFound;
}

 

 

#webapplicationsecurity #securityprofessionals #offensivesecurity #ethicalhacking #ethicalhacker #cybersecurity #cybersecurityawareness #informationsecurity #infosec #infosecurity #security #penetrationtesting #pentesting #pentest #pentester #securityawareness #redteam #redteaming #vulnerabilities #vulnerability #vulnerabilityscanning #vulnerabilityassessment #vulnerabilitymanagement #exploit #exploits #exploitation #codereview #securityadvisor #securityaudit #securityaudits #bughunter #bughunting #bugfixed #itsecurity #itsec #riskassessment #riskmanagement #ciso #owasp #owasptop10 #malware #malwareanalysis #cybersecurityUP

Pin It

A cura di...

Antonio Capobianco
Antonio Capobianco
Malware Analyst
Image
Vincenzo Alonge
Ethical Hacker e Forensic Analyst
Image
Andrea Tassotti
Ethical Hacker e Pentester
Image
Andrea Covino
Ethical Hacker e Forensic Analyst

Per rimanere aggiornato iscriviti alla nostra newsletter

Form by ChronoForms - ChronoEngine.com

Cyber Security UP

CybersecurityUP è una BU di Fata Informatica.
Dal 1994 eroghiamo servizi di sicurezza IT per grandi organizzazioni sia civili che militari.
  • Ethical Hacking
  • Red Teaming
  • Penetration Testing
  • Security Code Review
  • SOC 24x7
  • Formazione specialistica
Image
Image
Image
Via Tiburtina 912,
CAP 00156,
ROMA

Lunedì-venerdì
09:30 - 13:00
14:00 - 18:30

+39 06 4080 0490
amministrazione@fatainformatica.com

Contattaci

Necessiti dei nostri servizi di Cybersecurity?

Privacy policy

Ti invitiamo prendere visione della nostra
privacy policy  per la protezione dei tuoi dati personali.
Disclaimer
Alcune delle foto presenti su Cybersecurityup.it potrebbero essere state prese da Internet e quindi valutate di pubblico dominio. Se i soggetti o gli autori avessero qualcosa in contrario alla pubblicazione, lo possono segnalare via email alla redazione che provvederà prontamente alla rimozione delle immagini utilizzate.
© 2024 Fata Informatica. Tutti i diritti riservati.