Threat hunting s Osquery, Časť 1 – Perzistencia

  • štvrtok, júl 8, 2021
Singel-post cover image

Časť 1 – Perzistencia

V nasledujúcej trojdielnej sérii si na jednoduchých príkladoch priblížime využitie Osquery pri hľadaní kybernetických hrozieb na zariadeniach s operačným systémom Windows. Na predvedenie informácií viditeľných pomocou Osquery stačí dopyty spúšťať len na jednom zariadení. Treba však mať na pamäti, že sila Osquery sa naplno prejaví v jeho plošnom nasadení a centrálnom riadení, kedy ten istý dopyt vráti dáta z celého prostredia. V prvej časti ukážeme niekoľko dopytov, ktoré pomáhajú odhaliť perzistenciu vytvorenú útočníkom alebo škodlivým kódom.

Viac o Osquery sa možete dočítať v krátkom článku, ktorý nájdete na našom blogu.

Plánované úlohy

Notoricky známa technika vykonania škodlivého kódu a zabezpečenia perzistencie je vytvorenie plánovanej úlohy (scheduled task), prípadne škodlivá úprava legitímnej (MITRE ATT&CK T1053.005). Vo výstupe nižšie uvedeného dopytu sa oplatí všímať nezvyčajné názvy úloh, cesty ku spustiteľným súborom a ich príkazové argumenty. Výrazne môže pomôcť porovnanie vráteného zoznamu úloh voči zoznamu zaručene preverených úloh. Skepticizmu nikdy nie je dosť - útočníci totiž často vymýšľajú veľmi dôveryhodne pôsobiace názvy úloh, avšak z pochopiteľných príčin ku nim nie je možne na internete nájsť akúkoľvek dokumentáciu.

SELECT 
    name, 
    action, 
    path, 
    state, 
    datetime(last_run_time, "unixepoch") AS last_run_time, 
    datetime(next_run_time, "unixepoch") AS next_run_time
FROM scheduled_tasks; 

Služby

Technika dosiahnutia perzistencie vytvorením Windows služby (service), prípadne úpravou už existujúcej legitímnej úlohy je v MITRE ATT&CK zapísaná pod označením T1543.003 a je často útočníkmi používaná. Podobne ako pri plánovaných úlohách, aj v tomto prípade často útočníci vymýšľajú dôveryhodne znejúce názvy služieb, ktoré ľahko zmätú nepripravených. Treba prešetriť služby, ktorých proces sa nachádza v nezvyčajnom priečinku, notorický príklad je AppData a jeho podpriečinky. Navyše, argumenty pre proces svchost môžu obsahovať znaky &&, čo pri interpretovaní príkazu pri spúšťaní služby spôsobí vykonanie ľubovoľného príkazu pripojeného na koniec.

SELECT 
    name, 
    display_name, 
    status, 
    start_type, 
    path, 
    module_path 
FROM services

Položky Startup

Po prihlásení sa používateľa do svojho účtu spustí operačný systém programy linkované v tzv. Startup priečinkoch, či už celosystémových, alebo špecifických pre daného používateľa. Takisto systém automaticky vykoná príkazy zapísané v kľúčoch Windows registra Run, RunOnce, RunServices a RunServicesOnce. Zneužitie tejto funkcionality útočníkmi na vytvorenie perzistencie je popísané v MITRE ATT&CK ako technika T1547.001. V položkách vypísaných nižšie uvedeným dopytom je treba všímať si umiestnenia spustiteľných súborov v nezvyčajných priečinkoch a nezvyčajné príkazy v ich argumentoch, obzvlášť ak sa spúšťa príkazový riadok, PowerShell alebo iný interpreter.

SELECT 
    name, 
    path, 
    args, 
    source, 
    username 
FROM startup_items; 

WMI

WMI (Windows Management Instrumentation) obsahuje funkcionalitu umožňujúcu vykonanie kódu, ktoré je podmienené odohraním sa vopred definovanej udalosti. Funguje to spojením troch prvkov: filter udalostí – prepojenie – spotrebiteľ (z angl. Event Filter – Binding – Consumer). Filter udalosti definuje udalosť pri ktorej sa vygeneruje spúšťací signál. Ten sa cez vytvorené prepojenia dostane ku spotrebiteľom, ktorí obsahujú definíciu úkonu a ten sa vykoná. Útočníci zneužívajú vytvorenie takejto trojice WMI objektov na dosiahnutie perzistencie, čo je v MITRE ATT&CK popísané ako technika T1546.003. Osquery nám pomôže do týchto WMI objektov nahliadnuť pomocou štvorice nižšie uvedených dopytov. V prvom rade si treba v spotrebiteľoch všímať podozrivé príkazy a cesty ku skriptom a spustiteľným súborom. Prepojenia nás následne privedú ku filtrom, ktoré nám povedia čo sú spúšťače danej podozrivej aktivity.

SELECT 
    name, 
    command_line_template, 
    executable_path, 
    relative_path 
FROM wmi_cli_event_consumers; 
SELECT 
    name, 
    scripting_engine, 
    script_file_name, 
    script_text, 
    relative_path 
FROM wmi_script_event_consumers; 
SELECT 
    consumer, 
    filter,
    relative_path 
FROM wmi_filter_consumer_binding; 
SELECT 
    name, 
    query, 
    relative_path 
FROM wmi_event_filters; 

Odkazy