الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طريقة إحترافية لكتابة shellcode

بدأه JAAS في 21 مارس 2005 · 23 رد · 15,204 مشاهدة · في مواضيع الأخ JAAS في الأسمبلي وتحليل التطبيقات البرمجية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا ,,,

وجدت أداة وطريقة جديدة لكتابة shellcode بطريقة سريعة وإحترافية

بالإضافة إلى أنها تبين لك ما معنى shellcode

-

لنفرض أنك تريد دمج برنامج صغير بداخل برنامجك , أو أنك تريد حقن فايروس في الملفات

أو أنك تريد إستغلال ثغرة - في كل هذة الأمور فإنك تحتاج الشفرة الثنائية 01 للكود الذي تريد إستخدامة

إلى يومنا هذا فإن الطريقة المستخدمة هي كتابة الرموز للكود كامل بإستخدام الهكس, وهي طريقة متعبة طبعاً

اليوم وأنا أتجول وجدت أداة تسرع لك الموضوع وتكتب الكود الثنائي بأفضل طريقة

---------------------

قبل كل شيء نكتب الكود الذي نريد تنفيذة ( أو البرنامج الذي نريد حقنة ) بأي لغة

بعد ذلك نفتح الملف بواسطة olly وننسخ كود الإسمبلي للبرنامج إلى محرر النصوص بشكل عادي

بعد ذلك نبدأ بإستخدام الأدوات الموجودة في الملف المرفق لصنع shellcode للغة السي أو الإسمبلي

الأدوات الموجودة في الملف المرفق هي NASM.EXE و ShellCode.exe

-

لنفرض أن كود الأوامر التي نريد إستخدامها بهذا الشكل

BITS 32
push ebp
mov ebp,esp
push ebx
mov  byte [ebp-4],63h
mov  byte [ebp-3],6Dh
mov  byte [ebp-2],64h
mov  byte [ebp-1],0
push 5
lea  eax,[ebp-4]
push eax
mov eax,0x7c86114d
call eax
push 1
mov eax,0x7c86114d

بعد أن قمنا بنسخ الكود من olly إلى محرر النصوص

إحفظ الملف النصي بإسم test.asm

ثم قم بترجمتة بإستخدام nams تجدة في الملف المرفق

الترجمة بهذة الطريقة

nasm -s -fbin test.asm

سينتج لك الملف TEST

قم بتشغيل أداة صناعة shellcode ( قد تظهر لك رموز غريبة , أعتقد أنها رموز صينية وليست خطأ )

chack007.gif

في مثالنا نغير إسم الملف إلى test بهذة الطريقة

shellcode TEST

لينتج لك في النهاية شفرة shellcode وهي عبارة عن ملف بإسم TheCode.txt

إفتح الملف لتجد shellcode قم بنسخة وإضافة إلى مترجم السي أو إلى أي مترجم

وقم بإستخدامة بهذة الطريقة

chack010.gif

ملاحظة : إذا أردت shellcode لملف exe كامل ( يعني تريد حقن ملف )

تكتب الأمر

shellcode file.exe

لينتج لك shellcode للملف التنفيذي

وبالتوفيق

sscc.zip

تم تعديل هذه المشاركة بواسطة jaas في 21 مارس 2005 في 01:34

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#2

السلام عليكم

من المحتمل ان تجد فى الشيل كود الNUll يعنى الالصفر بالمانى لو وجد

لن يعمل الشيل كود هذه الطريقه لمعرفت الnull قم بعمل disassembly او الolly للشيل كود

ثم انظر لجانب الهيكس قم بمعرفت مكان الشيل كود ثم انظر للجانب الايمن لتجد مثلا هكذا

1234500 هنا تكمن الخطوره فى اخر بايت وهما 00

لينا عوده فى طريقه حلها لانى مش فى المنزل

والله اعلــــم

#3

لاعتقد انها احترافيه :) فانها لا فائده منها ابدا وتقلل الاحتراف من وجه نظري

فانا ارى العمل اليدوي الكامل :) احسن لانك راح تحس متعوب فيه والشل الي

ينكتب بيدك احسن من اوتو يطلعه لك :) عشان تعرف بلضبط وش الي تسويه ( وجه نظر )

على كل حال شكرا على البرنامج الجميل :rolleyes:

تم تعديل هذه المشاركة بواسطة Qnix في 21 مارس 2005 في 15:28

#4

شكر يا jaas على تلك الاداه السهله

وفقك الله :)

Nothing Beat the Human Brain

موبايل 020104927122

#5

:o !

موضوع قيم جدا ,فمن يريد البدا ولا يجد الطريق يستطيع البدا من هنا...

فانا مثلا قراه مره مقال بالانجليزي عن كيفه كتابه ال Shellcode لكني لم اتقنها بشكل المطلوب...

وهذه الطريقه بغد النظر اذا كانت سهله جدا او لا تفي بالغرض لاشياء كثيره... ;)

تقبل تحياتي ,,

#6

أرجوا أن يكون هناك شرح أكبر لموضوع المؤشرات و طرق التعامل معها مع الـدوال

لانى لم أفهم

void (* funct)()

Nothing to mention except that I am Muslim

Using your brain is not bad as you think

My Blog

logo.jpg

#7

طيب يا jaas ، موضوع الشيل كود ده محيرنى أصلا ومش عارف ما الفائده منه الصراحه ،،

مما يتبين من المثال المرفق أعلاه ، أن البرنامج أخذ سطور الأسمبلى وحولها إلى سطور بلغة الأله ShellCode ومن ثم وضعها داخل function in C بها array of bytes تحتوى على الكود القابل للتشغيل ،،

الداله MAIN الأن تقبل مؤشر لداله فى الذاكره ، تأخذ المؤشر وتجعله يشير إلى كود الأسمبلى الذى قمنا بكتابته بأعلى ، ومن ثم ضاعت الداله الرئيسيه حيث أنه لا يوجد ما يشير إليها الأن ؟ صح ؟

أيضا أتذكر من معرفتى القليليه بالسى أنه يمكن كتابة سطور أسمبلى مباشره داخل السى تحت asm__ ، فما فائدة كتابته وتحويله بهذه الصوره ؟

#8
اقتباس
أرجوا أن يكون هناك شرح أكبر لموضوع المؤشرات و طرق التعامل معها مع الـدوال

لانى لم أفهم

void (* funct)()

السطر عبارة عن تعريف مؤشر من نوع void

والهدف لكي نجعلة يؤشر على شفرة ال shellcode

وبعد ذلك نتصل بالكود

-------

أخي أحمد عز ؟! هذا المثال لخبطك لأنة ليس في محلة

فنحن لا نريد إستخدام الشل كود بهذة الطريقة يعني في نفس البرنامج

لأنك كما ذكرت لغة السي تدعم الكتابة بلغة الإسمبلي

ولكن مفهوم الشل كود هو أننا نريد تنفيذ كود في برنامج خارجي ؟! ولذلك نكتب بالثنائي

لأننا إذا كتبناة بلغة الإسمبلي في هذة الحالة يلزمنا مترجم للغة لكي نحولة إلى ثنائي

معنى الكلام أن shellcode إضافة للملف التنفيذي exe بعد الترجمة

أعتقد أنها وضحت الفكرة

-

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#9

اخي ,,هل يتم النسخ من برنامج Olly بالضغط مثلا على Ctrl+A وثم نسخ ؟ الاني فتحت برنامج 8.5k وقمت بنسخه الى ملف نصي ,لكن عمليه التحويل اي بملف nasm فشلت بجميع الاسطر التي بالملف... فهل يجود طريقه معنيه لنسخ الكود ؟

شكرا,

تحياتي

#10

لا ياأخي , طريقة نسخ الشفرة بالهكس

-

من خلال القائمة Binary

بعد ذلك Binary copy

وكذلك لصق كود خارجي بنفس الطريقة Binary paste

-

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#12

في نظام linux ....

الكود السمتخدم -- sh.asm --

BITS 32
global _start

_start:
  push	byte 0xb
  pop	eax
  cdq

  push	edx
  push	word 0x632d
  mov	edi, esp

  push	dword 0x0068732f
  push	dword 0x6e69622f
  mov	ebx, esp

  push	edx
  call	getstr
db "echo Qnix", 0x00
getstr:
  push	edi
  push	ebx
  mov	ecx, esp
  int	0x80

[root@Qnix shellcodes]# nasm -o sh sh.asm
[root@Qnix shellcodes]# ./s-proc -p sh


char shellcode[] =
        "\x6a\x0b\x58\x99\x52\x66\x68\x2d\x63\x89\xe7\x68\x2f\x73\x68"
        "\x00\x68\x2f\x62\x69\x6e\x89\xe3\x52\xe8\x0a\x00\x00\x00\x65"
        "\x63\x68\x6f\x20\x51\x6e\x69\x78\x00\x57\x53\x89\xe1\xcd\x80";

و كود ملف s-proc للتحويل او لتشغيل ال shellcode

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>


static void
croak(const char *msg) {
    fprintf(stderr, "%s\n", msg);
    fflush(stderr);
}

static void
usage(const char *prgnam) {
    fprintf(stderr, "\nExecute code : %s -e <file-containing-shellcode>\n", prgnam);
    fprintf(stderr, "Convert code : %s -p <file-containing-shellcode> \n\n", prgnam);
    fflush(stderr);
    exit(1);
}

static void
barf(const char *msg) {
    perror(msg);
    exit(1);
}



int
main(int argc, char **argv) {
    FILE        *fp;
    void        *code;
    int         arg;
    int         i;
    int         l;
    int     m = 15;

    struct stat sbuf;
    long        flen;   
    void        (*fptr)(void);

    if(argc < 3) usage(argv[0]);
    if(stat(argv[2], &sbuf)) barf("failed to stat file");
    flen = (long) sbuf.st_size;
    if(!(code = malloc(flen))) barf("failed to grab required memeory");
    if(!(fp = fopen(argv[2], "rb"))) barf("failed to open file");
    if(fread(code, 1, flen, fp) != flen) barf("failed to slurp file");
    if(fclose(fp)) barf("failed to close file");
    
    while ((arg = getopt (argc, argv, "e:p:")) != -1){ 
      switch (arg){ 
      case 'e': 
        croak("Calling code ...");
        fptr = (void (*)(void)) code;
        (*fptr)();
        break; 
      case 'p':       
        printf("\n\nchar shellcode[] =\n");
        l = m;
        for(i = 0; i < flen; ++i) {
          if(l >= m) {
            if(i) printf("\"\n");
            printf( "\t\"");
            l = 0;
          }
          ++l;
          printf("\\x%02x", ((unsigned char *)code));
        }
        printf("\";\n\n\n");
        
        break; 
      default :       
        usage(argv[0]); 
      } 
    } 
    
    
    return 0;
}

تم تعديل هذه المشاركة بواسطة Qnix في 12 أبريل 2005 في 00:00

#13

اليلام عليكم ,,

لدي سؤال قد فكرته به طويلا ,,

لنفرض ان لدي كود يستغل ثغره بملف معين لتنفيذ شل معين (اقصد Shellcode) ,, هل من ناحيه منطقيه او من جانب قوانين البرمجه يمكن تبديل هذا الشل ,بشل كتبته انا ؟

او ان هذا الكود يكون متكاملا مع اطرافه اي متعلق ببعضوا واذا غيرت الشل فقط يتعطل ؟؟

ارجوا التوضيح والمساعده ...

اشكركم

تحياتي ,,

#14

نعم ممكن تغييره على حسب طريقه عمل الاستغلال للثغره ... فممكن ان للشيل مساحه معينه للعمل فيها لايمكن ان تقوم بادخال مساحه اكبر منها ...

او ان للشيل طريقه عمل محدده لها دخل باستغلال الخطء للبرنامج نفسه ... الكثير والكثير ... فهو يعتمد على الخطء وطريقه كتابه الاستغلال في نفس الوقت

#15

:( قمت بعمل برنامج بواسطه masm32 واستخدمت برنامج shellcode وحولت البرنامج كامل وقارنت النتيجه مع برنامج HEXA editor

وكان هناك اختلاف كبير في منتصف الملف .....................

هل هناك خطا مع قارنته ايضا مع برنامج يحول وكان هناك اختلاف

مـــــــــــــــــــــــــــــــــــــــــــــــ كـــــــــــــــــــــل احترامي ــــــــــــــــــــــــــــــــــــــع
#16
اقتباس
هل هناك خطا مع قارنته ايضا مع برنامج يحول وكان هناك اختلاف

لاحظت هذا الخطأ من قبل ,,, المهم هذي اداة خاصة بي كتبتها من فترة واعتقد انها تحل المشكلة

24_10_05_03_24_59_1130192699img.gif

تجدها

http://www.arabteam2000.com/files/Code/fil...lcodeByJAAS.zip

-

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#17

شكرا اخ jaas ابي اسميك Mr shellcode

مـــــــــــــــــــــــــــــــــــــــــــــــ كـــــــــــــــــــــل احترامي ــــــــــــــــــــــــــــــــــــــع
#18

اشكرك اخي Qnix على ردك ...

ولقد فهمت قصدك , لكن لنفرض اني وجدت كود مع الشل المطلوب بداخله , ما هيه الطرق لتغير هذه الشل ؟ اي اقصد هل يوجد طريقه ما غير تحليل الثغره وتحليل الشل وكتابه شل اجديد ...

تقبل تحياتي ,,

#19

هناك نقطة مهمة جدًا في هذا الموضوع ، وهي كيف تمت كتابة اللغة الصينية في ال command prompt ؟

http://www.arabteam2000.com/picload/Files/chack007.gif

محاولاتي السابقة في كتابة العربية في ال command prompt جميعها فشلت.

#20

ما هي محاولاتك السابقة؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#21

استخدام wcout بدلاً من cout ،

محاولة تغيير ال codepage إلي واحد عربي

محاولة وضع خط عربي من النوع fixed في الريغستري

HLM\SOFTWARE\Microsoft\Windows Nt\Console\TrueTypeFont

حتي محاولة الوصول إلى video buffer الخاص بالكونسول حتي أرسم الحروف بنفسي

جميعها فشلت.

#22

نقّح البرنامج لتعرف خباياه .. هذا اذا كنت بالفعل استنفذت الطرق الشرعية :wink:

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#23

ممممممممم . البرنامج ليس به شئ غير طبيعي ، لأنه عندما شغلت shellcode.exe عندي لم تظهر الحروف الصينية بشكل صحيح ، مثلها مثل العربية ، مع العلم أنني دائمًا أثبت الخطوط العربية والأسيوية.

حسنًا ، المسألة الآن هي في الخط الذي يستخدمه الكونسول ، لتغيير خط الكونسول نحتاج لخط fixed - monospace يدعم العربية ، وهو ما لم أستطع إيجاده ، الخطوط ال fixed التي وجدتها تعمل في كونسول لينوكس ولا تعمل في كونسول ويندوز.

#24

موضوع راقي

مواضيع مشابهة