Windows library files foydalanuvchi kontenti uchun virtual konteynerlar hisoblanadi. Ular foydalanuvchilarni veb-xizmatlar yoki ulashmalar kabi uzoq joylarda saqlangan ma'lumotlar bilan bog'laydi. Bu fayllar .Library-ms fayl kengaytmasiga ega bo'lib, Windows Explorer da ikki marta bosish orqali ishga tushirilishi mumkin.

Ushbu bo'limda biz ikki bosqichli client-side attack ni qo'llaymiz. Birinchi bosqichda, Windows library files dan foydalanib, maqsadli tizimda o'rin egallaymiz va ikkinchi bosqichni tayyorlaymiz. Ikkinchi bosqichda, bu o'rindan foydalanib, ikki marta bosilganda reverse shell ni ishga tushiradigan executable file ni taqdim etamiz.

Avval, biz WebDAV1 share ga ulanadigan Windows library file ni yaratamiz. Birinchi bosqichda, qurbon, masalan, elektron pochta orqali .Library-ms faylini oladi. U faylni ikki marta bosganda, u Windows Explorer da oddiy direktoriya sifatida ko'rinadi. WebDAV direktoriyasida biz ikkinchi bosqich uchun .lnk shortcut file shaklida payload taqdim etamiz, u PowerShell reverse shell ni ishga tushiradi. Foydalanuvchini bizning .lnk payload file ni ikki marta bosib ishga tushirishga ishontirishimiz kerak.

Bir qarashda, ikkinchi bosqich uchun .lnk faylini Apache kabi veb-server orqali taqdim etish orqali buni amalga oshirish mumkin deb o'ylash mumkin. Bu usulning kamchiligi shundaki, biz veb-havolamizni qurbon ga (yana, ehtimol elektron pochta orqali) taqdim etishimiz kerak bo'ladi. Ko'pgina spam filtrlar va xavfsizlik texnologiyalari havola mazmunini shubhali kontent yoki yuklab olinadigan executable file turlari uchun tahlil qiladi. Bu bizning havolalarimiz qurbon ga yetib bormasdan filtrlanishi mumkinligini anglatadi.

Boshqa tomondan, spam filtrlar va xavfsizlik texnologiyalarining aksariyati Windows library files ni to'g'ridan-to'g'ri foydalanuvchiga o'tkazadi. Foydalanuvchi faylni ikki marta bosganda, Windows Explorer masofaviy joyning mazmunini xuddi mahalliy direktoriya kabi ko'rsatadi. Bu holda, masofaviy joy bizning hujum mashinamizdagi WebDAV share dir. Umuman olganda, bu nisbatan oddiy jarayon bo'lib, foydalanuvchiga xuddi mahalliy faylni ikki marta bosayotgandek tuyuladi.

Buni namoyish qilish uchun avval Kali tizimimizda WebDAV share ni sozlaymiz. Fayllarimizni joylashtirish va taqdim etish uchun WebDAV server sifatida WsgiDAV2 dan foydalanamiz. WsgiDAV ni o'rnatish uchun pip3 dan foydalanishimiz mumkin.

kali@kali:~$ **pip3 install wsgidav**
Defaulting to user installation because normal site-packages is not writeable
Collecting wsgidav
  Downloading WsgiDAV-4.0.1-py3-none-any.whl (171 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 171.3/171.3 KB 1.6 MB/s eta 0:00:00
...
Successfully installed json5-0.9.6 wsgidav-4.0.1

Listing 10 - Installing pip3 and WsgiDAV

WsgiDAV o'rnatilgandan so'ng, .lnk faylimizni o'z ichiga oladigan WebDAV share sifatida foydalanish uchun /home/kali/webdav direktoriyasini yaratamiz. Hozircha bu direktoriyaga test.txt faylini joylashtiramiz.

<aside> 💡

Agar WsgiDAV o'rnatilishi error: externally-managed-environment xatosi bilan muvaffaqiyatsiz bo'lsa, virtual environment3 dan foydalanishimiz yoki apt bilan python3-wsgidav paketini o'rnatishimiz mumkin. PEP 6684 da virtual environment lardan foydalanishni majburlash va pip orqali paket o'rnatish operatsion tizimni buzishi mumkin bo'lgan holatlarni oldini olish uchun o'zgartirish kiritildi.

</aside>

Keyin, /home/kali/.local/bin direktoriyasidan WsgiDAV ni ishga tushiramiz. Agar WsgiDAV apt orqali o'rnatilgan bo'lsa, o'rnatish yo'li farq qiladi va kurs davomida serverni ishga tushirish uchun wsgidav buyrug'idan foydalanish kerak. Birinchi parametr sifatida --host ni taqdim etamiz, bu xizmat ko'rsatiladigan xostni belgilaydi. Biz barcha interfeyslarda tinglash uchun 0.0.0.0 dan foydalanamiz. Keyin, tinglash portini --port=80 bilan belgilaymiz va share ga autentifikatsiyani o'chirish uchun --auth=anonymous ni qo'llaymiz. Nihoyat, WebDAV share ning ildiz direktoriyasini --root /home/kali/webdav/ bilan o'rnatamiz.

kali@kali:~$ mkdir /home/kali/webdav

kali@kali:~$ touch /home/kali/webdav/test.txt

kali@kali:~$ /home/kali/.local/bin/wsgidav --host=0.0.0.0 --port=80 --auth=anonymous --root /home/kali/webdav/
Running without configuration file.
17:41:53.917 - WARNING : App wsgidav.mw.cors.Cors(None).is_disabled() returned True: skipping.
17:41:53.919 - INFO    : WsgiDAV/4.0.1 Python/3.9.10 Linux-5.15.0-kali3-amd64-x86_64-with-glibc2.33
17:41:53.919 - INFO    : Lock manager:      LockManager(LockStorageDict)
17:41:53.919 - INFO    : Property manager:  None
17:41:53.919 - INFO    : Domain controller: SimpleDomainController()
17:41:53.919 - INFO    : Registered DAV providers by route:
17:41:53.919 - INFO    :   - '/:dir_browser': FilesystemProvider for path '/home/kali/.local/lib/python3.9/site-packages/wsgidav/dir_browser/htdocs' (Read-Only) (anonymous)
17:41:53.919 - INFO    :   - '/': FilesystemProvider for path '/home/kali/webdav' (Read-Write) (anonymous)
17:41:53.920 - WARNING : Basic authentication is enabled: It is highly recommended to enable SSL.
17:41:53.920 - WARNING : Share '/' will allow anonymous write access.
17:41:53.920 - WARNING : Share '/:dir_browser' will allow anonymous read access.
17:41:54.348 - INFO    : Running WsgiDAV/4.0.1 Cheroot/8.5.2+ds1 Python 3.9.10
**17:41:54.348 - INFO    : Serving on <http://0.0.0.0:80> ..**

Listing 11 - Starting WsgiDAV on port 80

Chiqish WebDAV serveri endi 80-portda ishlayotganini ko'rsatadi. Buni tasdiqlash uchun brauzerimizda http://127.0.0.1 ni ochamiz.

image.png

Figure 25: Contents of WebDAV share

Figure 25 shuni ko'rsatadiki, biz WebDAV share ga muvaffaqiyatli kirdik va test.txt faylini ko'rdik.

Endi Windows library file ni yarataylik. Hujumimizni tayyorlash uchun xfreerdp yordamida 192.168.50.194 da joylashgan CLIENT137 mashinasiga RDP orqali ulanamiz. Tizimga offsec foydalanuvchi nomi va lab paroli bilan ulanishimiz mumkin. Bu bizga library file ni yaratish va sinovdan o'tkazishni, keyin esa shortcut file ni yaratishni ancha osonlashtiradi.