שְׁאֵלָה:
חלופה של Binwalk
pzirkind
2018-01-23 23:35:46 UTC
view on stackexchange narkive permalink

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

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

החולשה של Binwalk היא שהיא מבוססת על חתימה. איזה סוג של פונקציונליות אתה מחפש? איתור קטעי קוד? רְאִיָה? זיהוי ISA? צריך להשתמש בשילוב של כלים כדי להבין מהו בינארי לא ידוע. אין כלי אחד שעושה הכל, ולעתים יש כל כך מעט מידע זמין בבינארי שלא ניתן לעשות הרבה עם שום כלי.
@SYS_V תודה שהעלאת את השלבים השונים האלה, אם היית מפרט עליהם ומזכיר כלים שניתן להשתמש בהם כדי לעזור בשלבים אלה הייתי בוחר בזה כתשובה נכונה
זה הופיע בפיד הטוויטר שלי היום: https://github.com/attify/firmware-analysis-toolkit
@SYS_V `החולשה של Binwalk היא שהיא מבוססת על חתימה. `מתוך סקרנות אם ברצונך לכתוב מחדש ** binwalk ** אילו תכונות אתה חושב ש- binwalk חסרות ויישמו אותה, ומה ההפך משיטת 'מבוסס חתימה'?
@user22363 כדי לענות על שאלתך, תכננתי כלי שנקרא [צנטריפוגה] (https://github.com/BinaryResearch/centrifuge-toolkit) שמבצע ניתוח באמצעות סטטיסטיקה ואלגוריתמי למידת מכונה במקום לסרוק אחר חתימות.
ארבע תשובות:
julian
2018-01-24 10:05:22 UTC
view on stackexchange narkive permalink

2020-08: למידע עדכני יותר, עיין ב תשובה למטה הנדונה על ISAdetect ו- צנטריפוגה


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

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

הנה 2 דוגמאות:

  1. lzma: פורמט הקובץ אינו מוכר [הפרטים המצורפים ]
  2. גישה לחילוץ מידע שימושי מקובץ בינארי

הנה סיכום של גישה אפשרית:

1. ויזואליזציה

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

השתמש ב- binvis.io וב binwalk -E כדי לדמיין את מבנה הבינארי ורמות האנטרופיה שלו. זה לבדו יגלה כיצד הבינארי מאורגן, והאם הוא דחוס / מוצפן. באזורים המכילים קוד יש בדרך כלל אנטרופיה גבוהה יותר מאשר באזורים שאינם מכילים קוד וזה יופיע בסריקת אנטרופיה. נתונים לרוב חוזרים על עצמם ויש בהם אנטרופיה נמוכה. הדמיה ברמת האנטרופיה שימושית מאוד מכיוון שהיא יכולה לחשוף אם אין קוד אובייקט בבינארי כלשהו.

2. חקר

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

  1. בצע סריקת חתימות באמצעות binwalk

  2. בצע סריקת אופקודים באמצעות binwalk -A . מרבית התוכנות הזדוניות מכוונות לארכיטקטורות של x86 או x86-64, אך מרבית הקבצים הבינאריים של הקושחה מכוונים למעבדי MIPS או ARM עד כמה שיכולתי לדעת. ישנן ארכיטקטורות רבות ושונות למכשירים משובצים כגון PowerPC, AVR, Xtensa, s390, sh4, Sparc, וכן הלאה. בנוסף לכל הארכיטקטורות השונות הללו שעשויות להתמקד בקוד האובייקטים בקושחה, יתכן שלא קיים קוד אובייקט בכלל, ולכן סריקת אופקוד רק תביא אותך עד כה, מכיוון ש- binwalk רק מחפש קומץ ארכיטקטורות.

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

  3. מיתרים יציגו לעתים קרובות נתונים מעניינים שסריקת חתימה לא תעשה.

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

  5. hexdump -C ניתן להשתמש כדי לחקור במהירות מבנה כותרת, אם קיים, כמו גם לחפש למבנים מעניינים במקומות אחרים בבינארי

3. ניתוח

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

למצבים בהם קיים מבנה כותרת בטקסט ברור. על ידי בלוק דחוס ש binwalk אינו מגלה חתימה עבורו, עורך hex כגון wxHexEditor יכול להיות שימושי מאוד. דוגמאות טובות לאופן שבו עורך hex יכול לסייע בניתוח ניתנים על ידי @ebux, חוקר אבטחה מקצועי:

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

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

סיכום

ארסנל :

  • binwalk + תוספים
  • binvis.io
  • מיתרים
  • hexdump
  • wxHexEditor
  • radare2
  • IDA
  • מדריכי עזר טכניים
  • סטטיסטיקה ולמידת מכונה
תודה! אני מקווה שזה עוזר להרבה אנשים שמתחילים לצאת לדרך
@pzirkind אין בעיה, גם אני מקווה. הדרך המהירה ביותר להתפתח היא באמצעות ניסיון מעשי. בהצלחה.
Vido
2018-01-24 00:54:03 UTC
view on stackexchange narkive permalink

אתה יכול לנסות ניתוח בינארי אולי זה יכול לעזור

איך זה יכול 'אולי' לעזור? מהם היתרונות על פני 'בינוק'?
היתרון הוא שיש לו רשימת "בתים קסומים" משלה
Terry
2019-08-02 19:42:22 UTC
view on stackexchange narkive permalink

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

julian
2020-08-19 04:55:38 UTC
view on stackexchange narkive permalink

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

כלי אחר, צנטריפוגה, משתמש גם בלימוד מכונה, אך אינו מתמקד בקוד מכונה באופן ספציפי. במקום זאת, כלי זה נועד לעזור לאנליסט לזהות אילו סוגי נתונים מקודדים בקבצים בינאריים (גילוי מלא, אני יוצר הכלי הזה). לשם כך, הוא מספק פונקציות רבות להדמיית הנתונים בקובץ בינארי באמצעות ספריות התכנון של פייתון, ומוצא אשכולות של נתונים דומים סטטיסטית באמצעות יישום scikit-learning של האלגוריתם DBSCAN. צנטריפוגה משתמשת גם בממשק ה- API של ISAdetect כדי לזהות כל קוד מכונה שנמצא בקובץ בינארי.

הנה כמה דוגמאות להדמיות שהצנטריפוגה יכולה ליצור מנתונים בקובץ בינארי:

readelf clusters

firmware machine code

AVR clusters boxplot

כמוך יכול לראות מתמונות אלה, הגישה בה נוקט הכלי היא סטטיסטית. באמצעות ניתוח סטטיסטי של הנתונים בקובץ צנטריפוגה מסוגלת לזהות אילו סוגי נתונים עשויים להיות קיימים. בזמן כתיבת שורות אלה ניתן לזהות 3 סוגי נתונים שונים: קוד מכונה, UTF-English ודחיסה / הצפנה.

כדוגמה לכך, הנה הפלט עבור קושחה בינארית שניתחה על ידי Centrifuge:

  חיפוש קוד מכונה ------------------------------------ -------------------------------- [+] בדיקת אשכול 0 לצורך התאמה אפשרית [+] התייחסות צמודה של ארכיטקטורת מעבד ( s) נמצא עבור אשכול 0 [+] שולח דוגמה לתגובת https://isadetect.com/ [+]: {"prediction": {"architecture": "mips", "endianness": "little", "wordsize" : 32}, "prediction_probability": 0.93} חיפוש נתונים utf8-english
-------------------------------------------------- ----------------- [+] UTF-8 (אנגלית) זוהה באשכול 1 Wasserstein מרחק להפניה: 7.861589780632858 חיפוש נתונים אנטרופיה גבוהה --------- -------------------------------------------------- -------- [+] נתוני אנטרופיה גבוהים שנמצאו באשכול 2 Wasserstein מרחק להתייחסות: 0.4625352842771307 [*] מרחק זה מצביע על כך שהנתונים באשכול זה יכולים להיות) מוצפנים ב) דחוסים באמצעות LZMA עם רמת דחיסה מקסימלית c ) משהו אחר שהוא אקראי או קרוב לאקראי.  

להקשר, הנה ויזואליזציה של המידע של אותו בינארי:

firmware clusters

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

מעריך את העדכונים לשאלה זו, זה מאוד שימושי


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