انجمن تیم امنیتی ایران سایبر

Owasp Honeypot: ابزار منبع باز برای ایجاد Honeypot و Honeynet

شروع موضوع توسط Wikto ‏25/10/18 در انجمن آموزش و امنیت سایت و سرورهای لینوکس

  1. لطفا فایل های خود را جهت ماندگاری در انجمن اپلود کنید در صورت مشاهده لینک اپلود خروجی , تاپیک حذف خواهد شد .
    بستن اطلاعیه
بستن اطلاعیه


درود مهمان گرامي؛

مهمان گرامي، براي مشاهده تالار با امکانات کامل ميبايست از طريق ايــن ليـــنک ثبت نام کنيد .

شرکت امنیتی ایران سایبر - برگزار کننده دوره های آموزشی و مسابقات فتح پرچم (CTF)
برچسب ها:
  1. Wikto
    عضو انجمن

    وضعیت:
    Offline
    تاریخ عضویت:
    ‏12/8/18
    ارسال ها:
    33
    تشکر شده:
    217
    جنسیت:
    شغل:
    مهندس امنیت
    محل سکونت:
    تهران
    Name:
    MOHAMMAD
    Main os:
    Kali
    OWASP Honeypot یک نرم افزار منبع باز در زبان پایتون است که برای ایجاد honeypot و honeynet به شیوه ای آسان و ایمن طراحی شده است! این پروژه با Python 2.x و 3.x سازگار است و بر روی ویندوز، Mac OS X و لینوکس آزمایش شده است.

    امکانات
    • شبیه ساز (DOCKER / LXC)
    • چند سیستم عامل پشتیبانی
    • پشتیبانی چند نسخه پایتون
    • ماشین مجازی امن
    • فرآیند راه اندازی خودکار
    • CLI / WebUI / API موجود + گزارش زنده
    • پشتیبانی از حملات مبتنی بر وب / شبکه
    • بسته نرم افزاری شبکه (Basic / Advance)
    • مانیتورینگ فعالیت نفوذگران
    عملیات API و WebUI
    عملیات API
    با استفاده از این سوئیچ، سرور API را بدون احراز هویت مورد نیاز آغاز خواهید کرد. برای فعال کردن احراز هویت، api_access_withoutkey را در config.py تنظیم کنید. کلید احراز هویت باید به عنوان کلید پارامتر در هر درخواست ارسال شود (می تواند به عنوان کوکی، GET، POST تنظیم شود). پس از اجرای سرور API، یک WebUI ساده نیز برای استفاده (index.html) موجود است. این نمودار چند گرافیک را با استفاده از API با jQuery و غیره نشان می دهد.
    تمام پارامترها می توانند در GET، POST یا کوکی نیز ارسال شوند.
    مقدار پیش فرض مقدار پارامتر 10 است، اگر شما می خواهید آن را به عنوان نامحدود تنظیم کنید، آن را به عنوان 0 تنظیم کنید
    مقدار پیش فرض پارامتر skip ، 0 است
    برای پیدا کردن اطلاعات بیشتر، از عملیات API در صفحه ویکی بازدید کنید
    کد:
    https://github.com/zdresearch/OWASP-Honeypot/wiki/API
    استفاده از python ohp.py -start-api-server برای شروع سرور API با پیکربندی پیش فرض.
    کد:
    https://github.com/zdresearch/OWASP-Honeypot/blob/master/config.py

    upload_2018-10-25_22-23-3.png

    نصب :
    کد:
    sudo apt install libpcap-dev libnet-dev tshark
    git clone https://github.com/zdresearch/OWASP-Honeypot.git
    cd OWASP-Honeypot
    pip install -r requirements.txt
    
    استفاده :
    upload_2018-10-25_22-26-18.png

    اگر پایتون ohp.py را اجرا می کنید ، با پیکربندی پیش فرض اجرا می شود در غیر این صورت دستوراتی را که شما وارد می کنید دنبال می کند.
    • m, --select-module-
    با استفاده از سوئیچ m- می توانید چند مولفه را هم زمان انتخاب کنید
    مثال :
    m ftp / weak_password or -m ftp / weak_password، ssh / weak_password-​
    • x, --exclude-module-
    اگر از پیکربندی پیش فرض استفاده می کنید به عنوان مثال :
    : "default_selected_modules"
    "ftp / weak_password، ssh / weak_password، http / basic_auth_weak_password"​
    و می خواهید ماژولی را حذف کنید می توانید از xswitch- استفاده کنید
    • s, --vm-storage-limit-
    این سوئیچ برای محدود کردن ذخیره استوریج استفاده می شود و در حال حاظر کار نمیکند
    modify/etc/init.d/docker
    کد:
    log_begin_msg "Starting $DOCKER_DESC: $BASE"
    start-stop-daemon --start --background \
        --no-close \
        --exec "$DOCKERD" \
        --pidfile "$DOCKER_SSD_PIDFILE" \
        --make-pidfile \
        -- \
            -p "$DOCKER_PIDFILE" \
            $DOCKER_OPTS \
                >> "$DOCKER_LOGFILE" 2>&1
    log_end_msg $?
    
    تغییر به (add --storage-opt dm.basesize = 0.5G)
    کد:
    log_begin_msg "Starting $DOCKER_DESC: $BASE"
    start-stop-daemon --start --background \
        --no-close \
        --exec "$DOCKERD" --storage-opt dm.basesize=0.5G \
        --pidfile "$DOCKER_SSD_PIDFILE" \
        --make-pidfile \
        -- \
            -p "$DOCKER_PIDFILE" \
            $DOCKER_OPTS \
                >> "$DOCKER_LOGFILE" 2>&1
    log_end_msg $?
    
    • r، --vm-reset-factory-time-
    برای جلوگیری از زامبی یا بات نت ها می باشد و میتوانید با استفاده از این سوئیچ هر دوره زمانی را ریستارت کنید. ورودی ها بر اساس ثانیه است
    • start-api-server--
    با استفاده از این کلید، سرور API را بدون نیاز به احراز هویت آغاز می کنید! برای فعال کردن احراز هویت، api_access_withoutkey را به عنوان Trueدر config.py تنظیم کنید. کلید احراز هویت باید به عنوان کلید پارامتر در هر درخواست ارسال شود (می تواند به عنوان کوکی، GET، POST تنظیم شود).
    • verbose--
    برای مشاهده اطلاعات بیشتر در هنگام اجرای OWASP Honeypot
    • disable-colors--
    برای غیرفعال کردن رنگ ها در چاپ از این کلید استفاده کنید!
    • h, --help-
    You know about this!

    فایل پیکر بندی :
    پیکربندی چارچوب config.py

    شامل پیکر بندی پیش فرض framework می باشد
    کد:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import random
    import socket
    
    from core._time import hours
    
    
    def api_configuration():
        """
        API Config (could be modify by user)
    
        Returns:
            a JSON with API configuration
        """
        return {  # OWASP Honeypot API Default Configuration
            "api_host": "127.0.0.1",
            "api_port": 5000,
            "api_debug_mode": False,
            "api_access_without_key": True,
            "api_access_key": "".join(random.choice("0123456789abcdef") for _ in range(32)),
            "api_client_white_list": {
                "enabled": False,
                "ips": ["127.0.0.1", "10.0.0.1", "192.168.1.1"]
            },
            "api_access_log": {
                "enabled": False,
                "filename": "ohp_api_access.log"
            },
            "api_database": "mongodb://127.0.0.1:27017/",  # mongodb://user:[email protected]:27017/
            "api_database_connection_timeout": 2000,  # miliseconds
            "api_database_name": "ohp_events"
        }
    
    
    def network_configuration():
        """
        network configuration
    
        Returns:
            JSON/Dict network configuration
        """
        return {
            "store_network_captured_files": False,
            "real_machine_ip_address": socket.gethostbyname(socket.gethostname())
        }
    
    
    def docker_configuration():
        """
        docker configuration
    
        Returns:
            JSON/Dict docker configuration
        """
        return {
            "virtual_machine_storage_limit": 0.5,  # Gigabyte
            "virtual_machine_container_reset_factory_time_seconds": hours(-1),  # -1 is equals to never reset!
    
        }
    
    
    def user_configuration():
        """
            user configuration
    
        Returns:
            JSON/Dict user configuration
        """
        return {
            "language": "en",
            "default_selected_modules": "ftp/weak_password,ssh/weak_password,http/basic_auth_weak_password",
            "default_excluded_modules": None,
        }
    
    پیکربندی ماژول ها
    پیکربندی گروه lib \ modules \ ftp \ __ init__.py
    هر دسته (مانند ftp، http، ssh) پیکربندی خاص خود را در __init__.py دارند.

    کد:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    
    def category_configuration():
        """
        category configuration
    
        Returns:
            JSON/Dict category configuration
        """
        return {
            "virtual_machine_name": "ohp_ftpserver",
            "virtual_machine_port_number": 21,
            "virtual_machine_internet_access": True,
            "real_machine_port_number": 21
        }
    
    پیکربندی ماژول lib \ modules \ ftp \ weak_password \ __ init__.py
    هر ماژول (مثلا ftp / weak_password) پیکربندی خاص خود را در __init__.py دارند.

    کد:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    
    def module_configuration():
        """
        module configuration
    
        Returns:
            JSON/Dict module configuration
        """
        return {
            "username": "admin",
            "password": "admin"
        }
    
    استفاده از ماژول چند گانه در یک گروه
    برای استفاده از چندین ماژول در رده های یکسان و جلوگیری از درگیری پورت ها باید real_machine_port_number را به ماژول اضافه کنید می توانید پیکربندی هر رده را با اضافه کردن کلید به پیکربندی ماژول جایگزین کنید.

    کد:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    
    def module_configuration():
        """
        module configuration
    
        Returns:
            JSON/Dict module configuration
        """
        return {
            "username": "admin",
            "password": "admin",
            "virtual_machine_port_number": 21
            # you can add anything in here to avoid the default category configuration
            # "virtual_machine_internet_access": False
        }
    


    ( کپی با ذکر منبع )
     
    0x3a، F4LL3N، JOK3R و 3 نفر دیگر از این ارسال تشکر کرده اند.
به انجمن تخصصی امنیت ایران سایبر خوش آمدید . برای مشاهده تمامی تالار ها و امکانات ثبت نام کنید .