Wetland
Wetland هو honeypot SSH عالي التفاعل، مصمم لتسجيل هجمات القوة الغاشمة. بالإضافة إلى ذلك، سيقوم Wetland بتسجيل التفاعلات التي يقوم بها المهاجم مثل shell و scp و sftp و exec-command و direct-forward و reverse-forward.
Wetland مبني على وحدة SSH الخاصة بـ Python paramiko. ويعمل Wetland كخادم TCP متعدد الخيوط باستخدام SocketServer.
الميزات
- استخدام Docker لتوفير بيئة لينوكس حقيقية.
- جميع عمليات مصادقة كلمة المرور سيتم توجيهها إلى Docker.
- جميع الأوامر سيتم تنفيذها على Docker.
- حفظ نسخة من الملف عندما يقوم المخترق برفع ملفات عبر SFTP.
- استخراج وحفظ الملفات من سجل exec عندما يقوم المخترق برفع ملفات عبر SCP.
- توفير سكريبت playlog لإعادة تشغيل السجلات من نوع [shell | exec | direct-forward | reverse-forward].
- ميزة شبكات متقدمة لتزوير عنوان IP الخاص بالمهاجم بين Wetland و Docker (بفضل honssh).
- طرق متعددة للإبلاغ عندما يتعرض Wetland للاختراق، لكنها حالياً تقتصر على البريد الإلكتروني و Bearychat.
المتطلبات
- نظام لينوكس (تم اختباره على Ubuntu)
- صور sshd في Docker (مثل rastasheep/ubuntu-sshd)
- Python 2.7
- paramiko
- yagmail
- IPy
- requests
الإعداد والتكوين
- انسخ wetland.cfg.default إلى wetland.cfg
- أنشئ المفاتيح المستخدمة من قبل خادم SSH
- نفّذ
mkdir data
- نفّذ
ssh-keygen -t rsa، وضع المفاتيح في data/
- نفّذ
ssh-keygen -t dsa، وضع المفاتيح في data/
- تذكر أن Wetland وحاوية sshd يجب أن تستخدما نفس المفاتيح.
- قم بتثبيت متطلبات Python
- نفّذ
pip install -r requirements
- قم بتكوين شعار خادم SSH
- حرّر banner في wetland.cfg
- يجب أن يكون مطابقاً لشعار SSH لحاوية sshd
- أو يمكنك تشغيل
python util/initwetland.py ./، هذا السكريبت سيقوم بكل الأعمال السابقة
- قم بتكوين إضافات الإخراج في wetland.cfg
- فعّل أو عطّل في قسم
[output]
- حرّر عنوان URL للروبوتات الواردة عند استخدام Bearychat
- حرّر المستخدم وكلمة المرور... عند استخدام البريد الإلكتروني
- قم بتثبيت p0f إذا أردت
- نفّذ
git clone https://github.com/p0f/p0f
- نفّذ
cd p0f
- نفّذ
./build.sh
- حرّر قسم
[p0fp0f] في wetland.cfg
- إذا لم تكن بحاجة إلى p0f، فقط عطّله في قسم [output]
- قم بتثبيت Docker
- ثبّت Docker حسب التعليمات في www.docker.com
- نفّذ
docker search sshd، ثم اختر صورة تشغل sshd
- نفّذ
docker run -d --name sshd sshd_image_name
- نفّذ
docker inspect sshd، ثم حرّر عنوان IP ومنفذ Docker في wetland.cfg
- يجب أن يكون منفذ SSH في sshd مطابقاً لمنفذ Wetland
- احذف واستبدل حاوية sshd من وقت لآخر إذا أردت
التشغيل
- تشغيل
- نفّذ
nohup python main.py &
- إيقاف
- نفّذ
netstat -autpn | grep 22
- ثم
kill pid_number
- هههه
- تنظيف
- ربما ينبغي عليك حذف بعض الـ iface التي أنشأتها وحدة الشبكات يدوياً.
- نفّذ
ip link list
- ثم
ip link del dev wdxxxxxx
- أخيراً نظف جدول nat في iptables أو أعد التشغيل
- عرض السجلات
- نفّذ
python util/clearlog.py -p log سيزيل السجلات التي تحتوي فقط على pwd.log، وسيكتب اسم المستخدم:كلمة المرور في ملف -l، الافتراضي هو ./pwd.txt
- ثم استخدم playlog.py في util
- تغييرات نظام الملفات
- سكريبت filechange.py سينسخ طبقة القراءة-الكتابة لحاوية sshd إلى ./، وتشمل الطبقة ما أنشأه المخترق أو أزال
- مثال:
docker inspect sshd --format '{{.Id}}' | python filechange.py -
Wetland في حاوية Docker
- نفّذ
docker pull ohmyadd/wetland
- انظر في Docker Hub
قائمة المهام
-
جعل Wetland في حاوية Docker
-
إنشاء صورة sshd واقعية للحاوية
-
أتمتة إنشاء حاوية sshd
-
إضافة مراقب (watchdog)
-
الاستفادة من Bearychat الوارد والصادر
-
نظام سجلات موزع ودعم hpfeeds