Přístupnostní navigace
E-application
Search Search Close
Master's Thesis
Author of thesis: Ing. Tomáš Ďuriš
Acad. year: 2023/2024
Supervisor: Ing. Dominika Regéciová
Reviewer: Ing. Zbyněk Křivka, Ph.D.
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.
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)
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
Language of thesis
Slovak
Faculty
Fakulta informačních technologií
Department
Department of Information Systems
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 reportIng. 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.
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.
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.
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.
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ý.
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.
Grade proposed by supervisor: A
Reviewer’s reportIng. 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 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.
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.
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.).
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).
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.
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ý.
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
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.
Grade proposed by reviewer: A
Responsibility: Mgr. et Mgr. Hana Odstrčilová