ما هو الخفي؟
البرنامج الخفي هو نوع من البرامج التي تعمل على نظام تشغيل يشبه UNIX ويتم تنفيذه في الخلفية بشكل غير مخفي، بدلاً من الوصول المباشر للمستخدم. ينتظر أن يتم تشغيله من خلال ظهور حالة أو حدث معين.
عادةً، تقوم الأنظمة المشابهة لـ UNIX بتنفيذ العديد من البرامج الشيطانية، وذلك في المقام الأول لتلبية طلبات الخدمات من خلال أنظمة أخرى على الشبكة، ولنشاط الأجهزة، وللاستجابة للبرامج الأخرى أيضًا.
يمكن أن تكون أمثلة الشروط أو الإجراءات التي يمكن أن تقوم بتنشيط البرامج الخفية في النشاط تاريخًا أو وقتًا معينًا، ومرور فترة زمنية محددة، واستلام طلب ويب أو بريد إلكتروني تم إنشاؤه من خط اتصال محدد، ووصول ملف إلى دليل محدد.
فك تشفير Base64 في JS
ليس من الضروري أن يكون مرتكب الشرط أو الفعل معروفًا بأن البرنامج الخفي يستمع.
ومع ذلك، تقوم البرامج في كثير من الأحيان بتنفيذ إجراء ما فقط لأنها معروفة أنه سيؤدي إلى ظهور البرنامج الخفي ضمنيًا.
يُطلق على البرنامج الخفي أيضًا اسم عمليات الخلفية. إنه برنامج UNIX أو Linux يتم تنفيذه داخل الخلفية. يحتوي كل برنامج خفي تقريبًا على أسماء تنتهي بالحرف 'd'. على سبيل المثال، sshd، الذي يدير اتصالات الوصول عن بعد لـ SSH، أو البرنامج الخفي httpd الذي يدير خادم Apache. في كثير من الأحيان، يبدأ Linux تشغيل البرامج الخفية في وقت البدء.
يتم حفظ نصوص shell المختلفة داخل الدليل وهو /etc/init.d. تُستخدم هذه البرامج النصية لبدء وإيقاف الشياطين.
عمليات لينكس
عادة، يتم إنشاء مثيل للشياطين كعمليات. هذه العمليات هي مثيلات التشغيل أو التنفيذ للبرنامج. تتم معالجة العملية بواسطة النواة التي تمثل جوهر نظام التشغيل وتقوم بتعيين جميع أرقام تعريف العملية الخاصة.
في Linux، هناك ثلاثة أنواع شائعة من العمليات وهي كما يلي:
- حزمة
- تفاعلية
- الشيطان
يتم إرسال العملية المجمعة من خلال قائمة انتظار العمليات ولا ترتبط بسطر الأوامر. تعتبر هذه العمليات مناسبة تمامًا لإجراء عمليات متكررة إذا كان استخدام النظام منخفضًا.
يتم تنفيذ العملية التفاعلية بشكل تفاعلي من قبل المستخدم في سطر الأوامر.
جافا كيفية التجاوز
يتم تعريف البرنامج الخفي بواسطة نظام مثل تلك العمليات التي تحتوي عمليتها الأصلية على معرف PID واحد.
دائمًا، فهو يحدد العملية init. عملية init هي العملية الأولية التي تبدأ عند بدء تشغيل نظام Linux وتظل على النظام حتى يتم إيقاف تشغيل النظام.
يمكن أن يتبنى init أي نوع من العمليات التي تنتهي العملية الأصلية أو تموت دون انتظار حالة العملية الفرعية.
لذا، فإن التقنية الأساسية لتشغيل البرنامج الخفي هي القسمة أو التشعب مرتين أو مرة واحدة وأيضًا تمكين العمليات الأصلية من الإنهاء بينما تبدأ العملية الفرعية في تنفيذ وظيفتها العامة.
تاريخ الشياطين
يتم نشر عدد قليل من الشياطين بواسطة البرامج النصية init الخاصة بالنظام V. وهي عبارة عن برامج نصية أو برامج قصيرة يمكن تنفيذها تلقائيًا في حالة بدء تشغيل النظام. وقد يتم إعادة إنتاجها على فترات أو البقاء على قيد الحياة طوال مدة الجلسة.
الآن، يتم تشغيل عدة برامج خفيّة حسب الحاجة فقط وبواسطة برنامج خفي واحد (xinetd) بدلاً من تنفيذها بشكل مستمر. يُعرف xinetd باسم خادم TCP/IP الفائق.
يتم تشغيله في وقت البدء ويستمع أيضًا إلى المنافذ المختلفة المخصصة لتلك العمليات المدرجة داخل ملف التكوين، مثل /etc/xinetd.conf أو /etc/inetd.conf.
يدويًا، يمكن أيضًا تشغيل عدد قليل من البرامج الشيطانية ليتم تشغيلها بواسطة البرامج التطبيقية ونظام التشغيل. تحتوي جميع الشياطين على برنامج نصي فردي في العديد من أنظمة التشغيل المشابهة لـ UNIX بما في ذلك Linux والتي يمكن من خلالها إعادة تشغيلها وإنهائها.
يتم تنفيذ إدارة هذه البرامج النصية وفقًا لمستويات التشغيل. يمكن تعريف مستوى التشغيل على أنه حالة تشغيل أو تكوين لنظام يسمح فقط بتوفر بعض العمليات المحددة. يمكن أن يساعد البدء في مستوى تشغيل مميز في حل مشكلات أو مشكلات معينة بما في ذلك تصحيح أخطاء النظام.
النقاط الرئيسية للشياطين
يتم شرح بعض النقاط الرئيسية الهامة للشياطين أدناه:
- كلمة الشيطان مأخوذة من المنهجية اليونانية الشيطان. كانت هذه كائنات خارقة للطبيعة تقع بين البشر والآلهة وتمتلك قوة أو معرفة فريدة.
- في عام 1963، تم تطبيق مصطلح الشيطان في البداية داخل سياق النظام في المشروع الرائد MAC بمساعدة IBM 7094.
- لقد كان مستوحى من عفريت الديناميكا الحرارية والفيزياء لماكسويل الذي كان عاملًا مجردًا يدعم أنواع الجزيئات ذات السرعات المميزة ويعمل في الخلفية بلا كلل.
- بعد ذلك، تم استخدام المصطلح لوصف العمليات الخلفية التي عملت على تنفيذ مهام النظام دون كلل أو ملل.
- كان أول كمبيوتر خفي عبارة عن برنامج يقوم بإنشاء نسخ احتياطية للأشرطة تلقائيًا.
- تم استخدام هذا المصطلح لاستخدام الكمبيوتر. لقد كان بمثابة نموذج قصير لـ Disk and Execution MOnitor.
- برامج مختلفة تسمى الخدمات التي تعمل بها الشياطين على نظام التشغيل Microsoft Windows. ومع ذلك، يتم أيضًا تطبيق كلمة 'daemon' أحيانًا مع تلك الأنظمة.
تنفيذ الشياطين
يونيكس مثل الأنظمة
تعتبر عملية النظام المشابه لنظام Unix بمثابة برنامج خفي إذا ماتت العملية الأصلية الخاصة به ويتم تعيين هذا البرنامج الخفي لعملية init (العملية رقم 1) باعتبارها العملية الأصلية ولا تحتوي على محطة تحكم بالطريقة التقنية البحتة.
ومع ذلك، قد يكون البرنامج الخفي أي عملية في الخلفية سواء كانت عملية فرعية لعملية init أم لا.
تصبح التقنية الأساسية لإجراء ما بمثابة برنامج خفي على نظام يشبه UNIX عندما يبدأ الإجراء من خلال سطر الأوامر أو البرامج النصية لبدء التشغيل مثل البرنامج النصي System Starter أو البرنامج النصي init، ويتضمن ما يلي:
ج ++ واجهة المستخدم الرسومية
- حذف المتغيرات غير الضرورية من خلال البيئة اختياريا.
- التشغيل كمهمة الخلفية عن طريق الخروج والشوكة. فهو يسمح لأصل البرنامج الخفي (عملية بدء التشغيل أو الصدفة) بتلقي إشعارات الخروج ومواصلة التنفيذ العادي.
- يتم الانفصال من خلال قسم الاستدعاء عن طريق عملية فردية عادةً، setid():
- الانفصال من خلال التحكم tty.
- إنشاء جلسة جديدة ويصبح قائد الجلسة لتلك الجلسة.
- أن يصبح قائد مجموعة العملية.
- إذا كان البرنامج الخفي يرغب في التأكد من أنه لن يرث سيطرة جديدة، فقد يخرج ويفترق مرة أخرى. وهذا يعني أنه لم يعد أي قائد للجلسة داخل الجلسة الجديدة ولا يمكنه أن يرث أي سيطرة.
- قم بتعيين دليل العمل الحالي كدليل جذر حتى لا تأخذ العملية أي دليل قيد الاستخدام قد يكون عبر نظام ملفات مثبت.
- تعديل umask إلى 0 للسماح بإنشاء () وopen () واستدعاءات أخرى لنظام التشغيل لتسهيل قناع الإذن الخاص بهم وعدم الاعتماد على umask المتصل بالكامل.
- إعادة توجيه واصفات الملف 0 و1 و2 للتدفقات القياسية (stderr وstdout وstdin) إلى ملف سجل أو /dev/null، وإغلاق كل ملف واصف آخر تم الحصول عليه من خلال العملية الأصلية.
عندما تبدأ العملية بواسطة أي برنامج خفي للخادم الفائق مثل systemd أو Launchd أو inetd، سيقوم الخادم الفائق بتنفيذ هذه الوظائف لهذه العملية، باستثناء تلك البرامج الشيطانية ذات النمط القديم التي لم يتم تحويلها إلى تنفيذ ضمن systemd والموصوفة بأنها خوادم مخططات بيانات متعددة الخيوط وType=forking عند إينتد.
موكيتو كلما
مس-دوس
تم تنفيذ البرنامج الشبيه بالبرنامج الخفي كبرنامج إنهاء والبقاء مقيمًا (باختصار TSR) داخل نظام Microsoft DOS الأساسي.
ويندوز إن تي
تقوم البرامج المعروفة باسم خدمات Windows بتنفيذ وظائف هذه البرامج الشيطانية على أنظمة Microsoft Windows NT. يتم تنفيذها كعمليات ولا تتفاعل عادةً مع الماوس ولوحة المفاتيح والشاشة. وقد يتم تشغيلها بمساعدة نظام التشغيل في وقت التمهيد.
يتم إيقاف خدمات Windows وبدء تشغيلها وتكوينها يدويًا بواسطة لوحة التحكم (برنامج تكوين/تحكم مخصص)، أو نظام البرمجة النصية PowerShell، أو أوامر net stop وnet start، وهو عنصر التحكم في الخدمة في مدير التحكم في الخدمة.
ومع ذلك، يمكن لأي تطبيق يعمل بنظام Windows تنفيذ مسؤوليات البرنامج الخفي، ليس فقط مثل الخدمة، ويحتوي عدد قليل من برامج Windows Daemons على خيار التنفيذ كعملية عادية.
نظام التشغيل macOS وMac OS الكلاسيكي
تم تسهيل العديد من الخدمات والميزات الاختيارية من خلال تلك الملفات التي تم تحميلها في وقت التمهيد والتي تعمل على إعادة بناء نظام التشغيل على نظام التشغيل Mac OS الكلاسيكي.
كانت تسمى هذه لوحات التحكم وملحقات النظام. قامت الإصدارات الأحدث من نظام التشغيل Mac OS القياسي بتوسيع هذه التطبيقات من خلال تطبيقات خلفية كاملة مجهولة الهوية.
هذه التطبيقات هي تطبيقات عادية يتم تنفيذها داخل الخلفية. ولا يزال يتم تحديدها على أنها امتدادات النظام العادية للمستخدم.
macOS هو نظام Unix ويستخدم برامج خفية. يطبق نظام التشغيل macOS مصطلح الخدمة لتعيين البرامج التي تنفذ الوظائف المختارة من خلال قائمة الخدمات بدلاً من تطبيق هذا المصطلح كما يفعل Windows للبرامج الشيطانية.
وظائف الشياطين النموذجية
- تنفيذ الإجراءات المجدولة مثل cron.
- مراقبة الأنظمة مثل مصفوفة RAID أو صحة القرص الصلب.
- الاستجابة لطلب الشبكة وفتح منفذ الشبكة (مثل المنفذ 80).
كيف نبدأ، أو نعيد تشغيل، أو نوقف البرامج الشيطانية لمطالبة الصدفة؟
نحتاج إلى تطبيق أوامر الخدمة الخاصة بهم كما يلي:
service daemon-name-here start service daemon-name-here stop service daemon-name-here restart
في المثال التالي، النجوم، إعادة التشغيل والتوقف.
service httpd start service httpd stop service httpd restart
كيف نتحقق من قائمة كل برنامج خفي قيد التشغيل؟
للتحقق من حالة كل برنامج خفي تم تثبيته، اكتب:
service - -status-all
التخطيط لشيطاننا
ما الخفي سيفعل؟
يجب أن ينفذ البرنامج الخفي شيئًا واحدًا، وينفذه جيدًا. قد يكون هذا الشيء معقدًا مثل التعامل مع الكثير من صناديق البريد عبر أكثر من مجال واحد أو سهلاً مثل الاتصال بـ sendmail لإرساله بالبريد إلى المسؤول وتحديد تقرير.
يجب أن تكون لدينا فكرة أفضل عما يجب أن يفعله البرنامج الخفي في أي حال. سوف يتفاعل مع عدد قليل من الشياطين الأخرى التي قد نحددها أم لا. إنه أيضًا شيء آخر يجب فحصه.
ما هو أوراكل
تفاعل
يجب ألا يكون للشياطين أي اتصال مع المستخدم مباشرة عبر المحطة الطرفية. يمر كل اتصال عبر عدد قليل من أنواع الواجهة (التي قد يتعين علينا أو لا يتعين علينا تحديدها)، والتي قد تكون معقدة مثل واجهة المستخدم الرسومية + GTK أو سهلة مثل مجموعة فردية.
الهيكل الأساسي للشيطان
يتعين على Daemon تنفيذ بعض الأعمال المنزلية ذات المستوى المنخفض لتجهيز نفسه للوظيفة الحقيقية عند بدء تشغيله. ويتضمن بعض الخطوات وهي كما يلي:
- شوكة العملية الفائقة (العملية الأصلية)
- تعديل قناع وضع الملف (umask)
- فتح سجلات للكتابة
- قم بإنشاء معرف جلسة خاص (باختصار SID)
- تعديل دليل العمل (الحالي) إلى مكان آمن
- إغلاق واصفات تصنيف الملف
- أدخل رمز البرنامج الخفي الأصلي