Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
pig — أداة بناء حزم لينكس. | Kitploit
أدوات/GitHubGitHub/rafael-santiago/pig
التهرب من IDS/IPSأمن الشبكاتاختبار الاختراق
GitHubrafael-santiago/pig

pig

أداة بناء حزم لينكس.

عرض المستودع
47941منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Pig

Pig (والتي يمكن فهمها على أنها Packet intruder generator) هي أداة لصياغة الحزم تعمل على Linux. يمكنك استخدام Pig لاختبار أنظمة IDS/IPS الخاصة بك إلى جانب أشياء أخرى.

يجلب Pig مجموعة من توقيعات الهجوم المعروفة جاهزة للاستخدام ويمكنك توسيع هذه المجموعة بأشياء أكثر تحديدًا وفقًا لمتطلباتك.

حتى الآن، يمكن إنشاء توقيعات IPv4 مع طبقة نقل تعتمد على TCP و UDP و ICMP. يمكنك أيضًا إنشاء توقيعات بناءً على بروتوكول ARP، بالإضافة إلى بناء الحزمة بدءًا من إطار Ethernet الخاص بها.

إذا وصلت إلى هنا من خلال مقالتي في 2600 من عدد SPRING 2016 العدد فاستمر في قراءة أقسام التوثيق التالية لأن هذا Pig الصغير قد تطور منذ ذلك الحين.

كيف استنساخ هذا المستودع؟

الأمر بسيط جدًا:

root@kitploit:~
[email protected]:~/src# git clone https://github.com/rafael-santiago/pig pig
[email protected]:~/src# cd pig
[email protected]:~/src/pig# git submodule update --init

كيف بناؤه؟

تحتاج إلى استخدام Hefesto لبناء pig. بعد اتباع الخطوات لتشغيل Hefesto على نظامك. انتقل إلى الدليل الفرعي pig المسمى src وقم بتشغيل الأمر التالي:

root@kitploit:~
[email protected]:~/src/pig/src# hefesto

بعد هذا الأمر، يجب أن تجد الملف الثنائي pig ضمن المسار src/bin. يمكنك استخدام الملف الثنائي نسبيًا من src/bin أو تثبيته.

إذا كنت تواجه مشاكل في البناء لسبب ما، فيجب عليك محاولة قراءة بعض الملاحظات الموجودة في BUILD.md.

كيف تثبيته؟

للتثبيت، يجب أن تكون داخل الدليل الفرعي src واستدعاء:

root@kitploit:~
[email protected]:~/src/pig/src# hefesto --install

لإلغاء التثبيت، كونك داخل الدليل الفرعي src يجب عليك استدعاء:

root@kitploit:~
[email protected]:~/src/pig/src# hefesto --uninstall

ملفات pigsty

ملفات Pigsty هي ملفات نصية عادية يمكنك من خلالها تحديد مجموعة من توقيعات الحزم. هناك بناء جملة محدد يجب اتباعه. انظر إلى مثال لملف pigsty:

root@kitploit:~
[ signature   =      "Hello",
  ip.version  =            4,
  ip.ihl      =            5,
  ip.tos      =            0,
  ip.src      = 192.30.70.10,
  ip.dst      =  192.30.70.3,
  ip.protocol =           17,
  udp.dst     =         1008,
  udp.src     =        32000,
  udp.payload =    "Hello!!" ]

بشكل أساسي، يجب أن تكون جميع بيانات التوقيع بين قوسين مربعين: [ ... ].

داخل هذه المنطقة، يتم توفير المعلومة بواسطة المخطط field = data.

إذا كانت لديك بعض الخبرة في شبكات الحاسوب، فبالتأكيد أن غالبية الحقول المدرجة في الجدول 1 لها معنى قوي بالنسبة لك. يجب عليك استخدام هذه الحقول لإنشاء توقيعاتك المستقبلية.

الجدول 1: حقول توقيع pig.

عند إنشاء توقيع، لا تحتاج إلى تحديد جميع البيانات. إذا قمت بتحديد الأجزاء الأكثر صلة فقط من الحزمة، فسيتم ملء الأجزاء المتبقية بقيم افتراضية. يتم دائمًا إعادة حساب المجاميع الاختبارية.

نصيحة: ألقِ نظرة على الدليل الفرعي pigsty. ستجد الكثير من ملفات التوقيع وسترى أنه من السهل جدًا تعريف ملفات جديدة.

تحديد عناوين IP جغرافيًا

نعم، هذا ممكن. لاستخدام هذه الميزة، تحتاج فقط إلى تحديد القيم المدرجة في الجدول 2 في حقول من نوع ip adddress.

الجدول 2: عناوين IP حسب المنطقة الجغرافية.

القيمة المراد استخدامها

تحديد العناوين الخاصة بي

يجب عليك في أي حقل من نوع ip address استخدام user-defined-ip كقيمة. لاحظ أنك تحتاج إلى استخدام خيار سطر الأوامر --targets في هذه الحالة. راجع قسم استخدام pig لمزيد من المعلومات.

المساهمة بإرسال المزيد من توقيعات الحزم

إذا قمت بإنشاء ملفات pigsty التي ترى أنها ذات صلة تتجاوز بيئتك الخاصة، فافتح طلب سحب (pull request) لتضمين هذه الملفات المفيدة هنا. شكرًا لك مقدمًا!

استخدام pig

استخدام Pig بسيط جدًا حيث يلزم توفير أربعة خيارات أساسية وهي:

  • --signatures
  • --gateway
  • --net-mask
  • --lo-iface

هل تريد معرفة المزيد عن كل خيار، هاه؟... إذن هيا بنا:

  • الخيار --signatures يستقبل قائمة بمسارات الملفات إلى ملفات pigsty.
  • الخيار --gateway هو المكان الذي تحدده لعنوان البوابة. كن على علم بأن pig يقوم بإنشاء أو على الأقل محاولة إنشاء إطارات الإيثرنت أيضًا. ولهذا، فإن عنوان البوابة مهم جدًا لتكوين بيانات الطبقة 1 بشكل صحيح.
  • الخيار --net-mask يتعلق بقضايا التوجيه ويجب أن يستقبل قناع الشبكة الخاص بك.
  • الخيار --lo-iface هو المكان الذي يجب أن تخبر فيه باسم واجهة الشبكة المحلية التي ستستخدمها "لتصريف" الحزم المُنشأة.
  • الخيار --no-gateway يشير إلى أنه لن يتم إرسال أي حزمة خارج الشبكة.

بافتراض أننا نريد توليد حركة مرور تعتمد على DDos:

root@kitploit:~
[email protected]:~# pig --signatures=pigsty/ddos.pigsty\
> --gateway=10.0.2.2\
> --net-mask=255.255.255.0 --lo-iface=eth0

الآن نريد العبث بكل شيء:

root@kitploit:~
[email protected]:~# pig --signatures=pigsty/ddos.pigsty,pigsty/attackresponses.pigsty,\
> pigsty/badtraffic.pigsty,pigsty/backdoors.pigsty\
> --gateway=10.0.2.2 --net-mask=255.255.255.0 --lo-iface=eth0

خيارات إضافية

تحديد مهلات زمنية بين إرسال التوقيعات

لذلك استخدم الخيار --timeout=<millisecs>

كبت الصدى

استخدم الخيار --no-echo.

تحديد الأهداف

استخدم الخيار --targets. يمكنك تحديد قائمة بناءً على عناوين IP محددة، وأقنعة IP، و CIDRs.

انظر هذا:

root@kitploit:~
[email protected]:~# pig --signatures=pigsty/local-mess.pigsty\
> --targets=192.30.70.3,192.30.70.*,192.30.70.0/9\
> --gateway=10.0.2.2\
> --net-mask=255.255.255.0\
> --lo-iface=eth0

عدم استخدام البوابة

هذا مفيد عندما لا ترسل التوقيعات المحملة بيانات خارج الشبكة الحالية. لتحديد ذلك، تحتاج إلى استخدام الخيار --no-gateway. عند استخدام الخيار --no-gateway، لا تحتاج إلى تحديد عنوان البوابة لأن الحزم لن تتدفق خارج القطاع الحالي. ونتيجة لذلك، يصبح إعلام قناع الشبكة غير ذي صلة أيضًا.

على سبيل المثال:

root@kitploit:~
[email protected]:~# pig --signatures=pigsty/local_traffic.pigsty --no-gateway --lo-iface=eth2

في المثال أعلاه، لن يكون إطار الإيثرنت مسؤولية pig بعد الآن. لهذا السبب، لن يشتكي pig من غياب خيار --gateway و --net-mask.

الخيار --no-gateway مفيد جدًا في الحالات التي تحتاج فيها إلى توليد حركة مرور ARP. ألقِ نظرة على هذا المستند الآخر الذي يشرح كيفية تنفيذ انتحال ARP باستخدام pig.

إرسال توقيع واحد فقط والعودة

ربما تحتاج إلى إرسال توقيع واحد فقط ثم العودة للمتصل للتحقق مما حدث بعد ذلك. هذا النوع من المتطلبات شائع عند استخدام هذا التطبيق كدعم لـ اختبارات النظام أو اختبارات الوحدة. لذلك، إذا كنت بحاجة إلى القيام بذلك، فيجب عليك محاولة استخدام الخيار --single-test:

root@kitploit:~
[email protected]:~# pig --signature=pigsty/syn-scan.pigsty --targets=127.0.0.1 --single-test\
> --gateway=10.0.2.2 --net-mask=255.255.255.0 --lo-iface=eth0

بعد تشغيل هذا الأمر، سيختار pig توقيعًا واحدًا فقط من ملف syn-scan.pigsty ويحاول إرساله ثم يخرج. في حالة حدوث خطأ أثناء العملية، سيخرج pig برمز خروج يساوي 1، وإلا سيخرج pig برمز خروج يساوي 0.

تحديد وضع التنقل عبر pigsty

وضع التشغيل الأساسي لـ pig هو عبارة عن حلقة لا نهائية تقذف أطنانًا من الحزم إلى الشبكة مع احترام مهلة زمنية محددة مسبقًا.

يمكنك تحديد كيفية تنقل pig بين الحزم المحملة لإرسالها باستخدام الخيار --loop=<mode>. حتى الآن، هناك وضعان: random (الوضع الافتراضي) و sequential.

الوضع sequential سيعيد تكرار التوقيعات عندما يصل إلى نهاية قائمة توقيعات الحزم المحملة.

المهام الفرعية

المهام الفرعية هي مهام صغيرة مفيدة تتعلق بصياغة الحزم، وهي مدمجة في pig لمساعدتك في جلسة الصياغة الخاصة بك. يمكن الوصول إلى هذه المهام باستخدام الخيار --sub-task=<task-name>.

نظرًا لكونها عمليًا برامج فرعية، فإن للمهام الفرعية خصائصها الخاصة، ولهذا السبب تتبع التفاصيل الخاصة بها في دليلها الخاص. ألقِ نظرة على الجدول 3 لمتابعتها.

الجدول 3: المهام الفرعية لـ pig.

حيل Pig

من إطار Ethernet إلى الطبقة العليا...

حتى الآن، يمكنك بناء حزم تعتمد على IPv4 مع UDP أو TCP في طبقة النقل الخاصة بها. يمكنك أيضًا بناء حزم ARP.

ومع ذلك، لا يزال بإمكانك بناء الحزم بدءًا من إطار Ethernet. الشيء الجميل في ذلك هو إمكانية بناء أي شيء فوق حمولة Ethernet افتراضيًا.

على سبيل المثال، على الرغم من أن pig حتى الآن لا يقدم دعمًا لبناء IPv6 المطبوخ، إلا أنه لا يزال بإمكانك بناؤه باستخدام pigsty خام يعتمد على Ethernet. انظر:

root@kitploit:~
[ eth.hwdst = "5C:AC:4C:AA:F5:B5",
  eth.hwsrc = "08:95:2A:AD:D6:4F",
  eth.type = 0x86DD,
  eth.payload = "\x60\x00\x00\x00\x00\x20\x3a\xff\xfe\x80\x00\x00\x00\x00\x00\x00\x0a\x95\x2a\xff\xfe\xad\xd6\x4f\xfe\x80\x00\x00\x00\x00\x00\x00\x55\x51\x00\xc2\x18\x0f\xdb\x46\x88\x00\x32\x01\xe0\x00\x00\x00\xfe\x80\x00\x00\x00\x00\x00\x00\x0a\x95\x2a\xff\xfe\xad\xd6\x4f\x02\x01\x08\x95\x2a\xad\xd6\x4f",
  signature = "IPv6 from Sparta" ]

مع الأخذ في الاعتبار أن تضمين عنواني MAC الوجهة والمصدر داخل "pigsty إيثرنت" اختياري، يمكننا إنجاز المهمة حتى بدون استخدام أي حقل إضافي.

هذا جيد عندما تحتاج إلى اختبار بروتوكولات جديدة على بيئتك من بين أشياء أخرى ممتعة وشاذة. بهذه الطريقة الخام، يمكن أن يظل pig مفيدًا لك.

اختبار pig من البداية

احفظ البيانات التالية كملف "oink.pigsty":

root@kitploit:~
[ signature   =           "oink",
  ip.version  =                4,
  ip.ihl      =                5,
  ip.tos      =                0,
  ip.src      =        127.0.0.1,
  ip.dst      =  user-defined-ip,
  ip.protocol =               17,
  udp.dst     =             1008,
  udp.src     =            32000,
  udp.payload =        "Oink!!\n" ]

على محطة طرفية أخرى tty، شغل netcat في وضع UDP للاستماع على المنفذ 1008:

root@kitploit:~
[email protected]:~# nc -u -l -p 1008

الآن شغل pig باستخدام ملف "oink.pigsty"، مع تحديد الهدف كـ loopback:

root@kitploit:~
[email protected]:~# pig --signatures=oink.pigsty --targets=127.0.0.1\
> --gateway=10.0.2.2 --net-mask=255.255.255.0 --lo-iface=eth0

يجب أن يبدأ netcat في استقبال عدة oinks و... نعم، تهانينا!! أصبح pig قيد التشغيل على نظامك! ;)

حاول تجسس شبكتك للحصول على مزيد من المعلومات حول حزم UDP هذه التي تتدفق عبر واجهاتك...

استمتع!

تنزيل الأداة
الحقليدل علىالبروتوكولنوع البياناتتعريف عينة
signatureاسم التوقيع-سلسلة نصيةsignature = "Udp flood"
eth.hwdstعنوان MAC الوجهة للإيثرنتEthernetMACeth.hwdst = "00:de:ad:be:ef:00"
eth.hwsrcعنوان MAC المصدر للإيثرنتEthernetMACeth.hwsrc = "00:de:ad:be:ef:00"
eth.typeنوع الإيثرEthernetرقمeth.type = 0x0800
eth.payloadحمولة الإيثرنتEthernetسلسلة نصيةeth.payload = "f\x00ob\x04r"
ip.versionإصدار IPIPرقمip.version = 4
ip.ihlطول رأس الإنترنتIPرقمip.ihl = 5
ip.tosنوع الخدمةIPرقمip.tos = 0
ip.tlenالطول الكليIPرقمip.tlen = 20
ip.idمعرف الحزمةIPرقمip.id = 0xbeef
ip.flagsأعلام IPIPرقمip.flags = 4
ip.offsetإزاحة التجزئةIPرقمip.offset = 0
ip.ttlزمن البقاءIPرقمip.ttl = 64
ip.protocolالبروتوكولIPرقمip.protocol = 6
ip.checksumالمجموع الاختباريIPرقمip.checksum = 0
ip.srcعنوان المصدرIPعنوان IPip.src = 192.30.70.3
ip.dstعنوان الوجهةIPعنوان IPip.dst = 192.30.70.3
ip.payloadحمولة IP الخامIPسلسلة نصيةip.payload = "\x01\x02"
tcp.srcمنفذ المصدرTCPرقمtcp.src = 80
tcp.dstمنفذ الوجهةTCPرقمtcp.dst = 21
tcp.seqnoرقم التسلسلTCPرقمtcp.seqno = 10202
tcp.acknoرقم الإقرارTCPرقمtcp.ackno = 10200
tcp.sizeطول TCPTCPرقمtcp.size = 4
tcp.reservحقل احتياطي TCPTCPرقمtcp.reserv = 0
tcp.urgعلم الاستعجال TCPTCPبتtcp.urg = 0
tcp.ackعلم الإقرار TCPTCPبتtcp.ack = 1
tcp.pshعلم الدفع TCPTCPبتtcp.psh = 0
tcp.rstعلم إعادة التعيين TCPTCPبتtcp.rst = 0
tcp.synعلم المزامنة TCPTCPبتtcp.syn = 0
tcp.finعلم النهاية TCPTCPبتtcp.fin = 0
tcp.wsizeحجم نافذة TCPTCPرقمtcp.wsize = 0
tcp.checksumالمجموع الاختباريTCPرقمtcp.checksum = 0
tcp.urgpمؤشر الاستعجالTCPرقمtcp.urgp = 0
tcp.payloadالحمولةTCPسلسلة نصيةtcp.payload = "\x01abc"
udp.srcمنفذ المصدرUDPرقمudp.src = 53
udp.dstمنفذ الوجهةUDPرقمudp.dst = 7
udp.sizeطول UDPUDPرقمudp.size = 8
udp.checksumالمجموع الاختباريUDPرقمudp.checksum = 0
udp.payloadالحمولةUDPرقمudp.payload = "boo!"
icmp.typeنوع ICMPICMPرقمicmp.type = 0
icmp.codeكود ICMPICMPرقمicmp.code = 0
icmp.checksumالمجموع الاختباريICMPرقمicmp.checksum = 0
icmp.payloadالحمولةICMPسلسلة نصيةicmp.payload = "ping!"
arp.hwtypeنوع الأجهزة ARPARPرقمarp.hwtype = 0x1
arp.ptypeنوع البروتوكول ARPARPرقمarp.ptype = 0x0800
arp.hwlenطول الأجهزة ARPARPرقمarp.hwlen = 6
arp.opcodeكود العملية ARPARPرقمarp.opcode = 2
arp.hwsrcعنوان الأجهزة المصدر ARPARPMACarp.hwsrc = "de:ad:be:ef:0:0"
arp.psrcعنوان البروتوكول المصدر ARPARPعنوان IParp.psrc = 192.30.70.3
arp.hwdstعنوان الأجهزة الوجهة ARPARPMACarp.hwdst = "de:ad:be:ef:0:0"
arp.pdstعنوان البروتوكول الوجهة ARPARPعنوان IParp.pdst = 192.30.70.3
يدل على
north-american-ipعناوين IP من أمريكا الشمالية
south-american-ipعناوين IP من أمريكا الجنوبية
asian-ipعناوين IP من آسيا
european-ipعناوين IP من أوروبا
المهمة الفرعيةما الذي تقوم به؟الدليل
pcap-importيستورد حزمة من ملف PCAP إلى ملف pigstycat doc/pcap-import.md
shellينفذ pig في وضع تفاعليcat doc/shell.md