Threat hunting s Osquery, Časť 3 – Interakcia s používateľskými účtami

  • utorok, aug 3, 2021
Singel-post cover image

Časť 3 – Interakcia s používateľskými účtami

Veľmi častým strategickým cieľom útočníkov je získať prístup ku citlivým dátam organizácie a čiastkovým taktickým cieľom je získanie kontroly nad kľúčovými časťami infraštruktúry. Za týmto účelom sa útočníci po prieniku na zariadenie bežne snažia získať kontrolu nad používateľskými účtami. V rôznych fázach útoku to môžu byť rôzne účty – ako prvý najčastejšie získajú účet, v kontexte ktorého sa udiala prvotná kompromitácia. Následne sa môžu útočníci pokúsiť o eskaláciu privilégií alebo krádež prihlasovacích údajov účtov s vysokými privilégiami. Získané účty potom používajú na prieskum a laterálny pohyb infraštruktúrou. Ak útočníci majú administrátorské privilégiá, môžu si vytvárať aj úplne nové účty. Nižšie uvedené Osquery dopyty nám môžu pomôcť pri identifikácii používateľských účtov s nezvyčajnou aktivitou.

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

Používatelia

Východiskom je dopyt vracajúci inventár používateľských účtov prítomných na všetkých zariadeniach. Každé zariadenie vráti svoje záznamy o lokálnych aj doménových účtoch, vďaka čomu môžeme súhrnné dáta spracovávať a odpovedať na otázky, ako napríklad:

  • Sú všetky účty v zozname legitímne a aktuálne?

  • Je prítomný – t.j. bol aspoň raz prihlásený a nebol zmazaný – niektorý účet na viac zariadeniach než by mal, alebo než je zvyčajné?

  • Pristupoval niektorý účet na zariadenie, pričom na to nemal žiaden pracovný ani technický dôvod?

  • Na ktorých všetkých zariadeniach je podozrivý účet prítomný?

  • Aké privilégiá má podozrivý účet?

V prípade podozrivých nálezov netreba zabudnúť na ďalšie zdroje informácií ako sú Windows Security logy zo zariadení a v doménovom prostredí aj s doménových radičov.

SELECT 
    u.username, 
    u.directory, 
    u.uuid, 
    g.groupname, 
    g.group_sid, 
    u.type
FROM users AS u
    JOIN groups AS g USING(gid); 

Posledné prihlásenia

V prípade že identifikujeme účet ktorý je niečím nezvyčajný, je potrebné bližšie preskúmať jeho aktivitu. Nižšie uvedený dopyt poskytuje informáciu o posledných prihláseniach daného užívateľa na zariadeniach, voči ktorým bude dopyt spustený. Toto môže pomôcť pri určení rozsahu laterálneho pohybu útočníka. Zvlášť si preto treba všímať hodnoty v stĺpci logon_type, ktoré označujú vzdialene prihlásenie – Remote Interactive (t.j. použitie Terminal Services, RDP) alebo Network (napr. namapovanie priečinku zdieľaného na sieti). Údaj o čase posledného prihlásenia nám môže pomôcť umiestniť aktivitu účtu na časovú os. V prípade že dopytujeme všetky zariadenia, môžeme vidieť aj poradie v akom sa účet na ne prihlasoval.

SELECT  
    ls.user,  
    ls.logon_domain,  
    ls.logon_type,  
    datetime(ls.logon_time, "unixepoch") AS logon_time,  
    g.groupname,  
    ls.logon_sid  
FROM logon_sessions AS ls  
    JOIN users AS u ON u.uuid = ls.logon_sid  
    JOIN groups AS g ON g.gid = u.gid 
WHERE ls.user = <meno_pouzivatela>; 

Prihlásení používatelia

Nasledujúci Osquery dopyt vráti zoznam otvorených relácií pre zvoleného používateľa v momente spustenia dopytu. Týmto sa vieme ešte viac zamerať na to, kde sa práve v danom okamihu deje podozrivá aktivita. Tieto informácie nám môžu pomôcť odhadnúť úmysly prípadného útočníka, čo je dôležité pri plánovaní reakčnej stratégie. Odstránením klauzuly WHERE sa nám vrátia relácie všetkých používateľov.

SELECT
    liu.type,
    liu.user,
    liu.tty,
    liu.host,
    datetime(liu.time, "unixepoch") AS login_time,
    liu.sid,
    g.groupname
FROM logged_in_users AS liu
    JOIN users AS u ON liu.sid = u.uuid
    JOIN groups AS g ON u.gid = g.gid 
WHERE user = <meno_pouzivatela>; 

Artefakty shellbags

Vo fáze vyšetrovania, kedy už máme s pomerne vysokou istotou identifikovaný jeden alebo viacero podozrivých účtov, je veľmi užitočné v zmysle ochrany dát organizácie a určenia rozsahu a fázy prípadnej kompromitácie zistiť, ku akým priečinkom daný účet pristupoval. Pokiaľ je používateľ prihlásený na zariadenie interaktívne cez grafické rozhranie a prehliada priečinky pomocou programu Windows Explorer, cesty ku týmto priečinkom sa ukladajú v tzv. shellbags artefaktoch. Nižšie uvedený dopyt zozbiera tieto artefakty zo zariadení spolu s MAC časovými značkami. Pokiaľ však útočník prehliadal dáta nie cez Windows Explorer, záznamy o jeho aktivite v týchto výsledkoch nebudú.

SELECT
    s.path,
    datetime(s.modified_time, "unixepoch") AS modified_time,
    datetime(s.created_time, "unixepoch") AS created_time,
    datetime(s.accessed_time, "unixepoch") AS accessed_time,
    s.sid,
    u.username
FROM shellbags AS s
    JOIN users AS u ON s.sid = u.uuid
WHERE u.username = <meno_pouzivatela>; 

Artefakty userassist

Ako doplňujúca informácia ku artefaktom shellbags môžu poslúžiť tzv. artefakty userassist. Tieto obsahujú záznamy o programoch spustených priamo používateľom výlučne cez grafické rozhranie. Tieto záznamy by vznikli napríklad ak by si útočník prezeral obsah súborov priamo na zariadení pomocou bežných asociovaných grafických aplikácií, ale nie ak by na to používal napríklad programy volané cez príkazový riadok. Spustenie samotného príkazového riadku by sme však videli, ak bol spustený cez grafické rozhranie.

SELECT
    ua.path,
    datetime(ua.last_execution_time, "unixepoch") AS last_execution_time,
    ua.count,
    u.username
FROM userassist AS ua
    JOIN users AS u ON ua.sid = u.uuid
WHERE u.username = <meno_pouzivatela>; 

Odkazy