Атаки на уязвимост при отвличане на DLL, предотвратяване и откриване

DLL е съкращение от библиотеки с динамични връзки(Dynamic Link Libraries) и са външни части на приложения, които работят под Windows или всяка друга операционна система. Повечето приложения не са завършени сами по себе си и съхраняват код в различни файлове. Ако има нужда от кода, свързаният файл се зарежда в паметта и се използва. Това намалява размера на файла на приложението, като същевременно оптимизира използването на RAM . Тази статия обяснява какво е отвличане на DLL(DLL Hijacking) и как да го откриете и предотвратите.

Какво представляват DLL файлове(Files) или библиотеки с динамични връзки(Dynamic Link Libraries)

Отвличане на DLL

DLL файловете са библиотеки с динамични връзки(Dynamic Link Libraries) и както е видно от името, са разширения на различни приложения. Всяко приложение, което използваме, може или не може да използва определени кодове. Такива кодове се съхраняват в различни файлове и се извикват или зареждат в RAM само когато се изисква съответният код. По този начин той спестява файл на приложението да не стане твърде голям и да предотврати преглъщането на ресурси от приложението.

Пътят за DLL файловете се задава от операционната система Windows . Пътят се задава с помощта на глобални променливи на околната среда(Global Environmental Variables) . По подразбиране, ако приложение поиска DLL файл, операционната система търси в същата папка, в която се съхранява приложението. Ако не бъде намерен там, той отива в други папки, както е зададено от глобалните променливи. Има приоритети, прикрепени към пътищата и това помага на Windows да определи кои папки да търси DLL(DLLs) файловете . Това е мястото, където идва DLL отвличането.

Какво е DLL отвличане

Тъй като DLL файловете(DLLs) са разширения и са необходими за използване на почти всички приложения на вашите машини, те присъстват на компютъра в различни папки, както е обяснено. Ако оригиналният DLL файл бъде заменен с фалшив DLL файл, съдържащ злонамерен код, той е известен като DLL Hijacking .

Както споменахме по-рано, има приоритети за това къде операционната система търси DLL файлове. Първо(First) , той преглежда същата папка като папката на приложението и след това започва търсене въз основа на приоритетите, зададени от променливите на средата на операционната система. По този начин, ако файл good.dll е в папка SysWOW64 и някой постави bad.dll в папка с по-висок приоритет в сравнение с папката SysWOW64 , операционната система ще използва файла bad.dll, тъй като той има същото име като DLL поискано от заявлението. Веднъж в RAM , той може да изпълни злонамерения код, съдържащ се във файла, и може да компрометира вашия компютър или мрежи.

Как да открием отвличане на DLL

Най-лесният метод за откриване и предотвратяване на отвличане на DLL е използването на инструменти на трети страни. На пазара има някои добри безплатни инструменти, които помагат при откриването на опит за хакване на DLL и предотвратяването му.

Една такава програма е DLL Hijack Auditor , но поддържа само 32-битови приложения. Можете да го инсталирате на вашия компютър и да сканирате всичките си приложения на Windows, за да видите кои всички приложения са уязвими към отвличане на DLL . Интерфейсът е прост и разбираем. Единственият недостатък на това приложение е, че не можете да сканирате 64-битови приложения.

Друга програма, за откриване на отвличане  на DLL , DLL_HIJACK_DETECT, е достъпна чрез GitHub . Тази програма проверява приложенията, за да види дали някое от тях е уязвимо за отвличане на DLL . Ако е така, програмата информира потребителя. Приложението има две версии – x86 и x64 , така че можете да използвате всяка, за да сканирате съответно 32-битови и 64-битови приложения.

Трябва да се отбележи, че горните програми просто сканират приложенията на платформата Windows за уязвимости и всъщност не предотвратяват отвличането на DLL файлове.

Как да предотвратим отвличането на DLL

Проблемът трябва да бъде решен от програмистите на първо място, тъй като не можете да направите много, освен да подобрите системите си за сигурност. Ако вместо относителен път програмистите започнат да използват абсолютен път, уязвимостта ще бъде намалена. Четенето на абсолютния път, Windows или която и да е друга операционна система няма да зависи от системните променливи за пътя и ще отиде направо към предвидената DLL , като по този начин се отхвърлят шансовете за зареждане на (DLL)DLL със същото име в път с по-висок приоритет. Този метод също не е устойчив на грешки, защото ако системата е компрометирана и киберпрестъпниците знаят точния път на DLL , те ще заменят оригиналната DLL с фалшивата DLL. Това би било презаписване на файла, така че оригиналната DLL да се промени в злонамерен код. Но отново, киберпрестъпникът ще трябва да знае точния абсолютен път, посочен в приложението, което изисква DLL . Процесът е труден за киберпрестъпниците и следователно може да се разчита на него.

Връщайки се към това, което можете да направите, просто опитайте да разширите своите системи за сигурност, за да защитите по-добре вашата система Windows(secure your Windows system) . Използвайте добра защитна стена(firewall) . Ако е възможно, използвайте хардуерна защитна стена или включете защитната стена на рутера. Използвайте добри системи за откриване на проникване, за да знаете дали някой се опитва да играе с вашия компютър.

Ако се занимавате с отстраняване на проблеми с компютрите, можете също да извършите следното, за да повишите сигурността си:

  1. Деактивирайте зареждането на DLL от отдалечени мрежови споделяния
  2. Деактивирайте зареждането на DLL файлове от WebDAV
  3. Деактивирайте напълно услугата WebClient или я задайте на ръчно
  4. Блокирайте (Block)TCP портовете 445 и 139, тъй като те се използват най -много за компрометиране на компютри
  5. Инсталирайте най-новите актуализации на операционната система и софтуера за защита.

Microsoft пусна инструмент за блокиране на атаки за отвличане на DLL натоварване. Този инструмент намалява риска от атаки от отвличане на DLL , като предотвратява несигурното зареждане на код от DLL файлове на приложения.

Ако искате да добавите нещо към статията, моля, коментирайте по-долу.(If you would like to add anything to the article, please comment below.)



About the author

Аз съм рецензент на софтуер и експерт по продуктивността. Преглеждам и пиша софтуерни рецензии за различни софтуерни приложения, като Excel, Outlook и Photoshop. Отзивите ми са добре информирани и дават обективна представа за качеството на приложението. Пиша софтуерни ревюта от 2007 г.



Related posts