BinaryVision

Tag: Windows

אתגר Hacking של Offensive Security – שלב שני

by on יול.06, 2010, under כללי

מה היה לנו

  • קיבלתי Root על 192.168.6.200
  • מצאתי עליו קובץ mosquito.exe

http://www.filesonic.com/file/2125504394/mosquito.exe
מי שרוצה לנסות קצת בעצמו מוזמן להוריד את הקובץ אליו, ולהפסיק לקרוא כאן.

mosquito

בוא ננחש מה עושה הקובץ לפי הImports שלו.

Mosquito Imports

משתמש בסוקטים, וקצת Threads פה ושם, חוץ מזה כל מיני דברים מציקים כמו IsDebuggerPresent.
אז אם נריץ אותו, והוא מאזין על פורט, נוכל בקלות לראות איזה.
הרצתי אותו, קפץ הFirewall ואומר שהוא מנסה להאזין על 4597, אישרתי לו.
טוב, ננסה להתחבר אליו עם Netcat ולראות אם הוא זורק לנו משהו למסך.

nc -nvv 127.0.0.1 4597

קופץ הFirewall, ואומר לי שהmosquito.exe מנסה ליצור חיבור ל127.0.0.1 לפורט 1080…. מאיפה זה בא??
החלטתי שלפני שאני קופץ פנימה לתוך הקוד, אני מרים Netcat מאזין מקומי, על פורט 1080, ורואה מה הולך שם.

nc -nvvLp 1080

מריץ את הייתוש מחדש, מתחבר אליו, רואה שהוא מתחבר לnetcat השני, וכלום לא קורה…
שולח קצת טקסט, לא קורה כלום…..
טוב, בדיקה אחרונה לפני שצוללים לקוד, האם הוא פותח חיבור תמיד ל127.0.0.1? או שזה חיבור חזרה למי שניסה להתחבר אליו?
נבדק בצורה פשוטה ע"י מכונה שהיא לא מקומית, כתובת P) אחרת שמנסה להתחבר לMosquito, ואיזה יופי, הFirewall אומר שהוא עדיין מנסה להוציא חיבור ל127.0.0.1 למרות שהחיבור הגיע מכתובת אחרת.

צוללים לקוד

פותח IDA חזרה, מאתר את המקום שבו יש קריאה לrecv.
מריץ Netcat מקומי מאזין על 1080.
פותח ollydbg, מציב breakpoint על הRecv.
פותח Netcat נוסף ומתחבר לmosquito שמריץ הollydbg.
קופץ הBreakpoint, אני שולח איזה שטות בNetcat, ומתחיל לעקוב אחרי זה בקוד בollydbg שורה שורה.
אני לא הולך לפרט את כל התהליך, אבל זה המסקנות שהגעתי אליהן אחרי כמה ריצות:

  • כל חבילה שמתקבלת עוברת איזה "הצפנה" פשוטה… XOR עם הערך 4.
  • נבדק האם האם הכתובת המקומית של השרת היא 192.168.6.141
  • המידע נשלח לסוקט השני ששמחובר מקומית לפורט 1080

אז מה עכשיו

  • חיפוש חולשות בקוד עצמו ובטיפול של הBuffer מהנקודה שהתקבל ועד שנשלח הלאה.

לא מצאתי חולשות רגילות של Buffer Overflow

  • אולי זה לא אתגר ניצול חולשה, אלא צופן\Reverse? אולי צריך לשלוח מחרוזת מיוחדת כך שאחרי ההצפנה זה יהיה איזה מפתח.

נזכרתי בטקסט שהיה רשום באתר של Mosquito, עם התמונה, היה כתוב "bRAin suck3r".
בגלל איך שזה היה כתוב, חשבתי שזאת המחרוזת שמי שזה לא יהיה בפורט 1080 צריך לקבל.
כתבתי סקריפט שמקסר עם 4 ושולח לכתובת שאני מבקש, הרצתי, ולא קיבלתי תשובה.

  • רגעעעעע, הדבר הזה בכלל מחזיר תשובות מאותו שירות שרץ על 1080?

בבדיקה מקומית (שליחה בNetcat המאזין על 1080) מתקבל אותו זבל "מוצפן" בNetcat המתחבר.

  • אז אם זה הצפנה דו כיוונית, אולי זה פרוקסי טיפש מול שירות רגיל כלשהו?

מה רץ בדרך כלל על 1080? HTTP…
שיניתי את הסקריפט כך שישלח בקשת GET מקוסרת ב4, ויציג לי תשובה אם יש.
קיבלתי הרבה הרבה זבל חזרה.
הוספתי גם קיסור ב4 על התשובה, וקבילתי דף HTML.

  • אז הדבר הזה הוא פרוקסי לשרת WEB

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

#!/usr/bin/python
#
import socket
import sys
import thread

def tunnel_data(sock1,sock2):
	try:
		data = sock1.recv(0xffff)
		while data:
			ndata = ""
			for i in data:
				ndata += chr(ord(i) ^ 4)
			sock2.sendall(ndata)
			data = sock1.recv(0xffff)
		sock2.close()
	except Exception,e:
		print e
		sock1.close()
		sock2.close()

def main(ip,lport):
	global MSG
	lsock = socket.socket()
	lsock.bind(("0.0.0.0",lport))
	lsock.listen(1)
	while True:
		cli = lsock.accept()[0]
		rsock = socket.socket()
		rsock.connect((ip,4597))
		thread.start_new_thread(tunnel_data,(cli,rsock))
		thread.start_new_thread(tunnel_data,(rsock,cli))

main(sys.argv[1],long(sys.argv[2]))

האתר

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

Easy Chat Server

התחלתי לשחק איתו, לחפש SQL Injections, לחפש בעיות הרשאות, לנחש סיסמה של המנהל של הערוץ.
שזה לא היה קשה, הסיסמה של המנהל admin הייתה admin, אבל זה לא נתן לי כלום.
טוב, אולי זה שרת מוכר באינטרנט, אולי יש לו חולשות.
איזה יופי שבדף תוצאות הראשון אני מוצא את הקישור הבא:
http://www.metasploit.com/modules/exploit/windows/http/efs_easychatserver_username

פריצה מעל פרוקסי מצפין

הפעלתי Metasploit הגדרתי את הפרצה שתנסה לפרוץ לי את הפרוקסי המקומי, ותשתמש בMeterpreter שמתחבר חזרה אלי ישירות.
הרצתי את הפרצה, ואחרי כמה ניסיונות כושלים, זה עבד!!
קיבלתי Shell על השרת 192.168.6.141.
בדיקה מהירה גילתה שאני משתמש חסר הרשאות, שאין לו גישה לDesktop של הAdministrator.
וGetSystem של Meterpreter לא עזר.
מערכת ההפעלה היא Windows 2003 SP2.

נסיונות לעלות הרשאות

ציינתי כבר שכל 30 דקות המכונות עוברות Revert?
האם אמרתי עד כמה מעצבן זה כשאתה מנסה למצוא איך לעלות הרשאות במכונה שיש לך גישה אליה?
הייתי צריך לפרוץ מחדש את המכונה כל פעם שאיבדתי גישה בגלל הRevert.
אבל מספיק לבכות, כאן זה הזמן לאמר שלעלות הרשאות במכונה לא הצלחתי באותן 10 שעות שהיה לי לאתגר הזה.
דברים שניסיתי:

  • מציאת חולשות Privilege Escalation ידועות למערכת ההפעלה, לא הלך, המכונה כנראה Fully Patched
  • מציאת Services שרצים כSystem לבדוק אם אפשר להחליף להם את הEXE ולעשות להפיל אחד מהם שיעלה מחדש, היה שם שרת VOIP שרץ כSystem ומאד קרץ לי, אבל שרף את רוב הזמן.
  • חיפוש קבצים זרוקים במערכת שיש לי גישה "בטעות" אליהם ויש שם סיסמה או משהו שיעזור

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

8 Comments :, , , , , more...

המלצה על מוצר Firewall בייתי

by on ינו.20, 2010, under כללי

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

PC Tools Firewall Plus 6.0.0.88 ו- Comodo Internet Security 3.13, שניהם מוצרים חינמיים אז אין בעיה להוריד ולבדוק. Online Armor Premium קיבל ציון 99% אבל הוא לא נתמך ב64 ביט, אז אין לי מה לבדוק אותו.

התחלתי מ PC Tools, הלוגו הזכיר לי מאיפה אני מכיר את החברה: הם עשו קופה בזמנו עם מוצרי ה Anti-Spyware, ותיקוני ה- Registry. אחרי שהתקנתי את המוצר הוא שאל אותי אם אני סומך על Google Talk ו mIRC, הסיבה שהוא התפל דווקא עליהם היא שהתוכנות לא חתומות, שזה סבבה כל עוד מי שרוצה לפרוץ אליך לא מוכן לבזבז 1000 דולר על חתימה. ניסיתי להריץ netcat ועוד כמה תוכנות אינטרנט לא חתומות, ולהפתעתי זה עבד. מוזר, אין שום שאלות מהתוכנה. ניסיתי להריץ shell של vnc connect back, גם עובד. מדאיג.

או קיי, אז אולי הוא ברמה של Windows Firewall חשבתי לעצמי, הוא בטח יקפוץ אם התוכנה תעשה listen ל 0.0.0.0, אבל מסתבר שממש לא. בניתי קוד חדש לבדיקה, לא חתום ולא כלום, דחפתי אותו בכוונה ל Startup ב Registry רק כדי לראות אולי PC Tools יבין את הרמז, אבל הרמז לא נקלט. כנראה שאני קורא את התוצאות הפוך, בטח באתר התכוונו ל- "100%" פריץ.

טוב, נמשיך עם Comodo, גם הוא קיבל ציון 100, וגם הוא חינמי.

ההתקנה שלו די גדולה, ומתחילה מ WinZip SFX, משהו שלא ראיתי משנת 1999 אז כשהסרט מאטריקס הראשון יצא. אחרי זה ההתקנה רצתה לדחוף לי 3 toolbars, ורצתה להחליף לי שרתי DNS.

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

מה שפחות טוב, מסתבר שההמלצות ש- comodo נותן מבוססות על מה שאנשים אחרים לוחצים, למשל, התוכנה אמרה לי ש 95% מהאנשים שהריצו את הסוס הטרויאני חשבו שהתוכנה בטוחה. כמובן שמי שיודע לקבל החלטות כאלה בעצמו אכן הרוויח כלי די חזק לפחות מהכמה דקות שיצא לי לעבוד איתו.

לא יצא לי לבדוק שיטות מתקדמות על ה Firewall עדיין, אני אעדכן את הטקסט כשיצא לי. ראיתי גם עוד שמות של תוכנות מוכרות כמו Outpost ו Kaspersky שהיו לי בעבר, נכון לעכשיו ההמלצה שלי למי שמחפש משהו שייתן רמה סבירה של הגנה – שילך על Comodo.

11 Comments :, , more...

משהו חדש ללמוד

by on נוב.08, 2009, under כללי

כולם פה אני מניח יודעים שפה או שתיים, אולי PHP אולי #C, אולי Python, Perl, Visual Basic. אבל למי מייתנו שילך ללמוד באקדמיה (אמיתית או מכללה) יגיע יום ויצתרך להתמודד עם ++C. יש הרבה מדריכים על השפה עצמה (יותר מידי), אבל מניסיון, הכי מהר ללמוד משהו כשמתמודדים עם פרוייקט אמיתי ביום יום. בגלל שקשה לי להאמין שמישהו צריך תוכנת קונסול שתעשה חשבון פשוט, אני ממליץ על להתחיל עם Qt.

mirccr_win7למה?

  • לא צריך Visual Studio בכלל. מורידים את העורך Qt Creator (חלק מהחבילה הגדולה) ואפשר להתחיל לבנות ולדבג. לא צריך שום דבר נוסף כדי שהכל יעבוד.
  • דברים מאוד לא טריויאליים כמו UI יפה לוקחים שם כמה שניות גם לאנשים שלא מבינים לגמרי איך הדברים עובדים.
  • אין רגשות אשם, כל הקודים יתקמפלו כמו שהם גם בלינוקס או מאק.

אבל זה לא באמת ++C… לפחות יש חלקים שקצת לא דומים לתקן, וזה גם טוב וגם רע. זה טוב למי שלא התרגל לשפה עדיין ויכול ללמוד דברים חדשים. החבילות של Qt מאוד עקביות ושימושיות, ה Debuger מציג את המשתנים בזמן אמת בצורה לוגית ולא כמו שהם שמורים בזכרון באמת, למשל רשימה מציגה איברים ולא פוינטרים שרצים לאין ספור כיוונים.

לי היה הרבה יותר קל לחזור ל ++C אחרי שהיה לי את התרגול של Qt ובניתי פרוייקט שאני אפרסם כאן בקרוב.

היה לי מאוד קל לעצב UI שנראה לא רע בכלל, ככה, למשל, נראה העורך:

mirrcr qt editor

מי שזה מעניין אותו מוזמן להוריד את כל הכלים באתר qt.nokia.com וגם מוזמן לצפות שם במאות סרטוני ההדרכה (והפרופוגנדה).

3 Comments :, , , , , , more...

תכנות בטוח ב Windows

by on מאי.15, 2009, under כללי

מי שעוקב אחרי חדשות טכנולוגיות ברשת, בוודאי שם לב ל http://www.theregister.co.uk/2009/05/15/microsoft_banishes_memcpy/
אז כן, אחרי שמיקרוסופט הגבילה (מנעה?) את השימוש בפונקציות strcpy, strcat ודומיהן, הגיע הזמן של memcpy.

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

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

#define memcpy(a,b,c) memcpy_s(a,b,c,c)

שהוא פשוט האק לגרום ל memcpy_s כמו שאנשים רגילים… מי שלא רוצה לעבוד בטוח, לא יעבוד בטוח, מתכנת לא מנוסה, יעשה שטויות.
מה היה רע ב warning בקומפילציה?

שלא תבינו אותי לא נכון, אני חושב שנכון לכתוב בטוח, אבל אני לא בטוח שלהכין את הקרקע לקופים שלא שעושים שטויות היא הדרך הכי טובה.
מה בקשר ל pritnf? הם גם מונעים את השימוש בזה? צריך לחשוש שאיזה אידיוט יכניס לשם מחרוזת… אולי צריך לכתוב
printf_s שאחראית להקפיץ שאלה בקומפילציה עבור כל printf וככה לוודא שהמתכנת וידא שהוא לא עשה טעות.

יש לי אלטרנטיבה אחרת, תשכרו מתכנתים שיודעים לתכנת… כי בסופו של יום גם memcpy_s לא בטוחה לגמרי…

יום טוב.

5 Comments :, , , more...

טרה של צרות

by on ינו.29, 2009, under כללי

קניתי היום External Hard Disk Drive של Western Digital.
או במילים אחרות, כונן קשיח חיצוני.
בגודל 1 Terabyte.

לי אישית נמאס לצרוב כמות אינסופית של סרטים, וכל פעם לחפש דיסק מסויים.
500 שקל בשביל טרה של זיכרון נשמע לי נוח מאד. (2 גיגה בשקל)
זה גם תופס פחות מקום מ200 דיסקים של DVD, וגם קל יותר לחפש בזה דברים שאתה רוצה.
וגם אפשר להביא לחברים סרטים ומשחקים ולקחת מהם בלי הצורך להסחב עם המחשב הנייד כולו.

אז עכשיו למה "טרה של צרות"?

Explorer Crash
אני מכניס את הדבר הזה לחשמל, מחבר אותו לUSB למחשב, עד כאן הכל טוב ויפה.
ואז אני פותח את הכונן, מעתיק משם את התוכן (דריברים ותוכנות שבאו איתו), ומוחק הכל.
פותח כמה תיקיות מתכונן להעתיק, סרט, ואיזה יופי, קורס הExplorer.
התמונה זה מהEventlog.

הDll שרשום שם, זה איזה Codec וידאו שהותקן אצלי בגלל כלים של Nokia, ועבודה עם פלאפון של Nokia במחשב.
שמסתבר שהוא לא אוכל כלכך טוב להציג Preview בExplorer של סרט מהרד-דיסק של טרה.
מי שלא מבין, מדובר בתמונה צד שמאל למטה בWindows XP שמציגה את הסרטון כשעומדים עליו עם הסמן.

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

אז תאחלו לי מזל טוב,
אני צעד אחד קרוב יותר לNAS שאני מתכנן להקים אצלי בבית…

5 Comments :, , more...

מחפש משהו?

תשתמש בטופס למטה כדי לחפש באתר: