‫‪‬‬

‫ف‪ٟ‬شػت ػ‪ٙ‬ب‪ٚ‬یٗ‬

‫‪‬‬

‫‪ٛٞ‬ن ‪ٔ ٚ‬جبحث ٔشتجظ ثب ‪API Hooking‬‬

‫‪‬‬

‫حٕالت خؼُ دسخ‪ٛ‬اػت دس ػٕت ػش‪ٚ‬س (‪)SSRF‬‬

‫‪‬‬

‫استجبط ثب ‪ Immunity‬ت‪ٛ‬ػظ ‪( Python‬دس ا٘دبْ آ٘بِیض ‪ٟٙٔ ٚ‬ذػی ٔؼى‪ٛ‬ع)‬

‫‪‬‬

‫ٔش‪ٚ‬سی ثش آخشیٗ سفتبس ‪ٞ‬بی ‪ZeroAccess‬‬

‫‪‬‬

‫‪ ٚ BGP Backdoor‬ؿ‪ٛٙ‬د تشافیه دس س‪ٚ‬تش ‪ٞ‬بی ػیؼى‪ٛ‬‬
‫د‪ٚ‬د‪ٚ‬یی (‪)Binary Analysis‬‬

‫‪‬‬

‫ثخؾ پبػخ ٔؼبثم‪ ٝ‬ؿٕبس‪ ٜ‬لجُ ‪ -‬آ٘بِیض‬

‫‪‬‬

‫ثخؾ ٔؼبثم‪ ٝ‬ؿٕبس‪ ٜ‬د‪٘ – ْٚ‬ف‪ٛ‬ر ث‪ ٝ‬ؿجى‪ٞ ٝ‬بی ثیؼیٓ‬

‫(‪)Wireless Hacking‬‬

‫خذا سا ؿبوشیٓ و‪ ٝ‬ت‪ٛ‬ا٘ؼتیٓ ثبس دیٍش دس خذٔت ػضیضاٖ ‪ٚ‬‬

‫ٌش‪٘ ٜٚ‬ـشی‪ ٝ‬أ‪ٙ‬یتی ‪: Offsec‬‬

‫د٘جبَ و‪ٙٙ‬ذٌبٖ ٘ـشی‪ Offsec ٝ‬ثبؿیٓ ‪ ٚ‬دس صٔی‪ٞ ٝٙ‬بی أ‪ٙ‬یت‬

‫‪-‬أیش سػ‪ِٛ‬ی‬

‫دػتٕبی‪ ٝ‬ای ‪ ٚ‬تى‪ٙ‬یه ‪ٞ‬بی ٘ف‪ٛ‬ر ‪ ،‬ثب ٌش‪ٞٚ‬ی ٔتخلق ٘ؼجت ث‪ٝ‬‬

‫‪-‬حٕیذ سضبیی‬

‫اسائ‪ٔ ٝ‬مبالت ثب ػغح ویفی ثبال ‪ٔ ٚ‬غّ‪ٛ‬ثی ‪ٕٞ‬شا‪ ٜ‬ثبؿیٓ‪.‬‬
‫ٔتبػفب٘‪٘ ٝ‬ؼجت ث‪ ٝ‬ػغح پبییٗ ٌشافیىی ٘ـشی‪ ،ٝ‬اص ته ته‬
‫ؿٕب ػضیضاٖ ػزس ٔیخ‪ٛ‬ا‪ٞ‬یٓ‪ ،‬ثذِیُ ای‪ٙ‬ى‪ٚ ٝ٘ ٝ‬لت وبفی ‪ٝ٘ ٚ‬‬
‫أىب٘ی ‪ٚ‬خ‪ٛ‬د داؿت تب اص ٔتخللبٖ دس أ‪ٛ‬س ٌشافیىی اػتفبد‪ٜ‬‬
‫الصْ ؿ‪ٛ‬د‪.‬‬
‫أیذ‪ٚ‬اسیٓ ثت‪ٛ‬ا٘یٓ دس آی‪ٙ‬ذ‪٘ ٜ‬مؾ ث‪ٟ‬تشی دس اسائ‪ٔ ٝ‬غبِت ‪ٚ‬‬

‫)‪(hamid@offsec.ir‬‬

‫ٔحٕذسضب ضٕیشی‬‫‪-‬ػّیشضب چٍی‪ٙ‬ی‬

‫)‪(mohamadreza@offsec.ir‬‬

‫)‪(alireza@offsec.ir‬‬

‫فشدیٗ اِّ‪ٛ‬یشدی ٘ظ٘ذ‬‫ثب تـىش اص ‪:‬‬
‫‪l3l4ck.$c0rpi0n‬‬‫‪ٟٔ-‬ذی سػ‪ِٛ‬ی‬

‫ث‪ٟ‬ج‪ٛ‬د ػغح ٌشافیىی ٘ـشی‪ ٝ‬داؿت‪ ٝ‬ثبؿیٓ‪.‬‬
‫ثب احتشاْ – ٌش‪٘ ٜٚ‬ـشی‪ ٝ‬أ‪ٙ‬یتی ‪Offsec‬‬

‫)‪(amir@offsec.ir‬‬

‫‪-‬‬

‫)‪(fardin@offsec.ir‬‬

‫‪ٛٞ‬ن ‪ٔ ٚ‬جبحث ٔشتجظ ثب ‪API Hooking‬‬

‫حٕیذ سضبیی (‪)hamid@offsec.ir‬‬

‫ٔ‪ٟٙ‬ذػی ٔؼى‪ٛ‬ع وذ‬

‫‪Hooking‬‬

‫دسایٗ ٔمبِ‪ ٝ‬للذ داسیٓ تب دسٔ‪ٛ‬سد ٔجحث ‪ API Hooking‬كحجت و‪ٙ‬یٓ ‪ .‬اِجت‪ ٝ‬ایٗ‬
‫ٔغّت ثشای افشادی ٔی ثبؿذ و‪ ٝ‬آؿ‪ٙ‬بیی لجّی ثب ایٗ ٔتذ ٘ذاس٘ذ ‪ ٚ‬اِجت‪ ٝ‬وٕی ثب‬
‫ٔ‪ٟٙ‬ذػی ٔؼى‪ٛ‬ع وذ‪ٞ‬ب (‪ )RCE‬آؿ‪ٙ‬بیی داس٘ذ ‪.‬‬
‫أب ‪ API Hooking‬چیؼت؟ اٌشثخ‪ٛ‬ا‪ٞ‬یٓ ثذ‪ ٖٚ‬حبؿی‪ٚ ٝ‬وّٕبت پیچیذ‪ ٜ‬تؼشیفی داؿت‪ٝ‬‬
‫ثبؿیٓ ‪ٕٛ٘ Hook،‬دٖ ت‪ٛ‬اثغ ثذیٗ ٔؼ‪ٙ‬ی اػت و‪ ٝ‬دس س‪٘ٚ‬ذ اخشای ت‪ٛ‬اثغ‪ API‬ا٘حشاف‬
‫(‪ )Detours‬ایدبدو‪ٙ‬یٓ ‪ ٚ‬لجُ اص اخشای تبثغ ثف‪ٕٟ‬یٓ و‪ ٝ‬پش‪ٚ‬ػ‪ٛٔ ٝ‬سد ٘ظش دس ػیؼتٓ‬
‫دسحبَ ا٘دبْ چ‪ ٝ‬وبسی اػت ‪.‬‬
‫ثغ‪ٛ‬سٔثبَ ٔیت‪ٛ‬ا٘یٓ دست‪ٛ‬اثغ ٔشث‪ٛ‬ط ث‪ ٝ‬سخیؼتشی‪،‬وبسثبفبیّ‪ٟ‬ب ‪ ... ٚ‬ا٘حشاف ایدبدو‪ٙ‬یٓ‬
‫‪ٚ‬آ٘بِیضی ثش س‪ٚ‬ی س‪٘ٚ‬ذ اخشای ثش٘بٔ‪ٞ ٝ‬ب داؿت‪ ٝ‬ثبؿیٓ‪.‬‬
‫‪Hook‬ثغ‪ٛ‬سوّی دسد‪ ٚ‬دػت‪Ring0 ٚ Ring3ٝ‬لشاس ٔیٍیش٘ذو‪ ٝ‬ثحث ٔب ثش س‪ٚ‬ی ‪Ring3‬‬

‫خ‪ٛ‬ا‪ٞ‬ذ ث‪ٛ‬د اِجت‪ ٝ‬اص دیذ ‪٘ ٚ‬ظش ٔختّف ٔی ت‪ٛ‬اٖ دػت‪ ٝ‬ث‪ٙ‬ذی ٌ‪٘ٛ‬بٌ‪٘ٛ‬ی ا٘دبْ داد‪.‬‬

‫‪Hooking‬‬
‫اٌشثخ‪ٛ‬ا‪ٞ‬یٓ ثش٘بٔ‪ٞ ٝ‬بیی و‪ ٝ‬اص ‪ API Hooking‬اػتفبد‪ٔ ٜ‬یى‪ٙٙ‬ذ سا ٔثبَ ثض٘یٓ ٔیت‪ٛ‬ا٘یٓ ث‪ٞ Sandbox ٝ‬ب ‪ٞ Antivirus ٚ‬ب اؿبس‪ ٜ‬و‪ٙ‬یٓ‪.‬‬
‫أب وبسثشد دیٍش ایٗ س‪ٚ‬ؽ دس ایدبد ثذافضاس‪ٞ‬بػت ‪ .‬ثؼ‪ٛٙ‬اٖ ٔثبَ ٔیت‪ٛ‬ا٘یٓ ثذافضاس‪Flame‬سا ٘بٔججشیٓ و‪ ٝ‬ثب آِ‪ٛ‬د‪ ٜ‬وشدٖ‪Explorer.exe‬تبثغ‬
‫‪ SHGetSpecialFolderPathW‬سا‪ٔ Hook‬یى‪ٙ‬ذ ‪ ٚ‬یب ثذافضاس ‪ DUQUٚ STUXNET‬و‪ٞ ٝ‬ش د‪ ٚ‬ت‪ٛ‬اثغ یىؼب٘ی سا دسفبیُ ‪ٛٞntdll.dll‬ن ٔیى‪ٙٙ‬ذ ‪ٚ‬‬
‫ثذافضاس ‪ Gauss‬و‪ ٝ‬تبثغ ‪ NtQueryDirectoryFile‬سا ‪ٕٛ٘ Patch‬د‪ ٜ‬تب فبیُ ‪ٞ‬بیؾ ٔخفی ثٕب٘ذ‪.‬‬
‫ثشای ‪ API Hooking‬دس‪ Ring3‬س‪ٚ‬ؿ‪ٟ‬بی ٔختّفی ‪ٚ‬خ‪ٛ‬د داسد‪ ،‬أبس‪ٚ‬ؿ‪ٟ‬بی ‪ٚ Stable‬ؿ‪ٙ‬بخت‪ ٝ‬ؿذ‪ ٜ‬ثیـتشٔ‪ٛ‬سداػتفبد‪ ٜ‬لشاس ٔیٍیش٘ذ ‪.‬‬
‫‪ٞ‬ذف ٔب اص‪ Hook‬ایدبد ا٘حشاف دسس‪٘ٚ‬ذ اخشای ت‪ٛ‬اثغ‪ API‬خ‪ٛ‬ا‪ٞ‬ذ ث‪ٛ‬د‪.‬‬
‫دسایٗ ٔمبِ‪ ٝ‬ثب ػ‪ ٝ‬س‪ٚ‬ؽ ‪ API Hooking‬آؿ‪ٙ‬ب خ‪ٛ‬ا‪ٞ‬یٓ ؿذ ‪ ٚ‬یه ٕ٘‪ ٝ٘ٛ‬ثؼیبس ػبد‪ ٜ‬آٖ سا ٘‪ٛ‬ؿت‪ ٚ ٝ‬ا٘دبْ خ‪ٛ‬ا‪ٞ‬یٓ داد‪.‬‬
‫‪IAT Redirection‬‬
‫‪- 1‬‬

‫ا‪ِٚ‬یٗ تى‪ٙ‬یه ٔ‪ٛ‬سد اػتفبد‪ IAT Redirectionٜ‬اػت ‪ٔ IAT .‬خفف ػجبست ‪ Import Address Table‬اػت‪ .‬ت‪ٛ‬اثؼی و‪ ٝ‬ثل‪ٛ‬ست ‪Static‬فشاخ‪ٛ‬ا٘ی ٔیـ‪٘ٛ‬ذ دس‪ IAT‬رخیش‪ ٜ‬خ‪ٛ‬ا‪ٙٞ‬ذ ؿذ ‪.‬‬
‫‪ٚ‬لتی ػیؼت ػبُٔ فبیُ ‪PE‬سا دسحبفظ‪ٔ load ٝ‬یى‪ٙ‬ذ ‪ ،‬ثخؾ‪ IMAGE_IMPORT_DESCRIPTOR‬سا ثشسػی ٕ٘‪ٛ‬د‪ ٚ ٜ‬ػبختبس‪ IMAGE_IMPORT_BY_NAME‬فبیّ‪ٟ‬بی ‪ٚDLL‬ت‪ٛ‬اثغ ٔ‪ٛ‬سد‬
‫٘یبص سا ثذػت آ‪ٚ‬سد‪ ٚ ٜ‬دسفضبی ٔختق ثش٘بٔ‪ ٝ‬ثبسٌزاسی خ‪ٛ‬ا‪ٞ‬ذ ٕ٘‪ٛ‬د‪ .‬دسایٗ تى‪ٙ‬یه آدسع ت‪ٛ‬اثغ ‪ Import‬ؿذ‪ ٜ‬دس ‪ IAT‬سا‪ٔ Overwrite‬یى‪ٙ‬یٓ ‪ ٚ‬آدسع تبثغ خ‪ٛ‬دٔبٖ سا‬
‫ٔی‪ٛٙ‬یؼیٓ‪.‬‬
‫‪ٕٞ‬بٖ ع‪ٛ‬س و‪ ٝ‬پیـتش ٌفتیٓ فمظ ت‪ٛ‬اثغ ‪ Static‬لبثّیت‪ Hook‬ؿذٖ سا داس٘ذ ‪ ٚ .‬ثشای‬
‫ت‪ٛ‬اثغ‪ API‬و‪ ٝ‬ثل‪ٛ‬ست دای‪ٙ‬بٔیه ت‪ٛ‬ػظ)(‪ GetProcAddress‬آدسػـبٖ ثذػت آٔذ‪ٚ ٜ‬‬
‫فشاخ‪ٛ‬ا٘ی خ‪ٛ‬ا‪ٙٞ‬ذ ؿذ تبثیشی ٘ذاسد ‪ ٚ‬یب ثشای ت‪ٛ‬اثغ داخّی ٔبط‪ٕ٘ َٚ‬یت‪ٛ‬اٖ اص ‪Hook‬‬

‫اػتفبد‪ ٜ‬وشد‪.‬‬
‫دس تل‪ٛ‬یش ٔمبثُ ٔیجی‪ٙ‬یٓ و‪ ٝ‬تبثغ ‪ strcmp‬اص ٘‪ٛ‬ع ‪ٛٞ IAT‬ن ؿذ‪ ٜ‬اػت ‪.‬‬

‫‪EAT Redirection-2‬‬

‫دستى‪ٙ‬یه د‪ٙٔ ْٚ‬ظ‪ٛ‬س اص‪ٕٞ EAT‬بٖ‪ Export Address Table‬دسفبیُ‪ PE‬اػت و‪ ٝ‬ؿجی‪ِٚ IATٝ‬ی دسخ‪ٟ‬ت ٔؼى‪ٛ‬ع اػت‪.‬‬
‫‪ٚ‬لتی یه ٔبط‪ َٚ‬ت‪ٛ‬اثؼی سا دس‪ ٖٚ‬خ‪ٛ‬د لشاس ٔیذ‪ٞ‬ذ تب دیٍش ثش٘بٔ‪ٞ ٝ‬ب ‪ ٚ‬دیٍش ٔبط‪ِٟٚ‬ب ثت‪ٛ‬ا٘‪ٙ‬ذ اص آٖ اػتفبد‪ ٜ‬و‪ٙٙ‬ذ(ؿجی‪ٝ‬‬
‫فبیُ ‪ٞ‬بی ‪ٚ DLL‬ی‪ٙ‬ذ‪ٚ‬ص و‪ ٝ‬ؿبُٔ ت‪ٛ‬اثغ ‪ٞ API‬ؼت‪ٙ‬ذ ‪ ٚ‬ثش٘بٔ‪ٞ ٝ‬بی و‪ٔ ٝ‬ی ٘‪ٛ‬یؼیٓ اص ایٗ ت‪ٛ‬اثغ اػتفبد‪ٔ ٜ‬ی و‪ٙٙ‬ذ)آدسع‬
‫ت‪ٛ‬اثغ خ‪ٛ‬د سا دس‪ٔ EATٖٚ‬ی‪ٛٙ‬یؼذ‪.‬‬
‫ثشای ا٘دبْ ایٗ ٘‪ٛ‬ع ‪ٛٞ‬ن دس ‪ EAT Redirection‬آدسع ت‪ٛ‬اثغ سا تغییش ٔیذ‪ٞ‬یٓ تب ث‪ ٝ‬ت‪ٛ‬اثغ خ‪ٛ‬دٔبٖ اسخبع داد‪ ٜ‬ؿ‪٘ٛ‬ذ ‪ .‬اِجت‪ٝ‬‬
‫ای‪ٙ‬ىبس ثبیذ ثؼذ اص‬

‫‪ Load‬ؿذٖ ٔبط‪ َٚ‬دس حبفظ‪ ٝ‬ا٘دبْ ؿ‪ٛ‬د‬

‫‪ .‬ثذیٗ تشتیت ثؼذ اص ا٘دبْ‬

‫‪ٞ Hook‬ش ‪ٚ‬لت ثش٘بٔ‪ٝ‬‬

‫اص)(‪ GetProcAddress‬اػتفبد‪ ٜ‬و‪ٙ‬ذ ث‪ ٝ‬خبی آدسع ٔؼتجش تبثغ ‪ API‬؛آدسػتبثغ ٔ‪ٛ‬سد ٘ظش ٔب ثشٌـت داد‪ ٜ‬خ‪ٛ‬ا‪ٞ‬ذ ؿذ ‪.‬‬

‫‪Jmp Patch‬‬
‫‪- 3‬‬

‫تى‪ٙ‬یه ػ‪ ْٛ‬ثؼیبس ػبد‪ ٚ ٜ‬پشاػتفبد‪ ٜ‬اػت و‪ ٝ‬اضبف‪ٕٛ٘ ٝ‬دٖ وذ ‪ Jump‬دساثتذای تبثغ خ‪ٛ‬ا‪ٞ‬ذث‪ٛ‬د‪ JMP .‬یه پشؽ ثذ‪ٞ ٖٚ‬یچ لیذ ‪ ٚ‬ؿشط اػت‪ ،‬ثغ‪ٛ‬س پیؾ فشم اص‬
‫آدسػی و‪ ٝ‬ایٗ دػت‪ٛ‬س فشاخ‪ٛ‬ا٘ی ٔیـ‪ٛ‬د ‪ ،‬دسٔحذ‪ٚ‬د‪ ٜ‬ایی ثیٗ ‪ 32768-‬تب ‪ 32767‬ثبیت أیت‪ٛ‬ا٘یٓ ػُٕ ‪ Jump‬ا٘دبْ د‪ٞ‬یٓ ‪.‬‬

‫ثغ‪ٛ‬سوّی ٔیت‪ٛ‬ا٘یٓ ‪ 5‬ثبیت داؿت‪ ٝ‬ثبؿیٓ ؟ أب چشا ؟ یه ثبیت اصحبفظ‪ ٝ‬ت‪ٛ‬ػظ ‪ Opcode‬دػت‪ٛ‬س‪ jmp‬اؿغبَ ٔیـ‪ٛ‬د ‪ ٚ‬چ‪ٟ‬بس ثبیت ‪ ٓٞ‬ثبیذ یه آدسع آفؼت ‪ Relative‬سا دس ٘ظش‬
‫ثٍیشیٓ ‪ .‬ثغ‪ٛ‬سوّی ثبیت‪ٟ‬بیی سا ‪ٔ Overwrite‬یى‪ٙ‬یٓ ‪ ٚ‬دسٔؼیش اخشا ‪ Detouring‬سا ا٘دبْ ٔیذ‪ٞ‬یٓ ‪ .‬أب ثیبییذ ٍ٘ب‪ٞ‬ی ث‪٘ ٝ‬ح‪ Hook ٜٛ‬وشدٖ ثش٘بٔ‪ Sandboxie ٝ‬ثیب٘ذاصیٓ‬
‫‪ Sandboxie‬اصتى‪ٙ‬یه ‪ Relative Jump‬اػتفبد‪ٔ ٜ‬یى‪ٙ‬ذ‪ .‬ث‪ٙ‬بثشایٗ ثشای تـخیق‪ٞ Hook‬بیی اص ایٗ ٘‪ٛ‬ع وبفی اػت اثتذای ت‪ٛ‬اثغ ساچه و‪ٙ‬یٓ و‪ ٝ‬آیب اص دػت‪ٛ‬س پشؽ (‪)Jmp‬‬
‫اػتفبد‪ٔ ٜ‬یى‪ٙ‬ذ یب خیش؟ ‪ Opcode‬ایٗ دػت‪ٛ‬س ثشاثش ‪ٚ xE90‬یب ‪ xE80‬اػت ‪.‬‬
‫یه ٕ٘‪ ٝ٘ٛ‬ثش٘بٔ‪ ٝ‬دیٍش و‪ ٝ‬اص ایٗ ٔتذ اػتفبد‪ٔ ٜ‬یى‪ٙ‬ذ ثش٘بٔ‪ Unlocker ٝ‬اػت و‪ ٝ‬دس پش‪ٚ‬ػ‪ٛٞ Explorer.exe ٝ‬ن خ‪ٛ‬دؽ سا ا٘دبْ ٔیذ‪ٞ‬ذ ‪ٚ‬دستل‪ٛ‬یش صیش خضییبت آٖ سا‬
‫ٔـب‪ٞ‬ذ‪ٔ ٜ‬یى‪ٙ‬یذ‪:‬‬

‫خ‪ٛ‬ة اخبص‪ ٜ‬ثذ‪ٞ‬یذ آ٘بِیضی ثش ‪ٛ٘ hook engine‬ؿت‪ ٝ‬ؿذ‪ ٜ‬ت‪ٛ‬ػظ ‪ Magic‬داؿت‪ ٝ‬ثبؿیٓ و‪ ٝ‬ثب ایٗ ‪ engine‬تبثغ ‪ ZwTerminateProcess‬سا ‪ٔ hook‬یى‪ٙ‬یٓ ‪ ٚ‬تشیغ سا ا٘دبْ ٔیذ‪ٞ‬یٓ‪،‬‬
‫‪ٚ‬لتی ‪ hook‬ا٘دبْ ٔیـ‪ٛ‬د تغییشات دس حبفظ‪ ٝ‬ثل‪ٛ‬ست صیش خ‪ٛ‬ا‪ٞ‬ذ ث‪ٛ‬د‪:‬‬

‫ٔی ثی‪ٙ‬یٓ و‪ Relative Jumpٝ‬اػتفبد‪٘ ٜ‬ـذ‪ ٜ‬اػت! ‪ِٚ‬ی ایٗ تى‪ٙ‬یه دس و‪ٙ‬بس ‪ Relative Jump‬دس دػت‪ ٝ‬ث‪ٙ‬ذی ‪ Inline Patch‬لشاسٔیٍیشد ‪ٕٞ .‬ب٘غ‪ٛ‬س و‪ ٝ‬تل‪ٛ‬یش ٘ـبٖ ٔی د‪ٞ‬ذ د‪ٚ‬‬
‫تبثغ دیٍش وذ‪ٞ‬بی اثتذای تبثغ تفب‪ٚ‬ت داس٘ذ‪ .‬ایٗ یه تى‪ٙ‬یه ‪ ٚ‬حم‪ ٝ‬ثؼیبس ػبد‪ ٚ ٜ‬ؿیشیٗ اػت‪ٚ ،‬لتی دػت‪ٛ‬س ‪ Ret‬اخشا ٔی ؿ‪ٛ‬د‪ٔ ،‬مذاس ثبالی پـت‪ ٝ‬ثؼ‪ٛٙ‬اٖ ‪ EIP‬لشاس ٔی‬
‫ٌیشد ‪ٔ ٚ‬ؼیش اخشای ثش٘بٔ‪ ٝ‬سا تغییش ٔیذ‪ٞ‬ذ‪ .‬تبثغ ‪ٛٞ‬ن ٘یض ثذیٗ ك‪ٛ‬ست خ‪ٛ‬ا‪ٞ‬ذ ث‪ٛ‬د ‪:‬‬

‫ٔیت‪ٛ‬ا٘یٓ اص س‪ٚ‬ؿ‪ٟ‬بی ٔختّف اػتفبد‪ ٜ‬و‪ٙ‬یٓ ‪ ،‬ثؼ‪ٛٙ‬اٖ ٔثبَ‪:‬‬

‫‪jeHook_API‬‬
‫‪jnzHook_API‬‬
‫خ‪ٛ‬ة فًّ ‪ٞ‬ب د‪ ٚ‬حبِت ثیـتش ٘ذاس٘ذ ‪ True/False‬یب ‪ٕٞ‬بٖ ٔمذاس ‪1-0‬سا ٔیت‪ٛ‬ا٘‪ٙ‬ذ داؿت‪ ٝ‬ثبؿ‪ٙ‬ذ‪ .‬دسدػت‪ٛ‬س ا‪ َٚ‬چه ٔیى‪ٙ‬یٓ و‪ ٝ‬اٌش)‪ٔ Zero Flag(ZF‬مذاس كفش داؿت‪ ٝ‬ثبؿذ‬
‫پشؽ ا٘دبْ ؿ‪ٛ‬د ‪ ٚ‬دس دػت‪ٛ‬س د‪ ْٚ‬چه ٔیى‪ٙ‬یٓ اٌش‪ٔ ZF‬مذاس یه ثبؿذ (ثؼجبستی یؼ‪ٙ‬ی كفش٘جبؿذ) پشؽ ا٘دبْ ؿ‪ٛ‬د (‪ .)JNZ= Jump if Not Zero‬خ‪ٛ‬ة ثشاحتی دس ‪ٞ‬شك‪ٛ‬ست‬
‫پشؽ ا٘دبْ خ‪ٛ‬ا‪ٞ‬ذ ؿذ ‪ ٚ‬تبثغ ‪ٛٞ‬ن ٔبٖ اخشا ٔی ؿ‪ٛ‬د‪.‬‬
‫حبَ اٌش للذ اخشای تبثغ اكّی ‪ API‬ساداؿت‪ ٝ‬ثبؿیٓ ثبیذ چ‪ ٝ‬و‪ٙ‬یٓ!؟ث‪ ٝ‬وذ‪ٞ‬بی صیش ٍ٘ب‪ ٜ‬و‪ٙ‬یذ ‪ ،‬یه ٕ٘‪ Inline Patch hookٝ٘ٛ‬ثب‪ Push/ret‬سا پیبد‪ ٜ‬ػبصی وشد‪ ٜ‬ایٓ و‪ٝ‬‬
‫ثؼیبسػبد‪ ٜ‬اػت ‪ ٚ‬دس‪ ٖٚ‬خ‪ٛ‬د پش‪ٚ‬ػ‪ Hookٝ‬ا٘دبْ ٔیـ‪ٛ‬د‪:‬‬
‫{‬
‫‪0ffsec Magazine‬‬
‫‪Simple API Hook‬‬
‫‪By:‬‬
‫‪HmaiD.Rezaei‬‬
‫‪E-Mail: HamiD@offsec.ir‬‬
‫‪WEB:‬‬
‫‪www.offsec.ir‬‬
‫}‬
‫;‪Program H00k_API‬‬
‫}‪{$APPTYPE CONSOLE‬‬
‫‪uses‬‬
‫;‪SysUtils,Windows‬‬
‫‪var‬‬
‫;‪PMsg:Pointer‬‬
‫;‪Addr:String‬‬

OldProtection,NewProtection,HookFunc:Dword;
Function H00kMsgBoxA(hWnd:HWND;lpText,lpCaption:PAnsiChar;uType:UINT):Integer;stdcall;
begin
Result:=MessageBoxW(hWnd,('Call via Hooked API function'+#10#13+
'0ffsec Magazine'+#10#13+'www.offsec.ir'
+#10#13+'HamiD Rezaei'),'Very Simple Hook API',MB_OK+MB_ICONWARNING);
end;
begin
SetConsoleTitle('Very Simple H00k API');
Writeln('0ffsec Magazine');
Writeln('www.offsec.ir');
Writeln('---------------------------------------'+#10+#13);
PMsg:=GetProcAddress(GetModuleHandle('user32.dll'),'MessageBoxA');
Addr:=IntToHex(DWord(PMsg),8);
Writeln('Proc Address of MessageBoxAFunc: 0x'+Addr+#10+#13);
Writeln('Call via valid API function ...'+#10+#13);
MessageBoxA(0,'Call via valid API function',
'Very Simple Hook API',MB_OK);
VirtualProtect(PMsg,$14,PAGE_EXECUTE_READWRITE,@OldProtection);
HookFunc:=DWord(@H00kMsgBoxA);
Addr:=IntToHex(HookFunc,8);
Writeln('Proc Address of H00kMsgBoxA Func: 0x'+Addr+#10+#13);
Writeln('Hook MessageBoxA Function ...'+#10+#13);
Dword(PMsg^):=$68;
Dword(Pointer(DWord(PMsg)+1)^):=HookFuncand$ff;
Dword(Pointer(DWord(PMsg)+2)^):=(HookFuncshr8)and$ff;
Dword(Pointer(DWord(PMsg)+3)^):=(HookFuncshr16)and$ff;
Dword(Pointer(DWord(PMsg)+4)^):=(HookFuncshr24)and$ff;
Dword(Pointer(DWord(PMsg)+5)^):=$C3;
VirtualProtect(PMsg,,$14,OldProtection,@NewProtection);
Writeln('Call via valid API function ...'+#10+#13);

‫یذ اص‬ٙ‫ اػت دلت و‬H00kMsgBoxA ٝ‫ ٔبٖ و‬Hook ‫ تبثغ‬ٝ‫اٌش ث‬
‫ٖ تبثغ‬ٛ‫ ایٓ! چشا!؟چ‬ٜ‫ وشد‬ٜ‫ اػتفبد‬MessageBoxW‫تبثغ‬
ٓ‫ی‬ٙ‫ و‬ٜ‫ اص آٖ اػتفبد‬ٜ‫ثبس‬ٚ‫ اٌش د‬ٚ ‫ اػت‬ٜ‫ن ؿذ‬ٛٞMessageBoxA
‫ ثؼذ اص ٔذتی‬ٝ‫د و‬ٛ‫ب تجذیُ ٔیـ‬ٟ‫ٖ ا٘ت‬ٚ‫ یه تبثغ ثبصٌـتی ثذ‬ٝ‫ث‬
‫س‬ٛ‫ى‬ٙ‫ ثشای و‬ٝ‫ػتب٘ی و‬ٚ‫یٓ وشد (د‬ٞ‫ا‬ٛ‫ خ‬ٜ‫ذ‬ٞ‫ ٔـب‬Overflow‫خغبی‬
‫ذ‬ٙٙ‫ و‬ٝ‫خ‬ٛ‫ذ ت‬ٙ٘‫ا‬ٛ‫تؼتی ٔیت‬-‫سی‬ٛ‫ى‬ٙ‫ و‬ٝ‫ ٘ىت‬ٝ‫ذ ث‬ٙٙ‫اسؿذ تالؽ ٔیى‬
‫خی ٘ذاس٘ذ‬ٚ‫ٕبٖ ؿشط پبیبٖ –خش‬ٞ ‫ب – یب‬ٟ‫ٖ ا٘ت‬ٚ‫اثغ ثبصٌـتی ثذ‬ٛ‫ ت‬،
) ‫ذ‬ٙٞ‫ پیغبْ خغب ٔیذ‬ٚ

‫‪MessageBoxA(0,'Call via valid API function',‬‬
‫;)‪'Very Simple Hook API',MB_OK‬‬
‫;)'‪Writeln('Press any key to Exit ...‬‬
‫;‪Readln‬‬
‫‪end.‬‬

‫ثشای فشاخ‪ٛ‬ا٘ی تبثغ اكّی ٔب ٘یبص ث‪ ٝ‬یه تبثغ دیٍش داسیٓ و‪ ٝ‬ث‪ ٝ‬آٖ‪ٔTrampoline‬یٍ‪ٛ‬ییٓ‪.‬‬
‫ثشای ا٘دبْ ای‪ٙ‬ىبس ثبیت‪ٟ‬بیی و‪ ٝ‬لشاس اػت اص ثیٗ ثش‪٘ٚ‬ذ سا لجُ اص ‪ Overwrite‬ؿذٖ ثؼ‪ٛٙ‬اٖ یه تبثغ رخیش‪ٔ ٜ‬یى‪ٙ‬یٓ ‪ ٚ‬دسا٘ت‪ٟ‬بی تبثغ یه پشؽ ث‪ ٝ‬ادأ‪ ٝ‬وذ‪ٞ‬بو‪ ٝ‬تغییشداد‪ٜ‬‬
‫٘ـذ‪ ٜ‬ا٘ذ ا٘دبْ خ‪ٛ‬ا‪ٞ‬یٓ داد‪.‬دس ‪ٚ‬الغ ػ‪ٛ‬سػی و‪ ٝ‬ثب صثبٖ دِفی ٘‪ٛ‬ؿت‪ ٝ‬ایٓ ػّٕی ‪ٕٞ‬چ‪ ٖٛ‬تل‪ٛ‬یش صیش سا ا٘دبْ ٔیذ‪ٞ‬ذ‪:‬‬

‫‪ِٚ‬ی اٌش ثبیت‪ٟ‬بی ٔ‪ٛ‬سد ٘یبص سا لجُ اص ‪ Overwrite‬ؿذٖ دس ٔىب٘ی رخیش‪ ٜ‬و‪ٙ‬یٓ ‪ ٚ‬دس اكُ اص ‪ Trampoline‬اػتفبد‪ ٜ‬و‪ٙ‬یٓ س‪٘ٚ‬ذی ث‪ ٝ‬ك‪ٛ‬ست صیش ث‪ٛٞ ٝ‬و‪ٟ‬بیٕبٖ خ‪ٛ‬ا‪ٞ‬یٓ داد‪.‬‬

ْ‫ا٘یذ ایٗ وبس سا ا٘دب‬ٛ‫ٔی ت‬Trampoline ‫ ثشاحتی ثب تؼشیف تبثغ‬ٝ‫ا٘یذ وبّٔتش ٕ٘بییذ و‬ٛ‫ سا ٔی ت‬ٜ‫ ؿذ‬ٝ‫ؿت‬ٛ٘ ‫سع وذ‬ٛ‫ یبدٌیشی داسیذ ػ‬ٚ ‫ب‬ٞ ‫ن‬ٛٞ ٖ‫اٌش للذ ثش ا٘دبْ داد‬
.‫یذ‬ٞ‫د‬
PE ‫بی‬ٞ ُ‫بیی ثیـتش ثب ػبختبس فبی‬ٙ‫بی ٔفیذ ثشای آؿ‬ٞ ‫ه‬ٙ‫ِی‬
Microsoft Portable Executable and Common Object File Format Specification
http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/pecoff_v83.docx
Complete PE Offset Reference
http://bbs.pediy.com/upload/bbs/unpackfaq/ARTeam%20PE_appendix1_offsets.htm
Portable Executable File Format Compendium v11
http://www.accessroot.com/arteam/site/request.php?112

‫حٕالت خؼُ دسخ‪ٛ‬اػت ػٕت ػش‪ٚ‬س (‪)SSRF‬‬

‫أیش سػ‪ِٛ‬ی (‪)amir@offsec.ir‬‬

‫‪ٚ‬ة ػش‪ٚ‬یغ ‪ ٚ‬پّتفشْ ‪ٞ‬بی ٔجت‪ٙ‬ی ثش آٖ‬

‫حٔالت دسخ‪ٛ‬اػت ‪ٞ‬بی خؼّی ػٕت ػش‪ٚ‬س چیؼت؟‬
‫اكّی تشیٗ تؼشیف ایٗ ٘‪ٛ‬ع حٕالت ایٗ اػت و‪ٚ ٝ‬لتی اص یه ‪ٚ‬ة ػش‪ٚ‬س پبػخی‬

‫دسیبفت ٔیـ‪ٛ‬د‪ ،‬ایٗ پبػخ ثبصٌـتی سا ٔی ت‪ٛ‬اٖ ثؼ‪ٛٙ‬اٖ دسخ‪ٛ‬اػتی ث‪ ٝ‬ػٕت یه‬

‫ػش‪ٚ‬یغ دیٍش (و‪ٔ ٝ‬یت‪ٛ‬ا٘ذ یه ‪ٚ‬ة ػش‪ٚ‬س ثبؿذ) اسخبع داد‪.‬‬

‫خت وٕی ‪ٚ‬اضح تش و‪ ٝ‬ثخ‪ٛ‬ا‪ٞ‬یٓ دس ایٗ ٔ‪ٛ‬سد حشف ثض٘یٓ‪ ،‬ایٗ اػت و‪ ٝ‬ایٗ ٘‪ٛ‬ع‬
‫حٕالت ٔثُ خیّی اص فشآی‪ٙ‬ذ ‪ٞ‬بی ثبِم‪ ٜٛ‬دس ٌزس اص ٔحذ‪ٚ‬دیت ‪ٞ‬ب ٔب٘‪ٙ‬ذ ‪Response‬‬

‫‪ٛٔ ٚ Splitting‬اسد ٔـبث‪ ٝ‬ػال‪ ٜٚ‬ثش سد ؿذٖ اص ٔحبفظت ‪ٞ‬بی ػغح ‪ ٚ HTTP‬ػش‪ٚ‬س‪،‬‬
‫دس د‪ٚ‬س صدٖ ٔحذ‪ٚ‬دیت ‪ٞ‬بی ٔ‪ٙ‬غمی ‪ ٚ‬دػتشػی ث‪ ٝ‬ثبصخ‪ٛ‬سد ‪ٞ‬بی ‪ HTTP‬و‪ ٝ‬س‪ٚ‬اَ‬
‫٘تید‪ٌ ٝ‬یشی ‪ٞ‬بی ثؼیبسی سا پ‪ٛ‬ؿؾ ٔیذ‪ٞ‬ذ‪ ،‬وبسثشد‪ٞ‬بی ثؼضایی داسد!‬

‫پغ ف‪ٕٟ‬یذیٓ و‪ ٝ‬ایٗ ٔ‪ٛ‬ض‪ٛ‬ع وبٔالً ثب ‪ٞ Vector‬بی حٕالت دیٍش تفب‪ٚ‬ت داسد‪.‬‬

‫اص خّٕ‪ ٝ‬ػ‪ٙ‬بسی‪ٞ ٛ‬بی ٔحبفظتی ٔیت‪ٛ‬اٖ چ‪ٙ‬ذ ٔ‪ٛ‬سد سا ٘بْ ثشد و‪ ٝ‬ت‪ٛ‬ػظ ‪ SSRF‬لبثُ سد ؿذٖ اػت ‪:‬‬
‫‪‬‬

‫ؿٕب ٔیخ‪ٛ‬ا‪ٞ‬یذ یه ٘‪ٛ‬ع آػیت پزیشی سا اوؼپّ‪ٛ‬یت و‪ٙ‬یذ ‪ ،‬ث‪ ٝ‬حٕالت ٔجت‪ٙ‬ی ثش ‪٘ CR/LF‬یبصٔ‪ٙ‬ذیذ‪ .‬ایٗ ٔ‪ٛ‬سد‬

‫‪‬‬

‫یه ‪ Auth‬ػش سا‪ٞ‬تبٖ لشاس ٌشفت‪ٔ ،ٝ‬حبفظتی ‪ٚ‬اثؼت‪ ٝ‬ث‪ Host ٝ‬دس ‪ HTTP‬اػٕبَ ؿذ‪ ٜ‬اػت‪.‬‬

‫‪‬‬

‫‪... ٚ‬‬

‫ت‪ٛ‬ػظ فبیش‪ٚ‬اَ فیّتش ؿذ‪ ٜ‬اػت‪.‬‬

‫اص خّٕ‪ ٝ‬ػ‪ٙ‬بسی‪ٞ ٛ‬بی لبثُ پیبد‪ ٜ‬ػبصی ت‪ٛ‬ػظ حٕالت اص ایٗ دػت سا ٔیت‪ٛ‬اٖ ث‪: ٝ‬‬
‫‪‬‬

‫ػ‪ٛ‬ء اػتفبد‪ ٜ‬اص ‪ٚ‬اوـی اعالػبت‬

‫‪‬‬

‫ػ‪ٛ‬ء اػتفبد‪ ٜ‬اص دسخ‪ٛ‬اػت ‪ٞ‬بی ‪ٚ‬ضؼیت ‪( HTTP‬لبثُ اػتفبد‪ ٜ‬دس پ‪ٛ‬یؾ ‪ٞ Port‬ب ‪).. ٚ‬‬

‫‪‬‬
‫‪‬‬

‫دسخ‪ٛ‬اػت خ‪ٛ‬ا٘ذٖ اعالػبت ‪ ٚ‬ثشٌشدا٘ذٖ آ٘‪ٟ‬ب ثل‪ٛ‬ست ‪Remote‬‬

‫‪... ٚ‬‬

‫اكّی تشیٗ تئ‪ٛ‬سی حّٕ‪ ٝ‬ایٗ اػت و‪ٚ ٝ‬لتی دس یه ثش٘بٔ‪ ٝ‬وبسثشدی تحت ‪ٚ‬ة‪ ،‬دسخ‪ٛ‬اػت‬
‫اػٕبَ ؿذٖ تل‪ٛ‬یش ‪ٌ ٚ‬شفتٗ آٖ اص عشیك یه آدسع خبسخی ك‪ٛ‬ست ثٍیشد‪ٟٔ ،‬بخٓ ٔیت‪ٛ‬ا٘ذ‬

‫ایٗ دسخ‪ٛ‬اػت سا ثل‪ٛ‬ست یه دسخ‪ٛ‬اػت دیٍش ث‪ ٝ‬یه ‪ٚ‬ة ػش‪ٚ‬یغ دیٍش اسخبع د‪ٞ‬ذ و‪ٝ‬‬
‫پبػخ آٖ‪ ،‬ثؼیبس حیبتی ‪ ٚ‬دس ػیٗ حبَ داسای اعالػبت خبف اص ػش‪ٚ‬یغ د‪ٔٚ‬ی ٔیجبؿذ و‪ٝ‬‬
‫دسخ‪ٛ‬اػت ث‪ ٝ‬آٖ اسػبَ ؿذ‪ ٜ‬اػت‪.‬‬

‫ایٗ ٔ‪ٛ‬اسد ٔثبَ ‪ٞ‬بی ثبسصی ػت و‪ٔ ٝ‬یت‪ٛ‬اٖ دس ػغح ثش٘بٔ‪ٞ ٝ‬بی فشاٌیش وبسثشدی تحت ‪ٚ‬ة ‪ٚ‬‬

‫ػیؼتٓ ‪ٞ‬بی ٔذیشیت ٔحت‪ٛ‬ا یبفت‪.‬‬

‫‪ٚ‬لتی ثب ت‪ٛ‬اثؼی و‪ ٝ‬یه استجبط اص ٘‪ٛ‬ع ‪ TCP‬ثشلشاس ‪ ٚ‬داد‪ٞ ٜ‬ب سا ثل‪ٛ‬ست یه پبػخ ‪HTTP‬‬

‫دسیبفت ٔیى‪ٙٙ‬ذ (‪ )Raw‬دس ‪ٚ‬ة ػش‪ٚ‬سی و‪ ٝ‬ػّٕیبت س‪ٚ‬ی آٖ ا٘دبْ ٔیـ‪ٛ‬د (‪٘ )Service 1‬ىبت‬
‫صیش حبئض ا‪ٕٞ‬یت اػت ‪:‬‬

‫‪‬‬

‫‪ٚ‬س‪ٚ‬دی غیشٔؼتجش (ثذ‪ٞ ٖٚ‬یچ فیّتشٌزاسی ‪ Sanitize ٚ‬ؿذٖ)‬

‫‪‬‬

‫خغب‪ٞ‬بی ثبصٌـتی (اػالْ ٘تید‪ٚ ٚ ٝ‬ضؼیت وّی پبػخ ‪ HTTP‬ػش‪ٚ‬یغ ‪)2‬‬

‫‪‬‬

‫‪ٚ‬اوـی ‪ٞ‬ش٘‪ٛ‬ع اعالػبت خبسخی ثب اػتفبد‪ ٜ‬اص ت‪ٛ‬اثغ ثشلشاسی استجبط ‪ ٚ‬دسیبفت‬

‫اعالػبت (‪ ٚ cURL‬غیش‪)ٜ‬‬

‫للذ ٔب اص اسائ‪ ٝ‬ی ایٗ ٔمبِ‪ ٝ‬كشفبً ٍ٘ب‪ٞ‬ی وّی ث‪ ٝ‬ػبختبس حٕالت اص ایٗ دػت ث‪ٛ‬د‪ٕٞ .‬شا‪ٞ‬بٖ ػاللٕ‪ٙ‬ذ ٔیت‪ٛ‬ا٘‪ٙ‬ذ ٘ؼجت ث‪ ٝ‬ؿجی‪ ٝ‬ػبصی ‪ /‬دٔ‪ ٛ‬ػبصی ‪ /‬پیبد‪ ٜ‬ػبصی‬
‫حٕالت ثب تحمیك ‪ ٚ‬ثشسػی س‪ٚ‬ی س‪ٚ‬اَ اخشایی آٖ‪ ،‬ثپشداص٘ذ‪ .‬دس ك‪ٛ‬ست ‪ٞ‬شٌ‪ ٝ٘ٛ‬ػ‪ٛ‬اَ ‪ ٚ‬پیـ‪ٟٙ‬بد‪ ،‬ث‪ٙ‬ذ‪ ٜ‬دس خذٔت ‪ٞ‬ؼتٓ‪.‬‬

: ‫ٔشاخغ‬

https://twitter.com/search?src=typd&q=ssrf
http://www.riyazwalikar.com/2012/11/cross-site-port-attacks-xspa-part-2.html
https://docs.google.com/document/d/1v1TkWZtrhzRLy0bYXBcdLUedXGb9njTNIJXa3u9akHM/edit#heading=h.x98cmkdhxkd4
http://erpscan.com/wp-content/uploads/2012/11/SSRF.2.0.poc_.pdf
http://conference.hitb.org/hitbsecconf2013ams/materials/D1T1%20%20Vladimir%20Vorontsov%20and%20Alexander%20Golovko%20-%20SSRF%20PWNs%20%20New%20Techniques%20and%20Stories.pdf

‫استجبط ثب ‪ Immunity‬ت‪ٛ‬ػظ ‪Python‬‬

‫فشدیٗ اِّ‪ٟٛ‬یشدی ٘ظ٘ذ (‪)fardin@offsec.ir‬‬

‫ٔ‪ٟٙ‬ذػی ٔؼى‪ٛ‬ع ‪ ٚ‬آ٘بِیض‬

‫‪ٕٞ‬ی‪ٙ‬غ‪ٛ‬س و‪ٔ ٝ‬یذا٘یذ دیجبٌش ‪ immunity‬ث‪ ٝ‬خبعش ٔدب٘ی ث‪ٛ‬دٖ ‪ ،‬داؿتٗ أىب٘بت‬
‫خ‪ٛ‬ة ‪ ٚ‬ا٘ؼغبف پضیشی دس أش اوؼپّ‪ٛ‬یتی‪ٛٔ ًٙ‬سد اػتفبد‪ ٜ‬اوثشیت لشاس ٌشفت‪ٝ‬‬
‫اػت‪.‬‬
‫ت‪ ٛ‬ایٗ ٔمبِ‪ٍ٘ ٝ‬ب‪ٞ‬ی ٔیى‪ٙ‬یٓ ث‪ ٝ‬وتبثخب٘‪ immlib ٝ‬دس پبیت‪٘ ٚ ٖٛ‬ح‪ ٜٛ‬استجبط ‪ ٚ‬دس‬
‫٘‪ٟ‬بیت عشاحی یه اػىشیپت ػبد‪ ٜ‬دس ح‪ٛ‬ص‪... pycammands ٜ‬‬
‫ثشای اػتفبد‪ ٜ‬اص ایٗ وتبثخب٘‪ ٝ‬ؿٕب ٔیت‪٘ٛ‬یذ ایٗ وتبثخب٘‪ ٝ‬س‪ ٚ‬ثب اػٓ ‪ٚ immlib‬اسد‬
‫ٔحیظ ثش٘بٔ‪ٛ٘ ٝ‬یؼیت‪ ٖٛ‬و‪ٙ‬یذ‬
‫ٔب دس ایٗ ٔمبِ‪ ٝ‬اص ‪ٚ‬ی‪ٙ‬ذ‪ٚ‬ص ‪ XP‬اػتفبد‪ٔ ٜ‬یى‪ٙ‬یٓ و‪ ٝ‬دیجبٌش ‪ immunity‬دس‪٘ٚ‬ؾ‬
‫٘لت ‪ٞ‬ؼت‬
‫اٌش ث‪ٔ ٝ‬ؼیش ٘لت دیجبٌش ‪ٔ immunity‬شاخؼ‪ ٝ‬و‪ٙ‬یذ ‪ ،‬ف‪ِٛ‬ذس ‪ pycammands‬س‪ٚ‬‬
‫ٔـب‪ٞ‬ذ‪ ٜ‬خ‪ٛ‬ا‪ٞ‬یذ وشد و‪ ٝ‬دس اكُ ِیؼتی اص اػىشیپت ‪ٞ‬بی ٔختّف س‪ ٚ‬دس‪٘ٚ‬ؾ‬
‫ٔـب‪ٞ‬ذ‪ ٜ‬خ‪ٛ‬ا‪ٞ‬یذ وشد و‪ٞ ٝ‬ش وذ‪ ْٚ‬ثشای وبس خ‪ٛ‬اكی ٘‪ٛ‬ؿت‪ ٝ‬ؿذ‪ ٜ‬ا٘ذ و‪ ٝ‬ث‪ ٝ‬وبسثش‬
‫دس ضٕی‪ٞ ٝٙ‬بی ٔختّف وٕه ٔیى‪ٙٙ‬ذ ‪...‬‬

‫ثشای دیذٖ ِیؼت ایٗ اػىشیپت ‪ٞ‬ب ٔیت‪٘ٛ‬یذ اص دوٕ‪ list pycammands ٝ‬اػتفبد‪ ٜ‬و‪ٙ‬یذ و‪ ٝ‬دس تل‪ٛ‬یش صیش داخُ ٔشثغ لشٔض ٔـب‪ٞ‬ذ‪ٔ ٜ‬یى‪ٙ‬یذ ‪:‬‬

‫پ‪ٙ‬دش‪ list pycammands ٜ‬س‪ٔ ٚ‬ـب‪ٞ‬ذ‪ٔ ٜ‬یى‪ٙ‬یذ و‪ ٝ‬اػىشیپت ‪ٞ‬بی ٔ‪ٛ‬خ‪ٛ‬د ث‪ ٝ‬اضبف‪ٝ‬‬
‫ت‪ٛ‬ضیحبت ‪ٞ‬ش اػىشیپت ٕ٘بیبٖ خ‪ٛ‬ا‪ٞ‬ذ ؿذ‪:‬‬
‫ثشای ٘‪ٛ‬ؿتٗ یه اػىشیپت ػبد‪ ٜ‬اثتذا ٔب ثبیذ وتبثخب٘‪ٝ‬‬

‫‪ immlib‬س‪ٚ ٚ‬اسد ٔحیظ‬

‫و‪ٙ‬یٓ‪.‬‬
‫لجُ اص ایٗ وبس ٘ىت‪ ٝ‬ای و‪ ٝ‬ثبیذ ثذا٘یٓ ایٗ اػت و‪ٔ ٝ‬ب ثبیذ اػىشیپتٕ‪ ٖٛ‬س‪ ٚ‬دس‬
‫‪ ٖٕٛٞ‬ف‪ِٛ‬ذس ‪ pycammands‬دس ٔحُ ٘لت دیجبٌش رخیش‪ ٜ‬و‪ٙ‬یٓ‪.‬‬
‫اثتذا یه فبیُ ث‪ ٝ‬اػٓ ‪ offsec.py‬دس ف‪ِٛ‬ذس ٔزو‪ٛ‬س ایدبد وشد‪ ٜ‬ػپغ دس الیٗ‬
‫ثؼذی وتبثخب٘‪ immlib ٝ‬س‪ٚ ٚ‬اسد ثش٘بٔ‪ ٝ‬وشد‪ ٚ ٜ‬ثب ایدبد یه تبثغ ثبص ٌـتی الذاْ‬
‫الذاْ ث‪ ٝ‬چبح وشدٖ یه ػجبست ٔیى‪ٙ‬یٓ پغ داسیٓ ‪:‬‬

‫حبَ اػىشیپتٕ‪ ٖٛ‬س‪ ٚ‬ثب اػتفبد‪ ٜ‬اص وبساوتش ! دس پبییٗ دیجبٌش اخشا ٔیى‪ٙ‬یٓ ‪:‬‬

‫‪ٕٞ‬ی‪ٙ‬غ‪ٛ‬س و‪ٔ ٝ‬ـب‪ٞ‬ذ‪ٔ ٜ‬یى‪ٙ‬یذ پیغبْ ٔب چبح ؿذ‪.‬‬
‫أب ثشای چبح وشدٖ یه ٔمذاس دس لؼٕت ‪ log‬ثبیذ اص تبثغ ‪ log‬اػتفبد‪ ٜ‬و‪ٙ‬یٓ‬
‫ثشای ٔثبَ اػىشیپت صیش یه ٔمذاس سا دس پ‪ٙ‬دش‪ log ٜ‬دیجبٌش چبح ٔیى‪ٙ‬ذ‪:‬‬
‫اػىشیپت سا د‪ٚ‬ثبس‪ ٜ‬اخشا ٔیى‪ٙ‬یٓ ‪ ٚ‬اص ٔ‪ٛٙ‬ی ‪ view‬س‪ٚ‬ی ٌضی‪ log ٝٙ‬وّیه ٔیى‪ٙ‬یٓ تب پ‪ٙ‬دش‪ log ٜ‬ثشای ٔب ٕ٘بیبٖ ؿ‪ٛ‬د‬
‫‪:‬‬
‫‪ٕٞ‬ی‪ٙ‬غ‪ٛ‬س و‪ٔ ٝ‬یجی‪ٙ‬یذ ٔتٗ ٔب ث‪ٕ٘ ٝ‬بیؾ دس أذ ‪...‬‬
‫ثشای ساحتی وبس وبسثشاٖ یه دوٕ‪ ٝ‬ث‪٘ ٝ‬بْ ‪ pop python shell‬دس دیجبٌش تؼجی‪ ٝ‬ؿذ‪ ٜ‬و‪ ٝ‬ث‪ ٝ‬وبسثش ایٗ أىبٖ س‪ٔ ٚ‬یذ‪ ٜ‬اػىشیپت ‪ٞ‬بی خ‪ٛ‬دؿ‪ ٖٛ‬س‪ ٚ‬دس ٔحیظ دیجبٌش ثب ػشػت‬
‫صیبد ٘‪ٛ‬ؿت‪ ٚ ٝ‬اخشا و‪ٙٙ‬ذ ‪ ٚ‬اص ‪ٕٟٔ ٕٝٞ‬تش وتبثخب٘‪ immlib ٝ‬ث‪ ٝ‬ك‪ٛ‬ست پیـفشم فشخ‪ٛ‬ا٘ی ؿذ‪ ٜ‬اػت ثشای ثبص ؿذٖ ‪ python shell‬دس ایٗ ٔحیظ وبفیؼت ثب وّیه ثش س‪ٚ‬ی دوٕ‪ٝ‬‬
‫ٔزو‪ٛ‬س ٔحیظ س‪ ٚ‬فشاخ‪ٛ‬ا٘ی و‪ٙ‬یذ ‪:‬‬
‫ٔحیظ ‪:‬‬

‫حبَ ثیبیذ ثب ‪٘ ٓٞ‬ح‪ ٜٛ‬ایدبد یه خذ‪ َٚ‬ثب اػتفبد‪ ٜ‬اص ٔحیظ ثبال س‪ ٚ‬ثشػی و‪ٙ‬یٓ ‪...‬‬
‫ثشای ایدبد یه تیجُ ٔب ٘یبص داسیٓ ی‪ ٝ‬اػٓ تیجُ ‪ ٚ‬ػت‪ٞ ٖٛ‬بی تیجُ ثشای ٔثبَ ٔب ٔیخ‪ٛ‬ا‪ٞ‬یٓ یه تیجُ ثب ٘بْ ‪ ٚ offsec‬د‪ ٚ‬ػت‪ ٖٛ‬ثب ٘بْ ‪ٞ‬بی ‪ Name ٚ Number‬ایدبد و‪ٙ‬یٓ‪،‬‬
‫ثشای ایٗ وبس اص تبثغ ‪ createTable‬اػتفبد‪ ٜ‬خ‪ٛ‬ا‪ٞ‬یٓ وشد پغ داسیٓ ‪:‬‬

‫دس وذ ثبال ٔب یه ٔتغییش ثب ٘بْ ‪ mytable‬داسیٓ و‪ ٝ‬ثب فشاخ‪ٛ‬ا٘ی تبثغ ‪ٚ ٚ createTable‬اسد وشدٖ اػٓ‬
‫تیجُ ‪٘ ٚ‬بْ ػت‪ٞ ٖٛ‬ب تیجُ ػفبسؿی س‪ ٚ‬ثشأ‪ٔ ٖٛ‬یؼبص‪ ، ٜ‬ثؼذ اص ‪ٚ‬اسد وشدٖ دػت‪ٛ‬س ثبال ثالفبكّ‪ٝ‬‬
‫خذ‪ َٚ‬صیش ثشای ٔب ػبخت‪ ٝ‬خ‪ٛ‬ا‪ٞ‬ذ ؿذ ‪:‬‬
‫دس ػىغ ثبال ػت‪ٞ ٖٛ‬بی دِخ‪ٛ‬ا‪ٔ ٜ‬ب ایدبد ؿذٖ ‪...‬‬
‫دس پبست د‪ ْٚ‬ایٗ ٔمبِ‪ ٝ‬ثب ٘ح‪ٚ ٜٛ‬اسد وشدٖ اعالػبت ث‪ ٝ‬تیجُ ‪٘ ٚ‬ح‪ٛ٘ ٜٛ‬ؿتٗ یه اػىشیپت و‪ ٝ‬پش‪ٚ‬ػ‪ٝ‬‬
‫‪ٞ‬بی دس حبَ اخشا س‪ ٚ‬ثب تٕبٔی خضئیبت ثشای ٔب ٘ـ‪ٔ ٖٛ‬یذ‪ ٜ‬آؿ‪ٙ‬ب خ‪ٛ‬ا‪ٞ‬یٓ ؿذ‪ٛٔ ،‬فك ثبؿیذ‪.‬‬

‫ٔش‪ٚ‬سی ثش آخشیٗ سفتبس ‪ٞ‬بی ‪ZeroAccess‬‬

‫ٔحٕذسضب ضٕیشی ( ‪)mohamadreza@offsec.ir‬‬

‫آ٘بِیض ثذافضاس‬

‫‪ ZeroAccess‬یىی اص ثذافضاس‪ٞ‬بی ثؼیبس ٔذسٖ اػت و‪ ٝ‬اص وٕپب٘ی‬

‫‪ٞ‬بی ٔختّف‬

‫ٔحل‪ٛ‬الت ضذ ‪ٚ‬یش‪ٚ‬ع‪ٚ ،‬لت صیبدی كشف ٔ‪ٟٙ‬ذػی ٔؼى‪ٛ‬ع ‪ ٚ‬تحّیُ سفتبس ‪ٞ‬بی‬
‫آٖ ؿذ‪ ٜ‬اػت‪ .‬أب ایٗ ثذافضاس پب ث‪ ٝ‬پبی آ٘بٖ پیؾ ٔیش‪ٚ‬د ‪ٞ ٚ‬شچ‪ٙ‬ذ ‪ٚ‬لت یه ثبس‬
‫خ‪ٛ‬د سا ثش‪ٚ‬ص وشد‪ ٚ ٜ‬اص تى‪ٙ‬یه ‪ٞ‬بی خذیذ تش اػتفبد‪ٔ ٜ‬یى‪ٙ‬ذ ‪ .‬ثذیٗ تشتیت ‪ٞ‬ش‬
‫س‪ٚ‬ص‪ ٜ‬اثؼبد خذیذی اص فؼبِیت ‪ٞ‬ب ‪ ٚ‬سفتبس‪ٞ‬بی ایٗ ثذ افضاس ٔ‪ٙ‬تـش ٔیـ‪ٛ‬د ‪.‬‬
‫‪ ZeroAccess‬پغ اص ٘ف‪ٛ‬ر ث‪ ٝ‬یه ػیؼتٓ الذاْ ث‪ ٝ‬اػتخشاج‬

‫‪ٔ bitcoin‬یى‪ٙ‬ذ ‪،‬‬

‫تخٕیٗ صد‪ٔ ٜ‬یـ‪ٛ‬د و‪ ٝ‬ػبال٘‪ ٝ‬حذ‪ٚ‬د ‪ٔ 2.7‬یّی‪ ٖٛ‬دالس آٔشیىب ثشای كبحجب٘ؾ ػ‪ٛ‬د‬
‫آ‪ٚ‬سی داسد ! ‪ٛ٘ .‬ع دیٍشی اص فؼبِیت ‪ٞ‬بی ایٗ ثذافضاس ‪ ٓٞ‬ثب اػتفبد‪ ٜ‬اص ‪ٚ‬ة‬
‫ػبیت ‪ٞ‬بی تجّیغبت وّیىی اػت و‪ ٝ‬ث‪ ٝ‬اصای ‪ٞ‬ش وّیّه ث‪ ٝ‬وبسثش پ‪ َٛ‬پشداخت‬
‫ٔیى‪ٙٙ‬ذ ‪ .‬دس آٔذ س‪ٚ‬صا٘‪ ٝ‬آٖ ‪ٞ‬ب اص ایٗ عشیك ‪ ٓٞ‬چیضی حذ‪ٚ‬د ‪ٞ 100‬ضاس دالس دس‬
‫س‪ٚ‬ص تخٕیٗ صد‪ٔ ٜ‬یـ‪ٛ‬د !‬
‫ایٗ ثذافضاس و‪ ٝ‬ثب ٘بْ ‪ٞ‬بیی ‪ٕٞ‬چ‪٘ Sirefef ٚ Max++ ٖٛ‬یض ؿ‪ٙ‬بخت‪ٔ ٝ‬یـ‪ٛ‬د دس اثتذا‬
‫دس ػبَ ‪ 2011‬ؿ‪ٙ‬بػبیی ؿذ (ؿ‪ٙ‬بػبیی غیش سػٕی دس ػبَ ‪ 2010‬یب ‪) 2009‬‬

‫یىی اص ث‪ٟ‬تشیٗ آ٘بِیض ‪ٞ‬بی ایٗ ثذافضاس ت‪ٛ‬ػظ ‪ Giuseppe Bonfa‬اص ٔ‪ٛ‬ػؼ‪ infosec ٝ‬ك‪ٛ‬ست ٌشفت ‪ .‬ثشای اعالػبت ثیـتش ٔیت‪ٛ‬ا٘یذ ث‪ ٝ‬ػبیت ایٗ ٔ‪ٛ‬ػؼ‪ٔ ٝ‬شاخؼ‪ ٝ‬و‪ٙ‬یذ ‪.‬‬
‫أب ثحث ٔب دس ٔ‪ٛ‬سد سفتبس‪ٞ‬بی خذیذ ایٗ ثذافضاس اػت‪ .‬ثشای ثشسػی دلیك تش یه ٘ؼخ‪ ٝ‬اص آٖ سا س‪ٚ‬ی یه ػیؼتٓ ٔدبصی اخشا وشد‪٘ ٚ ٜ‬تبیح سا ثب ‪ ٓٞ‬د٘جبَ ٔیى‪ٙ‬یٓ‪.‬‬
‫ٔٗ ثشای ثشسػی فؼبِیت ‪ٞ‬بی تحت ؿجى‪ ٝ‬اص ‪ Ethereal‬اػتفبد‪ ٜ‬وشدْ ‪٘ .‬خؼتیٗ چیضی و‪ ٝ‬خّت ت‪ٛ‬خ‪ٔ ٝ‬یى‪ٙ‬ذ دس تل‪ٛ‬یش صیش ٔـخق ؿذ‪ ٜ‬اػت ‪:‬‬

‫‪ٕٞ‬بٖ ع‪ٛ‬س و‪ٔ ٝ‬ـب‪ٞ‬ذ‪ٔ ٜ‬یى‪ٙ‬یذ ایٗ ثذافضاس للذ ثشلشاسی استجبط ثب دأ‪ j.maxmind.com ٝٙ‬سا داسد ‪ .‬أب ثیبییذ ٍ٘ب‪ٞ‬ی ث‪ http request ٝ‬و‪ ٝ‬ت‪ٛ‬ػظ ایٗ ثذافضاس ث‪ ٝ‬ایٗ دأ‪ٝٙ‬‬
‫اسػبَ ٔیـ‪ٛ‬د ثیب٘ذاصیٓ ‪.‬‬

‫ػش‪ٚ‬یغ ‪ geoip lookup‬و‪ ٝ‬دس ػبیت ‪ maxmind‬لبثُ دػتشػی اػت ‪،‬‬
‫ٔیت‪ٛ‬ا٘ذ ٔحُ خغشافیبیی یه ‪ ip‬سا ٕ٘بیؾ د‪ٞ‬ذ ‪.‬‬

‫حبَ اٌش ثش س‪ٚ‬ی پىت ٔ‪ٛ‬سد ٘ظش وّیه ساػت وشد‪ٌ ٚ ٜ‬ضی‪ٝٙ‬‬

‫‪follow tcp‬‬

‫‪ stream‬سا ثض٘یذ ‪ٔ ،‬یت‪ٛ‬ا٘یذ خضییبت ثیـتشی ٔـب‪ٞ‬ذ‪ ٜ‬و‪ٙ‬یذ‬
‫‪ٕٞ‬بٖ ع‪ٛ‬س و‪ٔ ٝ‬ـب‪ٞ‬ذ‪ٔ ٜ‬یى‪ٙ‬یذ ایٗ ثذافضاس دس حبَ خٕغ آ‪ٚ‬سی اعالػبت‬
‫خغشافیبیی لشثب٘یب٘ؾ اػت ! ث‪٘ ٝ‬ظش ٔیشػذ ػبص٘ذٌبٖ ایٗ ثذافضاس‬
‫للذ داس٘ذ تب ٔحذ‪ٚ‬د‪ ٜ‬خغشافیبیی ٘ف‪ٛ‬ر ثذافضاسؿبٖ سا ؿ‪ٙ‬بػبیی وشد‪ٜ‬‬
‫‪ ٚ‬ثشای ا‪ٞ‬ذاف ثؼذی خ‪ٛ‬د اص آٖ ‪ٞ‬ب اػتفبد‪ ٜ‬و‪ٙٙ‬ذ ‪.‬‬

‫‪ ٚ‬دس ٘‪ٟ‬بیت ثذافضاس پ‪ٛ‬ست ‪ 16464‬سا س‪ٚ‬ی ػیؼتٓ لشثب٘ی ‪ٔ listen‬یى‪ٙ‬ذ ‪.‬‬
‫ث‪٘ ٝ‬ظش ٔیشػذ ایٗ استجبط ثشای اسػبَ آپذیت ‪ٞ‬بی خذیذ اص عشف‬
‫ٔذیشاٖ ایٗ ثذافضاس اػت ‪.‬‬

‫أب دیٍش ٔ‪ٛ‬ض‪ٛ‬ػی و‪ٔ ٝ‬یت‪ٛ‬ا٘ذ خبِت ثبؿذ اػتفبد‪ ٜ‬اص یه تى‪ٙ‬یه ثشای ؿ‪ٙ‬بػبیی ‪ debugger‬ت‪ٛ‬ػظ ایٗ ثذ افضاس اػت ‪.‬‬
‫‪ٞ debugger‬ب اثضاس‪ٞ‬بیی ‪ٞ‬ؼت‪ٙ‬ذ و‪ ٝ‬اص آ٘‪ٟ‬ب ث‪ٙٔ ٝ‬ظ‪ٛ‬س خغبیبثی ‪ ٚ‬ا٘دبْ ثشسػی ‪ٞ‬بی دلیك ‪ ٚ‬پیچیذ‪ ٜ‬ثشس‪ٚ‬ی ٘ح‪ ٜٛ‬ػّٕىشد ‪ ٚ‬خضییبت ٔشث‪ٛ‬ط ث‪ ٝ‬س‪٘ٚ‬ذ اخشایی فبیُ ‪ٞ‬بی اخشا‬
‫ؿذ٘ی (‪ٞ dll ٚ )exe‬ب اػتفبد‪ٔ ٜ‬یـ‪٘ٛ‬ذ ‪ٔ .‬حممبٖ أ‪ٙ‬یتی ثب اػتفبد‪ ٜ‬اص ایٗ اثضاس‪ٞ‬ب الذاْ ث‪ ٝ‬سفتبسؿ‪ٙ‬بػی ‪ ٚ‬آ٘بِیض یه ثذافضاس ٔیى‪ٙٙ‬ذ ‪.‬‬
‫دس ٘تید‪ ٝ‬ثؼیبسی اص عشاحبٖ ثذافضاس‪ٞ‬بی سایب٘‪ ٝ‬ایی ث‪ٙٔ ٝ‬ظ‪ٛ‬س خّ‪ٌٛ‬یشی اص تحّیُ ثذافضاسؿبٖ ثذػت وٕپب٘ی ‪ٞ‬بی ضذ ‪ٚ‬یش‪ٚ‬ع ‪ ٚ‬یب ٔحممیٗ اص تى‪ٙ‬یه ‪ٞ‬بیی اػتفبد‪ٜ‬‬
‫ٔیى‪ٙٙ‬ذ تب ‪ٍٙٞ‬بٔی و‪ ٝ‬ثذافضاس دس یه ‪ debugger‬اخشا ٔیـ‪ٛ‬د تغییش سفتبس د‪ٞ‬ذ ‪ ٚ‬وبس آ٘بِیض سا ثشای ٔحممیٗ ػخت تش و‪ٙ‬ذ‪ٔ .‬دٕ‪ٛ‬ػ‪ ٝ‬ی ایٗ ٔتذ‪ٞ‬ب ث‪٘ ٝ‬بْ ‪Anti-Debugging‬‬

‫‪ Tricks‬ؿ‪ٙ‬بخت‪ٔ ٝ‬یـ‪٘ٛ‬ذ ‪.‬‬

‫ثشای ایٗ ٔ‪ٙ‬ظ‪ٛ‬س س‪ٚ‬ؽ ‪ٞ‬بی ٔختّفی ‪ٚ‬خ‪ٛ‬د داسد و‪ٔ ٝ‬حج‪ٛ‬ة تشیٗ آٖ ‪ٞ‬ب اػتفبد‪ ٜ‬اص ‪ٞ api‬بػت ‪ .‬ؿبیذ ػبد‪ ٜ‬تشیٗ ٔثبَ اػتفبد‪ ٜ‬اص ‪ IsDebuggerPresent‬ثبؿذ ‪ZeroAccess.‬‬

‫‪ ٓٞ‬دس ثخـی اص وذ‪ٞ‬بیؾ اص ‪ٕٞ‬یٗ ‪ api‬اػتفبد‪ٔ ٜ‬یى‪ٙ‬ذ ‪:‬‬
‫أب اػتفبد‪ ٜ‬اص ایٗ ٌ‪ٔ ٝ٘ٛ‬تذ‪ٞ‬ب ث‪ ٝ‬ت‪ٟٙ‬بیی وبفی ٘یؼت ‪ ٚ‬ثذافضاس ثشای ث‪ٟ‬تش ٘تید‪ٌ ٝ‬شفتٗ ثبیذ سا‪ٞ ٜ‬بی خذیذتش‬
‫سا أتحبٖ و‪ٙ‬ذ ‪ .‬ث‪ٕٞ ٝ‬یٗ ٔ‪ٙ‬ظ‪ٛ‬س ث‪ ٝ‬تبصٌی ٔـخق ؿذ‪ ٜ‬و‪ ZeroAccess ٝ‬دس آخشیٗ ثش‪ٚ‬ص سػب٘ی خ‪ٛ‬دؽ اص‬
‫س‪ٚ‬ؽ خذیذی ثشای ؿ‪ٙ‬بػبیی ‪ debugger‬اػتفبد‪ٔ ٜ‬یى‪ٙ‬ذ ‪ .‬اِجت‪ٔ ٝ‬ب‪ٞ‬یت ایٗ س‪ٚ‬ؽ خذیذ ٘یؼت ! لجال اؿبساتی‬
‫ث‪ ٝ‬ایٗ س‪ٚ‬ؽ ؿذ‪ ٜ‬ث‪ٛ‬د ‪ٔ .‬ذت ‪ٞ‬بی صیبدی ث‪ٛ‬د و‪ ٝ‬وؼی اص ایٗ س‪ٚ‬ؽ اػتفبد‪ٕ٘ ٜ‬یىشد ‪ .‬ایٗ ٔتذ ثب ٘بْ ‪self-‬‬

‫‪ debugging‬ؿ‪ٙ‬بخت‪ٔ ٝ‬یـ‪ٛ‬د ‪.‬‬

‫دس ایٗ س‪ٚ‬ؽ ثذافضاس د‪ process ٚ‬سا ایدبد ٔیى‪ٙ‬ذ و‪ ٝ‬یىی اص آٖ ‪ٞ‬ب خ‪ٛ‬د سا ‪ٔ debugger‬ؼشفی ٔیى‪ٙ‬ذ ‪ ٚ‬پشاػغ دیٍش سا ‪ٔ debug‬یى‪ٙ‬ذ ‪ ،‬ثب ت‪ٛ‬خ‪ ٝ‬ث‪ ٝ‬ایٗ و‪ ٝ‬أىبٖ اتلبَ د‪ٚ‬‬
‫‪ debugger‬ثغ‪ٛ‬س ‪ٕٞ‬ضٔبٖ ث‪ ٝ‬یه ‪ٚ process‬خ‪ٛ‬د ٘ذاسد ‪ٔ ،‬حممیٗ دیٍش ت‪ٛ‬ا٘بیی اتلبَ ث‪ ٝ‬ثذافضاس ثب ‪ debugger‬سا ٘خ‪ٛ‬ا‪ٙٞ‬ذ داؿت !‬

‫ثشای ایٗ وبس ثذافضاس اص یه ‪ api‬ث‪٘ ٝ‬بْ ‪ DbgUIConnectToDbg‬اػتفبد‪ٔ ٜ‬یى‪ٙ‬ذ ‪ .‬ایٗ ‪ٔ api‬ب٘‪ٙ‬ذ دیٍش ‪ٞ api‬بیی و‪ ٝ‬ثشای ایدبد استجبط ثب ‪ debugger‬اػتفبد‪ٔ ٜ‬یـ‪٘ٛ‬ذ ‪ٞ ،‬یچ‪ٛ‬لت‬
‫ٔؼت‪ٙ‬ذات آٖ ‪ٞ‬ب ت‪ٛ‬ػظ ٔبیىش‪ٚ‬ػبفت اسائ‪٘ ٝ‬ـذ‪ ٜ‬اػت ‪.‬‬

‫اٌش ثذافضاس دس یه ‪ debugger‬اخشا ؿ‪ٛ‬د ادأ‪ ٝ‬س‪٘ٚ‬ذ اخشا ؿذ٘ؾ ث‪ٔ ٝ‬ؼیش ‪ٞ create_debuggee‬ذایت‬
‫ٔیـ‪ٛ‬د ‪.‬‬
‫اٌش ٍ٘ب‪ٞ‬ی ث‪ ٝ‬ػبختبس ایٗ ثخؾ ثیب٘ذاصیذ ٔت‪ٛ‬خ‪ٔ ٝ‬یـ‪ٛ‬یذ و‪ ٝ‬یه پشاػغ ثب ‪ CreationFlag‬و‪ٔ ٝ‬مذاس‬
‫آٖ ثشاثش‪ 0×2000001‬اػت ػبخت‪ٔ ٝ‬یـ‪ٛ‬د‬
‫و‪ ٝ‬دس ‪ٚ‬الغ ‪ 0×0000001‬ثشاثش ‪ٓٞ 0×02000000 ٚ DEBUG_PROCESS‬‬
‫‪ CREATE_PRESERVE_CODE_AUTHZ_LEVEL‬اػت ‪.‬‬
‫(ثشای دیذٖ ِیؼت وبُٔ ‪ٞ process creation flag‬ب ٔیت‪ٛ‬ا٘یذ ث‪ِ ٝ‬ی‪ٙ‬ه ‪ٞ‬بی آخش ٔمبِ‪ٔ ٝ‬شاخؼ‪ ٝ‬و‪ٙ‬یذ ‪).‬‬
‫أب وبسوشد آٖ ‪ٞ‬ب چیؼت ؟!‬

‫دلیمب ‪ٕٞ‬بٖ ٔ‪ٛ‬اسدی و‪ ٝ‬دس ٔتذ ‪ٛٔ self-debugging‬سد ٘یبص اػت !‬
‫اٌش دس ‪ٍٙٞ‬بْ اخشای ثذ افضاس ٍ٘ب‪ٞ‬ی ث‪ِ ٝ‬یؼت ‪ٞ process‬بی دس حبَ اخشا ثیب٘ذاصیذ چ‪ٙ‬یٗ چیضی ٔـب‪ٞ‬ذ‪ ٜ‬خ‪ٛ‬ا‪ٞ‬یذ وشد ‪:‬‬

‫‪ٕٞ‬ب٘غ‪ٛ‬س و‪ٔ ٝ‬ـب‪ٞ‬ذ‪ٕٛ٘ ٜ‬دیذ ‪ ZeroAccess‬دس د‪ٔ ٚ‬شحّ‪ ٝ‬اخشا ٔیـ‪ٛ‬د ‪٘ ،‬خؼت ث‪ٔ ٝ‬ب٘‪ٙ‬ذ یه ‪ ٚ ، debugger‬دس فبص د‪ ْٚ‬ث‪ ٝ‬ػ‪ٛٙ‬اٖ یه ثش٘بٔ‪ ٝ‬تحت ‪. debug‬‬
‫ثذیٗ تشتیت ایٗ ثذافضاس ثب ایدبد ‪ debug ٚ‬وشدٖ یه ‪ process‬دس دس‪ ٖٚ‬خ‪ٛ‬د اخبص‪ ٜ‬اتلبَ ‪ debugger‬دیٍش سا ٕ٘یذ‪ٞ‬ذ !‬
‫دس ك‪ٛ‬ستی و‪ ٝ‬ػالل‪ٙٔ ٝ‬ذ ث‪ ٝ‬آ٘بِیض ایٗ ثذ افضاس ‪ٞ‬ؼتیذ ثشای دسیبفت ٕ٘‪ ٝ٘ٛ‬آٖ ٔیت‪ٛ‬ا٘یذ ثب ایٕیُ ٘‪ٛ‬یؼ‪ٙ‬ذ‪ ٜ‬تٕبع ثٍیشیذ ‪.‬‬

: ‫بی ٔفیذ‬ٞ ‫ه‬ٙ‫ ِی‬ٚ ‫ٔشاخغ‬

https://blog.avast.com/2013/05/29/analysis-of-a-self-debugging-sirefef-cryptor
en.wikipedia.org/wiki/ZeroAccess
Step-by-Step Reverse Engineering Malware: ZeroAccess

by Giuseppe Bonfa :

http://resources.infosecinstitute.com/step-by-step-tutorial-on-reverse-engineering-malware-the-zeroaccessmaxsmiscer-crimewarerootkit/

process creation flags :
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684863%28v=vs.85%29.aspx

‫‪ٚ‬ة آٔ‪ٛ‬ص ٔتـىُ اص ٌش‪ٞٚ‬ی اص فؼبِیٗ ای‪ٙ‬تش٘تی اػت آ٘‪ٟ‬ب ثش ایٗ ثب‪ٚ‬س٘ذ و‪ ٝ‬آٔ‪ٛ‬صؽ‬
‫ٔدبصی ت‪ٟٙ‬ب سا‪ ٜ‬ثشلشاسی فشكت ‪ٞ‬بی ثشاثش آٔ‪ٛ‬صؿی اػت ‪ ٚ‬ثب تدشث‪ ٝ‬سا‪ٞ‬ی ٘‪ ٛ‬دس كذد‬
‫ا٘تمبَ دا٘ؾ خ‪ٛ‬د ث‪ ٝ‬ؿٕب ثبصدیذ و‪ٙٙ‬ذ‪ٔ ٜ‬حتشْ ‪ٞ‬ؼت‪ٙ‬ذ‪ٔ . .‬ب ثش ایٗ ثب‪ٚ‬سیٓ و‪ٚ ٝ‬ة آٔ‪ٛ‬ص‬
‫ت‪ٟٙ‬ب یه ػبیت ٘یؼت ثّى‪ ٝ‬یه ا٘ذیـ‪ ٝ‬آٔ‪ٛ‬صؿی اػت و‪ ٝ‬ثب حذالُ ‪ٞ‬ضی‪ ٚ ٝٙ‬ثب ث‪ٟ‬ش‪ٜ‬‬
‫ٌیشی اص دا٘ؾ س‪ٚ‬ص ٔیت‪ٛ‬اٖ ث‪ ٝ‬ا٘تمبَ دا٘ؾ پشداخت ‪ ٚ‬ثشای ایٗ وبس ٘یبص ث‪ ٝ‬صٔبٖ ‪ٞ‬بی‬
‫خبف ‪ٔ ٚ‬ىبٖ ‪ٞ‬بی خبف ٘یؼت ‪ ٚ‬ؿٕب ٔیت‪ٛ‬ا٘یذ ث‪ ٝ‬ساحتی دس ٔ‪ٙ‬ضَ اص عشیك ای‪ٙ‬تش٘ت دس‬
‫والع ‪ٞ‬بی آ٘الیٗ ٔب ؿشوت وشد‪ ٚ ٜ‬ث‪ ٝ‬ثبال ثشدٖ ػغح ػّٕی خ‪ٛ‬د ‪ ٚ‬یب ػبصٔبٖ خ‪ٛ‬د وٕه‬
‫و‪ٙ‬یذ‪ٚ .‬ة آٔ‪ٛ‬ص ‪ DVD‬آٔ‪ٛ‬صؿی ٘یؼت ‪ ٚ‬ؿٕب ثب ؿشوت دس والع ٔدبصی ثب اػتبد ‪ ٚ‬دیٍش‬
‫دا٘ـد‪ٛ‬یبٖ تؼبُٔ داسیذ ‪ ٚ‬ث‪ ٝ‬ؿٕب دس دسن ث‪ٟ‬تش ٔغبِت آٔ‪ٛ‬صؿی وٕه خ‪ٛ‬ا‪ٞ‬ذ وشد ‪.‬‬
‫تٕبٔی دا٘ـد‪ٛ‬اٖ دس ع‪ َٛ‬د‪ٚ‬س‪ ٜ‬دس ‪ LMS‬فؼبِیت ‪ٞ‬بیی سا پـت ػش ٔیٍزسا٘‪ٙ‬ذ و‪ ٝ‬دس‬
‫٘‪ٟ‬بیت ث‪ ٝ‬آ٘‪ٟ‬ب ٕ٘ش‪ ٜ‬آٔ‪ٛ‬صؿی تؼّك خ‪ٛ‬ا‪ٞ‬ذ ٌشفت ‪ .‬ثشای ٔـب‪ٞ‬ذ‪ ٕٝ٘ٛ٘ ٜ‬والع ‪ٞ‬ب ٔیت‪ٛ‬ا٘یذ‬
‫ث‪ٚ ٝ‬ة ػبیت ‪ٚ‬ة آٔ‪ٛ‬ص ٔشاخؼ‪ ٝ‬و‪ٙ‬یذ‪.‬‬
‫تٕبٔی د‪ٚ‬س‪ٞ ٜ‬بی ‪ٚ‬ة آٔ‪ٛ‬ص داسای ٔذسن پبیبٖ د‪ٚ‬س‪ٔ ٜ‬ؼتجش ‪ٞ‬ؼت‪ٙ‬ذ‪.‬‬

‫‪Knowledge is Power . . .‬‬

‫‪ ٚ BGP Backdoor‬ؿ‪ٛٙ‬د تشافیه دس س‪ٚ‬تش ‪ٞ‬بی ػیؼى‪ٛ‬‬

‫‪l3l4ck.$c0rpi0n‬‬

‫س‪ٚ‬تش ‪ٞ‬بی ػیؼى‪ٛ‬‬

‫ت‪ٛ‬خ‪ : ٝ‬ثشای ٔغبِؼ‪ ٝ‬ایٗ ٔمبِ‪ ،ٝ‬ثبیذ اعالػبت ٔىفی دس ٔ‪ٛ‬سد پش‪ٚ‬تىُ ‪ٞ‬بی ٔؼیشیبثی‬
‫داؿت‪ ٝ‬ثبؿیذ و‪ ٝ‬ایٗ ٔغبِت صیش ٔدٕ‪ٛ‬ػ‪ ٝ‬ای اص ػشفلُ ‪ٞ‬بی ٔذاسن‬

‫‪OSPF ٚ BGP‬‬

‫‪ٔ CCNP Route ٚ CCNA‬ی‬

‫ثبؿذ‪.‬‬
‫ٔغّجی و‪ ٝ‬دس ایٗ ٔمبِ‪ ٝ‬تالؽ ٔی ؿ‪ٛ‬د ثشای ؿٕب خ‪ٛ‬ا٘‪ٙ‬ذ‪ٔ ٜ‬حتشْ ثیبٖ ٌشدد‪ٔ ،‬ف‪ٟٔٛ‬ی ٘ضدیه ث‪ٝ‬‬
‫ٔف‪ Backdoor ْٟٛ‬و‪ ٝ‬دس د٘یبی أ‪ٙ‬یت ؿجى‪ٛٔ ٝ‬سد اػتفبد‪ ٜ‬لشاس ٔی ٌیشد‪ٔ ،‬ی ثبؿذ‪ .‬دس ای‪ٙ‬دب ٔب‬
‫ٔی خ‪ٛ‬ا‪ٞ‬یٓ تالؽ و‪ٙ‬یٓ و‪ ٝ‬یه ‪ٛٔ route‬سد ٘ظش خ‪ٛ‬دٔبٖ سا ث‪ ٝ‬ك‪ٛ‬ست پ‪ٟٙ‬ب٘ی ت‪ٛ‬ػظ ایٗ دسة‬
‫پـتی ‪ BGP‬دس داخُ ‪ route table‬یه ‪ BGP Router‬لشاس د‪ٞ‬یٓ تب ثت‪ٛ‬ا٘یٓ ٔؼیش حشوت ‪ٞ packet‬ب ثشای سػیذٖ ث‪ ٝ‬یه ‪ network‬سا اص یه ‪ٛٔ router‬سد ٘ظش خ‪ٛ‬دٔبٖ ػج‪ٛ‬س‬
‫د‪ٞ‬یٓ تب ت‪ٛ‬ػظ ‪ٕٞ‬یٗ س‪ٚ‬تش ٔ‪ٛ‬سد ٘ظش و‪ ٝ‬دس اختیبس ٔب ٔی ثبؿذ‪ ،‬ػّٕىشد‪ٞ‬بیی ‪ٕٞ‬چ‪ ٚ Sniffing ٖٛ‬یب حٕالت ‪ MITM‬ثش س‪ٚ‬ی تشافیه ػج‪ٛ‬سی اػٕبَ و‪ٙ‬یٓ‪ٕٞ .‬ب٘غ‪ٛ‬س و‪ ٝ‬دس ل‪ٛ‬ا٘یٗ‬
‫ا٘تخبة ٔؼیش‪ٞ‬بی پیـ‪ٟٙ‬بدی ‪ BGP‬داسیٓ‪ IGP Route ،‬دس ٔمبثُ ‪ eBGP‬تشخیح داد‪ٔ ٜ‬ی ؿ‪ٛ‬د‪ .‬حبَ ت‪ٛ‬پ‪ِٛٛ‬طی صیش سا دس ٘ظش ٔی ٌیشیٓ ‪:‬‬
‫‪Directly Connected Route - 0‬‬
‫‪Static route - 1‬‬
‫‪eBGP - 20‬‬
‫‪Internal EIGRP - 90‬‬
‫‪OSPF - 110‬‬
‫‪iBGP – 200‬‬

‫حبَ ؿش‪ٚ‬ع ث‪ ٝ‬ت‪ٙ‬ظیٓ س‪ٚ‬تش‪ٞ‬بی ٔ‪ٛ‬سد ٘ظش ٔی و‪ٙ‬یٓ‪ .‬دس اثتذا ‪ٞ interface‬بی س‪ٚ‬تش‪ٞ‬بی ‪ R2,R3,R4‬سا ‪ٔ config‬ی و‪ٙ‬یٓ و‪ ٝ‬دس تل‪ٛ‬یش صیش ت‪ٙ‬ظیٕبت اػٕبَ ؿذ‪ ٜ‬ثش س‪ٚ‬ی س‪ٚ‬تش ‪ R2‬سا‬
‫ٔـب‪ٞ‬ذ‪ٔ ٜ‬ی فشٔبئیذ ‪:‬‬

‫دس تل‪ٛ‬یش ٔمبثُ ت‪ٙ‬ظیٕبت اػٕبَ ؿذ‪ ٜ‬ثش س‪ٚ‬ی س‪ٚ‬تش ‪ R3‬سا ٔـب‪ٞ‬ذ‪ٔ ٜ‬ی فشٔبئیذ ‪:‬‬

‫دس تل‪ٛ‬یش صیش ت‪ٙ‬ظیٕبت اػٕبَ ؿذ‪ ٜ‬ثش س‪ٚ‬ی س‪ٚ‬تش ‪ R4‬سا ٔـب‪ٞ‬ذ‪ٔ ٜ‬ی فشٔبئیذ ‪:‬‬

‫حبَ پغ اص ای‪ٙ‬ى‪ ٝ‬آدسػ‪ٟ‬بی ‪ٛٔ IP‬سد ٘ظش ‪ٞ‬ش وذاْ اص س‪ٚ‬تش‪ٞ‬ب سا ثش س‪ٚ‬ی ‪ٞ interface‬بی ٔشث‪ٛ‬ع‪ ٝ‬آ٘‪ٟ‬ب ت‪ٙ‬ظیٓ وشدیٓ‪ ،‬دس اثتذا ت‪ٙ‬ظیٕبت ‪ BGP‬ثیٗ س‪ٚ‬تش‪ٞ‬بی ‪ٕٞ ٚ R2-R4‬چ‪ٙ‬یٗ ‪R4-‬‬

‫‪ R3‬سا ا٘دبْ ٔی د‪ٞ‬یٓ‪ .‬ػپغ ت‪ٙ‬ظیٕبت ‪ OSPF‬سا ثیٗ س‪ٚ‬تش‪ٞ‬بی ‪ R2-R3‬ا٘دبْ ٔی د‪ٞ‬یٓ و‪ ٝ‬دس تلب‪ٚ‬یش صیش‪ ،‬ث‪ ٝ‬تشتیت ٔشاحُ ا٘دبْ آ٘‪ٟ‬ب سا ٔـب‪ٞ‬ذ‪ٔ ٜ‬ی فشٔبئیذ ‪:‬‬

‫تلب‪ٚ‬یش صیش ٔشث‪ٛ‬ط ث‪ ٝ‬ت‪ٙ‬ظیٕبت )‪ OSPF(IGP‬ثیٗ س‪ٚ‬تش‪ٞ‬بی ‪ٔ R2-R3‬ی ثبؿذ ‪:‬‬

‫حبَ ثشای اعٕی‪ٙ‬بٖ اص دسػتی اػٕبَ ت‪ٙ‬ظیٕبت ف‪ٛ‬ق‪ٔ routing table ،‬شث‪ٛ‬ط ث‪ ٝ‬س‪ٚ‬تش ‪R2‬‬

‫سا دس تل‪ٛ‬یش ٔـب‪ٞ‬ذ‪ٔ ٜ‬ی فشٔبئیذ‬
‫حبَ ٔی دا٘یٓ و‪ ٝ‬استجبط‬

‫‪ FastEthernet‬ثیٗ س‪ٚ‬تش‪ٞ‬بی ‪ٚ R2-R3‬خ‪ٛ‬د داسد‪ ،‬أب‬

‫‪ٕٞ‬چ‪ٙ‬بٖ اص ٔؼیش ع‪ٛ‬ال٘ی ‪ R2 > R4 > R3‬و‪ ٝ‬ختٓ ث‪ٔ R3 Loopback ٝ‬ی ؿ‪ٛ‬د اػتفبد‪ٜ‬‬
‫ٔی ٌشدد‪ .‬ػ‪ٛ‬اَ ای‪ٙ‬دبػت و‪ ٝ‬چٍ‪ ٝ٘ٛ‬ایٗ ٔـىُ سا ثشعشف و‪ٙ‬یٓ ؟ ثشای ایٗ وبس‬

‫اص یه ‪ backdoor‬اػتفبد‪ٔ ٜ‬ی و‪ٙ‬یٓ‪.‬‬

‫ثشای ایٗ وبس اص دػت‪ٛ‬س صیش خ‪ٟ‬ت اػٕبَ ‪ٛٔ backdoor‬سد ٘ظش خ‪ٛ‬دٔبٖ اػتفبد‪ٔ ٜ‬ی و‪ٙ‬یٓ و‪ ٝ‬دس تل‪ٛ‬یش ثؼذی ‪ ٓٞ‬كحت ػّٕىشد آٖ سا ٔـب‪ٞ‬ذ‪ٔ ٜ‬ی فشٔبئیذ ‪:‬‬
‫>‪network <network to be snuck in through the backdoor> mask <netmask><backdoor‬‬

‫‪ٕٞ‬ب٘غ‪ٛ‬س و‪ٔ ٝ‬ـب‪ٞ‬ذ‪ٔ ٜ‬ی فشٔبئیذ‪ ،‬یه ‪ backdoor‬ثشای ‪ 3.3.3.3/32‬آٔبد‪ ٜ‬وشد‪ ٜ‬ایٓ و‪ ٝ‬ثب‬

‫ٍ٘ب‪ ٜ‬وشدٖ ث‪ ٝ‬ت‪ٙ‬ظیٕبت ‪ routing table‬ثش س‪ٚ‬ی س‪ٚ‬تش ‪ٔ R2‬ت‪ٛ‬خ‪ٔ ٝ‬ی ؿ‪ٛ‬یٓ و‪ ٝ‬س‪ٚ‬تش ث‪ ٝ‬ك‪ٛ‬ست‬

‫ثالدسً٘ آدسع ‪ 3.3.3.3/32‬یبدٌشفت‪ ٝ‬اص ‪ OSPF‬سا ث‪ ٝ‬آدسع فشاٌشفت‪ ٝ‬اص ‪ eBGP‬تشخیح ٔی‬

‫د‪ٞ‬ذ‪.‬‬

‫‪ٕٞ‬ب٘غ‪ٛ‬س و‪ ٝ‬دس اثتذای ٔمبِ‪ ٝ‬ت‪ٛ‬ضیح داد‪ ٜ‬ؿذ‪ ،‬ایٗ س‪ٚ‬ؽ ثشای ٔ‪ٛ‬الؼی وبسثشد داسد و‪ٝ‬‬

‫ٔب ٔی خ‪ٛ‬ا‪ٞ‬یٓ اص یه ‪ router‬و‪ ٝ‬دػتشػی ث‪ ٝ‬آٖ ٘ذاسیٓ‪( ،‬أب ث‪ ٝ‬یه ‪ٕٞ router‬ؼبی‪ ٝ‬آٖ‬

‫دػتشػی داسیٓ)‬

‫ٔؼیش تشافیه ػج‪ٛ‬سی سا ع‪ٛ‬سی ث‪ ٝ‬س‪ٚ‬تشی و‪ ٝ‬ث‪ ٝ‬آٖ دػتشػی داسیٓ تغییش د‪ٞ‬یٓ و‪ ٝ‬ثت‪ٛ‬ا٘یٓ آٖ تشافیه سا‬
‫ٔ‪ٛ‬سد ثشسػی لشاس داد‪ ٚ ٜ‬تغییشات ٔ‪ٛ‬سد ٘ظش خ‪ٛ‬د سا ثش س‪ٚ‬ی ثخـی اص تشافیه آٖ اػٕبَ و‪ٙ‬یٓ ‪ ٚ‬یب ای‪ٙ‬ى‪ٝ‬‬
‫اعالػبت حؼبػی سا اص تشافیه ٔ‪ٛ‬سد ٘ظش اػتخشاج ٕ٘بییٓ‬

‫پبػخ ٔؼبثم‪ ٝ‬ؿٕبس‪ ٜ‬لجُ‬

‫ػّیشضب چٍی‪ٙ‬ی (‪)alireza@offsec.ir‬‬

‫آ٘بِیض ثبی‪ٙ‬شی‬

‫اثتذا ثش٘بٔ‪ ٝ‬سا ثب یه ‪ PE Analyzer‬چه ٔیى‪ٙ‬یٓ ‪:‬‬
‫‪ٕٞ‬ب٘غ‪ٛ‬س و‪ٔ ٝ‬یجی‪ٙ‬یذ ثش٘بٔ‪ ٝ‬ثب ‪ٛ٘ Delphi‬ؿت‪ ٝ‬ؿذ‪ ٜ‬اػت ‪ ٚ‬ت‪ٛ‬ػظ‬
‫‪ٞ‬یچ تبثغ چىیذ‪ ٜ‬ػبص ‪ ٓٞ‬سٔضٍ٘بسی ٘ـذ‪ ٜ‬اػت ث‪ ٝ‬ایٗ ٔؼ‪ٙ‬ی‬
‫اػت و‪ ٝ‬پؼ‪ٛ‬سد ٔب ث‪ ٝ‬ك‪ٛ‬ست ٔت‪ٙ‬ی ‪ٞ‬ؼت حبَ ثش٘بٔ‪ ٝ‬سا دس یه‬
‫دیجبٌش ٔب٘‪ٙ‬ذ ‪ ollydbg‬ثبصٌزاسی ‪ ٚ‬اخشا ٔیى‪ٙ‬یٓ ‪ ،‬ػپغ یه ٘بْ ‪ٚ‬‬
‫پؼ‪ٛ‬سد ثشای أتحبٖ ‪ٚ‬اسد ٔیى‪ٙ‬یٓ ‪:‬‬

‫‪ٕٞ‬ب٘غ‪ٛ‬س و‪ٔ ٝ‬یجی‪ٙ‬یٓ ثب پیغبْ ‪ٛٔ Bad Serial‬اخ‪ ٝ‬ؿذیٓ‪.‬‬
‫ثبیذ ٔحُ ایٗ پیغبْ سا دس دیجبٌش پیذا و‪ٙ‬یٓ تب ث‪ ٝ‬تبثغ و‪ ٝ‬ػشیبَ سا چه ٔیى‪ٙ‬ذ ثشػیٓ ثشای پیذا وشدٖ ٔحُ ایٗ پیغبْ د‪ ٚ‬سا‪ ٜ‬داسیٓ ‪:‬‬
‫سا‪ ٜ‬ا‪ َٚ‬ای‪ٙ‬ى‪ ٝ‬د٘جبَ ٔتٗ پیغبْ یؼ‪ٙ‬ی ‪ Bad Serial‬ثٍشدیٓ و‪ ٝ‬ثشای ایٗ وبس اص لؼٕت ‪ All refernced text string‬اػتفبد‪ٔ ٜ‬یى‪ٙ‬یٓ ‪..‬‬

‫سا‪ ٜ‬د‪ ْٚ‬اػتفبد‪ ٜ‬اص تبثغ ‪ٞ MessageBoxW‬ؼت ثشای ای‪ٙ‬ىبس ثبیذ ثش‪ٚ‬ی ایٗ تبثغ یه ‪ Break Point‬ثضاسیٓ ثشای ایٗ وبس ٔیت‪ٛ‬ا٘یذ اص پالٌیٗ ‪ IDAFicator‬یب اص لؼٕت ‪All‬‬

‫‪ intermodular calls‬اػتفبد‪ ٜ‬و‪ٙ‬یذ أب ثشای ػ‪ِٟٛ‬ت وبس اص پالٌیٗ ‪ IDAFicator‬اػتفبد‪ٔ ٜ‬یى‪ٙ‬یٓ‪:‬‬

‫ثش٘بٔ‪ ٝ‬سا اخشا ٔیى‪ٙ‬یٓ ‪ ٚ‬یه ٘بْ ‪ ٚ‬ػشیبَ ث‪ ٝ‬ثش٘بٔ‪ٔ ٝ‬یذ‪ٞ‬یٓ ‪ٔ ،‬یجی‪ٙ‬یذ و‪ ollydbg ٝ‬ثش‪ٚ‬ی تبثغ ‪MessageBoxW‬‬

‫ایؼتبد ‪:‬‬

‫‪ٕٞ ٚ‬ی‪ٙ‬غ‪ٛ‬س دس لؼٕت ‪ Registers‬یه سؿت‪ٔ ٝ‬ـب‪ٞ‬ذ‪ٔ ٜ‬یى‪ٙ‬یٓ ‪:‬‬

‫احتٕبَ ای‪ٙ‬ى‪ ٝ‬ایٗ ػشیبَ ‪ٚ‬الؼی ثبؿ‪ ٝ‬صیبد ‪ٞ‬ؼت ‪ ،‬پغ ایٗ ػشیبَ ثشای ٘بْ ‪ Offsec‬أتحبٖ ٔیى‪ٙ‬یٓ ‪:‬‬
‫ثّ‪ ٝ‬ػشیبَ دسػت ‪ٞ‬ؼت أب ٔب وبس ٔب تٕبْ ٘ـذ‪ ! ٜ‬ثبیذ اٍِ‪ٛ‬سیتٓ ػبخت ػشیبَ سا پیذا و‪ٙ‬یٓ ‪ ٚ‬یه‬
‫ویدٗ ث‪ٛٙ‬یؼیٓ ‪:‬‬
‫ثشای پیذا وشدٖ اٍِ‪ٛ‬سیتٓ ػشیبَ ثبیذ اص تبثغ ‪ MessageBoxW‬خبسج ؿ‪ٛ‬یٓ ثشای ای‪ٙ‬ىبس اص ‪ Step Over‬یب‬
‫وّیذ ‪ F8‬اػتفبد‪ٔ ٜ‬یى‪ٙ‬یٓ تب ث‪ return ٝ‬ثشػیٓ ‪:‬‬

‫پغ اص خبسج ؿذٖ اص تبثغ ‪ MessageBoxW‬ث‪ ٝ‬لؼٕت چه وشدٖ ػشیبَ ٔیشػیٓ ‪:‬‬

‫د‪ ٚ‬پیغبْ ‪ …. Good ٚ Bad Serial‬سا ٔـب‪ٞ‬ذ‪ٔ ٜ‬یى‪ٙ‬یٓ ‪ .‬وٕی ثبالتش ا‪ َٚ‬س‪ٚ‬ی‪ ٝ‬یه ‪ٔ break point‬یٍزاسیٓ ‪:‬‬

‫د‪ٚ‬ثبس‪ ٜ‬ثش٘بٔ‪ ٝ‬سا اخشا ٔیى‪ٙ‬یٓ ‪ٕٞ ٚ‬بٖ ٘بْ ‪ ٚ‬ػشیبَ سا ‪ٚ‬اسد ٔیى‪ٙ‬یٓ ‪ ٚ‬ثش‪ٚ‬ی دوٕ‪ Check ! ٝ‬وّیه ٔیى‪ٙ‬یٓ دیجبٌش ثبیذ ثش‪ٚ‬ی ‪ٕٞ‬یٗ ‪ٔ Break point‬ت‪ٛ‬لف ؿ‪ٛ‬د ثش٘بٔ‪ ٝ‬سا ‪Setp‬‬

‫)‪ Over (F8‬د٘جبَ ٔیى‪ٙ‬یٓ ‪:‬‬

‫دس ‪ Call‬ا‪٘ َٚ‬بْ و‪ٚ ٝ‬اسد وشدیٓ ثبسٌزاسی ٔیـ‪ٛ‬د ‪:‬‬
‫دس ‪ Call‬ثؼذی تٕبْ حش‪ٚ‬ف سؿت‪ٔ ٝ‬ب ث‪ ٝ‬ػ‪ٛٙ‬اٖ ٘بْ ث‪ ٝ‬حش‪ٚ‬ف ثضسي تجذیُ ٔیـ‪ٛ‬د ‪:‬‬

‫دس ‪ Call‬ثؼذی تؼذاد حش‪ٚ‬ف و‪ ٝ‬ثشای فیّذ ‪ٚ Name‬اسد وشدیٓ ثب كفش ٔمبیؼ‪ٔ ٝ‬یـ‪ٛ‬د و‪ ٝ‬اٌش ‪ٞ‬یچ ٘بْ ‪ٚ‬اسد ٘ىشدیٓ ثب یه پیغبٔی س‪ ٚ‬ث‪ ٝ‬س‪ٔ ٚ‬یـ‪ٛ‬یٓ ‪:‬‬

‫پغ اص پشؽ اص ‪ JNZ‬دس ك‪ٛ‬ستی و‪ ٝ‬تؼذاد حش‪ٚ‬ف ٔب ثیـتش اص كفش ث‪ٛ‬د ث‪ ٝ‬یه ‪ Call‬ثشٔیخ‪ٛ‬سیٓ و‪ ٝ‬یه سؿت‪ ٝ‬ثشٌشداد٘‪ ٝ‬اػت و‪ ٝ‬ؿجی‪ ٝ‬ث‪ ٖٕٛٞ ٝ‬ػشیبِی ‪ٞ‬ؼت و‪ ٝ‬ا‪ َٚ‬ثشای‬
‫‪ Offsec‬ػبخت‪ ٝ‬ؿذ‪ ٜ‬ث‪ٛ‬د ثب ایٗ تفب‪ٚ‬ت ‪ٞ‬یچ فبكّ‪ ٝ‬ای دس وبس ٘یؼت‪.‬‬

‫)”‪Stack SS:*0018F538+=01EFA86C, (UNICODE "moluluarkumi‬‬
‫)”‪(“EDX 0200A8BC UNICODE "m-o-l-u-l-u-a-r-k-u-m-I‬‬

‫دس ٘تید‪ ٝ‬ثش‪ٚ‬ی ایٗ ‪ Call‬و‪ ٝ‬ػشیبَ ٔب سا ػبخت یه‬

‫‪ٔ break point‬یٍزاسیٓ ‪ٚ‬‬

‫‪ ollydbg‬سا ‪ٔ restart‬یى‪ٙ‬یٓ ‪ ٚ‬ثش٘بٔ‪ ٝ‬سا اخشا ٔیى‪ٙ‬یٓ تب ث‪ ٝ‬ایٗ ٘مغ‪ )Call ( ٝ‬ثشػیٓ‬
‫ػپغ ‪ٚ‬اسد ‪ٔ Call‬یـ‪ٛ‬یٓ ثشای ای‪ٙ‬ىبس اص ‪ Step into‬یب وّیذ ‪ f7‬اػتفبد‪ٔ ٜ‬یى‪ٙ‬یٓ‪.‬‬
‫پغ اص ‪ٚ‬اسد ؿذٖ ث‪ Call ٝ‬ثبیذ د٘جبَ حّم‪ ٝ‬ػبخت ػشیبَ ثبؿیٓ ‪:‬‬

‫لؼٕت خبوؼتشی حّم‪ ٝ‬ػبخت ػشیبَ اػت‪ٔ .‬یجی‪ٙ‬یذ و‪ٞ ٝ‬ش حشف اص سؿت‪ ٝ‬ای و‪ ٝ‬ث‪ ٝ‬ػ‪ٛٙ‬اٖ ٘بْ ‪ٚ‬اسد ؿذ‪ ٜ‬اػت ٔؼبدَ د‪ ٚ‬حشف دیٍش اػت ث‪ ٝ‬ػ‪ٛٙ‬اٖ ٔثبَ ‪:‬‬

‫حبَ ٔب ثبیذ ٘بْ سا ث‪ ٝ‬ك‪ٛ‬ست ‪ٚ abcdefghijklmnopqrstuvwxyz‬اسد و‪ٙ‬یٓ تب ٔؼبدَ ‪ٞ‬ش حشف سا پیذا و‪ٙ‬یٓ ‪ ،‬پغ داسیٓ‪:‬‬

‫ث‪ ٝ‬دیجبٌش ثشٔیٍشدیٓ ‪ ،‬ث‪ Call ٝ‬ثؼذی و‪ ٝ‬ػشیبَ سا ٔیؼبصد ٍ٘ب‪ٞ‬ی ٔیب٘ذاصیٓ‪.‬‬
‫‪ٕٞ‬ب٘غ‪ٛ‬سی و‪ٔ ٝ‬یجی‪ٙ‬یذ ث‪ ٝ‬اصاسی ‪ٞ‬ش حشف وبساوتش "‪ "-‬اضبف‪ٔ ٝ‬یـ‪ٛ‬د ‪ ٚ‬دس ٘‪ٟ‬بیت آخشیٗ‬
‫‪ Call‬ثشای چه وشدٖ ػشیبَ اػت‪.‬‬

‫‪ٕٞ‬ب٘غ‪ٛ‬س و‪ٔ ٝ‬یجی‪ٙ‬یذ ػشیبَ ا‪ِٚ‬ی و‪ٚ ٝ‬اسد وشدیٓ ( ‪ )alireza‬ث‪ٛ‬د ثب ػشیبَ دسػت ٔمبیؼ‪ٝ‬‬
‫ٔیـ‪ٛ‬د و‪ ٝ‬اٌش دسػت ث‪ٛ‬د پیغبْ … ‪ ٚ Good‬اٌش اؿتجب‪ ٜ‬ث‪ٛ‬د پیغبْ ‪ Bad Boy‬ظب‪ٞ‬ش ٔیـ‪ٛ‬د‪.‬‬

‫دس ٘‪ٟ‬بیت یه ویدیٗ ٔی‪ٛٙ‬یؼیٓ و‪ ٝ‬ػ‪ٛ‬سع آٖ سا ٔیت‪ٛ‬ا٘یذ اص ِی‪ٙ‬ه صیش دسیبفت و‪ٙ‬یذ‪.‬‬
‫‪http://www.mediafire.com/download/x7gh4tckko39o9j/source.rar‬‬

‫داّ٘‪ٛ‬د ‪ٚ‬یذئ‪: ٛ‬‬
‫‪http://www.mediafire.com/download/f29b5sl0pxm781b/video-k.rar‬‬

‫‪hepl3r‬‬
‫ثش٘ذٌبٖ ٔؼبثم‪ ٝ‬ؿٕبس‪ ٜ‬لجُ‬

‫‪AHA‬‬

‫ث‪ ٝ‬تشتیت‬
‫ثشاػبع سا‪ٞ‬ىبس اسائ‪ ٝ‬ؿذ‪ٜ‬‬

‫‪Epsil0nzer0‬‬

‫‪ ٚ‬اٍِ‪ٛ‬سیتٓ ٘تید‪ٌ ٝ‬یشی‬
‫‪Al.ch12‬‬

‫ٔؼبثم‪ ٝ‬ی ؿٕبس‪ ٜ‬د‪ْٚ‬‬

‫فشدیٗ اِّ‪ٟٛ‬یشدی ٘ظ٘ذ (‪)fardin@offsec.ir‬‬

‫٘ف‪ٛ‬ر ث‪ ٝ‬ؿجى‪ٞ ٝ‬بی ثیؼیٓ‬

‫یه فبیُ ‪ٕٞ cap‬شا‪ٔ ٜ‬مبِ‪ ٝ‬ثشای د‪ٚ‬ػتبٖ ضٕیٕ‪ ٝ‬ؿذ‪ .ٜ‬ایٗ فبیُ ‪ cap‬ثب اٍِ‪ٛ‬سیتٓ‬
‫ؿى‪ٙٙ‬ذ‪ wep ٜ‬سٔضٌزاسی ؿذ‪ ٚ ٜ‬د‪ٚ‬ػتبٖ ثبیذ وّیذ س‪ ٚ‬ثشای ٔب پیذا و‪ٙٙ‬ذ‪.‬‬

‫یه سا‪ٕٙٞ‬بیی ‪ :‬تؼذاد ‪ IV‬دس ثؼت‪ ٝ‬روش ؿذ‪ 30 ٜ‬ػذد ٔیجبؿذ و‪ ٝ‬اك‪ٛ‬الَ ثشای‬
‫ؿىؼت‪ٙ‬ؾ ٘یبص ث‪ ٝ‬ثبالی ‪ 5000‬تب ‪ٞ‬ؼت ‪٘ ٚ‬ىت‪ٔ ٝ‬ؼبثم‪ ٝ‬دس ‪ٕٞ‬یٗ ٔ‪ٛ‬ض‪ٛ‬ع ٘‪ٟ‬فت‪ٝ‬‬
‫اػت ‪.‬‬
‫اعالػبت ثؼت‪:ٝ‬‬
‫‪Essid : Joker‬‬
‫‪Bssid : 00:26:5A:51:64:72‬‬
‫‪Alguritm : WEP‬‬
‫‪Encryption Strength : 64bit‬‬

‫د‪ٚ‬ػتبٖ ٔیت‪ٙ٘ٛ‬ذ پبػخ ٔؼبثم‪ ٝ‬س‪ ٚ‬اص عشیك آدسع صیش ثشای ٔدّ‪ ٝ‬اسػبَ و‪ٙٙ‬ذ ‪:‬‬
‫‪fardin@offsec.ir‬‬

‫فبیُ ضٕیٕ‪http://offsec.ir/challenges/offsec-wh-challenge-2.zip : ٝ‬‬

‫اص ‪ٕٞ‬شا‪ٞ‬ی ؿٕب ػضیضاٖ‪ ،‬ػپبػٍزاسیٓ!‬
‫خ‪ٟ‬ت ثبصخ‪ٛ‬سد دیذٌب‪ / ٜ‬ا٘تمبد ‪ /‬پیـ‪ٟٙ‬بد ‪ٕٞ /‬ىبسی ‪ٔ ... ٚ‬یت‪ٛ‬ا٘یذ‬
‫اص عشیك ایٕیُ ‪:‬‬

‫‪we@offsec.ir‬‬
‫استجبط ثشلشاس وشد‪ ٚ ٜ‬یب دس‪ٚ‬ثالي ٔب ا٘تـبس د‪ٞ‬یذ ‪:‬‬

‫‪http://offsec.ir/blog‬‬
‫‪fb.com/offsec.ir‬‬

‫ثب احتشاْ‬