LoadLibrary, праслойка для загрузкі Windows DLL у Linux-прыкладанні

Тэвіс Армандзі (Tavis ormandy), даследчык бяспекі з Google, развівае праект LoadLibrary, Нацэлены на партаванне сабраных для Windows DLL-бібліятэк для іх выкарыстання ў прыкладаннях для Linux. Праектам прадастаўляецца бібліятэка-праслойка, пры дапамозе якой можна загрузіць DLL-файл у фармаце PE/COFF і выклікаць пэўныя ў ім функцыі. Загрузнік PE/COFF заснаваны на кодзе ndiswrapper. Код праекту распаўсюджваецца пад ліцэнзіяй GPLv2.

LoadLibrary бярэ на сябе функцыі загрузкі бібліятэкі ў памяць і імпарту наяўных знакаў, падаючы Linux-дадатку API у стылі dlopen. Падлучальны код можа адладжвацца пры дапамозе gdb, ASAN і Valgrind. Прадугледжана магчымасць карэкціроўкі выкананага кода падчас выканання праз падключэнне хукаў і накладанне патчаў (runtime patching). Падтрымліваюцца адпрацоўка і размотка (unwinding) выключэнняў для C++.

Мэтай праекта з'яўляецца арганізацыя маштабаванага і эфектыўнага размеркаванага fuzzing-тэставанні DLL-бібліятэк у асяроддзі на базе Linux. У Windows правядзенне fuzzing- і coverage-тэставанні не дазваляе дамагчыся належнай эфектыўнасці і часта патрабуе запуску асобнага віртуалізаванага асобніка Windows, асабліва пры спробе аналізу ўскладненых прадуктаў, такіх як антывіруснае ПА, якія ахопліваюць працу на ўзроўні ядра і прасторы карыстача. Пры дапамозе LoadLibrary даследнікі з Google займаюцца пошукам уразлівасцяў у відэакодэках, антывірусных сканерах, бібліятэках распакавання дадзеных, дэкадавальніка малюнкаў і да т.п.

Напрыклад, пры дапамозе LoadLibrary атрымалася партаваць для запуску ў Linux антывірусны рухавічок Windows Defender. Даследаванне mpengine.dll, які складае аснову Windows Defender, дало магчымасць прааналізаваць вялікі лік ускладненых апрацоўшчыкаў розных фарматаў, эмулятараў ФС і інтэрпрэтатараў моў, патэнцыйна якія прадстаўляюць вектары для магчымых нападаў.

LoadLibrary таксама выкарыстоўваўся пры выяўленні выдаленай уразлівасці у антывірусным пакеце Avast. Пры вывучэнні DLL ад дадзенага антывіруса было выяўлена, што ключавы прывілеяваны працэс сканавання ўключае паўнавартасны JavaScript-інтэрпрэтатар, выкарыстоўваны для эмуляцыі выканання іншага JavaScript-кода. Дадзены працэс не ізаляваны ў sandbox-асяроддзе, не скідае прывілеі і выконвае аналіз неправераных вонкавых дадзеных з ФС і перахопленага сеткавага трафіку. Бо любая ўразлівасць у дадзеным ускладненым і неабароненым працэсе патэнцыйна можа прывесці да выдаленай кампраметацыі ўсёй сістэмы, на базе LoadLibrary была распрацаваная адмысловая абалонка. avscript для аналізу ўразлівасцяў у антывірусным сканары Avast у асяроддзі на базе Linux.

Крыніца: opennet.ru

Дадаць каментар