שיתוף | הנדסה לאחור של אפליקצייה זדונית
-
@אפרים-ד כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
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 לא מזהה את הקובץ)אחרת אני לא מבין למה חלק מהפונקציות מוצפנות וחלק לא
בתכלס אין פה איזה פרצה זה פשוט מתקפת פישינג פשוטה.
-
-
עברתי על זה
לא נראה משהו מורכב במיוחד
סורק SMS אנשי קשר אפליקציות מותקנות מיקום וחשבונות שומר אותם בקבצי JSON ואז שולח לשרת ה C2 שכתובתו הועלתה לעיל
ואגב בנוגע לשאלה למה זה פוצל ל dropper ונוזקה - די פשוט - כדי שסורקים לא יעלו עליו בקלות -
עברתי על זה
לא נראה משהו מורכב במיוחד
סורק SMS אנשי קשר אפליקציות מותקנות מיקום וחשבונות שומר אותם בקבצי JSON ואז שולח לשרת ה C2 שכתובתו הועלתה לעיל
ואגב בנוגע לשאלה למה זה פוצל ל dropper ונוזקה - די פשוט - כדי שסורקים לא יעלו עליו בקלות -
@מתכנת-חובב וירוס טוטאל לא עולה גם על הנוזקה. והנוזקה בכל מקרה גם כלולה בתוך הדרופר, זה לא שהוא מוריד אותה מהרשת
-
@מישהו12 זה שהוא לא עולה עכשיו זה כי לא הכניסו את החתימה שלו עדיין (כנראה ההסתרות שלו מספיקות כדי שמנועים היוריסטיים לא יזהו את האנומליות)
ברגע שזה ירשם המאגרים החתימות זה עדיין לא יזוהה כי זה נמצא בתוך הדרופר -
@מתכנת-חובב אז ירשמו גם את הדרופר
-
אציין, שמבדיקה חוזרת, לא בטוח שהמסקנה שהגעתי אליה בנוגע לקוטלין וג'אווה נכונה, נראה שבשתי האפליקציות יש גם קוטלין.


