שלב איסוף המידע בעת ביצוע בדיקת חדירה הינו אחד השלבים החשובים ביותר, אם לא החשוב מכולם. עם איסוף מידע נכון, ביצוע התקיפה בפועל יוכל להיות קל יותר לאין ערוך. למעשה, נושא איסוף המידע חשוב משמעותית לא רק עבור בודקי חדירה, אלא אף עבור אנשי SOC ומודיעין. היכולת שלנו להשיג מידע על היעדים השונים מאפשרת לנו להכיר טוב יותר את התוקפים הפוטנציאלים שלנו ולדעת להתגונן מהם טוב יותר.
כבודקי חדירויות, אנו נשתמש בדרך כלל באיסוף מידע על היעד עבור ביצוע מתקפת הנדסה חברתית בצורה מושלמת, כזו שיהיה ליעד קשה מאד לזהות אותה. לפני כשבועיים הכרתי לכם את הכלי social enginnering toolkit שנחשב לכלי פופולארי ושימושי מאד עבור ביצוע מתקפת הנדסה חברתית. נוכחתם לדעת כמה בקלות אנו יכולים להערים על היעד שלנו עם ביצוע הנדסה חברתית ברמה גבוהה מאד. כמה שהמתקפה שהצגתי באותו מדריך הייתה 'לא רעה', אילו היה לנו יותר מידע על היעד היא הייתה יכולה להפוך ל'כמעט מושלמת'.
עבור איסוף המידע של היעד ישנם המון כלים וטכניקות פנטסטיים, כמו maltego, shodan, google dorking. מדריך לshodan כבר כתבתי בעבר ובחודשים הקרובים אכתוב גם מדריך עבור maltego וgoogle dorking. גם אם אתם מכירים את הכלים האלה, ייתכן מאד שרובכם מכירים אותם ברמה בסיסית מאד ולא מממשים את הפוטנציאל הגדול שטמון בהם ועל-כן חשוב לי להתייחס גם אליהם בעתיד.
בכל אופן, המדריך של השבוע יעסוק בrecon-ng, כלי נהדר שפחות זוכה לסיקור ולהתייחסות בקורסי הסייבר בישראל ושלא בצדק. כשהצגתי את כליי איסוף המידע הידועים בפסקה הקודמת לא הצגתי את theHarvester ולא בטעות. בעבר, theHarvester היה נחשב לאחד מהכלים המובילים להשגת מידע על היעד, בדגש על כתובות דוא"ל, תתי-דומיינים ועוד. בעיניי, בשנה האחרונה, היכולות של הכלי הזה הפכה כבר לפחות רלוונטיות ולרוב הוא יוכל לספק לנו מידע מאד דל. הוא אולי נחמד לחיפוש חשבונות Likedin של עובדים בדומיין מסוים וקצת תתי-דומיינים, אבל כשיש לנו אפשרות להשתמש בrecon-ng, אני לא רואה צורך להמשיך ולהשתמש בtheHarvester. הrecon-ng הוא כלי פנטסטי שיסייע לנו באיסוף מידע ממקורות גלויים (osint). הוא מזכיר מאד בצורת העבודה איתו את metasploit: לrecon-ng שורה ארוכה של מודולי איסוף מידע אפשריים, אנו צריכים לבחור מודול ספציפי בו נרצה להשתמש, להגדיר לו את הפרמטרים ולבצע אותו עם run. עם הנתונים שנשיג נוכל לעבוד בעזרת סביבת העבודה המרשימה שrecon-ng מציע. כאמור, גם הן בתפקידי ההגנה והן בתפקידי ההתקפה בתחום הסייבר, הכלי הזה הוא כלי חשוב עבורכם. בתפקידי הגנה הוא יאפשר לכם לראות מה המידע שגלוי על הארגון ברשת, לפעול בהתאם ולהקדים את התוקפים. כתוקפים אתיים הוא יאפשר לכם לאסוף מידע על היעד, להתאים את התקיפה ובכך לעלות משמעותית את סיכויי ההצלחה שלה.
במדריך זה אקיף את צורת השימוש והעבודה עם recon-ng V5 (הגרסה החדשה של הכלי, שהושקה ב2019) ברמה הבסיסית ואציג את המודולים השימושיים והנפוצים בו. כמנהגי לגוון בין debian נקי (צורת העבודה המומלצת) לבין kali במדריכים השונים בבלוג, אדגים הפעם את השימוש בכלי עם debian נקי. כמובן שהשימוש יהיה זהה לחלוטין גם במכונת kali linux, מלבד העובדה שבkali נוכל להתקין את הכלי בעזרת הפקודה sudo apt-get install ובשביל להיכנס אליו נוכל להשתמש בפקודה recon-ng ולא בפקודת הרצה recon-ng./ כמו בשאר ההפצות.
כבכל מדריך, גם הפעם אבהיר שפוסט זה מיועד אך ורק עבור העשרת הידע של האקרים אתיים המבצעים בדיקות חדירה בהסכמה ועבור העלאת המודעות של האזרחים לסכנות האורבות להם ולצורת חשיבתו ופעולתו של התוקף. כל שימוש בלתי חוקי שייעשה בעזרת מדריך זה הינו על אחריותו הבלעדית של המבצע והוא צפוי לספוג עונשים כבדים
כשלב ראשון, נוריד את recon-ng מעמוד הgithub שלו, תוכלו להגיע לעמוד בלחיצה כאן:
ניכנס לתיקיית ההתקנה עם cd:
כעת נתקין את המודולים הנדרשים עבור הרצת הכלי בעזרת pip3 (שימו לב, שימוש בrcon-ng אפשרי אך ורק בעזרת python3, אז וודאו שpip3 וpython3 מותקנים אצלכם ולאחר מכן המשיכו הלאה. תוכלו להתקין אותם בעזרת sudo apt-get install python3 pip3).
לאחר שסיימנו את שלבי ההתקנה, נוכל להריץ את הכלי:
recon-ng/.
כאמור, בשורות הבאות אסקור מספר מודולים של הכלי הנהדר הזה ואת מגוון הפקודות ויכולות ניהול המידע שהוא מאפשר. אבל על-מנת לגרום לכם להבין את היכולות של הכלי ולמה כדאי לכם להכיר אותו מקרוב, אציג לכם כבר עכשיו מודול אחד מהכלי. לאחר מכן, נעבור לפירוט היותר רחב בצורה מסודרת.
נבצע את הפקודה help ע"מ לראות את הפקודות האפשריות:
אנו רואים שבעזרת שימוש בmarcketplace, אנו יכולים לראות את כל המודולים האפשריים בכלי.
נבצע את הפקודה marcketplace ונראה את הארגומנטים האפשריים:
אנו נשתמש בsearch. כרגע נעשה חיפוש על כלל המודולים, לאחר מכן אציין לכם שם של מודול ספציפי שארצה להדגים לכם לפני שנעבור לסיקור המקיף של הכלי. נשתמש בפקודה: marcketplace search
ואכן, קיבלנו שורה ארוכה של מודולים:
אני ארצה להשתמש במודול recon/domains-contacts/whois_pocs, אז אשתמש בפקודה:
marcketplace search whois
אנו רואים את המודול, נהדר. כעת נתקין אותו:
marcketplast install recon/domains-contacts/whois_pocs
אם נבצע כעת את הפקודה modules search נראה שזהו המודול היחיד שמותקן לנו:
השלב הבא שאנו צריכים לעשות זה לטעון את המודול בפועל. אם נחזור לפקודת הhelp, נראה שיש לנו את הפקודה modules שתפקידה לטפל במודולים. נכתוב את הפקודה modules ע"מ לראות את הארגומנטים האפשריים, אנו רואים שאנו יכולים להטעין את המודול בעזרת load:
נעבור להתקנת המודל:
modules load recon/domains-contacts/whois_pocs
מעולה, אנחנו בתוך המודול:
כעת נגדיר את הפרמטרים הרלוונטים במודול (כאן תראו את הדמיון לmetasploit).
נבצע את הפקודה info ע"מ לראות מידע על המודול ואת אלו פרמטרים אנו צריכים להגדיר:
אנו רואים שמודול זה אוסף נתונים משאילתות שירות הWhois של ARIN והארגומנט שאנו צריכים להגדיר הוא SOURCE, בו אנו צריכים להגדיר את כתובת האתר. את ההגדרה אנו מבצעים בעזרת הפקודה options. נשתמש בפקודה ע"מ לראות את הארגומנטים האפשריים לפקודת ההגדרה:
אם-כן, אנו מגדירים בעזרת set ומסירים הגדרה בעזרת unset. לרוב לא נצטרך להשתמש בunset, כי כל הגדרה חדשה פשוט תמחק את ההגדרה הקודמת, כך שאפשר להסתפק בset.
עבור ההדגמה אשתמש בכתובת של microsoft.com (חברה שמפעילה שירות bug-bounty). שוב אציין שכל שימוש שלכם יהיה על אחריותכם הבלעדית וכתרגול נא השתמשו בכתובת האתר שלכם. אני משתמש בכתובת זו רק בשל העובדה שמכתובת הבלוג לא תתקבל שום תוצאה מטבע הדברים. החיפושים בwhois_pocs רלוונטים בעיקר כלפי ארגונים עם כמות עובדים גדולה. למען האמת, לא הייתה חברה בסדר גודל בינוני ומעלה שהזנתי את כתובתה במודול זה ולא קיבלתי מידע רב.
options set SOURCE exmaple.com
אם נכתוב שוב את הפקודה info, נראה שאכן הכתובת עודכנה:
כעת נצטרך להריץ את המודול עם run (היי metasploit):
המודול רץ ואנחנו לא מפסיקים לקבל כתובת מייל (אני לצורך הדוגמא עצרתי את הסריקה לאחר שניות בודדות עם ctrl+c כי מה שהיה חשוב לי זהו רק הצילום מסך בשבילכם. השניות הבודדות שהסריקה רצה הספיקו לrecon-ng בשביל להוציא כ56 מיילים (!)). אבל לא רק כתובות מייל, גם שם פרטי, שם משפחה ומדינה ולפעמים אף את מספר הטלפון, התפקיד בחברה ואזור המגורים. המון מידע יקר מפז. כעת התוקף יכול להצליב את המידע עם מקומות נוספים (linkedin לדוגמא) ואין סוף אפשרויות תקיפת SE עומדות בפניו.
זו הייתה דוגמא אחת מני רבות ליכולות הפנטסטיות של recon-ng. כעת נעבור לסיקור האפשרויות השונות שמציג הכלי והוצגו בפקודה help, לאחר מכן אציג לכם עוד כחמישה מודולים מאד שימושיים של recon-ng.
הפקודה | תיאור |
---|---|
back | בעזרת פקודה זו נוכל לחזור אחורה. לדוגמא, אם אנו משתמשים במודול מסוים ורוצים לחזור למרחב הראשי בחזרה, נוכל להשתמש בפקודה זו. |
dashboard | כפי שציינתי, אחת מהחוזקות של recon-ng היא העובדה שהוא מאפשר לנו לנהל את הנתונים שאנו מוצאים ומזינים בצורה נהדרת. בעזרת הפקודה dashboard נוכל לראות את סיכום הפעולות שלנו עד כה בכלי: מודול אחד ו112 תוצאות. |
index | בחירת מודול ספציפי מרשימת המודולים, ע"פ המיקום שלו. לדוגמא: index 1, יציג לנו את מודול שבמיקום 1 |
marcketplace | "חנות" המודולים. כאן נוכל לראות את כל המודולים ולהתקין אותם |
db | גישה למסד הנתונים של recon-ng, שמאגד את כל הנתונים שאספנו עד כה. על-מנת לתקשר עמו יש להיות בעלי ידע בסיסי בשפת sql. את מסד הנתונים תוכלו לראות בצורה גרפית, נוחה ואפי' דינמית בעזרת הפקודה db schema. בעזרת db insert יהיה ניתן להכניס מידע נוסף למסד הנתונים (לאחר הinsert נציין שם הטבלה אליה נרצה להכניס את המידע), מידע בו נוכל להשתמש מאוחר יותר בעת הרצת מודולים. את פקודות הsql לקבלת מידע ממסד הנתונים נזין לאחר הארגומנט query (התחביר זהה אחד לאחד לתחביר sql. לדוגמא: SELET * FROM hosts יציג לנו את כל המידע שבטבלת הhost |
exit | פקודת יציאה מהכלי |
goptions | פקודה שתאפשר לנו להגדיר אפשרויות שונות, כגון ביצוע timeout, הפעלת הכלי דרך proxy ועוד |
help | פקודת העזרה, שתציג את רשימת הפקודות שאתם רואים כאן. |
info | פקודה זו שימושית מאד לאחר שנכנסנו לתוך מודול מסויים. היא תציג לנו מידע על המודול והפרמטרים שיש להגדיר לו (בדומה לshow options בmetasploit) |
input | מציג לנו נתונים שהוזנו תחת הפקודה options (לדוגמא, כתובת הדומיין שהגדרנו) |
keys | הוספת מפתחות api של כלי צד שלישי, כגון shodan |
modules | יציג לנו את המודולים האפשריים. בעזרתו גם ניתן מודולים כפי שהודגם |
options | פקודה הגדרת המודולים. נוכל בעזרתה גם לבטל הגדרה |
pdb | איתור באגים בפייתון. נועד עבור מפתחי מודולים לכלי |
reload | טעינה מחדש של המודול |
run | הרצת מודולים |
script | הרצת קובץ סקריפט שיכיל מספר פקודות, את ההרצה נבצע בעזרת script execute |
shell | פקודה המאפשרת להזין פקודת מערכת שתרוץ בterminal הכללי. לדוגמא, אם ארצה לראות את התהליכים במערכת ולהשתמש בפקודה ps, אוכל לכתוב: shell ps |
show | יציג לנו את המידע ששמרנו בעזרת הפקודה –. לדוגמא, show domains יציג לנו את רשימת הדומיינים ששמרנו. |
snapshots | פעמים, בעקבות התנהגות בלתי צפויה של היעדים הנדבקים, מסד הנתונים שלנו בrecon-ng יכול להימחק. בעקבות כך, כדאי לגבות אותו מפעם לפעם. snapshots ישמור לנו "צילום" של מסד הנתונים למקרה שהוא יימחק או ייפגע |
spool | הכנסת תוצאות הסריקות לקובץ, נוכל ליצור קובץ בשולחן העבודה ולהכניס אותו כארגומנט לפקודה spool start. לדוגמא: spool start /home/eliya/file.txt. כעת כל נתוני הפלט שנקבל "יוקלטו" לתוך הקובץ |
workspace | הצגת סביבות העבודה, כך אנו יכולים לחלק פרוייקטים בצורה נוחה (הדגמה לאפשרות זו מופיעה בהמשך המדריך) |
recon-ng תומך בהשלמה אוטומטית, כך שבכל פקודה או מודול שתרצו לבצע, פשוט תוכלו להתחיל את הפקודה, ללחוץ על tab והפקודה תושלם לבדה (בדומה לterminal של לינוקס).
כאמור, בכל כתיבה של אחת מהפקודות שהוצגו מתפריט העזרה, יוצגו לנו הארגומנטים האפשריים שלו.
אם נרצה לראות פירוט ספציפי של אחד מהנתונים שקיימים אצלנו, נוכל להשתמש בפקודה show. נזין את הפקודה ע"מ לראות את הארגומנטים האפשריים:
לדוגמא, נבחר לראות את רשימת הדומיינים:
רגע לפני שנסיים עם חלק הפקודות ועל-מנת להבטיח שהבנתם את הרעיון מאחורי השימוש בהם, אדגים שימוש בפקודה אחת מתוך הפקודות שהוצגו לנו בפלט הhelp: הפקודה workspace.
נבצע את הפקודה ע"מ לראות את הארגומנטים האפשריים שלה:
אנו רואים שנוכל לראות את רשימת סביבות העבודה בעזרת הפקודה workspace list. נשתמש בפקודה זו:
אנו רואים שקיימת סביבה אחת (default). נוסיף סביבה נוספת בעזרת הפקודה create (איך אני יודע שcreate? אז שוב, זה האחד הארגומנטים האפשריים שהוצגו לנו בפקודת הworkspace הראשונה).
כעת לאחר שיצרנו את הסביבה, ניכנס אליה בצורה אוטומטית:
אם נרצה לחזור בחזרה לסביבת הdefault, נוכל להשתמש בפקודת הload כפי שלמדנו מהפלט של הפקודה הראשונה:
אלו הפקודות הבסיסיות לעבודה חלקה ונוחה עם recon-ng, אתם מוזמנים להמשיך ולשחק עם הפקודות השונות בrecon-ng ע"פ העקרונות שהצגתי לכם (שוב, במידה ואתם נתקעים – פשוט לכתוב את שם הפקודה, ללחוץ Enter ויוצגו לכם הארגומנטים שלה) ולראות בעצמכם כמה הוא נוח, גמיש ומסודר.
כעת נכיר חמישה מודולים שימושיים נוספים (מלבד הwhois poc שסקרתי למעלה) ולאחר מכן אסביר את השימוש בapi של כלי צד שלישי עם recon-ng.
1. discovery/info_disclosure/interesting_files
מודול interresting_files הוא אחד המודולים השימושיים והמצויינים שיש לrecon-ng להציע. הוא יבצע סריקה כלפי עשרות נתיבים אפשריים שעלולים להכיל מידע 'רגיש' או 'מעניין' (גם בעזרת שימוש בGoogle Dorking) וישמור אותם במכונת הלינוקס שלכם. את ההדגמה אבצע כלפי האתר שלי – cyber-eliya.com. במקרה הזה כמובן שלא יתקבלו תוצאות רגישות בשל ההקשחה שאני מבצע לאתר, אך במרבית המקרים כן נקבל תוצאות מעניינות.
ראשית, נחפש את המודול עם הפקודה marcketplace search interesting:
כעת נתקין את המודול עם פקודת הmarcketplace install:
נטען את המודול בעזרת הפקודה modules load ונשתמש בפקודה info ע"מ לראות אלו ארגומנטים עלינו להגדיר לפני הרצת המודול עם הפקודה run:
אנו רואים שאנו צריכים להגדיר פורט, פרוטוקול וSOURCE. כמו-כן מצוין לנו כברירת מחדל True תחת האפשרות שהקבצים שיימצאו יירדו למכונת הלינוקס שלנו. אם אנו לא מעוניינים, נשנה לfalse. לאחר שנסיים להגדיר את הפרמטרים הרלוונטים, נשתמש בפקודת ההרצה ran:
ונראה שנמצאו 2 קבצים שנוגעים לתקשורת מול מנועי החיפוש. אגב, אחד הקבצים – robots.txt יוכל לעזור המון פעמים לתוקפים לזהות את מערכת הCMS שמשמשת את האתר ולהגיע לממשק הניהול שלו. שימו לב בשורה האחרונה של הפלט המגיע מrecon-ng שמצוין לנו הנתיב בו נשמרו הקבצים (נוכל להגיע אליו בעזרת cd).
2. recon/domains-hosts/google_site_web
מודול google_site_web הוא עוד מודול נהדר שמציע recon-ng. מודול זה יבצע חיפוש מקיף בgoogle של דומיינים ותחומים נוספים שנראים כקשורים לדומיין אותו נזין בשדה הSOURCE. מדובר במודול מצויין שיספק לנו המון מידע על מארחים ותתי-דומיינים נוספים המשמשים את היעד ובכך יאפשר לנו להרחיב את התקיפה על תתי-דומיינים אחרים, שאולי פחות מאובטחים מהדומיין הראשי. מכיון שלאתר שלי אין מספר גדול של תתי-דומיינים, אשתמש עבור ההדגמה באתר של microsoft.
נחפש את המודול עם marcketplace search (עליכם לחזור לממשק הראשי עם back קודם לכן):
נתקין אותו עם marcketplace install:
ונטעין אותו עם modules load:
נגדיר את שדה הSOURCE בעזרת הפקודה options set SOURCE ונשתמש שוב בפקודה info לראות שהמידע אכן הוגדר בצורה טובה:
כעת נריץ את המודול עם run:
נראה שאנו מקבלים אין-ספור תוצאות. גם כאן עצרתי את הסריקה לאחר כמה שניות ובכל זאת קיבלתי קרוב ל60 תוצאות. עם-זאת, צריך לציין שברוב המקרים נקבל הרבה פחות דומיינים. microsoft מספקת המון שירותים תחת הדומיין שלה, כך שמרבית הדומיינים שנקבל במקרה הזה הם של שירותים נוספים של microsoft.
אגב, קיים מודול דומה המבצע את החיפוש בbing (המודול recon/domains-hosts/bing_domain_web). מומלץ להשתמש גם בו שכן פעמים רבות הוא יביא לנו תוצאות שלא קיבלנו בסריקה שבוצעה ע"י google, אך עבור שימוש בו נצטרך ליצור מפתח api (קיים הסבר בסוף המדריך).
3. recon/profiles-profiles/profiler
לפני כשבועיים, בפוסט שכתבתי על social engennering, הצגתי לכם את הכלי Sherlock שמאפשר חיפוש שם משתמש ספציפי בכל הפלטפורמות הקיימות. לאחר שאתם מכירים את recon-ng ואת המודול profiler, אתם יכולים להיפרד לשלום מSherlock. המודול profiler מאפשר לנו לבצע פעולה זהה (כלומר, הזנת שם משתמש והכלי יבצע חיפוש שלו בפלטפורמות השונות), אלא שכאן יהיה מדובר בחיפוש במאות רשתות חברתיות ופלטפורמות, חלקם נידחים במיוחד.
נבצע חיפוש של המודול (אין צורך לומר שפקודת החיפוש לא נדרשת עבורכם, שכן בכל מודול שהצגתי במדריך, הצגתי לכם מראש את הנתיב המלא של המודול. פקודת החיפוש רלוונטית לפעמים הבאות שתיכנסו לכלי ולכן חשוב לתרגל אותה):
אנו כאמור נשתמש בprofiler. נתקין אותו בעזרת marcketplace install:
כעת נטעין את המודול:
נבצע את הפקודה info ע"מ לראות אלו פרמטרים עלינו להגדיר:
נראה שאנו צריכים להגדיר שם משתמש/חברה, תחת SOURCE. עבור ההדגמה אשתמש בשם המשתמש netanyau, שם המשתמש של ראש ממשלת ישראל הנוכחי בפלטפורמות השונות:
כעת נריץ את הכלי עם run:
recon-ng יבצע חיפוש במאות פלטפורמות. גם כאן עצרתי את הסריקה לאחר שניות בודדות ובכל זאת הופיעו לי תוצאות של כ48 פרופילים:
4. recon/domains-hosts/brute_hosts
brute_host הוא עוד מודול שנכנס לרשימה האקסקלוסיבית של המודולים השימושיים והחשובים בrecon-ng. מודול זה יבצע brute force על הסאב-דומיין של האתר, תוך חיפוש מאות אפשרויות נפוצות שיוכלו להפנות אותנו לסאב-דומיינים נוספים בהם משתמש האתר. למעשה, מודול זה חוסך מאיתנו את הצורך להשתמש בscript bash בסגנון של:
for str in `cat file.txt`; do
;host $str.cyber-eliya.com
done
כאמור, המודול משתמש בקובץ טקסט המכיל מאות אפשרויות נפוצות לסאב-דומיינים, אך אם נרצה, נוכל גם להחליף את הקובץ לקובץ משלנו בעזרת הפקודה options.
הפעם לא אדגים כיצד לחפש את המודול ולהתקין אותו, שכן הדבר הוסבר במדריך זה מספר פעמים ואתם אמורים לדעת זאת כבר לבד. אקפוץ ישירות להטענת המודול עם load:
נשתמש בפקודה info ע"מ לראות את הארגומנטים הנדרשים ונראה שאנו צריכים להגדיר SOURCE וWORDLIST (הנתיב לקובץ עם אפשרויות הסאב-דומיין שירוצו).
אני אגדיר כSOURCE את cyber-eliya.com, הדומיין שלי, אך שוב אציין שמודולים כאלה אפקטיביים לרוב כלפי ארגונים בינוניים+ להם מספר גדול של תתי דומיינים.
כקובץ אפשרויות הסאב-דומיין אני אשתמש בקובץ שמגיע יחד עם המודול, רק אראה אותו לפני כן בעזרת shell cat (כאמור, shell מאפשר לבצע פקודות בסביבת הTerminal מתוך recon-ng):
מעולה, נבצע את המודול בעזרת run:
לאחר סיום הסריקה, נראה שנמצאו כ11 תוצאות:
5. reporting/html
אחד מהמודלים המעניינים בכל הנוגע לאחסון וניהול המידע שאספנו, הוא מודול הreport בrecon-ng, שיציג לנו דו"ח מפורט עם המידע שאספנו, במגוון פלטפורמות. אני אדגים את מודול הhtml, אך גם המודולים האחרים (בדגש על מודול הcsv, שישמור לנו את הנתונים בטבלאות ויאפשר לנו להציג את המידע בexcel לדוגמא) מאד שימושיים.
נטעין את המודול בעזרת modules load:
כעת נשתמש בפקודה info ע"מ לראות את הפרמטרים הרלוונטים. נראה שאנו צריכים להגדיר את שם המחבר ואת נושא הדו"ח:
נשתמש בפקודת הoptions ע"מ לבצע את ההגדרה:
כעת נריץ את המודול בעזרת run ונקבל את הנתיב בו מאוחסן קובץ הhtml עם הנתונים:
נפתח את הקובץ בעזרת firefox (נשתמש בפקודת הshell על-מנת לבצע זאת):
ואכן, נראה דו"ח עם פירוט כל המידע שאספנו:
שימוש בrecon-web
כחלק מהחשיבה המשמעותית על סביבת העובדה שהושקעה בפיתוחו של recon-ng. לכלי הנהדר הזה קיים גם ממשק אינטרנטי בו נוכל לראות את כל המידע שאספנו עד כה בעזרת הכלי (מידע שנוכל לראות כמובן גם בכלי עצמו בעזרת פקודות הdashboard, db, show וכו').
עבור הפעלת הממשק האינטרנטי, נצא מהכלי ונחזור לתיקייה הראשית של recon-ng בעזרת exit:
כעת נריץ את recon-web בעזרת כתיבת הפקודה recon-web/. ונקבל פלט בו יוצג לנו הפורט בכתובת הlocalhot שלנו בו תתארח "תצוגת הweb" של recon-ng:
אם ניכנס לכתובת, נראה פירוט מסודר של המידע שלנו, אליו גם נוכל לגשת:
שימוש בAPI של כלי צד שלישי בrecon-ng
במודולים רבים אותם ננסה להטעין בעזרת load, נקבל שגיאה שאנו צריכים להכניס את מפתח הapi של המודול. הנה דוגמא, כאשר ננסה להשתמש במודול שיבצע סריקת מארחים בעזרת shodan:
למעשה, ברגע שנבצע את הפקודה modules search ונראה את כל המודולים הקיימים, נוכל לראות את השדה k בסוף הטבלה. המודולים שבשדה הk שלהם יופיע התו * יהיו מודולים שמחייבים הזנת מפתח api. אני אדגים את הגדרת המפתח עבור מודול shodan, אך הפעולה זהה למעשה עבור כל מפתח api:
את ההגדרה של מפתחות api מבצעים בעזרת הפקודה keys (כפי שראינו בפלט של פקודת הhelp). נזין את הפקודה ע"מ לראות את הארגומנטים האפשריים:
אנו רואים שההוספה מתבצעת בעזרת add.
אם-כן, ניכנס לחשבון הshodan שלנו בו יופיע גם מפתח הapi (הוסבר בהרחבה במדריך הshodan בבלוג):
נזין את המפתח תחת הפקודה keys add:
<keys add shodan_api <api_keys
כעת אם נבצע את הפקודה keys list, נוכל לראות שהמפתח נוסף לרשימת המפתחות:
כעת, אם נטעין את המודול הנהדר shodan_host בעזרת load, נראה שאין שום שגיאה:
אגב, במידה וshodan לא מותקן אצלכם במכונה תופיע לכם גם השגיאה הבאה: (שגיאה זו אומרת שאתם נדרשים להוריד את shodan למכונה שלכם בשביל שהמודול יעבוד. אם התקנתם והוא בכל זאת מציג לכם שחסרה התלות "shodan", כנראה התקנתם אותו עם pip2, התקינו אותו מחדש עם pip3 והוא יעבוד).
למעשה, מודולים שתחת השדה D בפקודת הmarckplase shearch יציגו * כפי שהציגו המודולים המשתמשים בshodan הם מודולים בעלי תלות, כלומר – שחייב להתקין כלי כלשהו עבור הפעלתם.
נבצע את פקודת הinfo ע"מ לראות את הארגומנטים הנדרשים:
אנו רואים שאנו צריכים להגדיר LIMIT וSOURCE. את הlimit אני אשאיר בערך ברירת המחדל, 1 (להגביל את הבקשות למקור ל1). לאחר מכן נזין את הSOURCE, עבור ההדגמה אשתמש בmicrosoft.com:
כעת נריץ את המודול עם run ואכן נקבל המון מידע פנטסטי שיכלול המון תתי-דומיינים שהתגלו בסריקה, פורטים פתוחים באותם דומיינים ועוד ועוד (שימו לב שלרוב, המידע יוצג לכם רק אם יש לכם מפתח api שרכשתם בעלות חד פעמית, אך גם בעזרת חשבון חינמי נוכל לפעמים לקבל מעט מידע).
למרות שקיימים עוד מודולים פנטסטיים שמשתמשים בapi (כמו מודול builtwith, שסוקר את הטכנולוגיות בהם משתמש האתר שנזין ככתובת היעד או מודול twitter שיציג ציוצים על פי המיקום בו הם נכתבו, המודול hipb שיאפשר לנו לבדוק האם כתובת דוא"ל מסוימת נחשפה בהפרת נתונים בשנים האחרונות (מבוסס על Have i been pwned) ובעזרתו יוכל התוקף לבדוק האם הודלפו פרטים של אחת מכתובות הדוא"ל שהוא מצא בסריקת הwhois_poc ועוד ועוד), ע"מ לשמור על אורך סביר 🙂 לפוסט, אסיים אותו כאן. המידע שהצגתי לכם אמור להספיק להבנה הבסיסית של השימוש בrecon-ng ומכאן אתם יכולים להמשיך ולחקור אותו לבד. יש לו באמת המון מודולים פנטסטיים שיכולים לסייע לנו בשלב איסוף המידע (ואפילו מודול נהדר למציאת xss בשם xssed).
אגב, בתיעוד של recon-ng בgithub ישנו פירוט על הדרך לייצר מפתח api בכל אחד מהשירותים. תוכלו לראות אותו כאן.
חוויה של מדריך. תודה רבה!!! ושאפו אדיר על ההשקעה!!