LinuxCheck
أداة للاستجابة للطوارئ / جمع المعلومات / اكتشاف الثغرات في Linux، تدعم أكثر من 70 فحصًا في 13 فئة مثل الإعدادات الأساسية / حركة مرور الشبكة / المهام المجدولة / متغيرات البيئة / معلومات المستخدم / الخدمات / bash / الملفات الضارة / Rootkit النواة / SSH / Webshell / ملفات التعدين / عمليات التعدين / سلسلة التوريد / مخاطر الخادم.
التحديثات
سجل التحديثات: 20 أبريل 2024
- تعديل الإخراج ليكون تقرير Markdown
- إلغاء استخدام ag، والعودة إلى استخدام أمر grep الأصلي في Linux لتجنب التثبيت الإضافي
- تحسين تنسيق الكود، لم يعد هناك حاجة لـ tee -a لكل سطر
- تحديث منطق الكشف عن Webshell
- تحديث منطق الكشف عن authorized_keys
- إضافة فحص JDWP وخادم Python HTTP في فحص مخاطر الخادم
- إضافة كشف حاويات Docker
- إضافة كشف خلفية PAM
- إضافة قدرة تحميل التقارير المحلية لمواجهة حالات الطوارئ على أجهزة متعددة.
سجل التحديثات: 5 أغسطس 2022
- إصلاح مشكلة كثرة سجلات فحص وحدات النواة
سجل التحديثات: 7 مارس 2022
- إضافة كشف خلفية الروابط اللينة SSH
تاريخ التحديث: 17 أكتوبر 2021
- إضافة كشف أحصنة التعدين Ntpclient/WorkMiner/TeamTNT
- إضافة منطق كشف وحدة Rootkit
- إضافة كشف تسميم Python pip
- إضافة عرض $HOME/.profile
- إضافة فحص مخاطر الخادم (Redis)
الوظائف
- فحص الإعدادات الأساسية
- فحص تغييرات إعدادات النظام
- معلومات النظام (عنوان IP / المستخدم / وقت التشغيل / إصدار النظام / اسم المضيف / الرقم التسلسلي للخادم)
- استخدام وحدة المعالجة المركزية
- معلومات المستخدمين المسجلين
- أعلى 15 وحدة معالجة مركزية
- أعلى 15 ذاكرة
- فحص المساحة المتبقية على القرص
- أقراص مثبتة
- فحص البرامج الشائعة
- /etc/hots
- فحص الشبكة/حركة المرور
- ifconfig
- حركة مرور الشبكة
- منافذ الاستماع
- منافذ مفتوحة للخارج
- اتصالات الشبكة
- حالة اتصالات TCP
- جدول التوجيه
- إعادة توجيه التوجيه
- خادم DNS
- ARP
- فحص وضع الالتقاط (Promiscuous) لبطاقة الشبكة
- جدار الحماية iptables
- فحص المهام المجدولة
- مهام المستخدم الحالي المجدولة
- مهام النظام في /etc
- وقت إنشاء ملفات المهام المجدولة
- فحص خلفية crontab
- فحص متغيرات البيئة
- env
- path
- LD_PRELOAD
- LD_ELF_PRELOAD
- LD_AOUT_PRELOAD
- PROMPT_COMMAND
- LD_LIBRARY_PATH
- ld.so.preload
- فحص معلومات المستخدم
- المستخدمون القادرون على تسجيل الدخول
- تاريخ تعديل ملف passwd
- sudoers
- معلومات تسجيل الدخول (w/last/lastlog)
- عناوين IP تسجيل الدخول السابقة
- فحص الخدمات
- خدمات SystemD قيد التشغيل
- وقت إنشاء خدمة SystemD
- فحص bash
- History
- تدقيق أوامر History
- /etc/profile
- $HOME/.profile
- /etc/rc.local
- ~/.bash_profile
- ~/.bashrc
- bash shell عكسي (reverse shell)
- فحص الملفات
- الملفات المخفية
- فحص وقت تعديل ملفات النظام
- فحص الملفات المؤقتة (/tmp /var/tmp /dev/shm)
- alias
- فحص صلاحيات SUID الخاصة
- عمليات موجودة ولكن ملفاتها غير موجودة
- تغييرات الملفات في آخر 7 أيام (mtime)
- تغييرات الملفات في آخر 7 أيام (ctime)
- ملفات كبيرة > 200 ميجابايت
- تدقيق الملفات الحساسة (nmap/sqlmap/ew/frp/nps وغيرها من أدوات القراصنة الشائعة)
- ملفات قراصنة مشبوهة (برامج مثل wget/curl التي رفعها القراصنة، أو تغيير اسم البرنامج الضار إلى اسم برنامج عادي مثل تغيير ملف nps إلى mysql)
- فحص Rootkit النواة
- وحدات مشبوهة في lsmod
- فحص جدول رموز النواة
- فحص rootkit hunter
- فحص وحدات .ko لـ rootkit
- فحص SSH
- هجمات SSH بالقوة الغاشمة
- فحص SSHD
- تكوين خلفية SSH
- فحص خلفية SSH inetd
- مفتاح SSH
- فحص Webshell
- فحص php webshell
- فحص jsp webshell
- فحص ملفات/عمليات التعدين
- فحص ملفات التعدين
- فحص عمليات التعدين
- كشف WorkMiner
- كشف Ntpclient
- فحص تسميم سلسلة التوريد
- فحص مخاطر الخادم
- كشف كلمة مرور Redis الضعيفة
- فحص خدمة JDWP
- فحص Python http.server
- فحص صلاحيات Docker
الاستخدام
الطريقة الأولى: التثبيت عبر git clone
git clone https://github.com/al0ne/LinuxCheck.git
chmod u+x LinuxCheck.sh
./LinuxCheck.sh
الطريقة الثانية: الاستدعاء عبر الإنترنت مباشرة [الاستدعاء عبر الإنترنت لا يمكنه استخدام قدرة تحميل التقرير]
bash -c "$(curl -sSL https://raw.githubusercontent.com/al0ne/LinuxCheck/master/LinuxCheck.sh)"
سيتم حفظ الملف بتنسيق ipaddr_hostname_username_timestamp.log
تحميل التقرير تلقائيًا
إذا تم التوزيع على أجهزة متعددة، فسيتم إرسال التقرير تلقائيًا إلى عنوان URL معين بعد تنفيذ البرنامج النصي. قم بتغيير webhook_url داخل البرنامج النصي إلى عنوانك الخاص.
# 报告上报的地址
webhook_url='http://localhost:5000/upload'
upload_report() {
# 上传到指定接口
if [[ -n $webhook_url ]]; then
curl -X POST -F "file=@$filename" "$webhook_url"
fi
}
قم بتشغيل خدمة Flask على خادمك لاستقبال تقارير Markdown التي يتم إرسالها من الخوادم.
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_file():
if 'file' not in request.files:
return "No file part", 400
file = request.files['file']
if file.filename == '':
return "No selected file", 400
if file:
filename = file.filename
file.save(filename)
return "File successfully uploaded", 200
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9999)
المراجع
تم كتابة هذه الأداة بالاعتماد بشكل رئيسي على الأدوات/المقالات التالية بالإضافة إلى الخبرة الشخصية.
Linenum
https://github.com/lis912/Evaluation_tools
https://ixyzero.com/blog/archives/4.html
https://github.com/T0xst/linux
https://github.com/grayddq/GScan