التواصل المباشر مع الادارة والاعضاء القدامى من خلال قناة التلغرام



العودة   :: vBspiders Professional Network :: > [ ::. قـسم الأختراق المتقدم .:: Advanced Hacking Section .:: ] > Buffer OverFlow

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
قديم 05-06-2010, 03:25 PM   رقم المشاركة : 1 (permalink)
معلومات العضو
 
الصورة الرمزية Mr.viktoor
 

 

 
إحصائية العضو






Mr.viktoor غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
Mr.viktoor is on a distinguished road

Red face إكتشاف و تحليل الثغرات : فحص السورس و الهندسة العكسية.


السلام عليكم و رحمة الله

سنتكلم عن موضوع بسيط حول إكتشاف ثغرات البرامج بإستخدام طريقة فحص السورس و الهندسة العكسية لإيجاد الخطأ البرمجي.

لما نريد أن نفحص برنامج من الثغرات فأول شيء لازم نعرف خصائص البرنامج:

- نوع البرنامج.
- وظيفته.
- مفتوح أم مغلق المصدر.
- تحديد مدخلات البرنامج (user inputs) مثلا : عملية login في سيرفير FTP.

1- إكتشاف و تحليل الثغرة بفحص السورس:

سنفترض أن البرنامج مفتوح المصدر.

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

لهذا تم توفير أدوات تقوم بعمل فحص أوتوماتيكي للدوال المصابة و المستعملة بطريقة غير آمنة.

ملاحظة: لا تعتبر هذه الأدوات فعالة 100% لأنها تعتمد على البحث عن الدوال المصابة و الطرق المعروفة للحصول على user inputs (recv,argv…)l

لأن من الممكن أن نجد كود يحتوي على دوال خاصة بالبرنامج و طرق مختلفة للحصول على البيانات من المستخدم و لهذا فالفحص اليدوي ينفع في هذه الحالات.

من بين هذه الأدوات RATS يدعم فحص عدة لغات C,C++,php,ruby,python,perl… بإستخدام قواعد بيانات xml تحتوي على دوال غير محمية.

الآن لنجرب السكريبت على برنامج مصاب ( الكود مأخوذ من أحدى مقالات SecurityCompass).

البرنامج عبارة عن سيرفير يتنصت على البورت 200 و يستقبل بيانات من client

اقتباس
// vulnerable server.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "winsock.h"
#include "windows.h"

//load windows socket
#pragma comment(lib, "wsock32.lib")

//Define Return Messages
#define SS_ERROR 1
#define SS_OK 0

void pr( char *str)
{
char buf[500]=" ";
strcpy(buf,str);
}
void sError(char *str)
{
printf("Error %s",str);
WSACleanup();
}

int _tmain(int argc, _TCHAR* argv[])
{
WORD sockVersion;
WSADATA wsaData;

int rVal;
char Message[5000]=" ";
char buf[2000]=" ";

u_short LocalPort;
LocalPort = 200;

//wsock32 initialized for usage
sockVersion = MAKEWORD(1,1);
WSAStartup(sockVersion, &wsaData);

//create server socket
SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0);

if(serverSocket == INVALID_SOCKET)
{
sError("Failed socket()");
return SS_ERROR;
}

SOCKADDR_IN sin;
sin.sin_family = PF_INET;
sin.sin_port = htons(LocalPort);
sin.sin_addr.s_addr = INADDR_ANY;

//bind the socket
rVal = bind(serverSocket, (LPSOCKADDR)&sin, sizeof(sin));
if(rVal == SOCKET_ERROR)
{
sError("Failed bind()");
WSACleanup();
return SS_ERROR;
}

//get socket to listen
rVal = listen(serverSocket, 10);
if(rVal == SOCKET_ERROR)
{
sError("Failed listen()");
WSACleanup();
return SS_ERROR;
}

//wait for a client to connect
SOCKET clientSocket;
clientSocket = accept(serverSocket, NULL, NULL);
if(clientSocket == INVALID_SOCKET)
{
sError("Failed accept()");
WSACleanup();
return SS_ERROR;
}

int bytesRecv = SOCKET_ERROR;
while( bytesRecv == SOCKET_ERROR )
{
//receive the data that is being sent by the client max limit to 5000 bytes.
bytesRecv = recv( clientSocket, Message, 5000, 0 );

if ( bytesRecv == 0 || bytesRecv == WSAECONNRESET )
{
printf( "\nConnection Closed.\n");
break;
}
}

//Pass the data received to the function pr
pr(Message);

//close client socket
closesocket(clientSocket);
//close server socket
closesocket(serverSocket);

WSACleanup();

return SS_OK;
}

بعد تشغيل السكريبت و مشاهدة كيفية عمله نستخدم الأمر التالي:

اقتباس
rats -i -w 1 -d rats-c.xml vulnerable server.cpp

-i : يفحص فقط الدوال التي تقبل مدخلات خارجية (user input)

-w 1: إظهار الدوال التي خطورتها عالية.

1-High, 2-Medium, 3 Low

-d : تحديد نوع القاعدة التي بها الدوال اللازم فحصها في هذه الحالة البرنامج بال c++ نستخدم rats-c.xml

ناتج الفحص كان كالتالي:



نستطيع تقسيم ناتج الفحص إلى قسمين:

1-قسم إظهار المتغيرات ذات الحجم المحدود (fixed size) و التي يمكن أن يكون لها إستخدام غير صحيح فيما بعد (فيض في الذاكرة مثلا).

2-قسم إظهار الدوال المصابة مع توضيح تلميح حول كيفية تجنب حدوث الثغرة.

في مثالنا نلاحظ تحذيرين نبدأ بالثاني و اللذي يتعلق بالدالة recv

اقتباس
recv( clientSocket, Message, 5000, 0 );

الدالة محددة الحد الأعلى لعدد البيانات المستقبلة و العدد هو 5000 نفس حجم المتغير Message.

لكن التحذير يقول أنه يجب عمل تحقيق آخر في حالة ما إذا تم إستخدام نفس المتغير خلال عملية أخرى و هو الحال الذي سنراه بالنسبة للدالة strcpy الموجودة في الدالة

اقتباس
void pr( char *str)

فبعد إستقبال بيانات من الclient الموجودة في المتغير Message عن طريق دالة recv سيتم إستدعاء الدالة pr(Message)l الparameter هو Message.
الآن داخل دالة pr()

اقتباس
void pr( char *str)
{
char buf[500]=" ";
strcpy(buf,str);
}

الخطأ واضح هنا فالدالة تعمل نسخ للبيانات من المتغير str= Message ذات حجم 5000إلى المتغير buf ذات الحجم 500 و بذلك نستطيع إحداث فيض في الذاكرة و التحكم في سير البرنامج.

2- إكتشاف و تحليل الثغرة بإستخدام الهندسة العكسية :

نفترض الآن أننا لا نملك سورس البرنامج في هذه الحالة سنلجأ إما إلى fuzzing أو reverse engineering

سنتكلم عن الخيار الثاني.

لعمل ذلك سنستخدم برنامج IDA.

ميزة هذا disassembler هو أنه يستطيع إستخراج الدوال الخاصة بالبرنامج حتى أسماؤها و الparameters الخاصة بها.
بالإضافة إلى العديد من الخصائص التي تميز هذا البرنامج.



لنفحص الآن كود دالة pr()



نلاحظ أن البرنامج إستطاع تحديد حجم المتغير buf 500 bytes.

-القسم ما قبل par1 :هو عبارة عن prologue الدالة يعني تهيئة المكدس و حفظ المسجل esp و ebp… بالإضافة إلى وضع الcanary(******)l هذا لأن عملية ترجمة البرنامج كانت بإضافة GS Flag.

-Part1:

هنا تتم تهيئة المتغير buf لملأ محتواه عن طريق دالة memset

كما نعلم دالة memset بها 3 parameters

اقتباس
void * memset ( void * ptr, int value, size_t num );

1)*ptr : هو مؤشر نحو قسم الذاكرة الذي نريد ملأه في مثالنا هوbuf

اقتباس
lea eax, [ebp+buf+2]
push eax

2) value : القمية التي نريد وضعها في الذاكرة في المثال 0 (قيمة بدائية).

اقتباس
push 0

3)num : و هو عدد البيتات التي ستحمل قيمة value في المثال 500

اقتباس
push 1F2H

-Part2:

الآن بعد أن أصبح buf جاهزا لتلقي التسونامي سيتم إستدعاء الدالة strcpy

اقتباس
char * strcpy(char* destination, const char* source);

نرى فيها 2 parameters:

1-Destination: و سيكون buf

اقتباس
lea ecx, [ebp+buf]
push ecx

2-Source : و سيكون str(Message)l

اقتباس
lea eax, [ebp+str]
push eax

بعد أن يتم إستدعاء دالة strcpy فإنها ستنسخ المتغير بدون عمل تحقق من الحجم مما سيتسبب في كتابة عنوان العودة المحفوظ في المكدس و عند عمل ret يتغير eip بقيمة من قيم str

أظن أن بعد إكتشافنا للثغرة و بعد هذا التحليل البسيط نكون قد أنهينا العملية


المصـــدر


Y;jaht , jpgdg hgeyvhj : tpw hgs,vs hgik]sm hgu;sdm>

التوقيع

:yes:

 

   

رد مع اقتباس
قديم 05-06-2010, 03:53 PM   رقم المشاركة : 2 (permalink)
معلومات العضو
Hαcĸer'ѕ Kιɴɢ
:: Interactive Developer ::
 
الصورة الرمزية Hαcĸer'ѕ Kιɴɢ
 

 

 
إحصائية العضو








Hαcĸer'ѕ Kιɴɢ غير متواجد حالياً

إرسال رسالة عبر MSN إلى Hαcĸer'ѕ Kιɴɢ

 

 

إحصائية الترشيح

عدد النقاط : 10
Hαcĸer'ѕ Kιɴɢ is on a distinguished road

افتراضي


thanks

التوقيع

** إن مرت الايام ولم تروني فهذه مشاركاتي فـتذكروني

وان غبت ولم تجدوني اكون وقتها بحاجه للدعاء فادعولي **

 

   

رد مع اقتباس
قديم 05-06-2010, 03:58 PM   رقم المشاركة : 3 (permalink)
معلومات العضو
 
الصورة الرمزية DaRk DrEaM
 

 

 
إحصائية العضو






DaRk DrEaM غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
DaRk DrEaM is on a distinguished road

افتراضي


مشكوووووووووووووووووووووووووووور يا غالي

   

رد مع اقتباس
قديم 05-06-2010, 07:54 PM   رقم المشاركة : 4 (permalink)
معلومات العضو
 
الصورة الرمزية Mr.viktoor
 

 

 
إحصائية العضو






Mr.viktoor غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
Mr.viktoor is on a distinguished road

افتراضي


منورين موضوعي

التوقيع

:yes:

 

   

رد مع اقتباس
قديم 05-20-2010, 12:04 AM   رقم المشاركة : 5 (permalink)
معلومات العضو
 
الصورة الرمزية SnaKe-Dz
 

 

 
إحصائية العضو







SnaKe-Dz غير متواجد حالياً

إرسال رسالة عبر MSN إلى SnaKe-Dz إرسال رسالة عبر Skype إلى SnaKe-Dz

 

 

إحصائية الترشيح

عدد النقاط : 10
SnaKe-Dz is on a distinguished road

افتراضي


بارك الله بك

تحياتي

التوقيع

smilies10
لا تأسفن على غدر الزمان لطالما رقصت على جثث الأسود كلاب لا تحسبن
برقصها تعلو على أسيادها فتبقى الأسود أسود و الكلاب كلاب


http://img103.herosh.com/2010/05/14/408061784.png

[gdwl]karimolove@hotmail.com[/gdwl]

[align=center][/align]
الايميل ليس للطلبات من فضلكم
طلب اخترقلي وغيرها = ديليت


smilies17

 

   

رد مع اقتباس
قديم 05-20-2010, 02:03 PM   رقم المشاركة : 6 (permalink)
معلومات العضو
BaRBICaN
HeaD FuckiN MachinE
 
الصورة الرمزية BaRBICaN
 

 

 
إحصائية العضو








BaRBICaN غير متواجد حالياً

إرسال رسالة عبر MSN إلى BaRBICaN

 

 

إحصائية الترشيح

عدد النقاط : 10
BaRBICaN is on a distinguished road

افتراضي


[align=center]مشكور ياغالي ... واصل ابداعك ... تحياتي[/align]

التوقيع

[align=center]http://www8.0zz0.com/2010/04/19/07/833870449.gif
http://www8.0zz0.com/2010/04/19/07/143036292.gif
http://www8.0zz0.com/2010/05/17/00/227469758.gif[/align]



l||l|lllll|lll||ll||lll
°¹°¹¹²³ °¹²¹³¹³


MaDe IN Vb$PIdErS

 

   

رد مع اقتباس
قديم 06-08-2010, 01:16 PM   رقم المشاركة : 7 (permalink)
معلومات العضو
 
إحصائية العضو






i'm-not-hacker غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
i'm-not-hacker is on a distinguished road

افتراضي


thnX

   

رد مع اقتباس
قديم 04-28-2011, 12:20 AM   رقم المشاركة : 8 (permalink)
معلومات العضو
 
الصورة الرمزية hank00sh
 

 

 
إحصائية العضو








hank00sh غير متواجد حالياً

إرسال رسالة عبر MSN إلى hank00sh

 

 

إحصائية الترشيح

عدد النقاط : 11
hank00sh is on a distinguished road

افتراضي


بـــصراحه درســ جــدأ جـــباااار

تـــابع وعطــينا جديدك يا مــذهل

تحــياتي . .

التوقيع

لا اله الا الله محمد رسول الله استغفر الله واتوب اليه

استغفر الله

استغفر الله

استغفر الله

HaNkOoSh HaCkEr

 

   

رد مع اقتباس
قديم 04-29-2011, 12:43 AM   رقم المشاركة : 9 (permalink)
معلومات العضو
 
إحصائية العضو






الخديوى غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
الخديوى is on a distinguished road

افتراضي


ممتازززززززززززززززز

   

رد مع اقتباس
قديم 06-04-2011, 08:49 PM   رقم المشاركة : 10 (permalink)
معلومات العضو
neo-m
Dark magician
 
الصورة الرمزية neo-m
 

 

 
إحصائية العضو







neo-m غير متواجد حالياً

إرسال رسالة عبر MSN إلى neo-m

 

 

إحصائية الترشيح

عدد النقاط : 10
neo-m is on a distinguished road

افتراضي


موضوع رائع

التوقيع


 

   

رد مع اقتباس
قديم 09-23-2013, 02:24 PM   رقم المشاركة : 11 (permalink)
معلومات العضو
 
الصورة الرمزية Farrah_Syria
 

 

 
إحصائية العضو







Farrah_Syria غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
Farrah_Syria is on a distinguished road

افتراضي رد: إكتشاف و تحليل الثغرات : فحص السورس و الهندسة العكسية.


Speical Thanks - Bent Syria

   

رد مع اقتباس
قديم 01-12-2015, 02:16 AM   رقم المشاركة : 12 (permalink)
معلومات العضو
 
الصورة الرمزية moon25
 

 

 
إحصائية العضو






moon25 غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
moon25 is on a distinguished road

افتراضي رد: إكتشاف و تحليل الثغرات : فحص السورس و الهندسة العكسية.


وفقك الله

   

رد مع اقتباس
قديم 01-29-2015, 09:42 AM   رقم المشاركة : 13 (permalink)
معلومات العضو
 
إحصائية العضو







InJuries Yemen غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
InJuries Yemen is on a distinguished road

افتراضي رد: إكتشاف و تحليل الثغرات : فحص السورس و الهندسة العكسية.


ششششكرا أخوي ما قصصصرت

   

رد مع اقتباس
قديم 02-09-2015, 03:10 AM   رقم المشاركة : 14 (permalink)
معلومات العضو
 
الصورة الرمزية rhofex
 

 

 
إحصائية العضو






rhofex غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
rhofex is on a distinguished road

افتراضي رد: إكتشاف و تحليل الثغرات : فحص السورس و الهندسة العكسية.


thanks broo

   

رد مع اقتباس
قديم 04-13-2015, 01:46 AM   رقم المشاركة : 15 (permalink)
معلومات العضو
 
الصورة الرمزية mshadid
 

 

 
إحصائية العضو






mshadid غير متواجد حالياً

 

 

إحصائية الترشيح

عدد النقاط : 10
mshadid is on a distinguished road

افتراضي رد: إكتشاف و تحليل الثغرات : فحص السورس و الهندسة العكسية.


مشكووووووووووووووووووور

   

رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
ما هي الهندسة العكسية وفيما تستخدم BoM_C4 قســم إختــراق الأجهــزة 16 04-13-2010 09:58 PM
أشهر مواقع الهندسة العكسية marciminihacker قســم إختــراق الأجهــزة 1 10-08-2009 07:18 PM


الساعة الآن 11:31 PM


[ vBspiders.Com Network ]

SEO by vBSEO 3.6.0