Introduction to Cybersecurity Bootcamp 2023 CTF Assessment


مقدمة
سنتناول فى هذا المقال حل تحديات مع الحلول لـ CyberTalents, وهى مجموعة من التحديات المختلفة في تخصصات مثل (Web security , cryptography , digital forensics , Network Security.......) وهى عبارة عن حل لتحديات لـ Introduction to Cybersecurity Bootcamp(Online) 2023 , من متطالبات الـ Bootcamp ان تكون علي معرفة بأساسيات Linux , التحديات بالترتيب حسب كل Lesson تقوم بدراسته.
Introduction to CTF » competition
التصنيف: معلومات عامة
الوصف: نوع خاص من مسابقة الأمن السيبراني المصممة لتحدي المشاركين لحل مشاكل أمن الكمبيوتر
الإجابة: Capture the Flag (CTF)
Cybersecurity Overview » fisher
التصنيف: معلومات عامة
الوصف: ما هي الوظيفة المطابقة للتعريف أدناه؟
الأفراد الذين يعرفون تفاصيل الأمن السيبراني ولديهم دراية جيدة في اكتشاف الثغرات ونقاط الضعف. هناك العديد من منصات مكافآت الأخطاء تقوم بإعطائهم هدايا مقابل العثور على نقاط الضعف في التطبيقات والبرامج.
flag{bug bounty hunter}
Attacks & Vulnerabilities » Mailer
التصنيف: Digital Forensics
الوصف: حصلنا على الدليل على البريد الإلكتروني للتصيد الاحتيالي ولكننا نحتاج إلى معرفة اسم ملف البرنامج الضار
Link: https://hubchallenges.s3-eu-west-1.amazonaws.com/Forensics/mail_bak.7z
الأجابة: لتحميل الملف علي الجهاز بإستخدام wget
لنقم بإستخراج محتوايات الملف
الملف يحتوي علي ملفين Index , Sent سأقوم بإلقاء نظرة عليهم من خلال mousepad editor
نحن نبحث عن اسم ملف ضار اذا نقوم بالبحث عن ملف بإمتداد exe. بعد البحث في ملف Index لم احصل عليه
أما بالنسبة لملف Sent قمت وجدت فيه الملف
بإمكاننا تجربة طريقى أخري أفضل وهي من خلال Terminal
قمت بعرض محتويات الملفان في نفس الوقت بإستعمال cat و عمل filter للمحتوي المعروض والبحث عن اي جملة تحتوي علي (exe.) بإستعمال grep
flag{Mal_strike8941934890753353453.exe}
Data Encryption » Hide Data
التصنيف: Data Encryption
الوصف: لقد كنت أقوم بإخفاء بياناتي باستخدام classic cypher، هل يمكنك الحصول علي flag المخفي ؟
gur synt vf 2w68lsudym Vg vf cerggl rnfl gb frr gur synt ohg pna lbh frr vg v gbbx arneyl 1 zvahgr gb rapbqr guvf jvgu EBG13 tbbq yhpx va fbyivat gung
الإجابة: يبدو هذا مثل تشفير ROT13 الكلاسيكي. فلنفك التشفير ونحصل على ما يلي:
2j68yfhqlz
Scapy » ARP Storm
التصنيف: Network Security
الوصف: An attacker in the network is trying to poison the arp table of 11.0.0.100, the admin captured this PCAP.
Link:https://hubchallenges.s3-eu-west-1.amazonaws.com/Forensics/ARP+Storm.pcap
لنقم بتحميل الملف وفتحة بإستخدام اداة Wireshark
سوف في قسم info أنها تحتوي علي بعض hex characters
لنحاول استخدام tshark حتي نستطيع استخراج الأحرف كما نريد
سنقوم بإستعمال هذا الأمر لاستخراج قيمتها..........
"tshark -r ARP+Storm.pcap" : هذا الجزء من الأمر يقرأ ملف "ARP+Storm.pcap".
"Tfields -e arp.opcode-": هذا الجزء يحدد أنك تريد استخراج field ال "arp.opcode" من كل حزمة وعرضه كناتج.
"|": هذه هي رمز piping الذي يتيح استخدام ناتج الأمر السابق كمدخل للأمر التالي.
"awk '{printf("%c",$1)}'": هذا الأمر "awk" يأخذ قيمة الـ "opcode" ويقوم بتحويلها إلى..
ال"printf("%c", $1)": هذا هو الإجراء الذي تقوم بتوجيه "awk" حتي ينفذ على كل سطر من المدخلات.
- ال"printf": هذه هي وظيفة في "awk" تُستخدم لتنسيق وطباعة الناتج.
- ال"%c": هذا هو محدد التنسيق الذي يشير إلى أنك تريد طباعة حرف.
- "$1": يُشير إلى الحقل الأول (العمود الأول) في السطر الحالي. في حالتك، إنه قيمة معرف العملية ARP التي استخرجتها باستخدام الأمر السابق "tshark".
نقم بعمل decode ل القيمة التي خرجت لي
flag{gr@tuit0us_0pcOde_1s_Alw@ys_A6uSed_t0_p01s0n}
Introduction to Kali Linux » remove
التصنيف: معلومات عامة
الوصف: أحتاج إلى إزالة ملف يسمى 'secret' في home directory الخاص بي. الأمر الذي يجب أن أستخدمه
rm ~/secret
Introduction to Kali Linux » Distribution
التصنيف: معلومات عامة
الوصف: توزيعة مبنية على دبيان Debian مع مجموعة من أدوات security و forensics . وتتميز بتحديثات أمنية ودعم ARM architecture
flag بدون مسافات
kalilinux
Introduction to Kali Linux » Linuxcmd 101
التصنيف: Bash
الوصف: سيساعدك هذا التحدي على فهم الأوامر الأساسية في نظام التشغيل Linux ,, كل نقطة مرتبطة بنقطة أخرى، قم بتوصيل الرابط واحصل علي flag!
سنقوم بفتح الملف
سنري ان الملف مضغوط
سنحاول فك ضغط الملف هناك طريقتان لفك ضغط الملف أما من خلال gzip و tar كما في الصورة الاولي أول من خلال tar فقط كما في الصورة الثانية
لنقم بالدخول الي المسار linux-chal/cat/ سنري انه يحتوي علي ملف مضغوط وملف مخفي عند قراءة الملف سنري كلمة السر الخاصة ب exec.zip سنقوم بفك ضغط الملف من خلا 7z ونضع كلمة السر qwerty1245
عند الدخول الي directory exec سنري أن هناك ملف asiic.zip وأيضا ملف (-) عند محاولة قراءة الملف لن تجدي اي شئ عند النظر الي صلاحيات الملف سيتضح أنه ملف executable سنقوم بتشغيله سيقوم بإرجاع كلمة سر قم بفك ضغط الملف واستخدام كلمة السر
نقوم بالدخول الي directory ascii نري أنه يحتوي علي ملفات سنحاول معرفة نوع هذه الملفات من خلال الأمر file نري أن الملف f6 عبارة عن ASCII text
عند قراءة محتوي الملف نري كلمة السر قم بفك ضغط الملف الأن.............
نقم بالدخول إلي size37 نري أنه يحتوي علي العديد من الملفات أيضا وهذه الملفات عبارة عن ASCII text عند تجربة القيم الموجودة في هذه الملفات ككلمة سر للملف المضغوط لم تنجح
لذلك قمت بحفظ جميع كلمات السر في الملف واستخدم أداة john لمحاولة عمل crack لها
هذه هي كلمة السر 62094n902m2x-28mx4t9xy282y49ty9824yt
نقم بالدخول الي directory يحتوي علي ملف nexttocybertalents عبارة عن wordlist سنحاول استخراج كلمة cybertalents نري أن كلمة السر orderby1337
نقم بالدخول الي directory التالي نري ملف بإسم One عبارة عن wordlist سنحاول عمل crack لكلمة بإستخدام john مره أخري سنري كلمة السر كما في الصور...........
بالدخول الي المجلد التالي نري ملف بإسم pass عند قراة محتواة عبارة عن تشفير base64 عند عمل decode له نري كلمة السر ونقم بفك ضغط الملف
بالدخول الي المجلد التالي نري ملف بإسم flag عند قراءة محتواة لن نفهم شئ علي الاغلب هو عبارة عن ROT13 decode
نأخذ هذه القيمة ونحاول عمل decode لها من خلال موقع https://rot13.com/ الأن نري Flag
flag{s1mple_linux_101}
Hash Cracking » Guess The Password
التصنيف: Cryptography
الوصف: قام أحد hacker بتسريب hash عبر الإنترنت. هل يمكنك عمل crack لمعرفة كلمة المرور الخاصة بالرئيس التنفيذي؟ flag هو password Hash
06f8aa28b9237866e3e289f18ade19e1736d809d
الحل:
نحتاج إلي تحديد نوع hash نقوم بإستعمال هذا الموقع https://www.onlinehashcrack.com/hash-identification.php اتضح أنه SHA-1
الأن كل ما نريد ان نفعله هو محالة عمل crack له سنستخدم هذا الموقع https://sha1.gromweb.com
jrahyn+
Introduction to Digital Forensics » Crime scene
التصنيف: معلومات عامة
الوصف: Process of analyzing and investing computer devices, on suspecting that such devices may have been used in a cybercrime
Flag Format: XXXXXXXXX
forensics
Steganography » Greeks
التصنيف: معلومات عامة
الوصف: فن إخفاء الرسائل أو المعلومات داخل صورة/نص أو بيانات أخرى
Steganography
Steganography » JTAG Dump
التصنيف: Digital Forensics
الوصف: This is a JTAG mobile Extraction for a handset in a criminal case
الحل:
تحميل الملف علي جهازنا نقم بفتح الملف من خلال أداة binwalk ونحاول استخراج الملفات
الأمر يقوم بتحليل ملف "Jtag-dump.bin" باستخدام أداة "binwalk" هي أداة مفتوحة المصدر تُستخدم لتحليل وفحص الملفات بحثًا عن بيانات مخفية أو مضمنة.
ويقوم بإجراء استخراج لجميع البيانات الموجودة في الملف باستخدام تعبير العبور ".*". هذا سيقوم بعرض جميع البيانات المستخرجة.
ستقوم بإستخراج البيانات في directory جديد عند فتحة والبحث في الصور سنري flag
Flag{Remember_header_then_footer}
Steganography » Images3c
التصنيف: Digital Forensics
الوصف: يتطلب تأمين صورة مهمة تشفيرًا جيدًا. لذلك أضفنا طبقة أمان إضافية لصورتك وهي الآن غير قابلة للكسر!
الحل:
نقوم بتحميل الملف وفك ضغطه نري انه كان عبارة عن صورة ليس هناك أي شئ مهم............!!!!!!!!!
سنقوم بإستخدام أداة stegseek لمحاولة استخراج ال Flag من خلال عمل bruteforce للملف
stegseek هي أداة برمجية مفتوحة المصدر تُستخدم للبحث عن بيانات مخفية داخل ملفات الصور باستخدام تقنيات التحقق من signature. تستند Stegseek إلى مكتبة تسمى "steghide" للكشف عن البيانات المخفية باستخدام أنماط معينة والتحقق من signature security للملف.
الأمر يقوم بفحص الصورة "cyber.jpg" باستخدام قائمة الكلمات المرور "rockyou.txt" للبحث عن أي بيانات مخفية، ثم يقوم بإخراج هذه البيانات المخفية إلى ملف "flag.txt".
flag{cyb3rs3cisaw3s0me}
Steganography » I love music
التصنيف: Digital Forensics
الوصف: listen and focus , you will listen another thing
Flag format : XXX_XXX_XXXXXXXXXXX
الحل:
تحميل الملف https://s3-eu-west-1.amazonaws.com/hubchallenges/Forensics/love-music.wav
نقوم بفتح الملف من خلال برنامج Sonic-visualizer وسنري أن الملف أمامنا بهذا الشكل.......
https://www.sonicvisualiser.org/download.html
نقوم بالضغط علي Layer ثم Add spectrogram ثم All Channels mixed
الأن نري Flag
you_are_victorious!
Introduction to Web Security » Reward
التصنيف: معلومات عامة
الوصف: I receive a reward or mentioned on a wall of fame when i found vulnerability . I am participating in ..... program? Format of Flag ( Do not use spaces)
bugbounty
HTML » htmlentities
التصنيف: معلومات عامة
الوصف: True or False , htmlentities ( convert special characters to its html entity ) can't be exploited to run XSS payload ؟
false
OWASP Top 10 » Contribute
التصنيف: معلومات عامة
الوصف: I am an Organization that releases the Top 10 Vulnerabilities in Application Security. I am ……؟
OWASP
Cookies » Admin has the power
التصنيف: Web Security
الوصف: Administrators only has the power to see the flag , can you be one ?
الحل:
نقم بتشغيل التحدي وفتح الرابط
نلقي نظرة علي source code نري أنه يحتوي علي معلومات تسجيل دخول لمستخدم support
نقم بتسجيل الدخول نري أننا لن نسطيع رؤية flag إلا بمستخدم admin كما كتب في الوصف
ليس هناك شئ مهم في source code الخاص بالصفحة قمت بعمل inspect حتي اري cookie ورأيت ان role قميتها هي support أي اسم المستخدم
حسنا هذا جيد قمت بتغير هذه القيمة إلي admin
وعمل reload إلب الصفحة نري أننا استطعنا الدخول كمستخدم admin و حصلنا علي flag
hiadminyouhavethepower
JavaScript » This is Sparta
التصنيف: Web Security
الوصف: Morning has broken today they're fighting in the shade when arrows blocked the sun they fell tonight they dine in hell
FLAG Format: {flagbody}
الحل:
نقم بتشغيل التحدي وفتحة
عند النظر غي source code نري بعض الأكواد غير المفهومة ولكن هي تبدأ ب <script> وتنتهي ب </script> اذا هذه عبارة عن javascript code ولكن obfuscate
نقوم بعمل نسخ له والانتقال لهذا الموقع https://deobfuscate.io ونري JS code نري أن بيانات تسجيل الدخول اسم المستخدم وكلمة السر هي Cyber-Talent
function check() {
var _0xeb80x2 = document.getElementById("user").value;
var _0xeb80x3 = document.getElementById("pass").value;
if (_0xeb80x2 == "Cyber-Talent" && _0xeb80x3 == "Cyber-Talent") {
alert(" Congratz \n\n");
} else {
alert("wrong Password");
}
}
نقم بتسجيل الدخول والأن نري flag
{J4V4_Scr1Pt_1S_Aw3s0me}
PHP Basics » Cheers
التصنيف: Web Security
الوصف: Go search for what cheers you up
الحل:
قم بتشغيل التحدي وفتح الرابط الخاص به سنرب أن الصفحة تعرض لنا error
وهذا يعني أنه يتعين علينا إضافة welcome parameter الي request في URL
عند إضافة سنري error أخر
سنقوم بإضافة gimme_flag parameter ونري response
الان وصلنا إلي flag
FLAG{k33p_c4lm_st4rt_c0d!ng}
PHP Basics » ghaZe
التصنيف: Web Security
الوصف: May Be Guessing Is Helpful ;)
الحل:
نقوم بتشغيل التحدي الوصول إليه
قمت بالنظر إلي source code رأيت أن بيانات تسجيل الدخول admin:admin
قمت بتسجيل الدخول وهذا ما ظهر
قمت بمحاولة البحث عن hidden directories بإستخدام diresearch
وكل ما توصلت إليه هو empty directory يسمي flag.php ما فهمته بعد ذلك انه عند محالة تسجيل الدخول يقوم بإعادة توجيهي إلي InSiDe.php
الأن لنقم بمحاولة البحث عن parameter بإستخدام أداة arjun
وقام بإرجاع هذه الصفحة
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=<device-width>, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Welcome Admin</h1>
</body>
</html>
<?php
require_once("flag.php");
if(isset($_GET['src']))
{
highlight_file("InSiDe.php")and die();
}else{"<h2>Contiue Searching</h2>";}
if(strcmp($_GET['flag'],"View")==0)
{
echo "<br/><h1>You Pass The Stage 1 The Flag Is </h1><br/>";
echo "<h1>$flag1";
}
if (isset($_COOKIE['kk']) && isset($_COOKIE['cc']))
{
if($_COOKIE['kk'] != $_COOKIE['cc'])
{
if(md5($_COOKIE['kk'])==md5($_COOKIE['cc']))
{
echo "<br/><h1>You Pass The Stage 2 The Flag Is </h1> <br/>";
echo "<h2>$flag2</h2>";
}
}
}
$useragent = $_SERVER['HTTP_USER_AGENT'];
if (is_numeric($useragent))
{
if(strlen($useragent) < 4)
{
if ($useragent > 10000)
{
echo "<br/><h1>You Pass The Stage 3 The Flag Is </h1><br/>";
echo $flag3;
}
}
}
?>
هذا الجزء من code يقوم بفحص query parameter $_GET['flag'] للتحقق مما إذا كانت قيمته تساوي "View". إذا كانت القيمة تساوي "View"، فإنه يقوم بعرض رسالة مع flag المرتبط بالمرحلة الأولى من التحدي.
if(strcmp($_GET['flag'],"View")==0)
{
echo "<br/><h1>You Pass The Stage 1 The Flag Is </h1><br/>";
echo "<h1>$flag1";
}
أما بالنسبة للجزء الثاني
نحتاج إلى قيمتين من cookie ل[ cc & kk] هذه القيمتين مختلفة , اما بالنسبة لقيمة md5 هي نفسها..............…
هذه تسمي Type Juggling أتمني أن تنظر إلي هذا الملف https://owasp.org/www-pdf-archive/PHPMagicTricks-TypeJuggling.pdf
if (isset($_COOKIE['kk']) && isset($_COOKIE['cc']))
{
if($_COOKIE['kk'] != $_COOKIE['cc'])
{
if(md5($_COOKIE['kk'])==md5($_COOKIE['cc']))
{
echo "<br/><h1>You Pass The Stage 2 The Flag Is </h1> <br/>";
echo "<h2>$flag2</h2>";
}}}
حسنا كيف سنحصل علي هذه القيم قم بالانتقال إلي هذا https://github.com/spaze/hashes/blob/master/md5.md وأختر أي قيمتين علي سبيل المثال أول قيمتين
240610708:0e462097431906509019562988736854
QLTHNDT:0e405967825401955372549139051580
وبإستخدام burpsuit قمت بتعديل قيمة cookie كما تري في الصورة وعثرنا علي الجزء الثاني من flag
الجزء الثالث من الكود
يقوم بالتحقق ما اذا كان useragent رقم اذا تحقق الشرط يقوم بالتحقق ما اذا كان طولة أقل من 4 واذا كان صحيح يتحقق اذا كان قيمته أكبر من 10000
$useragent = $_SERVER['HTTP_USER_AGENT'];
if (is_numeric($useragent))
{
if(strlen($useragent) < 4)
{
if ($useragent > 10000)
{
echo "<br/><h1>You Pass The Stage 3 The Flag Is </h1><br/>";
echo $flag3;
}}}
وبإستخدام burpsuit قمت بتعديل قيمة user-agent في request وقمت بتغيرها ب 9e9 وهو تعبير علمي للرقم 9 مرفوع لأس 9، ويمكن تفسيرها بأنها تعني 9 مضروبة في نفسه تسع مرات.
قيمة "9e9" كرقم هو 9,000,000,000، أو بمعنى آخر 9 مليار.
flag: Flag{Arju!n_Md5_ll_Exp0oNential_Ar3_GOod_!}
Burp Suite » The Restricted Sessions
التصنيف: Web Security
الوصف: Flag is restricted to logged users only, can you be one of them
الحل:
نشغل التحدي ونبدأ نبص عليه هتلاقية بيقولك إنك محتاج تكون login in علشان تشوف flag
لو بصينا علي source code هلاقي كود js بيعمل اي الكود ده
الكود يسترد معلومات المستخدم الحالية من ملف PHP يسمى getcurrentuserinfo.php. يتحقق مما إذا كان المتغير "document.cookie" ليس فارغًا. إذا لم يكن فارغًا، فسيقوم بإرسال POST Request إلى الملف getcurrentuserinfo.php. يحتوي POST Request على قيمة ملف تعريف الارتباط `PHPSESSID`، والتي تُستخدم لتحديد session المستخدم الحالية. يقوم الملف getcurrentuserinfo.php بعد ذلك بإرجاع معلومات المستخدم الحالية إلى JavaScript.و يتم تخزين معلومات المستخدم الحالية في المتغير "cu".
<script type="text/javascript">
if(document.cookie !== ''){
$.post('getcurrentuserinfo.php',{
'PHPSESSID':document.cookie.match(/PHPSESSID=([^;]+)/)[1]
},function(data){
cu = data;
});
}
</script>
سوف أقوم بإعتراض request بإستخدام burpsuit وهنلاقي إن مفيش قيمة cookie بتتبعت في request هبعت request ل repeater أبدا اعدل اللي أنا محتاجة
سأقوم بإضافة قيمة cookie ل request سنري أن response يقوم بإرجاع أن Session not found in data/session_store.txt
عند فتح هذا الملف في المتصفح نجد انه يحتوي علي معلومات session لثلاث مستخدمين
لنقم بتجربة استخدام session منهم هلاقية بيقولي إن UserInfo Cookie don't have the username , Validation failed
سوف أقوم بإضافة UserInfo الي cookie سيقوم بالرد Validation failed إذا user ليست هذه session الخاصة به
في JS code يسترد معلومات المستخدم الحالية من ملف PHP يسمى getcurrentuserinfo.php. ولكن يجب أن يكون POST Request لنجرب أن نري هذه المعلومات
حسنا هذا جيد جدا استطعنا الوصول إلي معلومات session لنجرب أن نقوم بعمل login in من خلال session و UserInfo الذي هي name الخاص يالمستخدم
تم تسجيل الدخول وحصلنا علي Flag
Flag: sessionareawesomebutifitsecure
Vulnerability Assessment » CVE Number
التصنيف: معلومات عامة
الوصف:
What is the CVE ID that is related to EternalBlue
Flag Format: XXX-XXXX-XXXX
الحل : CVE-2017-0144
Vulnerability Assessment » remote-CVE
التصنيف: Machines
الوصف: What’s CVE ID could be used against the web application in the below target
الحل :
قم بتشغيل التحدي سيظهر لك ip الخاص ب Machine
نحن نبحث عن cve id الخاص بإحدي service التي تعمل علي web app حسنا سوف اقوم بعمل scan nmap
هتلاقي الإصدار هتبحث عن الإصدار هتلاقي CVE ID ده
CVE-2014-6287
WIFI Attacks » WPA Crack
التصنيف: Machines
الوصف: You are conducting a WIFI pentest, Handshake has been captured and your task is to crack it
Flag format is just the password
Link:https://hubchallenges.s3-eu-west-1.amazonaws.com/Machines/wpa943050264305852656243865.cap
التحدي عبارة عن ملف cap يجب عمل crack لكلمة السر الخاصة به وكلمة السر هي flag
سوف نقوم بتحميل الملف
هنستخدم أداة aircrack-ng علشان أقدر أعمل crack و هنستعمل wordlist
هنلاحظ أنه تم العثور علي كلمة السر
biscotte
Traffic Analysis » Capture
التصنيف: معلومات عامة
الوصف: Network analysis tool used to captured packets and present it in readable format
Wireshark
الخاتمة
الى هنا نكون ان انهينا حل التحديات والى اللقاء فى تحديات وتقنيات اكثر , لا تتردد فى مشاركة المقال على ؤسائل التواصل الاجتماعى لتعم الفائدة على الجميع , واخبرنا فى التعليقات عن ما هى التحديات التى تريدنا حلها فى المرة القادمة .