🧑‍💻Cyber.vision🧑‍💻
464 subscribers
170 photos
12 videos
20 files
144 links
Python tips and tricks
The Good, Bad and the Ugly
متخصص امنیت شبکه های کنترل صنعتی
👨‍💻این کانال یک بلاگ شخصی هست و پیرامون نظرات و چیزهایی که توی این چند سال کد زدن یاد گرفتم (فقط برای کمک به دوستان تازه‌کار)
https://t.iss.one/Hacker0x01
Download Telegram
#ابزار
مقاله‌ی زیر یک کتابخانه‌ی جدید برای توابع توزیع پارتون (PDF) ارائه می‌کند، به‌طوری‌که هم PDFهای خطی (cPDF) و هم PDFهای وابسته به تکانه عرضی (TMD) را ارائه دهد:
https://arxiv.org/abs/2412.16680

آدرس گیت‌هاب:
https://github.com/Raminkord92/PDFxTMD
👍1
برای کار به عنوان داده کاو یا دانشمند داده در یک شرکت‌‌، باید مصاحبه فنی مربوطه را با موفقیت پشت سر گذاشت. اما چه سوالهایی معمولا برای این مصاحبه پرسیده می شوند؟ چند نمونه از این سوالات را که خودم در مصاحبه ها با آنها مواجه شده ام را در اینجا مطرح می کنم. با توجه به اینکه سابقه کار در این زمینه را در ایران ندارم، لذا سوالات مربوطه از مصاحبه های فنی موسسات و شرکتهای واقع در خارج از ایران نظیر IBM, ANZ bank, Sportsbet, iSelect
می باشد.
(صحبت های یک دیتا ساینتیست در خارج ایران)
۱- تعریف و توضیح در مورد
P-value

۲- رگولاریزاسیون چیست و برای حل چه مشکلی استفاده میشود؟ تفاوت بین نرم L1 و L2 چیست؟

۳- تبدیل Box-Cox چیست؟

۴- توضیح در مورد MultiCollinearity
و چگونگی حل آن؟

۵- آیا الگوریتم Gradient descent همیشه به نقطه یکسانی همگرا میشود؟

۶- چگونه در الگوریتم K-means تعداد کلاسترهای بهینه را می توان مشخص کرد؟

۷- بردار ویژه و مقدار ویژه چیست؟

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

۹- نفرین بعدیت چیست؟

۱۰- چرا خطای کمترین مربعات همیشه متریک مناسبی برای ارزیابی خطا نیست؟ چه متریک دیگری را پیشنهاد می کنید؟

۱۱- آیا استفاده از ۵۰ درخت تصمیم کوچک به جای یک درخت تصمیم بزرگ اولویت دارد؟ چرا؟

۱۲- تعامل بین بایاس و واریانس به چه معناست؟






۱۳- منحنی
ROC
چیست؟

۱۴- کدام را ترجیح می دهید؟ داشتن تعداد زیادی جواب منفی کاذب و یا داشتن تعداد زیادی جواب مثبت کاذب؟

۱۵- چرا دسته بندی کننده نایو بیز، الگوریتم مناسبی نیست؟ برای مسئله تشخیص اسپم در ایمیل، چه روشی را برای بهبود نایو بیز پیشنهاد می کنید؟

۱۶ در بعضی مواقع یک سناریو به داوطلب داده می شود و از او خواسته می شود که برای آن سناریو راه حل پیشنهاد کند. به عنوان مثال: مدیر یک موسسه انتشاراتی که پنج مجله در آن به چاپ می رسد از شما ( به عنوان داده کاو) می خواهد روشی ارائه دهید برای طراحی یک سیستم توصیه به خواننده که بر اساس سلیقه خواننده مجله مورد علاقه اش را به او پیشنهاد می کند.




الگوریتم های #یادگیری_ماشین
#مصاحبه_علم_داده
#علم_داده
👌1
درواقع CSRF شبیه Stored XSSعه. اینجوری که هکر یه لینک مخرب رو توی یه سایت(یا یه کامنت توی سوشال مدیا و...) می‌زاره قربانی با کلیک کردن روش، این حمله اتفاق میوفته.
همچنین ممکنه بعضی از این حمله‌ها با متد GET باشن و حتی بدون نیاز به یه سایت دوم، صرفا با یه لینک این حمله انجام بشه:
<img src="https://vulnerable-website.com/email/[email protected]">
روش‌های جلوگیری و محافظت در برابر CSRF:
توکن csrf = یه هدر که توی درخواست‌های حساس، ارسال می‌شه و از سمت سرور ست می‌شه.
کوکی samesite = یه مکانیزم امنیتی مرورگره که از استفاده شدن کوکی‌های یه سایت، توی درخواست سایت‌های دیگه جلوگیری می‌کنه.
اعتبار سنجی Referer = بعضی وقتا از هدر ریفرر استفاده می‌شه. (تاثیر کمتری داره)
توکن CSRF یه توکن غیرقابل پیشبینی‌عه که برنامه نویس اون رو طراحی می‌کنه. این توکن باید توی درخواست‌های حساس کاربر که به سمت سرور ارسال می‌کنه وجود داشته باشه، در غیر این صورت اون درخواست توسط سرور پردازش نمی‌شه. برای مثال:
<form name="change-email-form" action="/my-account/change-email" method="POST">
<label>Email</label>
<input required type="email" name="email" value="[email protected]">
<input required type="hidden" name="csrf" value="50FaWgdOhi9M9wyna8taR1k3ODOR8d6u">
<button class='button' type='submit'> Update email </button>
</form>
با درست ست شدن توکن CSRF درخواست‌های حساس، شبیه به درخواست زیر ارسال می‌شن:
POST /my-account/change-email HTTP/1.1
Host: normal-website.com
Content-Length: 70
Content-Type: application/x-www-form-urlencoded

csrf=50FaWgdOhi9M9wyna8taR1k3ODOR8d6u&[email protected]
و با وجود توکن CSRF جلوی این آسیب پذیری گرفته می‌شه. چرا که مهاجم نمی‌تونه این توکن رو حدس بزنه و درخواست کاربر رو جعل کنه.
البته این رو هم توجه کنید که توکن CSRF همیشه به عنوان یه پارامتر مخفی با متد POST ارسال نمی‌شه و توی برخی موارد به عنوان یه هدر HTTP هم ست می‌شه.
قانون هافستتر:
هر چیزی بیشتر از آنچه که انتظار دارید طول می‌کشد
قانون هافستتر یا قانون هوفستاتر (Hofstadter's Law) یک اصل طنزآمیز است که در مورد برآورد زمان مورد نیاز برای انجام یک کار به کار می‌رود. این قانون می‌گوید:

هر کاری بیشتر از آن چیزی که انتظار دارید طول می‌کشد، حتی اگر این قانون را در نظر بگیرید

این قانون، به طرز شگفت‌انگیزی، بسیاری از تجربیات ما را در زندگی روزمره و پروژه‌های مختلف توصیف می‌کند. به نظر می‌رسد که هر چقدر هم که سعی کنیم زمان لازم برای انجام یک کار را دقیقاً تخمین بزنیم، همیشه با تأخیر مواجه می‌شویم.
#قوانین_هکرها
Channel name was changed to «🧑‍💻Senior developer🧑‍💻»
Bug Bounty Methodology =

وقتی تارگت به این شکله:
*.target.tld
باید subdomain هارو پیدا کنیم و همه اونارو تست کنیم. میتونیم با افزونه logger++ که برای burp هست قسمتی از کارمون رو راحت تر کنیم. اول باید هرچی subdomain داریم تو مرورگر باز کنیم و با functionality های مختلف از جمله login و register کار کنیم. بعد از کار کردن با functionality های مختلف میتونیم از این سرچ ها استفاده کنیم.

1⃣ پیدا کردن response هایی که حاوی اطلاعاتی مثل email خودمون هستند.
کاربرد: تست cors , cache deception , xssi روی این صفحات.
Response.Body CONTAINS "[email protected]"
2⃣ پیدا کردن subdomain هایی که تو response های مختلف وجود دارند.
Response.Body CONTAINS ".target.com"
تو این قسمت ممکنه به subdomain های جدیدی برسیم.

3⃣ پیدا کردن email های متعلق به کمپانی که تو response های مختلف افشا شدند:
Response.Body CONTAINS "@company-name.tld"
میتونیم Reverse whois روی email ها انجام بدیم و به دارایی های بیشتری از اون شرکت برسیم.
#vulnerability_hunting
#bug_bounty_methodology
برنامه ticktick که تقویم و مدیریت کارهای روزانه رو ارائه میده به صورت رسمی تقویم پارسی رو اضافه کرده و حالا میتونید توی نسخه موبایل و دسکتاپ به بخش Additional Calendar برید و تقویم persian رو انتخاب کنید.
اگه اشتراک پریمیوم تهیه کنید میتوند تیکت پشتیبانی هم ارسال کنید و اگر تونستید درخواست کنید زبان فارسی و فونت دلخواه رو هم اضافه کنن.
ظاهرا تیکت‌ها براشون خیلی اهمیت داره و با دقت خوبی بهشون جواب میدن.
https://ticktick.com/download
Forwarded from Linuxor ?
این تیتر هم جالب بود 9 الگورتیمی که بر دنیای ما حکمرانی می‌کنند.

@Linuxor
📌معماری امنیت سایبری: پنج اصل حیاتی و یک اشتباه رایج

در ادامهٔ سلسله مقالات مرتبط با CSIRT و نقش CISO در سازمان، این بار به بررسی مباحث و چالش‌های مدرن در حوزهٔ امنیت سامانه‌های سایبرنتیک می‌پردازیم. هدف اصلی ما، معرفی پنج اصل حیاتی در معماری امنیت سایبری است که رعایت آن‌ها در پروژه‌ها و زیرساخت‌های سازمانی - به‌ویژه در صنعت بانکداری - نقشی حیاتی دارد. در انتهای این مقاله، یک اشتباه متداول را نیز بررسی خواهیم کرد که ممکن است سازمان‌ها به دام آن بیفتند.

🔺اصل اول: قلعه‌ای با دیوارهای چندلایه (دفاع در عمق - Defense in Depth)

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

🔹سیاست اول و آماده‎سازی برای دفاع در عمق:

همیشه در تمامی جلساتی که داشته‌ام، این مسئله را ذکر کردم و مجدد هم در این مقاله ذکر خواهم کرد. استفاده کردن از سیستم‌عامل‌های کرک شده و همچنین دانلود شده از منبع غیراصلی (غیر وب‌سایت مایکروسافت)، دانلود نرم‌افزارهای کرک شده از هر نوعی، نصب محصولات آفیس کرک شده که به‌روزرسانی دریافت نمی‌کنند، استفاده از وب‌سایت‌های Soft98 و P30Download و ... را جد در تمامی واحدها و دپارتمان‌ها و ... ممنوع کنید.

در ساختاری که اولین و مهم‌ترین اصل امنیتی رعایت نمی‌شود، دیگر شما هزار تا فناوری قرار بده، چه نتیجه‌ای می‌خواهید دریافت کنید؟ اگر پول ندارید که سیستم‌عامل‌ها و محصولات اداری و نرم افزارهای کاربردی را خریداری کنید، خب بیخیال شوید و بروید روی لینوکس محیط را ستاپ کنید. در این مملکت کافی است یک APT سایت Soft98 را هک کند، چندتا پکیج را دستکاری کند، کلا مملکت برای آن ها متن باز خواهد شد. خجالت آور است که در جاهایی مانند بانک ها و صنایع فولادی و ... این مسائل مشاهده می‌شود.

حال ما اگر فرض کنیم، همه چیز از بیس درست است. سیستم عامل ها قانونی نصب شده اند. محصولات اداری لایسنس دارند و تمامی محصولات کاربردی هم قانونی نصب و راه اندازی شده اند، تازه می توانیم وارد مرحله دفاع در عمق شویم. والا از بیخ داستان مشکل دارد.

🔸لایهٔ اولیه دفاعی

فایروال نسل بعدی (NGFW): اولین مسئله ای که باید به آن پرداخته شود، موضوع فایروال روی اج شبکه است. استفاده از محصولات Fortinet FortiGate، Cisco Firepower، Juniper SRX Series با قابلیت‌های هوش تهدید (Threat Intelligence) و بررسی عمیق بسته (DPI) برای این مسئله پیشنهاد می‌شود.

سیستم تشخیص و پیشگیری نفوذ (IDS/IPS): سپس باید زیرلایه بعدی را پیکربندی کرد که مسئله تشخیص و پیشگیری از نفوذ است. برای این زیرلایه می توان به‌کمک Snort، Suricata یا محصولات اختصاصی از سیسکو و فورتی‌نت، ترافیک ورودی و خروجی را به شکل صحیح پایش کرد.

کنترل دسترسی به شبکه (NAC): زیرلایه بعدی مسئله کنترل دسترسی به شبکه است. برای این مورد می توان با Cisco ISE یا Juniper ClearPass، هویت و سلامت دستگاه قبل از ورود به شبکه بانک یا هر صنعتی به دقت بررسی شود.

احراز هویت چندعاملی (MFA): یکی از موضوعات خیلی مهم، زیرلایه MFA است. خود همین زیرلایه تاثیر بسیاری بر امنیت دارد. پیاده‌سازی Microsoft Authenticator، Cisco Duo، FortiToken برای کاهش ریسک سرقت حساب کاربری می تواند نقش مهمی ایفا کند.

🔸 لایهٔ دوم دفاعی

امنیت نقاط پایانی (Endpoint Security): راهکارهایی مثل سوفوس، کسپرسکی، ترندمیکرو یا حتی خود مایکروسافت دفندر برای شناسایی حملات و بدافزارها می‌توانند موردهای مناسبی باشند.

مدیریت وصله‌ها (Patch Management): یکی از مسائل بسیار مهم، وصله‌پذیری سیستم‌ها به سرعت است. برای این کار باید استفاده از Microsoft Intune / WSUS یا ابزارهای مشابه جهت به‌روزرسانی منظم سیستم‌ها و کاهش ریسک آسیب‌پذیری‌ها در الویت باشد.

رمزنگاری و حفاظت از داده‌ها: رمزنگاری دیسک با Microsoft BitLocker و احراز هویت رمزنگاری‌شده با FortiToken برای محافظت از اطلاعات حساس در صورت سرقت فیزیکی دستگاه مسئله مهم بعدی است.

🔸لایهٔ سوم دفاعی

سیستم مدیریت رویداد و اطلاعات امنیتی (SIEM): Splunk یا Elastic Stack (ELK) برای جمع‌آوری لاگ‌ها از فایروال، IDS/IPS، سرورها و دیتابیس‌ها و تحلیل همبستهٔ آن‌ها یکی از مسائل مهم امنیت در یک سازمان است. معماری و استقرار این زیرلایه بسیار اهمیت دارد. هر چقدر لاگیری و ایجاد همبستگی به درستی و با دقت انجام شود، مراحل بعدی می توانند در تشخیص و جلوگیری تهدیدات بهتر عمل کنند.

@aioooir | #ciso #story
👍1
🧑‍💻Cyber.vision🧑‍💻
برنامه ticktick که تقویم و مدیریت کارهای روزانه رو ارائه میده به صورت رسمی تقویم پارسی رو اضافه کرده و حالا میتونید توی نسخه موبایل و دسکتاپ به بخش Additional Calendar برید و تقویم persian رو انتخاب کنید. اگه اشتراک پریمیوم تهیه کنید میتوند تیکت پشتیبانی هم…
ممکنه خیلی از ماها در گوگل کلندر نیز نیاز به استفاده از تقویم شمسی داشته باشیم،‌ مدت زیادیه که گوگل این ویژگی رو به کلندرش اضافه کرده و می‌تونید ازش استفاده کنید. وارد تنظیمات می‌شید و Persian Calendar رو به عنوان Alternate Calendar اضافه می‌کنید.

https://calendar.google.com
🌐 خب خب خب لایه شبکه (Network Layer) در مدل OSI

لایه شبکه، سومین لایه از مدل OSI، مسئول انتقال داده‌ها بین شبکه‌های مختلفه. این لایه کاری می‌کنه که داده‌ها از یه مبدأ به مقصد مشخص (تو هر گوشه دنیا) برسن، بدون این که مسیر و راهش گم بشه. این لایه مثل یه سیستم حمل‌ونقل بزرگ عمل می‌کنه که بسته‌های اطلاعاتی رو از یه نقطه به نقطه دیگه منتقل می‌کنه. بیاین جزئیاتش رو مرحله‌به‌مرحله بررسی کنیم. 🚀

📍 وظایف اصلی لایه شبکه

🧭 آدرس‌دهی منطقی (Logical Addressing):
هر دستگاه تو شبکه یه آدرس منحصربه‌فرد داره که بهش آدرس IP می‌گن. این آدرس مشخص می‌کنه داده‌ها باید دقیقاً به کجا برن.
مثال:
فرض کن می‌خوای یه بسته پستی ارسال کنی. بدون داشتن آدرس خونه مقصد، عملاً ارسال بسته غیرممکنه. تو شبکه هم آدرس IP دقیقاً مثل آدرس خونه عمل می‌کنه.
🛣️ مسیریابی (Routing):
وقتی داده‌ها باید از یه شبکه به شبکه دیگه برن، این لایه تصمیم می‌گیره که از چه مسیری برن تا سریع‌تر و مطمئن‌تر به مقصد برسن.

نقش روترها:
دستگاه‌های روتر تو این مرحله خیلی مهمن. روترها با بررسی آدرس‌های IP، بهترین مسیر رو برای انتقال داده پیدا می‌کنن.
مثال:
فرض کن داری از تهران به اصفهان سفر می‌کنی. چند مسیر مختلف هست، ولی تو کوتاه‌ترین و کم‌ترافیک‌ترین جاده رو انتخاب می‌کنی. لایه شبکه همین کارو برای داده‌ها انجام می‌ده
📦 بسته‌بندی داده‌ها (Packetization):
داده‌هایی که از لایه انتقال (Transport Layer) میان، به بخش‌های کوچیک‌تری به اسم پکت (Packet) تقسیم می‌شن. هر پکت شامل اطلاعات زیره:
آدرس مبدأ: دستگاهی که داده رو ارسال کرده.

آدرس مقصد: جایی که داده باید بره.

داده اصلی: همون اطلاعاتی که باید منتقل بشه.

اطلاعات کنترلی: برای اطمینان از انتقال درست داده.


🔍 مثال:
فرض کن می‌خوای یه پیتزای بزرگ رو با دوستات بخوری، ولی ظرفت کوچیکه.
پیتزا رو به برش‌های کوچیک تقسیم می‌کنی و هر برش رو جداگونه می‌فرستی.
🚦 کنترل تراکم (Congestion Control):
اگه یه شبکه شلوغ بشه و داده‌ها نتونن به موقع منتقل بشن، این لایه کمک می‌کنه ترافیک مدیریت بشه.
مثال:
فرض کن تو صف یه سوپرمارکت شلوغی. فروشنده سعی می‌کنه با اضافه کردن صندوق‌دار بیشتر، صف رو کوتاه‌تر کنه. لایه شبکه هم همین طور ترافیک شبکه رو کنترل می‌کنه.
🔧 تکه‌تکه کردن و دوباره‌سازی (Fragmentation and Reassembly):
گاهی وقتا داده‌ها بزرگ‌تر از ظرفیت انتقال یه شبکه هستن. این لایه داده‌ها رو به قطعات کوچیک‌تر تقسیم می‌کنه و وقتی به مقصد رسید، دوباره به هم وصلشون می‌کنه.
مثال:
فرض کن یه مبل بزرگ رو می‌خوای از در کوچیک خونه رد کنی. مبل رو باز می‌کنی، قطعاتش رو یکی‌یکی رد می‌کنی و دوباره اون‌طرف سر هم می‌کنی.
⚙️ پروتکل‌های مهم لایه شبکه
IPv4 (Internet Protocol Version 4):
پرکاربردترین پروتکل برای آدرس‌دهی و مسیریابی.
از آدرس‌های ۳۲ بیتی استفاده می‌کنه (مثلاً: 192.168.1.1).

IPv6 (Internet Protocol Version 6):
نسخه جدیدتر IPv4 که ظرفیت بیشتری برای آدرس‌دهی داره (۱۲۸ بیتی).
مشکل کمبود آدرس‌های IPv4 رو حل کرده.

ICMP (Internet Control Message Protocol):
برای ارسال پیام‌های کنترلی (مثل خطاها) و تست شبکه (مثل ابزار Ping).

ARP (Address Resolution Protocol):
تبدیل آدرس IP به آدرس فیزیکی (MAC Address).

🔄 انواع ارتباطات تو لایه شبکه
تک‌پخشی (Unicast):
ارسال پکت فقط به یه مقصد خاص.
مثال: ارسال ایمیل به مدحج.

چندپخشی (Multicast):
ارسال پکت به گروهی از دستگاه‌ها.
مثال: استریم زنده یه بازی برای چند کاربر خاص.

همگانی (Broadcast):
ارسال پکت به همه دستگاه‌های یه شبکه.
مثال: اعلام عمومی پیام تو یه گروه چت.

🎯 جمع بندی
لایه شبکه یه پل حیاتی بین دستگاه‌ها تو شبکه‌های مختلفه. این لایه مطمئن می‌شه که هر پکت به موقع و بدون اشتباه به مقصدش برسه. با وظایفی مثل مسیریابی، آدرس‌دهی، و کنترل ترافیک، این لایه ستون فقرات اینترنت و شبکه‌های مدرنه. بدون لایه شبکه، ارتباطات جهانی غیرممکن بودن 🌍

#⃣ #network




🥷 CHANNEL | GROUP
لایه ۴: لایه انتقال (Transport Layer) 🚛

لایه Transport یکی از مهم‌ترین بخش‌های مدل OSI هست که وظیفه مدیریت انتقال داده بین دستگاه‌ها و اطمینان از ارتباط پایدار و مؤثر رو بر عهده داره. این لایه تضمین می‌کنه که داده‌ها به درستی به مقصد برسن، ترتیبشون حفظ بشه، و در صورت وجود خطا، اصلاح بشن.

وظایف اصلی لایه انتقال

📦 تقسیم‌بندی داده‌ها (Segmentation):
وقتی اپلیکیشنی قصد ارسال داده داره، این داده‌ها به قطعات کوچکتری به نام سگمنت تقسیم می‌شن. هر سگمنت یک هدر مخصوص داره که شامل اطلاعاتی مثل شماره ترتیبی و آدرس پورت می‌شه.

🧩 بازسازی داده‌ها (Reassembly):
در مقصد، لایه انتقال سگمنت‌ها رو با استفاده از شماره ترتیبی که در هدرشون ذخیره شده، به ترتیب کنار هم قرار می‌ده و داده اصلی رو بازسازی می‌کنه.

⚠️ کنترل خطا (Error Control):
لایه انتقال با استفاده از تکنیک‌هایی مثل Checksum صحت داده‌ها رو بررسی می‌کنه. اگه خطایی در داده‌ها تشخیص داده بشه، درخواست ارسال مجدد سگمنت انجام می‌شه.

🚦 کنترل جریان (Flow Control):
وقتی فرستنده سریع‌تر از گیرنده داده ارسال می‌کنه، ممکنه گیرنده دچار مشکل بشه. لایه انتقال سرعت ارسال رو با استفاده از Sliding Window تنظیم می‌کنه.

🔗 مدیریت ارتباط (Connection Management):
لایه انتقال می‌تونه ارتباط رو به دو صورت Connection-Oriented (مانند TCP) یا Connectionless (مانند UDP) مدیریت کنه. در ارتباطات Connection-Oriented، قبل از ارسال داده‌ها یک ارتباط پایدار برقرار می‌شه.

پروتکل‌های کلیدی در لایه انتقال

TCP (Transmission Control Protocol):
💡 TCP یک پروتکل Connection-Oriented و Reliable هست که برای ارتباطات حساس به دقت استفاده می‌شه.

ویژگی‌های کلیدی:

ارتباط مبتنی بر اتصال:

فرآیند Three-Way Handshake شامل مراحل زیره:


SYN: درخواست اتصال از فرستنده.
SYN-ACK: پاسخ گیرنده.
ACK: تأیید فرستنده.

شماره‌گذاری سگمنت‌ها:
🔢 ‏TCP به هر سگمنت یک شماره منحصر‌به‌فرد اختصاص می‌ده تا داده‌ها در مقصد به درستی بازسازی بشن.

کنترل جریان:
با استفاده از Sliding Window، TCP حجم داده‌ای که می‌تونه ارسال بشه رو تنظیم می‌کنه.

کنترل خطا:
با استفاده از Checksum و Acknowledgment صحت داده‌ها بررسی و تضمین می‌شه.


UDP (User Datagram Protocol):
‏ UDP یک پروتکل Connectionless و Unreliable هست که برای ارتباطات سریع طراحی شده.
ویژگی‌های کلیدی:

بدون اتصال:
‏UDP داده‌ها رو بدون ایجاد ارتباط پایدار ارسال می‌کنه.

بدون تضمین تحویل:
اگه داده‌ای گم بشه یا خراب بشه، UDP هیچ تضمینی برای ارسال مجدد نداره.

سرعت بالا:
چون کنترل جریان یا تصحیح خطا نداره، سرعت انتقال بالاتره.

🎛 پورت‌ها و شماره‌گذاری در لایه انتقال
پورت‌ها اعدادی ۱۶بیتی هستن که ارتباط بین اپلیکیشن‌ها و دستگاه‌ها رو مدیریت می‌کنن.

پورت‌های شناخته‌شده (Well-Known Ports):
📌 این پورت‌ها اعداد بین ۰ تا ۱۰۲۳ هستن و به پروتکل‌های معروف اختصاص داده شدن.
‏HTTP: پورت 80
‏HTTPS: پورت 443
‏FTP: پورت 21

پورت‌های رجیسترشده (Registered Ports):
🔒 اعداد بین ۱۰۲۴ تا ۴۹۱۵۱ که برای اپلیکیشن‌های خاص رزرو می‌شن.

پورت‌های داینامیک (Dynamic Ports):
🔄 اعداد بین ۴۹۱۵۲ تا ۶۵۵۳۵ که برای ارتباطات موقت استفاده می‌شن.

جمع‌بندی
لایه Transport نقش حیاتی در تضمین انتقال داده‌ها بین دستگاه‌ها داره. انتخاب پروتکل مناسب به نیازهای اپلیکیشن شما بستگی داره:
TCP برای ارتباطات حساس به دقت.
UDP برای ارتباطات حساس به سرعت.

#⃣ #network



🥷 CHANNEL | GROUP
👍1
PCSG-Attack-Scenario-Rev2.pdf
3.8 MB
Hey Geek Learners!
Imagine if we had a live map showing cyber attacks and what everyone's doing—I'd know exactly what to check first and which tools to grab! It’s like hunting down cyber threats in real-time (KHAFAN stuff, right? 😂). Anyway, I’m thinking of writing down some examples of potential attacks to help younger folks (I'm 60, by the way! 😆) get a better grasp on things. Let’s spark a learning wave—just keep learning

سلام
ببینید، یه فکر به ذهنم رسید،چقدر خوب می‌شد اگه یه نقشه واقعی از حملات سایبری داشتیم که لحظه به لحظه می‌دیدیم هر کسی چه کارایی می‌کنه (مثل یه جور شکار تهدیدات انسانی! 😂) ! اون موقع می‌فهمیدم که اول باید چی رو چک کنم، کدوم ابزار رو بردارم و چطور تو اون لحظات "KHAFAN" (ترسناک! 😁) عمل کنم!
خب البته همه چیز بستگی به دانش و نقشه هر کسی داره، ولی یه سری چیزای عمومی هست که میشه یاد گرفت.خلاصه اینکه دارم فکر می‌کنم چندتا مثال از حملات احتمالی بنویسم تا نسل جوان‌تر (من 60 سالم! 😆) بهتر متوجه بشه چی به چیه.
مثل همیشه امید دارم براتون کمک کننده باشه و از فیدبک هاتون استقبال میکنممم. 🌿
————————————————

📌 Attack Scenario
🔖 #Paper / #English



📑 #PCSGCommunity #SOC #BlueTeam  #defence #attack
‏ما شاهد بزرگ‌ترین انتقال ثروت در تاریخ هستیم.

طبق گزارش McKinsey تا سال ۲۰۳۴، agent های هوش مصنوعی:
جایگزین ۸۰۰ میلیون شغل خواهند شد.
و ۱۹.۹ تریلیون دلار به اقتصاد جهانی اضافه می‌کنند.

شغل‌های ۹ صبح تا ۵ عصر در حال انقراض‌اند.

چطور باید در ۲۰۲۵ آماده این تغییر بزرگ باشیم:
‏۱ نفر از هر ۷ نفر تاکنون شغل خود را به ایجنت های هوش مصنوعی باخته‌اند.

• صنایع کامل در عرض یک شب ناپدید می‌شوند.
• مشاغلی که طی دهه‌ها ساخته شده‌اند، حالا منسوخ شده‌اند.
• بازار کار در آشفتگی کامل است.

عوامل هوش مصنوعی را بهتر بشناسیم و بفهمیم چرا اینقدر قدرتمند هستند:
‏عوامل هوش مصنوعی فقط ابزارهای خودکارسازی نیستند..

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

مثل این است که ۱۰۰۰ کارمند متخصص داشته باشید که نه می‌خوابند و نه شکایت می‌کنند.
‏یک agent هوش مصنوعی می‌تواند:

• ۱۰,۰۰۰ سند حقوقی را در چند ثانیه بخواند
• پاسخ‌های بی‌نقص را در میلی‌ثانیه تولید کند
• با ۱۰۰ سیستم هوش مصنوعی دیگر هماهنگ شود
• بر اساس داده‌های لحظه‌ای تصمیم‌گیری کند

صاحبان کسب‌وکار با سرعتی بی‌سابقه فعالیت خواهند کرد.
‏مکینزی پیش‌بینی می‌کند که هوش مصنوعی ۱۹.۹ تریلیون دلار به اقتصاد جهانی اضافه خواهد کرد.

آنها:
• بدون وقفه ۲۴/۷ کار می‌کنند
• هرگز یک اشتباه را دوباره تکرار نمی‌کنند
• ۱۰۰۰ برابر سریع‌تر از انسان تصمیم‌گیری‌ می کنند

اما جادوی واقعی زمانی ست که چندین agent با هم کار کنند:
‏آمازون به‌عنوان مثال:

عامل هوش مصنوعی اول می‌تواند نقش تحلیل‌گر را بر عهده بگیرد.
عامل دوم می‌تواند برنامه‌ریزی را مدیریت کند.
عامل سوم می‌تواند مسئولیت مدیریت کلی را برعهده داشته باشد.

سم آلتمن می‌گوید در آینده، عوامل هوش مصنوعی کل شرکت‌ها را اداره خواهند کرد.
‏تا سال ۲۰۳۰، عوامل هوش مصنوعی ۷۰٪ از کارهای اداری را جایگزین خواهند کرد (طبق گزارش مک‌کینزی).

ولی بازماندگان؟

آن‌ها این کارها را متفاوت انجام خواهند داد...
‏آن‌ها مهارت‌هایی را یاد گرفتند که مختص انسان‌هاست:

• تفکر استراتژیک
• ایجاد روابط
• هوش هیجانی
اما حقیقت ناخوشایند اینجاست:
۹۵٪ از نیروی کار برای این تغییر آماده نیستند.

کسانی که زودتر سازگار شوند، موفق خواهند شد. اما آن‌هایی که این کار را نکنند، به سختی پیش خواهند رفت.

مجمع جهانی اقتصاد می‌گوید:
تنها ۵٪ از مشاغل بدون تغییر باقی خواهند ماند.
بهترین راه برای آماده شدن:

-یاد بگیرید چگونه از هوش مصنوعی استفاده کنید
-در مهارت‌هایی که مختص انسان‌هاست، استاد شوید
-بر توسعه خلاقیت و مهارت‌های فکری خود تمرکز کنید

اگر بر ویژگی‌هایی که فقط انسان‌ها دارند تمرکز کنید، هرگز دچار کمبود نخواهید شد.
این پست از توییتر کپی شده که همه دوستانی ندارند هم بتونم بخونند
درود
توی یه شرکتی کار میکردم
برای پیاده‌سازی قابلیت Virtual IP اومدم پیشنهاد استفاده از Pacemaker رو دادم
مدیرای شرکت ۳ تا داداش بودن و یکیشون که خیلی ادعا داشت سریع اومد با خوشحالی درو باز کرد گفت این Pacemaker نمیدونم ۵۰۰ هزارتاش باگ امنیتی داره و هک شده و نباید استفاده کنید
منم پرام ریخت که مگه میشه؟
بعد که لینکشو برام فرستاد دیدم رفته راجع به Pacemakerای که توی عمل قلب برای ایجاد پالس برای ضربان قلب استفاده میشه تحقیق کرده
🤣1
اگر بخوام مثال دیگه ای از نوشتن به صورت بلاکینگ بگم این تصویر به خوبی میتونه گویای ماجرا باشه، اینجا من نوشتن بروی I/O سوکت TCP رو مثال میزنم و سیستم کال write() رو توضیح میدم.

خب توی تصویر میبینیم که برای هر اندپوینت سوکتی که از کرنل درخواست باز کردن میکنیم کرنل یک بافر نوشتن و یک بافر خواندن به اون اختصاص میده،‌ و وقتی روی یک سوکت میخواییم عملیات write انجام بدیم کرنل تا زمانی که داده بروی بافر ارسال کپی نشده باشه پروسس برنامه رو بلاک میکنه، این اتفاق حتی وقتی بافر ارسال هم پر باشه میوفته، یعنی فرض کنین ۱۰۲۴ بایت ارسال شده و بطور کامل بروی شبکه نوشته نشده و در همین حین درخواست برای نوشتن ۱۰۲۴ بایت دیگه هم میاد، ولی کرنل پروسس رو تا جایی که این ۱۰۲۴ بایت دوم رو بتونه توی بافر جا براش تخصیص بده بلاک نگه میداره، حالا خالی شدن این بافر به وضعیت شلوغی شبکه و کانفیگ سیستم بستگی داره.

راه حل؟ مدل Nonblocking که بهش میرسیم تو ادامه...
Media is too big
VIEW IN TELEGRAM
اپدیت پروژه‌ی market data handler:

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

این روش کانتکس سوییچ نداره و با cpu affinity مطمئن میشیم که هر ترد فقط به یک هسته بایند شده.



هنوز هیچ کاری سنگینی که با cpu داشته باشیم نداشتیم و تسکامون تا الان I/O bound بوده، الان هیچ بنچمارکی نمیگیرم و فقط تفریحی یه ویدیو دیگه گرفتم از لاگ سیستم وقتی داره ایونت جم میکنه.
تا اینجا هر ایونت حدودا ۱ میلی ثانیه طول میکشه تا: مموریش الوکیت بشه، بافرش پر بشه و به جیسون تبدیل بشه. بیلدم روی دیباگه و همونطور که گفتم هیچ کاری هنوز برای پرفرومنس انجام ندادم، مرحله‌ی بعد نوشتن روی یه دیتا استراکچره tree هست که روی مموریه.

سوالی بود بپرسید، بریم ببینیم چی میشه
.

#market_data_handler
👍1
مقدار صفر برای argc در برنامه‌های لینوکسی. چرا و چگونه؟

همه چیز از بررسی CVE-2021-4034 و کامپایل مجدد PolKit بر روی Ubuntu 22.04 شروع شد! تصمیم داشتم یک نسخه‌ی آسیب‌پذیر PolKit رو با فعال کردن Debug Symbols کامپایل کرده و مراحل کامل این CVE رو در GDB بررسی کنم. به صورت خلاصه بگم که این آسیب‌پذیری در باینری pkexec وجود دارد و به کمک آن می‌توان LPE انجام داد. یکی از شرایط استفاده از این آسیب‌پذیری این است که در زمان اجرای pkexec شرط argc==0 برقرار باشد که از طریق آن متغیرهای محلی خوانده شده و بتوان یک library مخرب را بارگذاری نمود.

از آنجایی که pkexec علاوه بر لینوکس بر روی Solaris, BSD هم قابل استفاده است، در مقاله‌ی اصلی این CVE که توسط Qualys Security منتشر شده است متن زیر مشاهده می‌شود که از الزام argc==0 برای امکان‌پذیر بودن این LPE خبر می‌دهد.
OpenBSD is not exploitable, because its kernel refuses to execve() a program if argc is 0

پس فرض من این بود که در نسخه‌های اخیر لینوکس هم با کامپایل PolKit باید بتوان این آسیب‌پذیری را تست کرد. این بود که بر روی Ubuntu 22.04 یک نسخه‌ی آسیب‌پذیر را کامپایل کرده و یک کد ساده به صورت زیر نوشتم که pkexec را اجرا کرده و argc==0 برقرار باشد.

void main() {
char *args[] = { NULL };
char *envs[] = {"SHELL=/bin/bash", 0};
execve("pkexec", args, envs);
}

با اجرای برنامه و زدن strace مشاهده شد که فراخوانی در سطح user طبق انتظار انجام شد.
execve("pkexec", [], 0x7ffe3883b200 /* 1 var */)

ولی دو تا مورد عجیب رخ داد. اول اینکه برنامه در gdb بر خلاف انتظار با argc==1‌ اجرا شده و argv[0] که اسم برنامه در آن قرار می‌گیرد و طبق مدل فراخوانی باید NULL می‌بود برابر “” شده بود. مورد دومی که عجیب بود پیام زیر در dmesg بود.
process 'exploit' launched 'pkexec' with NULL argv: empty string added

با رسیدن به این مرحله به سراغ Ubuntu 20.04 رفتم و همین کد را بر روی آن اجرا کردم که همه چیز طبق انتظار رخ داده و در gdb با رسیدن به main برنامه‌ی pkexec مقدار argc==0 برقرار بوده و امکان تست CVE وجود داشت. اینجا واضح بود که در کرنل‌های جدید لینوکس در فراخوانی سیستمی execve تغییراتی اعمال شده است که جلوی اجرای برنامه‌ها با argc==0 گرفته شود. اینجا دیگه لازم بود کد کرنل چک شود!

با رفتن به github‌ و بررسی فایل fs/exec.c کرنل لینوکس مشاهده شد که در تابع اجرای فراخوانی سیستمی execve کد زیر در March 2022 اضافه شده که جلوی اجرای برنامه‌ها با argc==0 را می‌گیرد.

/*
* When argv is empty, add an empty string ("") as argv[0] to
* ensure confused userspace programs that start processing
* from argv[1] won't end up walking envp. See also
* bprm_stack_limits().
*/
if (bprm->argc == 0) {
retval = copy_string_kernel("", bprm);
if (retval < 0)
goto out_free;
bprm->argc = 1;
}

پس از این به بعد علاوه بر OpenBSD بر روی لینوکس نیز امکان اجرای آسیب‌پذیری‌های این مدلی وجود نخواهد داشت! :-D
پ.ن: در آینده‌ یک ویدئو از شیوه‌ی کامل اجرای این CVE منتشر می‌کنم.

#linux #kernel #CVE #PolKit #pkexec #execve
🥴3