Master's Thesis

Development of YARA-X ecosystem

Final Thesis 4.06 MB

Author of thesis: Ing. Tomáš Ďuriš

Acad. year: 2023/2024

Supervisor: Ing. Dominika Regéciová

Reviewer: Ing. Zbyněk Křivka, Ph.D.

Abstract:

The aim of this work is to extend and create an unified ecosystem of tools for the YARA language. The focus is on incorporating modules that can gather information about the structure of executable files. Additionally, a module that can present obtained information to the user in multiple formats is also being proposed. An interactive environment has been created for evaluating YARA rules and enhancing the overall ecosystem by using an error-tolerant parsing algorithm. The proposed solution enables the seamless integration and utilization of existing tools while addressing the limitations of the original YARA ecosystem. The output of the work is an extended system with tools that facilitate the debugging of YARA rules, obtaining information from executable files, and visualizing them. The final solution has been thoroughly tested, utilized by analysts, and integrated into main YARA-X branch.

Keywords:

YARA-X, Rust, Gen Digital, malware, static analysis, error-resilient parsing, Mach-O, data extraction, test framework

Date of defence

17.06.2024

Result of the defence

Defended (thesis was successfully defended)

znamkaAznamka

Grading

A

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných, např. upřesnění odolnosti parseru proti chybám, pravidel detekujících chyby a porocesu zotavení se, výhody realizovaného řešení oproti standardnímu typu parseru či způsobu testování parseru (počet souborů, jejich zdroj a charakter). Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm A - výborně.

Topics for thesis defence

  1. V kapitole 7 srovnáváte nový syntaktický analyzátor s již existujícími analyzátory jazyka Yara, což je trochu nefér srovnání, jelikož v novém analyzátoru nebyl požadavek na kontrolu sémantické správnosti, která byla správně oddělená v zájmu zvýšení modularity celého systému. Mohl byste se pokusit alespoň nastínit srovnání, pokud bychom porovnávali časy, které budou zahrnovat i srovnatelné množství sémantických kontrol?

Language of thesis

Slovak

Faculty

Department

Study programme

Information Technology and Artificial Intelligence (MITAI)

Specialization

Cybersecurity (NSEC)

Composition of Committee

doc. Dr. Ing. Petr Hanáček (předseda)
doc. Ing. Michal Bidlo, Ph.D. (člen)
doc. Mgr. Adam Rogalewicz, Ph.D. (člen)
doc. Ing. Petr Matoušek, Ph.D., M.A. (člen)
doc. Mgr. Kamil Malinka, Ph.D. (člen)
Ing. Vladimír Veselý, Ph.D. (člen)

Supervisor’s report
Ing. Dominika Regéciová

Student navrhl a implementoval několik rozsáhlých rozšíření pro nový open-source projekt YARA-X, včetně parseru odolného vůči chybám, nástroji pro extrakci dat nebo Mach-O modulu.
Student zároveň, nad rámec svých povinností, pracoval na propagaci tohoto nového nástroje pomocí publikování a příspěvků na sociálních sítí.
Výsledný kód je pokryt sérii testů a porovnán s předchozím řešením. Zároveň kód prošel schvalovacím procesem a je z velké části zařazen do oficiální chystané verze, která bude zveřejněna v průběhu léta. Celkově práci nemám co vytknout. Z těchto důvodů navrhuji hodnocení z A.

Evaluation criteria Verbal classification
Informace k zadání

Zadání považuji za náročnější z důvodu rozsáhlosti výsledného projektu. Student se do velké míry podílel na tvorbě nové generace open-source nástroje YARA, YARA-X. Tento nový nástroj, psaný v jazyce Rust, spoluvytvářel s hlavním autorem projektu YARA a musel tudíž zapracovávat požadavky nejen zadání, mé a konzultantovi, ale také požadavky přímo od autora, které často představovali práci navíc. Student reagoval pružně, odváděl kvalitní práci a velká část jeho výsledné implementace je již nyní součástí primární verze projektu, která bude součástí prvního vydání plánovaného v létě tohoto roku.
Zároveň projekt aktivně propagoval na internetu, sepsal blogový příspěvek vysvětlující benefity nové verze YARA nástroje a aktivně se zapojoval do diskusí na sociálních sítích.
Finální práce byla dokončena v předstihu a řádně konzultována. Zadání pak bylo splněno ve všech bodech.

Aktivita při dokončování

Jak technická zpráva, tak realizační výstup byly dokončeny včas a dostatečně konzultovány, jak se mnou, tak s konzultantem.

Publikační činnost, ocenění

Student přispíval do open-sourcesového projektu YARA-X, jeho příspěvky jsou již nyní volně dostupné na GitHub stránkách. Zároveň o své práci sepsal propagační blogový příspěvek na https://engineering.avast.io/ a jeho práce se dočkala řady pozitivních ohlasů na platformě X.

Práce s literaturou

Student si hledal literaturu samostatně. Vzhledem k povaze práce čerpal především z technických dokumentací, výsledný seznam považuji za dostatečný.

Aktivita během řešení, konzultace, komunikace

Student pracoval na zadání aktivně hned od začátku. Práci pravidelně konzultoval, jak se mnou, tak odborným konzultantem. Nad rámec toho rovněž implementaci průběžně řešil s hlavním autorem projektu YARA-X a zastřešoval koordinaci spolupráce. Dodržoval dohodnuté termíny a na konzultacích byl vždy připraven.

Points proposed by supervisor: 95

Grade proposed by supervisor: A

Reviewer’s report
Ing. Zbyněk Křivka, Ph.D.

Práce je implementačně nadprůměrná rozsahem i praktickou využitelností. Navíc je realizace doplněna výbornou technickou zprávou, takže hodnotím Výborně/A.

Evaluation criteria Verbal classification Points
Rozsah splnění požadavků zadání

Evaluation level: zadání splněno

Zadání považuji za splněné s drobným rozšířením, kdy student pojal integraci a testování zodpovědně a vytvořil testovací nástroj využitelný i pro budoucí moduly pro YARA-X.

Rozsah technické zprávy

Evaluation level: je v obvyklém rozmezí

Text je velmi poctivě zpracován a dobře vyvažuje část seznamující s původním nástrojem YARA, návrhem nové verze YARA-X a dále návrhem studenta pro nové moduly a rozšíření. Jediné negativum z pohledu komunity je v tom, že práce není psána anglicky.

Prezentační úroveň technické zprávy

Text je velmi dobře strukturován, vše řádně navazuje a usnadňuje pochopení. Části jsou vhodně provázány odkazy, které zjednodušují orientaci v textu.

Okrajově bych vytkl, že nejasnost ohledně převodu AST na (H)IR na str. 35 je vyjasněna až v sekci 6.3, což by vyřešilo krátké vysvětlení zkratky (H)IR už dříve. Dále u sekce 6.3.4 by bylo lepší dokreslit vše vhodným schématem nebo diagramem pro obalující struktury, aby text nebyl tolik abstraktní.

Větší slabinou je podle mě to, že v textu není analýza alternativních generátorů syntaktických analyzátorů pro Rust (než dříve použitý Pest), které by lépe odpovídaly požadavků (např. binding generátoru tree-sitter pro Rust atd.).

90
Formální úprava technické zprávy

Za poslední dobu asi nejpoctivěji zpracovaný text po jazykové i typografické, který bylo radost číst. Jedinou výtku mám k ne vždy dobře použitým číselným referencím, kdy občas chybí určení, na jaký typ objektu se číselná reference odkazuje (sekce či obrázek).

98
Práce s literaturou

Pozitivně hodnotím i výběr literatury, která je dobře citována v celém textu. Dobře je odlišeno, co je práce studenta a co je součást původního systému.

90
Realizační výstup

Implementace v jazyce Rust je součásti přiloženého média a je plně funkční a kód je dobře komentovaný. Obsahuje také README soubory, které upřesňují, u kterých souborů je student autor. Soubory většinou nemají autorskou hlavičku, což vypadá jako zvyklost v projektu YARA-X.

Student vyvinul nový modul podporující analýzu formátu Mach-O (binární formát běžný na zařízeních Apple), analyzátor YARA pravidel odolný vůči chybám vedoucí na možnost implementace LSP, který student také částečně implementoval a demonstroval rozšířením pro Visual Studio Code. Dále implementoval možnost získávat strukturované výstupy z nástroje YARA-X, čímž student umožnil implementovat i rámec pro testování nových modulů pro YARA-X (včetně fuzzy testování). Poslední 2 části považuji za rozšíření nad rámec zadání.

Jelikož nemám s jazykem Rust velké zkušenosti, neumím posoudit, zda je návrh v tomto nízkoúrovňovém jazyce nějak výjimečný.

88
Využitelnost výsledků

Přinejmenším část programového díla je již součástí vývojářských verzí YARA-X, jak lze dohledat ve veřejném git repozitáři. Popularita nástroje lze naznačit jen počtem přes 500 hvězdiček na Github

Náročnost zadání

Evaluation level: obtížnější zadání

Kromě nutnosti nastudovat obsáhlý ekosystém kolem nástroje YARA používaného pro analýzu malware vyžaduje zadání v bodě 5 hodnotný příspěvek (analýza jazyka YARA a podpora jeho vyhodnocování) k novému ambicióznímu projektu YARA-X v jazyce Rust vzniklý pod hlavičkou autora původní YARA a VirusTotal/Google.

Topics for thesis defence:
  1. V kapitole 7 srovnáváte nový syntaktický analyzátor s již existujícími analyzátory jazyka Yara, což je trochu nefér srovnání, jelikož v novém analyzátoru nebyl požadavek na kontrolu sémantické správnosti, která byla správně oddělená v zájmu zvýšení modularity celého systému. Mohl byste se pokusit alespoň nastínit srovnání, pokud bychom porovnávali časy, které budou zahrnovat i srovnatelné množství sémantických kontrol?
Points proposed by reviewer: 91

Grade proposed by reviewer: A

Responsibility: Mgr. et Mgr. Hana Odstrčilová