اطلاعیه

Collapse
No announcement yet.

سوال در مورد رول نویسی اسنورت

Collapse
X
 
  • Filter
  • زمان
  • Show
Clear All
new posts

  • سوال در مورد رول نویسی اسنورت

    میخوام بدونم آیا در اسنورت میشه رولی نوشت که به جای یک پکت در واقع یک جریان از پکت ها رو چک کنه ؟ مثلا فرض کنید من میخوام رولی بنویسم که پکت های TCP رو چک کنه که اگر فلگ های S و F اون ست شده بودن ، بعد بره برگرده دنبال پکت های ICMP که از مبدا 192.168.2.2 دارن میان و همچنین اگر 20 تا پکت UDP هم در کمتر از 100 ثانیه از مبدا 192.168.2.3 رسیده بود ، اون وقت این رفتارو لاگ کن !
    چیزی که خودم سرچ کردم به نظرم رسید شاید با رول های activate/dynamic شدنی باشه . کسی نظری داره ؟

    در همین راستا ، دنبال یه رول بودم که پکت های حمله TearDrop رو تشخیص بده . این رول رو اغلب جاها پیدا کردم که کاملا مسخره و بی کاربرده

    کد:
    alert udp $EXTERNAL_NET any -> $HOME_NET any (msg:"DOS Teardrop attack"; fragbits:M; id:242; classtype:attempted-dos; sid:270; rev:6;)

    باز رسیدم به همون بحث بالا که کردم ، اگه میشد یه جریانی از پکت هارو چک کرد ، اون وقت رول مناسب واسه teardrop رو هم میشد نوشت . نظریات و تجربیات لطفا .
    Asiral....

  • #2
    سلام دوست عزیز
    مطلبتو خوندم و دیدم که هدفت چیه اما اگر بخوای برای تمامی tcp ها این رول رو بزنی که چک بکنه واقعا سنگین میششه و اگر شبکه کوچیکی داری مشکلی نیست ! چون یادن نره نرم افزار هست و فشار زیاد میاره !
    خوب activate و Dynamic جزو رول های Headers قرار میگیرند که زیر مجموعه رول action هستند که خود رول action به صورت دیفالت و معمول 5 تا option داره به اسم های alert, log, pass, activate, and dynamic.
    حالا شما میتونید از همه آنها استفاده بکنی
    تو زیر کاربردشون رو می نویسم :

    1. alert - generate an alert using the selected alert method, and then log the packet
    2. log - log the packet
    3. pass - ignore the packet
    4. activate - alert and then turn on another dynamic rule
    5. dynamic - remain idle until activated by an activate rule , then act as a log rule
    6. drop - block and log the packet
    7. reject - block the packet, log it, and then send a TCP reset if the protocol is TCP or an ICMP port unreachable
    message if the protocol is UDP.
    8. sdrop - block the packet but do not log it.
    اگر بخوای لاگ بگیری که یه قضیه دیگست اما اگر بخوای پکت که بابه میلت نیست رو Drop یا بفرستی جای به نظر من در حالت و مد inline Mode قرارش بده که اونم به شکل Drop,Rejeact,sdrop هستش که توضیحشو بالا نوشتم.
    اگر فقط tcpdump میکنی از این استفاده کن :
    کد PHP:
    [LEFT]ruletype suspicious
    {
    type log
    output log_tcpdump
    suspicious.log
    }[/LEFT
    اینم برای Syslog and Mysql L
    کد PHP:
    [LEFT]ruletype redalert
    {
    type alert
    output alert_syslog
    LOG_AUTH LOG_ALERT
    output database
    logmysqluser=snort dbname=snort host=localhost
    }[/LEFT

    به این sample ها خوب نگاه کن :
    کد PHP:
    [LEFT]
    alert tcp !192.168.1.0/24 any -> 192.168.1.0/24 111 \
    (
    content:"|00 01 86 a5|"msg:"external mountd access";)

    alert tcp ![192.168.1.0/24,10.1.1.0/24any -> \
    [
    192.168.1.0/24,10.1.1.0/24111 (content:"|00 01 86 a5|"; \
    msg:"external mountd access";)[/LEFT
    برای چک کردن فلگ و محتوا میتونی از نوع رول Options استفاده کنی که مثالش رو تو زیر برات گذاشتم و بر اسای هدف خودت مثال رو ادیت کن :

    کد PHP:
    [LEFT]activate tcp !$HOME_NET any -> $HOME_NET 143 (flags:PA; \
    content:"|E8C0FFFFFF|/bin"activates:1; \
    msg:"IMAP buffer overflow!";)
    dynamic tcp !$HOME_NET any -> $HOME_NET 143 (activated_by:1count:50;)[/LEFT
    خوب برای اینکه گفتی تعداد پکت بر اسای زمان و اینکه به قول خودت از پکت UDP از زمان کمتر از 100 ثانیه و از مبدا رسیده بود لاگ کنه!
    برای این کارت میتونی از فرمت ttl استفاده کنی و هم اینکه از Filter_detection
    برای filter_detection تو میتونی نعداد پکت ها را شمارش کنی و بر اساس زمان که خودت تو رول تعریف می کنی بگی که لاگ کنه یا پکت را Drop کنه . جالبه که برای آی پی مبدا و مقصد می تونی استفاده کنی
    مثالی که من گذاشتم برای tcp هست و drop هم میکنه ! حالا خودت می تونی بر اساس هدفت اون رو تغیرش بدی :
    کد PHP:
    [LEFT]
    drop tcp 10.1.2.100 any 10.1.1.100 22 ( \
    msg:"SSH Brute Force Attempt";
    flow:established,to_server; \
    content:"SSH"nocaseoffset:0depth:4; \
    detection_filter:track by_srccount 30seconds 60; \
    sid:1000001rev:1;)[/LEFT
    ولی توجه کن که مقادی count و secons نباید 0 باشن .

    ولی در کل سعی کن از مستندات خود شرکتشون استفاده کنی چون تکمیل نوشتن .
    www.Ragvel.com

    www.Ahon.ir

    Comment


    • #3
      مرسی از وقتی که گذاشتی فریاد جان. در واقع راه اصلی که منو به جواب رسوند preprocessor ها در اسنورت بودن . این فصل کتاب قضیه رو کاملا واسم روشن کرد . مثالا اگر در مثال هاش دقت کنی واسه teardrop که گفتم ، اومده از preprocessor به اسم Frag2 استفاده کرده . هر چند که من چک کردم ، تو نسخه جدید اسنورت ، نسخه جدید این preprocessor شده Frag3 .
      همچنین این preprocessor به اسم Flow فک کنم چیزی باشه که به دردم بخوره .
      بازم ممنون .
      پ . ن : اون OSPF سیسکو رو هم دستت نگه ندار بده به ما ثواب داره :D
      Asiral....

      Comment


      • #4
        آره بحث که گفتی خوبه و به جوای دقیق می رسی و از کتابی که لینک دادی خوبه و بدون نگاه کردن آدم تضمین میده چون برای انتشارات اریلی هست :دی
        همونطور که گفتم به نظرم از مستندات خودشون استفاده کنی بهتره بخصوص مستنی که همراه برنامه میزان به اسم Snort Manual
        تا جای که یادم باشه به نظرم مجله امنیتی snoop هم چند سال پیش امیر بود یا عادل در مورد snort گفته بود .

        اگر هم سوالی یا مشکلی داشتی همینجا بگو که با هم یا با دوستان حلش کنیم .


        برای OSPF هم من اولش یک فازر نوشتم با libnet لینوکس و بعد از اتچ کردن کرنل Cisco IOS اون رو فاز می کردم اما بعدش از یه جای مجبور به دزدی شدم و سورس بعضی از پروتکل های سیسکو Leak شده بود و در عرض 1 روز جمع شد در سال 2007 ، دیدم که یه جا داره و پرایویت گذاشته و منم مجبور به دزدی شدم .
        بسیار حجمش زیاده و با سی هستش و میتونم بگم که 60% سورس با لینوکسی که برای جونیپر و میکروتیک و سایر استفاده میشه یکیه اما خیلی جاهاش مخصوص سیسکو و بخصوص جاهای که باعث امنیت میشه چون شرط گذاشتن .

        بهر حال تا حدودی از سورس رو آنالیز کردم و source code review and Code Auding کردو و با استفاده از روش های Threat Modeling باعث شد که در ospf lsa یه باگ بده که memory Corruption هست که باید اکسپلویت مبشه و میشه اما فعالا که به صورت poc هست میتونی ریموت هر روتر را دیداس بشه ! توی gns3 خیلی IOS هارو تست کردم و شد اما روی all version نمیدونم . برای اکسپلویت هم باید یه Protection به اسم Cheack Heaps رو بایپس بشه و یکی دیگه به اسم Watch Dog Timer که یکیشون بایپس شده و دومی مونده که اونم میشه اما خوب هم سرم شلوغه هم گشادی و تنگی هم باعثه :دی

        سورسش هم خیلیش مونده چک کنم و مطمئنم توی BGP و RIP , و چیزای دیگه باگ میده .

        به نظرت ارزش پابلیک داره ؟ :دی
        تو باشی می کنی ؟ یا می فروشی ؟ نهههه
        www.Ragvel.com

        www.Ahon.ir

        Comment


        • #5
          عالیه . تست های خوبی انجام دادی . اگه سخت افزار داشتی که دیگه عالی تر هم میشد. چون gns3 (ع) که خودت میدونی همین جوریش کرش میکنه و اطمینان زیادی بهش نیست . خب ، واسه اینکه این تاپیک هم از موضوع خودش خارج نشه ، به زودی یه تاپیک جدید باز میکنم و راجع به OSPF attack صحبت میکنم . اونجا منتظرت هستم .
          ممنون . زحمت کشیدی .
          Asiral....

          Comment


          • #6
            سخت افزار هم برای خودم خریدم . یکیشون یه روتر 1941 هست اما خوب من چون با IOS کار می کنم توی gns3 میشه slot ور رفت و یه تست کوچیک کرد . چون من کرنل سیستم عامل رو دیباگ می کنم .
            اما سخت افزار برای وقتیه که بخوای زیر بار ببری نه آسیب پذیری .
            برای تاپیک جدید هم در خدمتم و دوست دارم بحث های فنی بشه اما نه بدون کل کل و با مستندات کافی !

            در خدمتم
            www.Ragvel.com

            www.Ahon.ir

            Comment

            Working...
            X