
מאמר זה הוא חלק מסדרת תוכנות זדוניות ללא קבצים. כל שאר חלקי הסדרה:
- הרפתקאותיה של תוכנה זדונית חמקמקה, חלק IV: שדות מסמכי DDE ו-Word (אנחנו כאן)
במאמר זה, התכוונתי לצלול לתרחיש מורכב אפילו יותר של התקפה ללא קבצים עם הצמדה למערכת. אבל אז נתקלתי במתקפה פשוטה להפליא, ללא קוד - אין צורך בפקודות מאקרו של Word או Excel! וזה מוכיח בצורה יעילה הרבה יותר את ההשערה המקורית שלי העומדת בבסיס סדרת המאמרים הזו: לשבור את המסגרת החיצונית של כל ארגון היא לא משימה קשה בכלל.
המתקפה הראשונה שאתאר מנצלת פגיעות של Microsoft Word שמבוססת עליה מְיוּשָׁן (DDE). היא כבר הייתה . השני מנצל פגיעות כללית יותר ביכולות COM והעברת אובייקטים של Microsoft.
חזרה לעתיד עם DDE
עוד מישהו זוכר את DDE? כנראה שלא הרבה. זה היה אחד הראשונים פרוטוקולי תקשורת בין תהליכים שאפשרו ליישומים ולהתקנים להעביר נתונים.
אני קצת מכיר את זה בעצמי כי נהגתי לבדוק ולבדוק ציוד טלקום. באותה תקופה, DDE אפשרה, למשל, למפעילי מוקדים להעביר את זיהוי המתקשר לאפליקציית CRM, שבסופו של דבר פתחה כרטיס לקוח. כדי לעשות זאת, היה עליך לחבר כבל RS-232 בין הטלפון למחשב שלך. אלה היו הימים!
כפי שמתברר, Microsoft Word עדיין DDE.
מה שהופך את ההתקפה הזו ליעילה ללא קוד הוא שאתה יכול לגשת לפרוטוקול DDE ישירות משדות אוטומטיים במסמך Word (מורידה את הכובע בפני SensePost עבור בנוגע לזה).
קודי שדה היא עוד תכונה עתיקה של MS Word המאפשרת לך להוסיף טקסט דינמי וקצת תכנות למסמך שלך. הדוגמה הברורה ביותר היא שדה מספר העמוד, אותו ניתן להכניס לכותרת התחתונה באמצעות הערך {PAGE *MERGEFORMAT}. זה מאפשר להפיק מספרי עמודים באופן אוטומטי.

רמז: אתה יכול למצוא את פריט התפריט שדה תחת הוספה.
אני זוכר שכשגיליתי לראשונה את התכונה הזו בוורד, נדהמתי. ועד שהתיקון השבית אותו, וורד עדיין תמך באפשרות שדות DDE. הרעיון היה ש-DDE יאפשר ל-Word לתקשר ישירות עם האפליקציה, כך שהיא תוכל להעביר את הפלט של התוכנית למסמך. זו הייתה טכנולוגיה צעירה מאוד באותה תקופה - תמיכה בחילופי נתונים עם יישומים חיצוניים. מאוחר יותר היא פותחה לטכנולוגיית COM, עליה נסתכל גם בהמשך.
בסופו של דבר, ההאקרים הבינו שאפליקציית DDE זו יכולה להיות מעטפת פקודה, מה שכמובן השיקה את PowerShell, ומשם ההאקרים יכלו לעשות מה שהם רוצים.
צילום המסך למטה מראה כיצד השתמשתי בטכניקת התגנבות זו: סקריפט PowerShell קטן (להלן PS) משדה DDE טוען סקריפט PS אחר, אשר משיק את השלב השני של המתקפה.

תודה ל-Windows על האזהרה הקופצת ששדה ה-DDEAUTO המובנה מנסה בחשאי להפעיל את המעטפת
השיטה המועדפת לניצול הפגיעות היא להשתמש בגרסה עם השדה DDEAUTO, אשר מריץ את הסקריפט באופן אוטומטי בעת הפתיחה מסמך וורד.
בואו נחשוב מה אנחנו יכולים לעשות בנידון.
בתור האקר מתחיל, אתה יכול, למשל, לשלוח דוא"ל דיוג, להעמיד פנים שאתה משירות המס הפדרלי, ולהטמיע את שדה ה-DDEAUTO עם סקריפט ה-PS לשלב הראשון (טפטפת, בעצם). ואתה אפילו לא צריך לעשות שום קידוד אמיתי של פקודות מאקרו וכו', כמו שעשיתי ב
הקורבן פותח את המסמך שלך, הסקריפט המוטבע מופעל, וההאקר מגיע בסופו של דבר בתוך המחשב. במקרה שלי, הסקריפט המרוחק של PS רק מדפיס הודעה, אבל הוא יכול באותה קלות להפעיל את לקוח PS Empire, שיספק גישה למעטפת מרחוק.
ולפני שהקורבן יספיק להגיד משהו, ההאקרים יתבררו כבני הנוער העשירים ביותר בכפר.

המעטפת הושקה ללא שמץ של קידוד. אפילו ילד יכול לעשות את זה!
DDE ושדות
מיקרוסופט אמנם השביתה את DDE ב-Word, אך לא לפני שהחברה הצהירה שפשוט נעשה שימוש לרעה בתכונה. חוסר הרצון שלהם לשנות משהו מובנת. מניסיוני, אני עצמי ראיתי דוגמה שבה עדכון שדות בעת פתיחת מסמך הופעל, אך פקודות מאקרו של Word הושבתו על ידי IT (אך מציגות הודעה). אגב, אתה יכול למצוא את ההגדרות המתאימות בסעיף הגדרות Word.
עם זאת, גם אם עדכון שדות מופעל, Microsoft Word מודיע למשתמש בנוסף כאשר שדה מבקש גישה לנתונים שנמחקו, כפי שקורה ב-DDE לעיל. מיקרוסופט באמת מזהירה אותך.
אבל סביר להניח שמשתמשים עדיין יתעלמו מהאזהרה הזו ויפעילו את עדכון השדות ב-Word. זוהי אחת ההזדמנויות הנדירות להודות למיקרוסופט על השבתת תכונת ה-DDE המסוכנת.
כמה קשה למצוא מערכת Windows לא מתוקנת היום?
לבדיקה זו, השתמשתי ב-AWS Workspaces כדי לגשת לשולחן עבודה וירטואלי. בדרך זו קיבלתי מכונה וירטואלית של MS Office לא מתוקנת שאפשרה לי להכניס את השדה DDEAUTO. אין לי ספק שבאופן דומה ניתן למצוא חברות נוספות שטרם התקינו את תיקוני האבטחה הדרושים.
מסתורין של חפצים
גם אם התקנת את התיקון הזה, ישנם חורי אבטחה נוספים ב-MS Office שמאפשרים להאקרים לעשות משהו מאוד דומה למה שעשינו עם וורד. בתרחיש הבא נלמד השתמש ב-Excel כפיתיון להתקפת פישינג מבלי לכתוב שום קוד.
כדי להבין את התרחיש הזה, בואו נזכור את Microsoft Component Object Model, או בקיצור COM (מודל אובייקט רכיב).
COM קיימת מאז שנות ה-1990, ומוגדרת כ"מודל רכיבים נטולי שפה, מונחה עצמים" המבוסס על קריאות פרוצדורות מרחוק של RPC. להבנה כללית של מינוח COM, קרא ב-StackOverflow.
בעיקרון, אתה יכול לחשוב על יישום COM כקובץ הפעלה של Excel או Word, או קובץ בינארי אחר שפועל.
מסתבר שגם אפליקציית COM יכולה לפעול תרחיש - JavaScript או VBScript. טכנית זה נקרא סקריפלט. ייתכן שראית את סיומת .sct עבור קבצים ב-Windows - זוהי הסיומת הרשמית עבור סקריפלטים. בעיקרו של דבר, הם קוד סקריפט עטוף בעטיפת XML:
<?XML version="1.0"?>
<scriptlet>
<registration
description="test"
progid="test"
version="1.00"
classid="{BBBB4444-0000-0000-0000-0000FAADACDC}"
remotable="true">
</registration>
<script language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("cmd /k powershell -c Write-Host You have been scripted!");
]]>
</script>
</scriptlet>
האקרים ו-pentesters גילו שיש כלי עזר ויישומים נפרדים ב-Windows שמקבלים אובייקטי COM ובהתאם גם סקריפלטים.
אני יכול להעביר scriptlet לכלי שירות של Windows שנכתב ב-VBS המכונה pubprn. הוא ממוקם במעמקי C:Windowssystem32Printing_Admin_Scripts. אגב, ישנם כלי עזר אחרים של Windows שמקבלים אובייקטים כפרמטרים. בואו נסתכל על הדוגמה הזו תחילה.

זה די טבעי שניתן להפעיל את המעטפת אפילו מתסריט מודפס. לך למיקרוסופט!
כמבחן, יצרתי סקריפלט מרוחק פשוט שמפעיל מעטפת ומדפיס הודעה מצחיקה, "הרגע נכתבת בסקריפט!" בעיקרו של דבר, pubprn מייצר אובייקט scriptlet, ומאפשר לקוד VBScript להפעיל עטיפה. שיטה זו מספקת יתרון ברור להאקרים שרוצים להתגנב ולהסתתר במערכת שלכם.
בפוסט הבא, אסביר כיצד האקרים יכולים לנצל סקריפטים של COM באמצעות גיליונות אלקטרוניים של Excel.
עבור שיעורי הבית שלך, תסתכל מתוך Derbycon 2016, שמסביר בדיוק כיצד האקרים השתמשו בסקריפטים. וגם לקרוא על סקריפטים ואיזה כינוי.
מקור: www.habr.com
