کرک کرد! نکات برجسته از KringleCon 5: Golden Rings

کرک کرد! نکات برجسته از KringleCon 5: Golden Rings

یادگیری در چالش هک تعطیلات سال 2022 SANS با سرگرمی روبرو می شود - خود را برای یک کرکرجک سواری در قطب شمال در حالی که نقشه ناپاک گرینچوم را خنثی می کنم و پنج حلقه طلایی را بازیابی می کنم، ببندید.

این اولین سالی است که در آن شرکت می کنم چالش هک تعطیلات SANS و این یک انفجار بود. از طریق یک سری از 16 چالش از آسان تا دشوار، تجزیه و تحلیل ترافیک شبکه مشکوک و لاگ های PowerShell و نوشتن را تمرین کردم. قوانین سوریکاتا، شکستن از a کانتینر داکر، یافتن کلیدهای لو رفته برای سوء استفاده از a خط لوله GitLab CI/CD و کاربر AWS، هدایت حملات XML External Entity، و هک قرارداد هوشمند برای خرید یک نشانه غیر قارچ.

بهترین بخش این تجربه این بود که من را با ابزارها و فن آوری های جدید آشنا کرد، بنابراین دانش امنیت سایبری من را بسیار بیشتر گسترش داد. در اینجا، من چند نکته برجسته از حل چالش ها را به اشتراک می گذارم.

گرایش

هر شرکت کننده یک آواتار برای پیمایش در محیط بازی ویدیویی درون مرورگر که در قطب شمال تنظیم شده است دریافت می کند:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

در طول جهت‌یابی، یک کیف پول رمزنگاری دریافت می‌کنید که بازی از آن برای اعطای KringleCoins برای تکمیل چالش‌ها استفاده می‌کند و از آن در آخرین چالش برای هک کردن یک قرارداد هوشمند استفاده می‌کنید. جالب اینجاست که بازی تمام تراکنش‌های KringleCoin را در یک بلاک چین اتریوم پیگیری می‌کند، به این معنی که یک رکورد کامل از پیشرفت شما در این بلاک چین نیز ذخیره می‌شود.

به حلقه اول بازی.

1. حلقه تالکین

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

یافتن حلقه تالکین نیازمند خم کردن ماهیچه های تجزیه و تحلیل سیاهه های من بود.

فیشینگ Wireshark

ابتدا از Wireshark برای تجزیه و تحلیل موارد ارائه شده استفاده کردم pcap فایلی که سروری را در adv.epostoday[.]UK دانلود فایل Ref_Sept24-2020.zip به کامپیوتر:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

با نگاهی به داخل فایل ZIP، یک فایل اجرایی به نام پیدا کردم Ref_Sept24-2020.scr که دو شناسایی را در ESET Endpoint Security ایجاد کرد: BAT/Runner.ES و Generik.TAGTBG. این بدافزار در نهایت منجر به یک فایل اجرایی مخرب در حال اجرا در حافظه به نام می شود config.dll و توسط ESET شناسایی شد اسکنر حافظه پیشرفته as Win32/Dridex.DD.

گزارش رویدادهای Windows

بعد، من ارائه شده را تجزیه و تحلیل کردم evtx فایل حاوی لاگ های PowerShell با Event Viewer. در حالی که ابزارهای دیگری برای تجزیه و تحلیل لاگ های PowerShell وجود دارد، اگر مهاجمان می دانند چگونه از باینری های زنده در خارج از زمین برای ماندن در زیر رادار استفاده کنند، مدافعان نیز باید به ابزارهای بومی که یک سیستم عامل ارائه می دهد، به خوبی آشنا باشند.

از آنجایی که گزارش‌ها حاوی 10,434 رویداد بودند، رویدادها را بر اساس تاریخ گروه‌بندی کردم و سپس برای جستجوی رویدادهای حاوی $ شخصیت. در PowerShell، $ برای ایجاد و ارجاع استفاده می شود متغیرها. من متوجه شدم که یک حمله در 24 دسامبر 2022 اتفاق می‌افتد، زمانی که مهاجم اسکریپت زیر را اجرا کرد:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

به نظر می رسد مهاجم یک دستور العمل مخفی پیدا کرده است، و ماده مخفی آن را تغییر داده است عسل برای روغن ماهیو سپس یک فایل دستور پخت جدید ایجاد کرد. این یک رویداد با شناسه 4104 را ایجاد کرد که مخفف اجرای دستورات PowerShell از راه دور است. بنابراین، من رویدادها را با این شناسه فیلتر کردم و به من کمک کرد تا رویدادهای مخرب اضافی را سریعتر پیدا کنم.

سوریکاتا رگاتا

آخرین تمرین برای حلقه تالکین نوشتن چهار قانون Suricata برای نظارت بر ترافیک شبکه برای هجوم Dridex بود:

alert dns $HOME_NET any -> any any (msg:"جستجوی DNS بد شناخته شده، عفونت احتمالی Dridex"؛ dns.query؛ محتوا: "adv.epostoday.uk"؛ nocase؛ sid:1؛ rev:1؛)

alert http 192.185.57.242 any <> any any (msg:"تحقیق اتصالات مشکوک، عفونت احتمالی Dridex"؛ sid:2; rev:1;)

alert tls any any -> any any (msg:"بررسی گواهی های بد، عفونت احتمالی Dridex"؛ tls.cert_subject؛ content:"CN=heardbellith.Icanwepeh.nagoya"; sid:3; rev:1;)

هشدار http any any -> any any (msg:"عملکرد مشکوک جاوا اسکریپت، عفونت احتمالی Dridex"؛ file_data؛ محتوا: "let byteCharacters = atob"; sid:4; rev:1;)

به ترتیب، این قوانین جستجوهای DNS را برای آنها جلب می کند adv.epostoday[.]UK، اتصالات به آدرس IP 192.185.57[.]242، استفاده از سرور مخرب شنیده بلیث.Icanwepeh[.]nagoya شناسایی از طریق نام مشترک (CN) در گواهی TLS و استفاده از جاوا اسکریپت atob() تابع رمزگشایی یک رشته باینری حاوی داده های کدگذاری شده با base64 روی کلاینت است.

تکمیل این سه چالش، حلقه تالکین را برایم به ارمغان آورد:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

به حلقه دوم.

2. حلقه الفن

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

برجسته ترین چالش ها برای حلقه الفن فرار از زندان و Jolly CI/CD بود.

فرار از زندان

Prison Escape یادآوری جدی بود که اعطای امتیازات روت به کاربر در کانتینر Docker به همان خوبی اعطای امتیازات روت در سیستم میزبان است. چالش بیرون آمدن از ظرف بود. خوب، وقتی روت هستید به راحتی انجام می شود:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

به عنوان کاربر اصلی، جداول پارتیشن دستگاه را فهرست کردم و سپس سیستم فایل میزبان را نصب کردم و به من اجازه دسترسی کامل به هاست را داد. اکنون می‌توانم کلید را جستجو کنم، که باید در فهرست اصلی قرار داشته باشد، همانطور که توسط نکات درون بازی نشان داده شده است:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

Jolly CI/CD

در حالی که سریع بود، Jolly CI/CD طولانی‌ترین چالش را برای کشف کردن من طول کشید. ابتدا یک مخزن Git به ما داده شد تا از طریق HTTP کلون کنیم:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

از URL، می‌توانستم ببینم که نام مخزن است wordpress.flag.net.internal، بنابراین به مخزن منتقل شدم و یک وب سایت وردپرسی پیدا کردم. من بررسی کردم که آیا وب سایت زنده است:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

بله، وب سایت کاربردی بود. کنجکاو بودم که آیا کلیدهای لو رفته در تاریخچه کد منبع وجود دارد یا خیر. اگر بله، باید بتوانم ویرایش ها را به کد منبع فشار دهم. پس دویدم ورود به سیستم:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

از پیام های commit، به نظر می رسد مرتکب شدن پس از افزودن دارایی‌ها برای رفع مشکل ایجاد شد. زمان بررسی commit قبل از whoops:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

عالی، من پیدا کردم .ssh دایرکتوری با کلید بیایید آن کلیدها را کپی کنیم و یک عامل SSH و یک کاربر Git را پیکربندی کنیم تا ببینیم آیا می‌توانم هویت مالک آن کلیدها را جعل کنم:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

حالا بیایید به شاخه اصلی برگردیم و آزمایش کنیم که آیا می‌توانیم یک تغییر جزئی را در کد منبع اعمال کنیم (با استفاده از nano، من به سادگی یک فاصله به یکی از فایل‌ها اضافه کردم):

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

بنابراین، من با جعل هویت یکی از توسعه دهندگان وردپرس به بخش اول چالش دست یافتم، اما آیا وب سایت پس از فشار من همچنان کار می کرد؟

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

فشار من چیزی را تغییر داد زیرا اکنون وب سایت به پورت 8080 هدایت شده است.

تا به حال، بخش CI/CD چالش را نادیده گرفته بودم، که باید کلید تکمیل آن باشد. مخزن شامل a .gitlab-ci.yml فایل، که پیکربندی یک خط لوله GitLab CI/CD را فراهم می کند. هر بار که به مخزن فشار می آورید، سیستم CI/CD وارد می شود و a GitLab Runner اسکریپت های موجود در این فایل YML را اجرا می کند. من فکر کردم که این به اندازه اجرای کد از راه دور در سروری است که GitLab Runner در آن نصب شده است.

نزدیکتر که نگاه کردم، دیدم rsync اسکریپت کپی همه فایل ها از مخزن Git به دایرکتوری روی سرور وب که وب سایت از آن سرویس می شود. در ابتدا سعی کردم استفاده کنم rsync برای معکوس کردن جریان داده با کپی کردن همه فایل ها از وب سرور به مخزن Git، اما بدون موفقیت.

پس از آزمایش‌های فراوان فرضیه‌ها، در نهایت به بینش موفقیت‌آمیز خود رسیدم: به‌جای تلاش برای «اصلاح» وب‌سایت وردپرس یا اجرای اسکریپت‌های مخرب از طریق سیستم ساخت، وب‌سایتی را ارائه دهید که اطلاعات را از وب سرور به بیرون درز می‌کند. داخل فایل index.php (واقع در سطح بالای مخزن)، می توانم کدی را که وب سایت وردپرس را بارگیری می کند، نظر بدهم و دستورات PHP را اجرا کنم که سرور وب را بررسی می کند.

در واقع، من حتی می توانم دستورات پوسته را با PHP اجرا کنم. من آن را پیدا کردم passthru() به راحتی کار کرد

In فایل index.php، استفاده کردم // برای نظر دادن دو خط و من اضافه کردم passthru('ls -la /'); در آخرین خط این یک وب سایت ایجاد می کند که تمام فایل های موجود در فهرست اصلی وب سرور را فهرست می کند:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

سپس این تغییر را به مخزن Git فشار دادم و سیستم GitLab CI/CD مسئولیت به روز رسانی وب سایت را برای من بر عهده گرفت:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

آه، حلقه الفن باید داخل باشد flag.txt! مراحل قبلی را تکرار کردم اما این بار با استفاده از passthru('cat /flag.txt'); بار بعدی که وب سایت را درخواست کردم، حلقه الفن را آشکار می کنم:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

به حلقه سوم.

3. حلقه وب

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

سرگرم کننده ترین چالش برای من Open Boria Mine Door بود، اگرچه فواره Glamtariel در عین ارائه معماها جالب بود.

درب معدن بوریا را باز کنید

در Open Boria Mine Door، شش پین یا چالش کوچک برای دور زدن اعتبارسنجی ورودی یا یک خط مشی امنیتی محتوا برای اتصال لوله های ورودی و خروجی بین پین ها، از جمله تطبیق رنگ لوله ها. برای اکثر پین‌ها، من از HTML برای نوشتن لیستی از حرف‌های اتصال O استفاده کردم. در اینجا راه حل نهایی من است:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

پین 1

هیچ اعتبارسنجی برای پین 1 وجود نداشت، بنابراین یک موضوع ساده از HTML و CSS درون خطی بود:

پین 2

پین 2 دارای یک خط‌مشی امنیتی محتوا بود که جاوا اسکریپت را غیرمجاز می‌کرد اما CSS درون خطی را مجاز می‌کرد، بنابراین برای روش من مشکلی نبود:

پین 3

پین 3 یک خط‌مشی امنیتی محتوا داشت که CSS را مجاز نمی‌دانست اما جاوا اسکریپت درون خطی را مجاز می‌کرد، بنابراین من از جاوا اسکریپت برای تغییر سبک‌ها استفاده کردم:

پین 4

پین 4 خط‌مشی امنیتی محتوا نداشت، اما دارای یک تابع sanitizeInput در سمت کلاینت بود که می‌توانست نقل‌قول‌های مضاعف، نقل‌قول‌های تک، براکت‌های زاویه سمت چپ و براکت‌های زاویه راست را حذف کند. ترفند اینجا این بود که متوجه شوید این تابع با ارسال فرم راه اندازی نشده است، بلکه توسط روشن شدن رویداد. به عبارت دیگر، دور کردن ماوس از فیلد ورودی باعث ایجاد روشن شدن رویداد، ضدعفونی کردن هر ورودی. راه حل این بود که فرم را با فشردن دکمه ارسال کنید وارد کلید، در حالی که مراقب باشید نشانگر ماوس را خارج از محدوده فیلد ورودی حرکت ندهید:

پین 5

پین 5 هم همینطور بود sanitizeInput عملکرد و دور زدن به همراه یک خط مشی امنیتی محتوا که CSS درون خطی را ممنوع می کند، اما به جاوا اسکریپت درون خطی اجازه می دهد:

پین 6

در نهایت، پین 6 ورودی را پاکسازی نکرد، اما از یک خط‌مشی امنیتی محتوا سخت‌گیرانه‌تر استفاده کرد که هم CSS داخلی و هم جاوا اسکریپت را ممنوع می‌کرد. راه حل من استفاده از HTML منسوخ شده برای دریافت سبک های مورد نیاز و استفاده از جدول به جای لیست بود:

فواره گلمتریل

فواره گلمتریل فرصتی برای تمرین بود حملات XML External Entity (XXE).. فهمیدن نحوه تعریف یک موجودیت XML سفارشی، تعریف موجودی که فایلی را از سرور درخواست می‌کند و افزودن آن موجودیت به عنوان یک بار به درخواست HTTP کار سختی نبود. سخت ترین قسمت کشف معماهای درون بازی برای تعیین مسیر فایل هایی بود که سرور به بیرون درز می کرد. در اینجا درخواست موفقیت آمیز است که مکان حلقه طلا را نشان می دهد:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

من دو درس از این چالش را ارائه خواهم داد. ابتدا از مبدل نوع محتوا پسوند در اروغ زدن برای تبدیل بارهای JSON به XML. دوم، سعی کنید محموله XXE را در برچسب‌های مختلف قرار دهید - مدت زیادی طول کشید تا بفهمم تنها کاری که باید انجام می‌دادم این بود که &xxe; محموله در reqType به جای برچسب imgDrop برچسب.

به حلقه چهارم.

4. حلقه ابری

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

بازی برای Cloud Ring یک حمله مبتدی به رابط خط فرمان (CLI) خدمات وب آمازون (AWS) بود.

نکته قابل توجه این مجموعه از چالش ها استفاده بود سگ ترافل برای پیدا کردن اعتبار AWS در یک مخزن Git و سپس سوء استفاده از آنها برای احراز هویت به عنوان یک کاربر AWS. مهاجمی که به این موقعیت می رسد می تواند استفاده کند اوس من دستوراتی برای پرس و جو از سیاست هایی که برای کاربر اعمال می شود و بنابراین می توان به کدام دارایی های ابری دسترسی پیدا کرد و از آنها سوء استفاده کرد.

به حلقه پنجم.

5. سوزاندن حلقه آتش

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

آموزنده ترین بخش این مجموعه از چالش ها یادگیری در مورد آن بود درختان مرکل برای بهره برداری از قرارداد هوشمند و برای خرید یک توکن غیر قابل تعویض (NFT) در لیست پیش فروش قرار بگیرید. در اینجا چالش این بود که مقادیر اثباتی را کشف کنم که همراه با آدرس کیف پول من و ارزش ریشه درخت Merkle، گنجاندن من در لیست پیش فروش را ثابت کرد.

پس از چند تلاش ناموفق برای ارائه مقادیر اثبات، متوجه شدم که هرگز نمی توانم مقادیر اثبات را برای مقدار ریشه ارائه شده کشف کنم، زیرا هیچ راهی برای دانستن تمام مقادیر برگ استفاده شده برای محاسبه آن وجود ندارد. من باید مقدار ریشه را تغییر دهم تا بتوانم یک درخت Merkle معتبر ارائه دهم.

با استفاده از ابزار پروفسور QPetabyte، من یک درخت مرکل را از دو برگ ایجاد کردم که شامل آدرس کیف پول من و آدرس آن است BSRS_nft قرارداد هوشمند، که من با استفاده از Blockchain Explorer درون بازی در بلوک دو بلاک چین اتریوم بازی پیدا کردم. این ابزار مقدار ریشه این درخت و مقدار اثبات را برای آدرس کیف پول من ایجاد کرد. سپس از Burp برای رهگیری درخواست به سرور استفاده کردم و مقدار ریشه پیش‌فرض را تغییر دادم تا بتوانم یک درخت Merkle معتبر ارسال کنم. اینجا من است اسپورت NFT با قیمت ثابت 100 KringleCoins خریداری شده است:

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

واقعا نمونه زشتیه

نهایی

کرک کرد! نکات برجسته KringleCon 5: Golden Rings PlatoBlockchain Data Intelligence. جستجوی عمودی Ai.

یک تشکر بزرگ از برگزارکنندگان چالش هک SANS Holiday که ذهن من را به روش‌های جدید توسعه دادند و به تعمیق دانش امنیت سایبری من کمک کردند. نه تنها منتظر چالش سال آینده هستم، بلکه حتی نسخه های 2020 و 2021 این چالش را امتحان خواهم کرد. و اگر قبلاً در این چالش شرکت نکرده‌اید، امیدوارم این نکات جالب توجه شما را برانگیخته باشد.

تمبر زمان:

بیشتر از ما امنیت زندگی می کنیم