أدوات وبرامجالخصوصيةالمقال المثبتمواضيع عامةمواضيع ومقالات

تحليل : كيف يقوم الهاكرز بإستغلال المواقع المعروفة للتحكم بالأجهزة المخترقه وبإستخدام Python

تم أرشفة هذا المحتوى


في هذا المقال سوف نتعرف على طريقة عمل البرمجيه Hammertoss , ونوضح مفهوم C&C server مع اعطاء مثال عملي باستخدام لغة البرمجه بايثون .

هامرتوس هي برمجيه روسيه من ضمن أذكي البرمجيات الخبيثه التي قد تراها بسبب الطريقه اللي يعمل بها فهو علي عكس معظم البرمجيات اللي تستخدم C&C server فهي لا تتصل بـسيرفر بها بشكل مباشر ولكن تستخدم عده مواقع معروفه مثل Github وTwitter للتواصل مع مطورين البرمجيه وبهذه الطريقه تتخطى كل الحمايات ويصعب تعقبها  !

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

الأن كما أتضح من الفيديو فأول ما تقوم به البرمجيه هو البحث في تويتر عن تغريده وضعها أصحاب البرمجيه والتي تحتوي علي علي رابط وهاش تاج كجزء من التشفيره ولكن ألم تسأل نفسك كيف يبحث في تويتر ؟

الأجابه  وهي أنك لكي ترى تغريدات شخصا ما لا يلزم أن تكون قد قمت بتسجيل الدخول الي حسابك وهذا ما أعتمدت عليه البرمجيه !

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

 

المثال السابق كان فقط لأيضاح كيف تقوم البرمجيات بأستخدام المواقع الشهيره كسيرفر C&C , والأن وبشكل سريع ماهو C&C Server ؟

C&C هو أختصار Command and Control وهو يكون كالوسيط مابين المخترق والجهاز المخترق ويستخدم في الغالب في الـBotnets فهو يكون السيرفر الذي ينفذ المخترق الأوامر من عليه

الأن سأقوم بشرح أستخدام موقع معروف أخر لتكتمل الفكره وهو موقع Cl1p

هذا الموقع يسمح لك أن تألف أي كلمه مميزه وتستخدمها في في رابط خاص به وعندك دخولك عليه تستطيع أن تكتب أي شئ وتقوم بحفظه وتبعث هذا الرابط لأي أحد أخر فعندما يفتحه يري ما كتبته في اللينك ثم يمسح مما يعني أن تستطيع أن تستخدمه نفس الكلمه مره أخري و هكذا.

الأن سأوضح كيف من الممكن أستخدام هذا الموقع كا C&C Server بلغه البايثون ( أصدار 3 )

أول شئ سأقوم بعمل داله وظيفتها توليد أسم عشوائي ليتم أستخدامه في الرابط وسيكون طول الكلمه 30 رمز

import random ,string
def rand():
	word =""
	for i in range(30):
		word += random.choice(string.ascii_letters+string.digits)
	return word

للأيضاح فقد قمت أولا بعمل متغير فارغ ومن ثم قمت بعمل حلقه أو Loop عن طريق For تقوم بأختيار رمز واحد عشوائيا من كل الحروف الأبجديه والأرقام ومن ثم تضيفه للمتغير حتي يصبح طوله 30 رمز وتنتهي

الأن نبدأ بفرز الموقع لنري كيف نستحدمه ولنفرض مثلا أن الكلمه العشوائيه هي Isecur1ty 😀 فيكون الرابط https://cl1p.net/Isecur1ty وعندما تفتحه تري الأتي :

من الواضح ان هذه فورم بسيطه تقوم بعمل بعمل طلب من نوع POST وترسله الي نفس الرابط وهذا ما يتضح عند النظر في الكود المصدري للصفحه

الأن النص الذي نكتبه يكون في الصندوق النصي النصي المسمي Content والذي محتواه يرسل في الطلب ولنقوم بأرسال طلب بنفس الطريقه في لغه البايثون سنستخدم مكتبه requests فيكون الكود الأتي :

import random ,string ,requests
def rand():
	word =""
	for i in range(30):
		word += random.choice(string.ascii_letters+string.digits)
	return word

word = rand()
link = "https://cl1p.net/"+word
a=requests.post(link,data={"content":"Test Test"})

فبعد تنفيذ الكود نفتح الرابط فنجد النتيجه :

كما نري فقد تم عرض النص مما يعني أن الكود أشتغل 😀

والأن لنكتب كود أخر ليجلب النص من الصفحه وسأستخدم فيه مكتبه re مع مكتبه requests

regex = re.compile('tent">(.*)</')
source = requests.get("https://cl1p.net/Isecur1ty").text
regex.findall(source)[0]

فتكون النتيجه :

الأن لنصعب الأمر قليلا :]

الأن سأقوم بتقسيم النص الي عده أجزاء فيكون كل جزء منهم عباره عن كلمه وكل كلمه نضعها في رابط وحدها ونقوم بترميزها علي شكل Base64 حتي نتفادي الأخطاء التي التي قد تحدث عند أرسال نص وبه فصله أو ما شابه

ولعمل هذا سنقوم بعمل دالتين داله خاصه بالأرسال وداله للأستقبال ولكن كيف سنقوم بربط الكلمات ببعضها وكل كلمه في رابط بمفردها ؟

الحل بسيط وهو أن نأتي بالكلمه العشوائيه التي سنستخدمها في الرابط ونقوم بأضافه رقم عليها مع كل كلمه في رابط فمثلا النص “Test1 Test2 Test3” يقسم كالأتي

https://cl1p.net/Isecur1ty0 --->> Test1
https://cl1p.net/Isecur1ty1 --->> Test2
https://cl1p.net/Isecur1ty2 --->> Test3
....

فتكون الدوال بالشكل الأتي :

import requests ,re ,base64 ,random ,string
def rand():
	word =""
	for i in range(30):
		word += random.choice(string.ascii_letters+string.digits)
	return word

def send(msgs):
        msgs = msgs.split(" ")
	word = rand()
	print("Today's word is",word)
	n=0
	for msg in msgs:
		word = word[:30]+str(n)
		link = "https://cl1p.net/"+word
		a=requests.post(link,data={"content":base64.b64encode(msg.encode("utf-8"))})
		print(" [ Part "+str(n)+" Sent ]")
		n +=1
	print("\nToday's key is",str(n))

def receive(word,key):
	print("Receiving..")
	regex = re.compile('tent">(.*)</')
	for i in range(key):
		word = word[:30]+str(i)
		link = "https://cl1p.net/"+word
		source = requests.get(link).text
		msg = regex.findall(source)[0]
		msg = base64.b64decode(msg.encode("utf-8"))
		msg = msg.decode("utf-8")
		print(msg, end=" ")

فلنبسط الأمور قليلا

داله rand شرحت من قبل

داله send اول شئ قمت به هو تقسيم النص الي كلمات في المتغير msgs وبعدها المتغير word وهو الكلمه العشوائيه التي سنستخدمها ومن ثم يوجد المتغير n والذي سنستخدمه في العد وسأخبركم لماذا بعد قليل والأن قمت بعمل حلقه تأخذ كل كلمه فتضيف للمتغير word المتغير n ومن ثم تضيف المتغير word بعد الاضافه للرابط في المتغير link ومن ثم الأن نرسل طلب كما شرحنا من قبل ولكن هذه المره نقوم بترميز الكلمه التي سنرسلها بترميز base64 ونضيف 1 الي المتغير n وفي النهايه بعد أنتهاء الحلقه نقوم بطباعه المتغير n علي أنه هو المفتاح وستعرفون لماذا في داله الأستقبال

الأن داله receive قمنا فيها بأخذ متغيرين وهما word و key فالمتغير الأول سيكون الكلمه التي أستخدمت في الرابط والمتغير الثاني key سيعرفنا عدد الروابط 😀 وبعدها نقوم بتجهيز الريجيكس الذي سنستخرج به النص ( للفهم أكثر أقرأ عن الـRegluar expressions ) والأن نقوم بعمل حلقه ومداها المتغير key ومن ثم نقم بنفس الخطوات كما شرحنا من قبل حتي نقوم في النهايه بطباعه النص كلمه كلمه وكل كلمه منفصله عن الأخري بمسافه

هذا كان شرح بسيط للأمر والسكربت يحتاج الكثير من التطوير ولكنك الأن تستطيع أن تخزن رساله سريه مثلا علي الموقع ومن ثم لا يستطيع أحد ومعه السكربت أن يقرأها الا لو معه الكلمه والمفتاح ^_^

ولقد قمت بتطوير هذا السكربت فجعلته سكربت لأرسال واستقبال الرسائل بسريه تستطيع أن تري الكود الكامل من هنا

والأن كما تري فقد يقوم الهاكر بأستغلال الموقع عبر أرسال أوامر عليه ويقوم الجهاز المخترق بقرائتها وتنفيذها ولكن قد يخطر علي بالك كيف سيعرف الجهاز المخترق بالكلمه والمفتاح حتي يقرأها ؟

بالنسبه للكلمه قد تكون كلمه محدده وليست كلمه عشوائيه ويقوم الجهاز المخترق بتفقد الرابط كل فتره زمنيه حتي يقوم الهاكر بكتابه أمر فيه وبالنسبه للمفتاح فمن الممكن أن يقوم الهاكر بأستخدام مفتاح ثابت دائما 😀

,والي هنا انتهي من المقال  أرجوا أن تكون قد نال أعجابكم

Karim Shoair

كريم, عمري 21 سنه, هاكر أخلاقي ومطور أجيد العديد من اللغات وأكثرهم أستخداما هى البايثون ومهتم بالعديد من المجالات المتعلقه بالحمايه وعلوم الكومبيوتر بشكل عام. لي العديد من الأدوات المعروفه مثل Dr0p1t ,QRLJacker ,Cr3dOv3r , One-Lin3r و PasteJacker فأنا أحب برمجه أدوات أختبار الأختراق وأكتشاف الثغرات الأمنيه بشكل عام وما الى ذلك.

مقالات ذات صلة

‫3 تعليقات

  1. بوركة اخي . لم افهم المقال جيدا لاني متدأ في بايثون لكن تعلمت الكثير من فكر من مقالك اشكر اخي

  2. هل تقصد ان كل ن زار الموقع يخترق ام اللذين يعرفون الرابط ويزرونه وهل يمكن تنفيذ الهجوم بالميتاسبلويت بدون برمجيه Hammertoss

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى