Logo

רד-בורד: ארכיון

ראשי > אבטחת מידע > עריכת ICMP packets, הכיצד?

01/12/2006 13:56:42 NexTos
אהלן חברה =]
רציתי לדעת איך למעשה ניתן לקודד פאקטי ICMP למשל כדי לשנות את כתובת המקור שלי או לגרום לשליחת syn במקום ackבתהליך ה- three-way handshake?

בעיקרון אני מנסה להבין את הדרך הטכנית שבה מבצעים התקפות DoS (ואני יודע שיש המון סוגים).
נתקלתי בהמון מאמרים על הסוגים והתאוריה אבל אף לא אחת דיברה על הדרך בתאכלס...

מקווה שתוכלו לעזור לי, הכל למטרות למידה ולא יותר מיזה.
תודה
06/12/2006 20:28:22 Trancer
NexTos אתה מדבר על שני דברים נפרדים.
ICMP או internet control message protocol פועל בשכבת network משמש בגדול כדי לקבוע עם מערכת מרוחקת "חיה" (מחוברת).
זה בעצם מה שקורה כשאתה עושה ping, למרות שיש הרבה פיירולים שמוגדרים לא לענות לך על בקשות ICMP וזה יכול להיות מטעה.

בקשר ל- 3way handshake, זה מה שקורה ביצירת קשר בין שתי מערכות באמצעות TCP, שפועל בשכבת התעבורה (transport).

מתקפות ה-DoS הנפוצות ביותר על גבי שתי הפרוטוקולים האלו (או לפחות היו נפוצות..) הן smurf attack באמצעות icmp ו-syn flood באמצעות tcp.

מידע נוסף על ICMP:
http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol
http://tools.ietf.org/html/rfc792

TCP:
http://en.wikipedia.org/wiki/Transmission_Control_Protocol
http://www.ietf.org/rfc/rfc793.txt

עכשיו אחרי שזה ברור יותר תחדד את השאלה שלך
08/12/2006 00:04:19 MasterBlaster
בגדול אתה מדבר על סוג של תוכנה שנקראת Packet Foreger. בהנחה שיש לך מערכת GNU/Linux אז אתה יכול להשתמש בתוכנה הבאה: http://gspoof.sourceforge.net/

אם אתה יודע קצת Perl, אז אתה יכול לכתוב בקלות תוכנה שכזאת בעצמך, וזאת בעזרת המודול Net::RawIP (http://search.cpan.org/~skolychev/Net-RawIP-0.2/RawIP.pm).

בהצלחה.

[ההודעה נערכה על-ידי MasterBlaster ב-08/12/2006 00:04:51]
08/12/2006 19:35:15 NexTos
טראנסר לא דיברתי על שני דברים שונים, פשוט ניסתי להסביר את מה שאני רוצה לעשות על ידי נתינת דוגמאות שונות, לא אמרתי שהם אותה התקפה או שהם משתמשים באותו פרוטוקול.

מאסטר בלאסטר תודה רבה זה מה שחיפשתי.
ניסתי "לגגל" אחרי תוכנת Packet Foreger כפי שציינת שעובדת בסביבת ווינדוס (אך ללא הצלחה), בכל מקרה מה שרציתי לדעת זה איך אני בונה כזה דבר בעצמי ומה שהבאת לי בפרל נהדר (חוץ מהעובדה שאני לא יודע פרל חח).
השאלה אם מישהו מכיר דבר דומה ל-c שארפ?

תודה רבה לשניכם
08/12/2006 20:24:44 MasterBlaster
C# אני יודע רק ברמה של בית-ספר, ככה שאני לא יכול לעזור לך הרבה. אם אתה בכל זאת מוכן ללכת על האופציה של Perl, תנסה את הקוד הבא:

קוד:#!/usr/bin/perl

##### [ Required Modules ] #####
use strict;
use warnings;
use Getopt::Long;
use Net::RawIP;

##### [ Main Script ] #####
my %options;
GetOptions ("source=s" => \$options{source},
"dest=s" => \$options{dest},
"sport=i" => \$options{sport},
"dport=i" => \$options{dport},
"syn" => \$options{syn});
$options{syn} ||= 0;
$packet = Net::RawIP -> new;
$packet -> set ({ip => {saddr => $options{source},daddr => $options{dest},
tcp => => {source => $options{sport},dest => $options{dport},
psh => 1,syn => $options{syn}}};
$packet -> send;
print "Packet built and sent successfuly...\n";

את התוכנית תצטרך להריץ משורת הפקודה באופן הבא:

קוד:perl <program>.pl --source=<source-ip> --dest=<destination-ip> --sport=<source-port-number> --dport=<dest-port-number> --syn(optional)

בשביל להריץ את הקוד תזדקק למפרש של Perl, אותו אתה יכול להוריד מ-http://www.activestate.com.

ד"א - התוכנית הקטנה שכתבתי למעלה עובדת רק עם TCP. במידה ואתה רוצה לשלוח חבילות UDP תצטרך לערוך את הקוד. עוד דבר ששכחתי לכתוב זה שבגלל שאני עכשיו נמצא על ה-Windows (וב-Windows אצלי Perl לא מותקנת) אין לי שום דרך לבדוק אם מה שכתבתי בכלל עובד.

בכל מקרה - בהצלחה.[ההודעה נערכה על-ידי MasterBlaster ב-08/12/2006 20:25:15]
08/12/2006 22:00:17 NexTos
MasterBlaster, תודה רבה על המאמץ וההשקעה, אני יבדוק את הקוד בקרוב =]

רק שאלה קטנה מה התפקיד של הפרמטר שאני מכניס במשתנה syn בתוכנית שכתבת?
09/12/2006 21:36:18 MasterBlaster
ציטוט:MasterBlaster, תודה רבה על המאמץ וההשקעה, אני יבדוק את הקוד בקרוב =]

רק שאלה קטנה מה התפקיד של הפרמטר שאני מכניס במשתנה syn בתוכנית שכתבת?
זה ישלח לך חבילת TCP עם הדגל syn בתוכה.[ההודעה נערכה על-ידי MasterBlaster ב-09/12/2006 21:36:30]
עמודים: 1