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