שיתוף | הנדסה לאחור של אפליקצייה זדונית
-
מהסתכלות שטחית זה נראה infostealer רגיל שמוסווה בתוך אפליקציה (trojan horse במילים אחרות),
אם אתה רוצה להתעמק לךandroidx.activity.yuma
שמה כול הפעילות קורית.עריכה: מהסתכלות לעומק,
public static String Bewailed() { String str = new String(Cucurbit("GxwuAyR4Fm4pNg0aOShlMTQrGwQAeTYDFx0iPxIYQEwaCylcJDdbLCEySkQjOQ==", 0)); char[] cArr = new char[Asse(str)]; for (int i = 0; i < cArr.length; i++) { cArr[i] = (char) (Stramony(str, i) ^ Nucleoli("shZsWB9AHFd4KIHSUHpqpWUlz2CQst98", i % 32)); } return new String(cArr); }נראה שהc2 זה
https://api[.]ra-backup[.]com/analytics/submit.php
בwhois לא נראה משהו מעניין,
אז בקיצור אין הרבה מה לעשות בנידון חוץ מלדווח על הדומיין לname cheap,
ולקוות שיחסם כך אולי להציל את מי שנפגעו.אגב מעניין לראות שאף על פי שהדומיין של
ra-backup[.]comרק עושה הפניה לצבע אדום גוגל רואה אותו כדומיין של צבע אדום לכול דבר ועניין.https://www.google.com/search?q=ra-backup.com
תוך כדי חיפוש ראיתי את הפוסט הזה אם כי לא נראה שנעשה הרבה בנושא.
@cfopuser כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
אם אתה רוצה להתעמק לך androidx.activity.yuma
איך הגעת לשם?
@cfopuser כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
בwhois לא נראה משהו מעניין,
הדומיין שייך לחברה איסלנדית שמושבה בריקאוויק.
יש את הדומיין שלה בכתובת המייל ליצירת קשר - אך הwhois שלו מביא את אותם הפרטים בדיוק.
https://www.whois.com/whois/withheldforprivacy.comלמרבה הצער, נראה שמדובר בחברת אבטחת מידע איסלנדית - שבין השאר, מספקת שירות הסתרת רישום - כלומר לשים את הפרטים שלה במקום שלך. ככה שככל הנראה הם לא באמת הבעלים של הדומיין, אלא הוא רק השתמש בהם להסתתרות
-
@cfopuser כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
אם אתה רוצה להתעמק לך androidx.activity.yuma
איך הגעת לשם?
@cfopuser כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
בwhois לא נראה משהו מעניין,
הדומיין שייך לחברה איסלנדית שמושבה בריקאוויק.
יש את הדומיין שלה בכתובת המייל ליצירת קשר - אך הwhois שלו מביא את אותם הפרטים בדיוק.
https://www.whois.com/whois/withheldforprivacy.comלמרבה הצער, נראה שמדובר בחברת אבטחת מידע איסלנדית - שבין השאר, מספקת שירות הסתרת רישום - כלומר לשים את הפרטים שלה במקום שלך. ככה שככל הנראה הם לא באמת הבעלים של הדומיין, אלא הוא רק השתמש בהם להסתתרות
@מישהו12 לא משנה איך הוא יצפין ויערפל את הקוד שלו (והוא לא)
בסוף הוא יצטרך לקרוא לapi של אנדרואיד כדי לקרוא את הsms וכו'חיפוש מהיר בjadx ואתה שם.
לגבי הדומיין זה חברה שאתה שם את פרטיה בשביל לשמור על אנונימיות זה לא משנה בהרבה,
זה שם פיקטיבי בוודאות די גבוהה, אם אתה רוצה לעצור את ההתקפה הפתרון היחיד
זה להתלונן לחברה (namecheap) שיחסמו את הדומיין.בתכלס אפשר גם לתקוף את האתר אבל זה פחות סביר

-
@מישהו12 לא משנה איך הוא יצפין ויערפל את הקוד שלו (והוא לא)
בסוף הוא יצטרך לקרוא לapi של אנדרואיד כדי לקרוא את הsms וכו'חיפוש מהיר בjadx ואתה שם.
לגבי הדומיין זה חברה שאתה שם את פרטיה בשביל לשמור על אנונימיות זה לא משנה בהרבה,
זה שם פיקטיבי בוודאות די גבוהה, אם אתה רוצה לעצור את ההתקפה הפתרון היחיד
זה להתלונן לחברה (namecheap) שיחסמו את הדומיין.בתכלס אפשר גם לתקוף את האתר אבל זה פחות סביר

@cfopuser כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
בסוף הוא יצטרך לקרוא לapi של אנדרואיד כדי לקרוא את הsms וכו'
אפשר גם לקרוא ל api באמצעות invoke method והמתודה בסטרינג... ואפשר גם בקבצי so elf..
כלומר אפשר גם להסתיר קריאות לapi של אנדרואיד. -
@cfopuser כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
בסוף הוא יצטרך לקרוא לapi של אנדרואיד כדי לקרוא את הsms וכו'
אפשר גם לקרוא ל api באמצעות invoke method והמתודה בסטרינג... ואפשר גם בקבצי so elf..
כלומר אפשר גם להסתיר קריאות לapi של אנדרואיד. -
@אפרים-ד כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
so elf
האמת שכחתי שזה אפשרי באנדרואיד,
לא נראה לי jadx ישרוד את זה
. -
@מישהו12 לא משנה איך הוא יצפין ויערפל את הקוד שלו (והוא לא)
בסוף הוא יצטרך לקרוא לapi של אנדרואיד כדי לקרוא את הsms וכו'חיפוש מהיר בjadx ואתה שם.
לגבי הדומיין זה חברה שאתה שם את פרטיה בשביל לשמור על אנונימיות זה לא משנה בהרבה,
זה שם פיקטיבי בוודאות די גבוהה, אם אתה רוצה לעצור את ההתקפה הפתרון היחיד
זה להתלונן לחברה (namecheap) שיחסמו את הדומיין.בתכלס אפשר גם לתקוף את האתר אבל זה פחות סביר

@cfopuser כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
חיפוש מהיר בjdax ואתה שם.
חשבתי על הדרך הזו ולא הספקתי לממש אותה, אבל הייתי פסימי, בגלל הקוד באקטיבטי שטוען את הumgdn - שתסתכל עליו, חלק מהקריאות שם לAPI של אנדרואיד מוצפנות ופוענחות רק בזמן ריצה.
למשל כאן:
@Override // java.lang.reflect.InvocationHandler public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (method != null && "getPackageInfo".equals(method.getName())) { String str = (String) args[0]; if ((((Number) args[1]).intValue() & 64) != 0 && appPkgName.equals(str)) { PackageInfo packageInfo = (PackageInfo) method.invoke(this.base, args); packageInfo.signatures = new Signature[signatures.length]; System.arraycopy(signatures, 0, packageInfo.signatures, 0, signatures.length); return packageInfo; } } if (method == null || !"getApplicationInfo".equals(method.getName()) || !appPkgName.equals((String) args[0])) { return new String(new byte[]{103, 101, 116, 73, 110, 115, 116, 97, 108, 108, 101, 114, 80, 97, 99, 107, 97, 103, 101, 78, 97, 109, 101}).equals(method.getName()) ? "com.android.vending" : method.invoke(this.base, args); } ApplicationInfo applicationInfo = (ApplicationInfo) method.invoke(this.base, args); File file = this.fileStreamPath; if (file != null) { applicationInfo.sourceDir = file.getPath(); applicationInfo.publicSourceDir = this.fileStreamPath.getPath(); } return applicationInfo; }אז השורה הזו:
new String(new byte[]{103,101,116,73,110,115,116,97,108,108,101,114,80,97,99,107,97,103,101,78,97,109,101})היא בסה"כ
getInstallerPackageName -
@cfopuser כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
חיפוש מהיר בjdax ואתה שם.
חשבתי על הדרך הזו ולא הספקתי לממש אותה, אבל הייתי פסימי, בגלל הקוד באקטיבטי שטוען את הumgdn - שתסתכל עליו, חלק מהקריאות שם לAPI של אנדרואיד מוצפנות ופוענחות רק בזמן ריצה.
למשל כאן:
@Override // java.lang.reflect.InvocationHandler public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if (method != null && "getPackageInfo".equals(method.getName())) { String str = (String) args[0]; if ((((Number) args[1]).intValue() & 64) != 0 && appPkgName.equals(str)) { PackageInfo packageInfo = (PackageInfo) method.invoke(this.base, args); packageInfo.signatures = new Signature[signatures.length]; System.arraycopy(signatures, 0, packageInfo.signatures, 0, signatures.length); return packageInfo; } } if (method == null || !"getApplicationInfo".equals(method.getName()) || !appPkgName.equals((String) args[0])) { return new String(new byte[]{103, 101, 116, 73, 110, 115, 116, 97, 108, 108, 101, 114, 80, 97, 99, 107, 97, 103, 101, 78, 97, 109, 101}).equals(method.getName()) ? "com.android.vending" : method.invoke(this.base, args); } ApplicationInfo applicationInfo = (ApplicationInfo) method.invoke(this.base, args); File file = this.fileStreamPath; if (file != null) { applicationInfo.sourceDir = file.getPath(); applicationInfo.publicSourceDir = this.fileStreamPath.getPath(); } return applicationInfo; }אז השורה הזו:
new String(new byte[]{103,101,116,73,110,115,116,97,108,108,101,114,80,97,99,107,97,103,101,78,97,109,101})היא בסה"כ
getInstallerPackageName@מישהו12 או שהמפתח התעצל או שהו מנסה לשמור על איזון בין יותר מידי להצפין ובין לגלות יותר מידי
(מבחינת אנטי וירוסים עיין ערך virustotal לא מזהה את הקובץ)אחרת אני לא מבין למה חלק מהפונקציות מוצפנות וחלק לא
בתכלס אין פה איזה פרצה זה פשוט מתקפת פישינג פשוטה.
-

