ids , ips

پروژه آزمون ارزیابی نفوذ IDS / IPS – سناریو عملی

Pytbull یک چارچوب تست IDS – IPS انعطاف پذیر مبتنی بر پایتون است که با بیش از ۳۰۰ تست عرضه شده و در ۹ ماژول دسته بندی شده است در حالی که گستره وسیعی از حملات را پوشش می دهد.

clientSideAttacks، testRules، badTraffic، fragmentedPackets، multipleFailedLogins،

evasionTechniques، shellCodes، denialOfService، pcapReplay

IDS , IPS

 

IDS , IPS

شرح

pytbull یک سیستم تشخیص نفوذ و پیشگیری از نفوذ (IDS / IPS) برای تست فرآیند هایی مانند Snort، Suricata و هر IDS / IPS است که یک فایل هشدار ایجاد می کند .

این تکنولوژی می تواند برای تست قابلیت های تشخیص و مسدود کردن IDS / IPS ها ، برای مقایسه IDS / IPS ها ، برای مقایسه تغییرات پیکربندی و برای بررسی و تایید پیکربندی استفاده شود.

برای مطالعه بیشتر می توانید از مقاله پروژه شناسایی ترافیک های مخرب بازدید کنید

این چارچوب با حدود ۳۰۰ تست گروه بندی شده در ۱۱ تست ماژول قابل اجرا است :

Bad Traffic : بسته های سازگار با RFC به سرور ارسال می شوند تا آزمایش کنند که چگونه بسته ها پردازش می شوند.

Brute Force: تست توانایی سرور برای ردیابی حملات خشونت آمیز bruteForce (به عنوان مثال FTP) می باشد که از قوانین سفارشی Snort و Suricata استفاده می کند .

Client Side Attacks : این ماژول با استفاده از شل معکوس برای ارائه به سرور با دستورالعمل برای دانلود فایل های مخرب از راه دور است . این ماژول توانایی IDS / IPS را برای محافظت در برابر حملات سمت سرویس گیرنده آزمایش می کند .

Denial Of Service : تست توانایی IDS / IPS برای محافظت در برابر حملات منع سرویس DoS

Evasion Techniques : برای تکنیک های مختلف گریز از شناسایی استفاده می شود تا بررسی شود که IDS / IPS بتواند آنها را شناسایی کند.

Packets fragmented : بارهای تقسیم شده مختلف به سرور فرستاده می شود تا توانایی خود را برای دوباره سازی آنها و تشخیص حملات تست کند .

Ip Reputation : تست توانایی سرور برای شناسایی ترافیک از سرورهای معتبر .

Normal Usage : بارهای مربوط به استفاده های معمولی .

Pcap Replay : امکان پخش فایل های pcap را می دهد

shellCodes : shell codes های مختلفی را به سرور در port / tcp ارسال می کند تا توانایی سرور را برای تشخیص یا رد کردن شل بسنجد .

test Rules : تست قوانین اساسی ، این حملات باید توسط مجموعه قوانین منتقل شده با IDS / IPS شناسایی شود.

این تست به راحتی قابل تنظیم است و می تواند ماژول های جدید را در آینده ادغام نماید .

اساسا ۵ نوع آزمون وجود دارد :

  1. Socket : سوکت را در یک پورت مشخص باز کنید و بارهای بارگیری شده را به مقصد دور در آن پورت ارسال کنید .
  2. Command : فرمان را به هدف دور با فرمان call() ارسال کنید.
  3. Scapy : با استفاده از نحوه Scapy ، بارهای خاص ایجاد شده را ارسال کنید
  4. حملات سمت سرویس گیرنده – client side attacks : از شل معکوس بر روی هدف دوربینی استفاده کنید و دستورات را برای آن ارسال کنید تا سرور آنها را پردازش کند (معمولا دستورات wget).
  5. pcap replay : امکان پخش ترافیک بر اساس فایل pcap را فراهم می کند.

معماری – Architecture

حالت از راه دور – Remote mode

مد Pytbull gateway ، در این حالت IDS بر روی محدوده پورت (یا port mirroring ) سوئیچ core متصل شده و در حالت پویا پیکربندی شده است. IDS تمام ترافیک را که از طریق کلید اصلی انجام می شود، تحلیل می کند. فایل های مخرب را می توان توسط pytbull یا توسط سرور دانلود کنید که به این حالت ” remote ” گفته می شود .

: pytbull gateway mode

IDS , IPS

حالت محلی – Local mode

در این حالت، فایل ها در client download از pytbull آغاز می شود.

حالت IDS با سرور مورد حمله در DMZ

حالت IDS با سرور مورد حمله در DMZ در این پیکربندی، فایروال شبکه را به سه بخش تقسیم می کند (LAN، WAN، DMA).

IDS بر روی یک محدوده پورت (یا port mirroring ) سوئیچ با رابط آن در حالت پویا پیکربندی شده است. این هر ترافیکی را که به واسط شبکه فایروال ارسال می شود را تجزیه می کند .

  : IDS mode with attacked server in DMZ

IDS , IPS

حالت IPS

حالت IPS در این پیکربندی، فایروال شبکه را به ۳ قسمت تقسیم می کند (LAN، WAN، DMA).

IDS بین pytbull و فایروال متصل است. Pytbull باید فایل های آلوده خود را دانلود کند تا IDS بتواند فایل های مخرب را شناسایی کند.

  : IPS mode

IDS , ips

حالت IPS با سرور مورد حمله در DMZ

  حالت IPS با سرور حمله شده در DMZ در این پیکربندی، فایروال شبکه را به سه بخش تقسیم می کند (LAN، WAN، DMS).

IDS بین pytbull و فایروال متصل است. فایل های مضر باید توسط pytbull به طور مستقیم دانلود شوند تا IDS بتواند آنها را شناسایی کند.

: IPS mode with attacked server in DMZ

ids , ips

نصب و راه اندازی

(Standard installation (client

پیش نیازها

در توزیع لینوکس مبتنی بر دبیان پایتون (۲٫۶٫۵) و وابستگی های زیر  باید نصب شده باشند :

sudo apt-get install python python-scapy python-feedparser python-cherrypy3 $

ابزارهای لازم را نیز نصب کنید (nmap, hping3, nikto, ab, …) . آنها را از منابع یا مخازن می توانید نصب کنید .

sudo apt-get install nmap hping3 nikto tcpreplay apache2-utils $

 

در نهایت، برای تست ماژول bruteForce شما نیاز به ncrack دارید :

 sudo aptitude install build-essential checkinstall libssl-dev libssh-dev $

 wget https://nmap.org/ncrack/dist/ncrack-0.5.tar.gz $

tar -xzf ncrack-0.5.tar.gz $

cd ncrack-0.5 $

configure/. $

make $

sudo make install $

 

Pytbull

از tar.bz2 (نسخه پایدار)

دانلود و فعال کردن pytbull :

 cd /usr/local/src $

wget https://downloads.sourceforge.net/project/pytbull/pytbull-2.0.tar.bz2 $

– bzip2 -cd pytbull- 2.0.tar.bz2 | tar xf $

/sudo mv pytbull/ /opt $

/cd /opt/python $

از  (Mercurial (development release

اگر میخواهید آخرین نسخه توسعه یافته را بدست آورید ، pytbull را از Mercurial نصب کنید. به عنوان یک پیش نیاز، Mercurial را نصب کنید :

sudo apt-get install mercurial $

 

سپس pytbull را به صورت زیر دریافت کنید :

/cd /opt $

 sudo hg clone http://pytbull.hg.sourceforge.net:8000/hgroot/pytbull/pytbull $

 

سرور – server

پیش نیازها

نصب پایتون (۲٫۶٫۵). بر روی لینوکس مبتنی بر دبیان :

sudo apt-get install python $

همچنین باید یک سرور FTP (پورت ۲۱ / TCP) نصب کنید

apache2 (پورت ۸۰ / tcp) و SSH (پورت ۲۲ / tcp) :

sudo apt-get install vsftpd apache2 openssh-server $

 

فایل پیکربندی برای vsftpd در etc/vsftpd.conf/ واقع شده است. توصیه می شود حداقل این ۲ پارامتر را داشته باشید:

Allow anonymous FTP? (Disabled by default)anonymous_enable=NO #

Uncomment this to allow local users to log in.local_enable=YES #

 

pytbull (سرور)

شما می توانید شل معکوس را از سرور / دایرکتوری به سرور که میزبان IDS / IPS است کپی کنید.

sudo ./pytbull -c conf/config.bt5.cfg -t 192.168.1.16 $

فایل پیکربندی – Configuration file

بخش مشتری CLIENT

IDS , IPS

بخش PATHS

ids , ips

بخش ENV

ids , ips

بخش FTP

ids , ips

بخش TIMING

ids , ips

بخش SERVER

ids , ips

بخش تست ها

IDS map

بخش TESTS_PARAMS

ids , ips

استفاده – Usage

اگر ماژول clientSideAttacks را انتخاب کرده اید (برای اطلاعات بیشتر به بخش پیکربندی فایل مراجعه کنید)، باید شل معکوس را روی سرور اجرا کنید. دستور زیر از پورت ۳۴۵۶۷ / tcp استفاده می کند :

pytbull-server.py -p 34567/. $

 

از آنجا که فایل ها در پوشه جاری دانلود می شوند، می توانید یک pdf / directory ایجاد کنید و pytbull را از محل parent شروع کنید :

 mkdir pdf/$ cd pdf/$ ../pytbull-server.py -p 34567 $

 

سپس pytbull (در سمت مشتری) را اجرا کنید . یک مثال برای شروع تست pytbull در برابر ۱۹۲٫۱۶۸٫۱۰۰٫۴۸، و اجرای Snort :

sudo ./pytbull -t 192.168.100.48 $

 

توجه داشته باشید که اگر شما از پارامتر اختیاری -p در قسمت از راه دور استفاده می کنید، لازم است که (config.cfg) پورت مورد استفاده در شل معکوس را تطبیق دهید.

خطاها – Errors

  • SetGen تعریف نشده است

در حالی که در حال اجرای pytbull هستید، اگر خطای زیر را دارید :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

فقط خط زیر را در ابتدای این فایل اضافه کنید:

usr/lib/pymodules/python2.6/scapy/sendrecv.py/ به صورت زیر:

from base_classes import SetGen

استدلال خطا در Nmap

اگر این خطا را دریافت کنید :

Illegal Argument to -P, use -PN, -PO, -PI, -PB, -PE, -PM, -PP, -PA, -PU, -PT,or -PT80 (or whatever number you want for the TCP probe destination port)QUITTING!

 

“-Pn” را با “-PN” در تست Nmap جایگزین کنید . Nmap سینتکس ها را در نسخه های اخیر تغییر داده است.

خطای FTP، ۵۵۰ نتوانست فایل را باز کند

اگر این خطا را در حالی که همه تست ها انجام شده باشد (BASIC CHECKS) را داشته باشید :

ERROR : FTP Error, 550 Failed to open file.Check your configuration (section FTP in config.cfg).Also check privileges on remote host

به این معنی است که pytbull قادر به جمع آوری فایل هشدار نیست با اعتبار مشخص شده در فایل پیکربندی ، بررسی کنید که مسیر فایل هشدار صحیح باشد (قسمت [param” alertsfile , [PATHS” ) و بررسی کنید که کاربر

(قسمت [param” ftpuser , [FTP” ) مجاز به دسترسی به فایل هشدار است.

من توصیه می کنم به صورت دستی این تست ها را با استفاده از Filezilla انجام دهید.

Syntax – تست های خود را بنویسید

خوب، می خواهم به شما کمک کنم با راحتی بتوانید تست های خود را بنویسید :

با استفاده از متغیرهای پیکربندی

برخی از دستورات (sudo، nmap، hping، …) در فایل پیکربندی (config.cfg) مشخص می شوند. شما می توانید آنها را به عنوان متغیرهای محیطی در نظر بگیرید. اگر تست های خود را بنویسید، می تواند به صورت زیر باشد :

{VAR}%

{VAR} نشان دهنده نام متغیر محیطی است که در فایل پیکربندی تعریف شده است.

مثال :

%sudo% %nmap% -sX -p 80 %target%

توجه داشته باشید که syntax های قدیمی هنوز کار می کند :

(‘{self.config.get(‘{SECTION}’, ‘{VAR

 

{SECTION} نام بخش را در فایل پیکربندی نشان می دهد (به عنوان مثال ‘PATHS’)

{VAR} نام متغیر است

بر اساس سوکت :

Syntax  :

] )self.payloads.append

,'{TEST_NAME}’

 ,’socket

,{PORT}

,'{PAYLOAD}’

‘{PATTERN}’

{[

Where :

TEST_NAME: رشته مربوط به نام آزمون. مثال: “آزمون LFI ساده”

PORT: Integer. پورت TCP برای اتصال به. به عنوان مثال: ۲۲ (SSH)

PAYLOAD: Payload برای ارسال. برای مثال:

GET /index.php?page=../../../etc/passwd HTTP/1.1\r\nHost: 127.0.0.1\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041202 Firefox/1.0\r\n\r\n

PATTERN : الگوی تطبیق رشته

مثال :

بر اساس فرمان – command

: Syntax

 

 

 

 

 

 

Where

TEST_NAME: رشته مربوط به نام آزمون.

ARGY COMMAND ARRAY: آرایه ای از دستور و استدلال.

PATTERN : الگوی تطبیق رشته 

مثال :

 

بر اساس Scapy

Syntax

TEST_NAME: رشته شناسایی آزمون

SCAPY_PAYLOAD: رشته ای که نشان دهنده بار Scapy است.

مثال:

sr1(IP(dst=”%s”)/TCP(dport=1433)/”0″*1000)””” % self._target”””

PATTERN : الگوی تطبیق رشته

مثال :

بر اساس PAPP :

: Syntax

Where

TEST_NAME: رشته شناسایی آزمون

PCAP_PATH: راه برای بازبینی pcap

PATTERN: الگوی تطبیق رشته

مثال : 

More : Wiki

تهیه کننده : سید محمد اسماعیلی

 

نوشته های مرتبط

Yersinia

۱۹

دی
همه موضوعات

سناریو ایجاد یک سرور DHCP جعلی و حمله DOS برای تست نفوذ در لایه ۲ شبکه با استفاده از YERSINIA

Yersinia یک ابزار منبع باز شبکه ای است که برای استفاده از برخی نقاط ضعف در پروتکل های مختلف ( حمله DHCP جعلی و حمله DOS و … ) شبکه طراحی شده است و در سیستم عامل کالی لینوکس موجود می باشد . این ابزار ( Yersinia ) یک چارچوب جامع برای تجزیه و تحلیل و آزمایش شبکه […]

Sql Injection

۳۰

آذر
همه موضوعات

مرجع کامل آموزش SQL Injection – فصل ۲

تکنیک های پیشرفته برای شکست دادن مکانیسم های اعتبار سنجی ورودی – SQL injection یا تزریق Sql در تکنیک های پیشرفته آموزش SQL Injection یا تزریق sql برنامه های کاربردی وب از نظر فنی پیچیده تر می شوند. برنامه های کاربردی وب ، از فن آوری های مختلف در زیرساخت های پشتیبانی و محیطی استفاده می کنند[…]