Posts Bypassing AppLocker and CLM
Post
Cancel

Bypassing AppLocker and CLM

What is AppLocker?

ال AppLocker هو عبارة عن برنامج موجود في ال Windows يقدر يقيد البرامج الثانية كال executable files. و ال AppLocker rules تكتب لخمس فئات:
  • Executable
  • Windows Installer
  • Script
  • Packaged App
  • DLLs

Bypassing AppLocker

وفي default configuration لل AppLocker تخلي بعض الأماكن مسموح فيها ال executable files لان هذا المكان فيه ملفات trusted by Windows مثل C:\Windows و ال C:\Program Files . الصعوبة في عملية ال bypass لل AppLocker تعتمد على ال rules الي موجودة. خلونا ناخذ مثال صغير ونحاول نجيب revers shell على النظام. لنفترض اننا نقلنا ملف ال revers shell لل Desktop. اذا جربنا نشغل الملف رجع لنا هذا ال Error:


  GUI

reverse shell

من ال Error نقدر نتأكد ان ال AppLocker شغال. خلونا اول شي نستعرض ال rules الخاصة بال AppLocker عن طريق هذا الأمر:


 

1
Get-ApplockerPolicy -Effective -xml > C:\users\IEUser\Desktop\AppLocker.xml


 

حفظنا النتائج في ملف xml موجود على ال Desktop نقدر نقرأ المعلومات الي بداخله:

AppLocker

خلونا نركز اول شي على هذه الجزئية:

Deny

نقدر نشوف انه في Deny على "%OSDRIVE%\Users\*" طيب ممكن تسأل وين مكان ال "%OSDRIVE%" هذا المكان بس ال AppLocker يتعامل معاه نقدر نسوي سيرش خفيف يرجع لنا هذه ال article من Microsoft:

Google

Microsoft

نقدر نعرف انه "%OSDRIVE%" هو نفسه ال "%SystemDrive%" والي هو عبارة عن "\:C" فنقدر نفهم انه كل ال executable file الي موجودة في هذا ال path ما رح تشتغل "C:\Users\" بنفس الوقت شوفو هذه الجزئية:

Temp

نقدر نعرف انه مسموح نشغل اي executable file فيه ال C:\temp فخلونا ننقل ملف ال reverse shell لهذا المكان ونجرب نشغله.رح نلاحظ انه ما رجع لنا اي error و جتنا shell في ال kali:

cp

MSF

LOLBins

بنفس الوقت في برامج Trusted by Windows وهذه نقدر عن طريقها نسوي execute لملفنا. تقدرون تشيكون كيف ممكن نستغلها من هنا:

LOLBAS

What is CLM?

طيب لما ال AppLocker يكون شغال غالباً Powershell رح تكون تستخدم ال Constrained Language Mode أو المعروف بال CLM وهذه تمنعنا من اننا نسوي execute لأوامر او اننا نستخدم ال Net. نقدر نشيك أيش ال Powershell Mode الحالي عن طريق هذا الأمر:


 

1
$ExecutionContext.SessionState.LanguageMode

CLM

طيب حالياً ال CLM شغال خلونا نحاول نطبع كلمة عن طريق هذا الأمر:


 

1
[system.console]::WriteLine("Test")

CLM2

نقدر نلاحظ رجع لنا error بسبب ال CLM

Bypassing CLM

Powershell 2

وحدة من الطرق عشان نسوي Bypass لل CLM هي عن اننا نسوي downgrade لل powershell version:


 

1
powershell -v 2

powershell-v2

Rundll32

نقدر عن طريق ال Rundll32 و PowerShdll اننا نسوي bypass لل CLM:


 

1
rundll32.exe .\PowerShdll.dll,main -w

Rundll32

Ending

في النهاية اتمنى اني أفدت ولو شخص واحد واحب اذكركم انه غالباً رح تحتاج تجمع كل الي تعلمته عشان يوصلك reverse shell


  Happy Hunting

This post is licensed under CC BY 4.0 by the author.