نوشتن به یک فایل
فراخوان سیستم sys_write () شماره 4 رو داخل رجیستر EAX قرار بدید
توصیف گر فایل رو داخل رجیستری EBX قرار بدید
اشاره گر به بافر خروجی رو داخل رجیستر ECX قرار بدید
اندازه بافر یعنی شماره بایت های نوشتن رو داخل رجیستر EDX قرار بدید
فراخوان سیستم تعداد واقعی بایت های نوشته شده در ثبات EAX رو برمی گردونه در صورت بروز خطا کد خطا در ثبت EAX هست
فراخوان سیستم sys_write () شماره 4 رو داخل رجیستر EAX قرار بدید
توصیف گر فایل رو داخل رجیستری EBX قرار بدید
اشاره گر به بافر خروجی رو داخل رجیستر ECX قرار بدید
اندازه بافر یعنی شماره بایت های نوشتن رو داخل رجیستر EDX قرار بدید
فراخوان سیستم تعداد واقعی بایت های نوشته شده در ثبات EAX رو برمی گردونه در صورت بروز خطا کد خطا در ثبت EAX هست
👍9
بستن فایل
فراخوان سیستم ()sys_close شماره 6 رو داخل ثبات EAX قرار بدید
توصیف گر فایل رو داخل رجیستری EBX قرار بدید
فراخوان سیستم در صورت بروز خطا کد خطا در ثبات EAX رو برمی گردونه
فراخوان سیستم ()sys_close شماره 6 رو داخل ثبات EAX قرار بدید
توصیف گر فایل رو داخل رجیستری EBX قرار بدید
فراخوان سیستم در صورت بروز خطا کد خطا در ثبات EAX رو برمی گردونه
👍9
به روز رسانی یک فایل
فراخوان سیستم sys_lseek () شماره 19 رو داخل ثبات EAX قرار بدید
توصیف گر فایل رو داخل رجیستری EBX قرار بدید
مقدار افست رو داخل رجیستری ECX قرار بدید
موقعیت منبع برای offset رو داخل رجیستری EDX قرار بدید
فراخوان سیستم در صورت بروز خطا کد خطا در ثبات EAX رو برمی گردونه
فراخوان سیستم sys_lseek () شماره 19 رو داخل ثبات EAX قرار بدید
توصیف گر فایل رو داخل رجیستری EBX قرار بدید
مقدار افست رو داخل رجیستری ECX قرار بدید
موقعیت منبع برای offset رو داخل رجیستری EDX قرار بدید
شروع فایل – مقدار 0
موقعیت فعلی – مقدار 1
پایان فایل – مقدار 2
فراخوان سیستم در صورت بروز خطا کد خطا در ثبات EAX رو برمی گردونه
👍9
مدیریت حافظه در زبان اسمبلی
فراخوان سیستم ()sys_brk توسط هسته ارائه میشه تا بتونه حافظه پویا رو اختصاص بده در این فراخوان حافظه درست پشت تصویر برنامه حافظه رو اختصاص میده این تابع سیستمی به شما امکان میده بالاترین آدرس موجود رو داخل بخش داده را تنظیم کنید
این فراخوان سیستمی یک پارامتر می گیره که بالاترین آدرس حافظه مورد نیاز برای تنظیم هست این مقدار در ثبات EBX ذخیره میشه
sys_brk در صورت بروز هر گونه خطا 1- رو برمیگردونه یا یک عدد منفی کد نشون دهنده خطاست رو برمی گردونه
فراخوان سیستم ()sys_brk توسط هسته ارائه میشه تا بتونه حافظه پویا رو اختصاص بده در این فراخوان حافظه درست پشت تصویر برنامه حافظه رو اختصاص میده این تابع سیستمی به شما امکان میده بالاترین آدرس موجود رو داخل بخش داده را تنظیم کنید
این فراخوان سیستمی یک پارامتر می گیره که بالاترین آدرس حافظه مورد نیاز برای تنظیم هست این مقدار در ثبات EBX ذخیره میشه
sys_brk در صورت بروز هر گونه خطا 1- رو برمیگردونه یا یک عدد منفی کد نشون دهنده خطاست رو برمی گردونه
👍4
برخی اصطلاحات در رمزنگاری
Encryption :
در علم cryptography به پنهان سازی اطلاعات گفته میشه
Decryption :
معکوس encryption هست و درcrypto به آشکار سازی اطلاعات پنهان شده گفته میشه
Plain text :
به متنی گفته میشه که معنای اون بدون تغییر خاصی قابل فهم هستش
Cipher :
به روشی برای تبدیل plain text به متنی که معناش پنهان باشه cipher گفته میشه
Cryptanalysis :
به هنر شکستن متن های cipher شده گفته میشه
Intruder :
در کلمه به معنای مزاحمه ولی در اینجا به معنای کسیه که یک کپی از cipher text داره و تمایل به شکستن رمز داره منظور از شکستن رمز یعنی decrypt کردن اون متن که خودش دو نوعه active-intruder که میتونه اطلاعات رو روی خط عوض کند و تغییر بده و passive intruder که فقط میتونه اطلاعات روی خط رو داشته باشه و قابلیت تغییر اونها رو نداره
👍5
اشکال زداها یا Debuggers :
این برنامه های نرم افزاری می تونن کد برنامه های دیگه رو خط به خط اجرا کنن و خطاهایی که در نرم افزار وجود داره پیدا و بعد اون ها را ردیابی می کنن کارکرد این برنامه ها جوریه که اول یک وقفه رو داخل برنامه ایجاد میکنن و بعد تمامی خطوط و خطاها رو ردیابی میکنن زمانیکه برنامه اشکال زدا به این نقطه برسه متوقف شده و بعد کاربر می تونه مقدار و ارزش تمامی متغیر ها رو در هنگام اجرا ببیه
اشکال زدا ها به دو دسته مد هسته یا Kernel و مد کاربر یا User تقسیم میشن شما می تونید در هسته بخش سیستم عامل برنامه های راه انداز سیستم مهندسی رو معکوس کنید
این برنامه های نرم افزاری می تونن کد برنامه های دیگه رو خط به خط اجرا کنن و خطاهایی که در نرم افزار وجود داره پیدا و بعد اون ها را ردیابی می کنن کارکرد این برنامه ها جوریه که اول یک وقفه رو داخل برنامه ایجاد میکنن و بعد تمامی خطوط و خطاها رو ردیابی میکنن زمانیکه برنامه اشکال زدا به این نقطه برسه متوقف شده و بعد کاربر می تونه مقدار و ارزش تمامی متغیر ها رو در هنگام اجرا ببیه
اشکال زدا ها به دو دسته مد هسته یا Kernel و مد کاربر یا User تقسیم میشن شما می تونید در هسته بخش سیستم عامل برنامه های راه انداز سیستم مهندسی رو معکوس کنید
👍9
استفاده از دی اسمبل یا Disassembler :
یکی از رایج ترین روش ها برای مهندسی معکوس نرم افزار، استفاده از برنامه های Disassembler است دی اسمبل ها برای اولین بار توسط کرکر ها یا رخنه های نرم افزاری نوشته شدن هدف اصلی کرکر ها تبدیل ساختار کد ماشین به کد اسمبلی (زبان سطح بالاتر) و ترجمه کد ها بود که در این شرایط شما میلیون ها خط کد اسمبلی رو میبینید که در بیشتر مواقع برای شما قابل فهم نیستن
این مراحل کاملا عکس عمل اسمبلر هستن و به عبارتی نوعی مهندسی معکوس محسوب میشه امروزه دی اسمبلرهای متفاوتی به نام های freeware یا shareware وجود داره اما یکی از بهترین و بزرگ ترین دی اسمبلرها حال حاضر IDA Pro هست که هیچ دی اسمبلری رو نمی تونیم با اون از لحاظ امکانات و ویژگی مقایسه کرد این برنامه بسیار ماهرانه طراحی شده جوری که با استفاده از API ها و پایگاه داده برنامه می تونه امکان تحلیل سفارشی رو برای کاربر مورد استفاده قرار بده
یکی از رایج ترین روش ها برای مهندسی معکوس نرم افزار، استفاده از برنامه های Disassembler است دی اسمبل ها برای اولین بار توسط کرکر ها یا رخنه های نرم افزاری نوشته شدن هدف اصلی کرکر ها تبدیل ساختار کد ماشین به کد اسمبلی (زبان سطح بالاتر) و ترجمه کد ها بود که در این شرایط شما میلیون ها خط کد اسمبلی رو میبینید که در بیشتر مواقع برای شما قابل فهم نیستن
این مراحل کاملا عکس عمل اسمبلر هستن و به عبارتی نوعی مهندسی معکوس محسوب میشه امروزه دی اسمبلرهای متفاوتی به نام های freeware یا shareware وجود داره اما یکی از بهترین و بزرگ ترین دی اسمبلرها حال حاضر IDA Pro هست که هیچ دی اسمبلری رو نمی تونیم با اون از لحاظ امکانات و ویژگی مقایسه کرد این برنامه بسیار ماهرانه طراحی شده جوری که با استفاده از API ها و پایگاه داده برنامه می تونه امکان تحلیل سفارشی رو برای کاربر مورد استفاده قرار بده
👍7
Decompiler :
این نوع برنامه ها عملی معکوس با کامپلیرها رو دارن و عملیات رو برعکس اون ها انجام میدن Decompiler کد اسمبلی میانی یا همان کد ماشین رو به کد های سطح بالا تبدیل می کنه هدف این برنامه ها ایجاد فایل هایی است که توسط کامپیوتر قابل خوندن بوده و در مراحل بعدی این فایل ها به زبان قابل فهمی برای انسان تبدیل میشن
این نوع برنامه ها عملی معکوس با کامپلیرها رو دارن و عملیات رو برعکس اون ها انجام میدن Decompiler کد اسمبلی میانی یا همان کد ماشین رو به کد های سطح بالا تبدیل می کنه هدف این برنامه ها ایجاد فایل هایی است که توسط کامپیوتر قابل خوندن بوده و در مراحل بعدی این فایل ها به زبان قابل فهمی برای انسان تبدیل میشن
👍9
دوستان متاسفانه اگه بخاد اینجوری پیش بره فعالیت کانال رو متوقف میکنم چون خیلی تعداد ممبرا کمه و اینجوری انگیزه ای نیست برای ادامه دادن...
💔8👍3
برخی اصطلاحات دیگه در رمز نگاری
متن ساده : اطلاعات اوليه كه هنوز رمز نگاری نشدن
متن رمزی : اطلاعاتی كه رمز نگاری شدن
الگوريتم رمز نگاری : الگوريتمی كه متن ساده رو به متن رمزی تبديل میکنه
كليد رمز : داده ايه كه الگوريتم رمز نگاری متن ساده رو به متن رمزی تبديل ميکنه و برعكس
رمز نگاری : فرايند تبديل متن ساده به متن رمزی
رمز گشايی : فرايند تبديل متن رمزی به متن ساده
متن ساده : اطلاعات اوليه كه هنوز رمز نگاری نشدن
متن رمزی : اطلاعاتی كه رمز نگاری شدن
الگوريتم رمز نگاری : الگوريتمی كه متن ساده رو به متن رمزی تبديل میکنه
كليد رمز : داده ايه كه الگوريتم رمز نگاری متن ساده رو به متن رمزی تبديل ميکنه و برعكس
رمز نگاری : فرايند تبديل متن ساده به متن رمزی
رمز گشايی : فرايند تبديل متن رمزی به متن ساده
👍5
رمزنگاری سخت افزاری یا Hardware Cryptography
الگوریتمهای رمزنگاری رو میتونیم هم به صورت سخت افزاری (به منظور سرعت بالاتر) و هم به صورت نرم افزاری (برای انعطاف پذیری بیشتر) پیاده سازی کرد روشهای جانشینی و جایگشتی میتونن با یک مدار ساده الکترونیکی پیاده سازی شن p-box ابزاری است که برای جایگشت بیتهای یک ورودی هشت بیتی کاربرد داره با سیم بندی و برنامه ریزی درونی این p-box قادره که هر گونه جایگشت بیتی رو عملاً با سرعتی نزدیک به سرعت نور انجام بده چرا که هیچ گونه محاسبهای لازم نیست وفقط تأخیر انتشار سیگنال وجود داره این طراحی از اصل کرکهف تبعیت میکنه یعنی : حمله کننده از روش عمومی جایگشت بیتها مطلّع هست اونچه که او از تون خبر نداره اونه که کدام بیت به کدام بیت نوشته میشه کلید رمز همینه
الگوریتمهای رمزنگاری رو میتونیم هم به صورت سخت افزاری (به منظور سرعت بالاتر) و هم به صورت نرم افزاری (برای انعطاف پذیری بیشتر) پیاده سازی کرد روشهای جانشینی و جایگشتی میتونن با یک مدار ساده الکترونیکی پیاده سازی شن p-box ابزاری است که برای جایگشت بیتهای یک ورودی هشت بیتی کاربرد داره با سیم بندی و برنامه ریزی درونی این p-box قادره که هر گونه جایگشت بیتی رو عملاً با سرعتی نزدیک به سرعت نور انجام بده چرا که هیچ گونه محاسبهای لازم نیست وفقط تأخیر انتشار سیگنال وجود داره این طراحی از اصل کرکهف تبعیت میکنه یعنی : حمله کننده از روش عمومی جایگشت بیتها مطلّع هست اونچه که او از تون خبر نداره اونه که کدام بیت به کدام بیت نوشته میشه کلید رمز همینه
👍4🔥3
به طور کلی یک پروتکل رمزنگاری مجموعهای از قواعد و روابط ریاضیه که چگونه ترکیب کردن الگوریتمهای رمز نگاری و استفاده از اونها به منظور ارائه یک سرویس رمزنگاری خاص در یک کاربرد خاص رو فراهم میسازه وظایف یک پروتکل رمزنگاری رو میتونیم بصورت کلی به دسته های زیر طبقه بندی کنیم :
معمولاً یک پروتکل رمزنگاری مشخص میکند که اطلاعات موجود در چه قالبی باید قرار بگیرن
چه روشی برای تبدیل اطلاعات به عناصر ریاضی باید اجرا شه
کدوم از الگوریتمهای رمزنگاری و با کدام پارامترها باید مورد استفاده قرار بگیرن
روابط ریاضی چگونه به اطلاعات عددی تبدیل شن
چه اطلاعاتی باید بین طرف ارسالکننده و دریافتکننده رد و بدل شه
چه مکانیسم ارتباطی برای انتقال اطلاعات مورد نیازه
به عنوان مثال میتوان به پروتکل تبادل کلید دیفی-هلمن برای ایجاد و تبادل کلید رمز مشترک بین دو طرف اشاره کرد
❤2
پروتکل تبادل کلید دیفی ، هلمن Diff
i-Hellman Key Exchange Algorithm
یک پروتکل رمزنگاریه که با استفاده از اون دو نفر یا دو سازمان میتونن بدون نیاز به هر گونه آشنایی از قبل یک کلید رمز مشترک ایجاد کنن و اون رو از طریق یک مسیر ارتباطی غیر امن بین خود تبادل کنن این پروتکل اولین روش عملی مطرح شده برای تبادل کلید رمز درمسیرهای ارتباطی غیر امنه و مشکل تبادل کلید رمز در رمزنگاری کلید متقارن رو اسون میکنه این پروتکل در سال 1976 توسط دو دانشمند رمزشناس به نام های ویتفیلد دیفی و مارتین هلمن طراحی شده و در قالب یک مقاله علمی منتشر شده مطرح شدن این پروتکل گام مهمی در معرفی و توسعه رمزنگاری کلید نامتقارن به حساب میاد
i-Hellman Key Exchange Algorithm
یک پروتکل رمزنگاریه که با استفاده از اون دو نفر یا دو سازمان میتونن بدون نیاز به هر گونه آشنایی از قبل یک کلید رمز مشترک ایجاد کنن و اون رو از طریق یک مسیر ارتباطی غیر امن بین خود تبادل کنن این پروتکل اولین روش عملی مطرح شده برای تبادل کلید رمز درمسیرهای ارتباطی غیر امنه و مشکل تبادل کلید رمز در رمزنگاری کلید متقارن رو اسون میکنه این پروتکل در سال 1976 توسط دو دانشمند رمزشناس به نام های ویتفیلد دیفی و مارتین هلمن طراحی شده و در قالب یک مقاله علمی منتشر شده مطرح شدن این پروتکل گام مهمی در معرفی و توسعه رمزنگاری کلید نامتقارن به حساب میاد
❤3
الگوریتم رمزنگاری Cryptography Algorithm
الگوریتم رمزنگاری به هر الگوریتم یا تابع ریاضی گفته میشه که به علت داشتن موارد خواص مورد نیاز در رمزنگاری در پروتکلهای رمزنگاری مورد استفاده قرار بگیره اصطلاح الگوریتم رمزنگاری یک مفهوم جامعه و لازم نیست هر الگوریتم از این دسته به طور مستقیم برای رمزگذاری اطلاعات مورد استفاده قرار بگیره بلکه صرفاً وجود کاربرد مربوط به رمزنگاری مد نظره در گذشته سازمانها و شرکتهایی که نیاز به رمزگذاری یا سرویسهای دیگر رمزنگاری داشتند الگوریتم رمزنگاری منحصر به فردی رو طراحی کردند به مرور زمان مشخص شد که گاهی ضعفهای امنیتی بزرگی در این الگوریتمها وجود داره که موجب اسون بودن شکسته شدن رمز میشه به همین دلیل امروزه رمزنگاری مبتنی بر پنهان داشتن الگوریتم رمزنگاری منسوخ شده و در روشهای جدید رمزنگاری فرض بر اینه که اطلاعات کامل الگوریتم رمزنگاری منتشر شده و اونی که پنهانه فقط کلید رمزه👍3
Serial Fishing
در روش سریال فیشینگ ما در واقع به دنبال کد های فعال سازی داخل خود نرم افزار میگردیم که به صورت ثابت داخل نرم افزار وجود داره و اونا رو پیدا میکنیم و به راحتی نرم افزار رو فعال سازی میکنیم امروزه این نوع روش فعال سازی زیاد استفاده نمیشه ولی هنوزم نرم افزار هایی هستن که به این صورت کرک میشن
در روش سریال فیشینگ ما در واقع به دنبال کد های فعال سازی داخل خود نرم افزار میگردیم که به صورت ثابت داخل نرم افزار وجود داره و اونا رو پیدا میکنیم و به راحتی نرم افزار رو فعال سازی میکنیم امروزه این نوع روش فعال سازی زیاد استفاده نمیشه ولی هنوزم نرم افزار هایی هستن که به این صورت کرک میشن
👍3
انواع روشهای رمزنگاری
روش های رمزنگاری رو در ساده ترین حالت ممکن به دو نوع رمزهای جانشینی و جایگشتی تقسیم بندی میکنیم در ادامه توضیحاتی رو در خصوص هر یک از این روش های رمزنگاری میگیم
رمزهاي جانشينی
يكي از كلماتی كه ممكنه در موسسه مالی باشد financial هست با توجه به اينكه كلمه financial حرف تكراري داره و (i) است به طوری كه چهار حرف ديگه بين دو اتفاق i وجود داره حروف تكراری در متن رمزی رو در اين فاصله پيدا می كنيم 12 مورد وجود داره كه در موقعيت هاي 6 و 15 و 27 و 31 و 42 و 48 و 56 و 66 و 70 و 71 و 76 و 82 است (از چپ به راست) فقط در دو تا از اينها يعني 31 و 42 كاراكتر بعدی (متناظر با n در متن ساده) در موقعيت مناسبي تكرار شده از اين دو تا فقط در موقعيت 31 حرف a در موقعيت درستی قرار داره بنابراین میفهمیم كه financial از موقعيت 30 شروع میشه پس با استفاده از تكرار آماری در متن انگليسی به راحتی میتونیم به كليد دسترسی پیدا کنیم
رمزهای جابجايی
روش های رمزنگاری رو در ساده ترین حالت ممکن به دو نوع رمزهای جانشینی و جایگشتی تقسیم بندی میکنیم در ادامه توضیحاتی رو در خصوص هر یک از این روش های رمزنگاری میگیم
رمزهاي جانشينی
در رمز جانشيني هر حرف يا گروهی از حروف به جای حرف يا گروهی از حروف ديگه قرار میگیرن تا پنهان سازی انجام بشخ در اين روش a به D ، b به E ، c به F ، ...... و z به C تبديل ميشن به عنوان مثال : عبارتattack به DWWDFN تبدیل میشه در مثال ها متن ساده با حروف كوچك و متن رمزی با حروف بزرگ مشخص میشه در این مثال کلید (k) برابر 3 هست که میتونه متغیر باشه هر سیستم رمزنگاری که در اون یک سمبل با سمبل دیگر جایگزین میشه اصطلاحا سیستم جانشینی تک حرفی گفته میشه که در اون کلید رمز یک رشته ی 26 حرفی هستمثال : طبق این الگو عبارت attack به متن QZZQEA تبديل میشه روش ديگه حدس زدن كلمه يا حروفه به عنوان مثال متن رمزی زير رو از يك موسسه مالی درنظر بگيريد(به صورت گروههای پنج كاراكتری دسته بندی شدن ):
متن ساده: a b c d e f g h I j k l m n o p q r s t u v w x y z
متن رمزي: Q W E R T Y U I O P A S D F G H J K L Z X C V B N
CTBMN BYCTC BTJDS QXBNS GSTJC BTSWX CTQTZ CQVUJ QJSGS TJQZZ MNQJS VLNSX VSZJU JDSTS JQUUS JUBXJ DSKSU JSNTK BGAQJ ZBGYQ TLCTZ BNYBN QJSW يكي از كلماتی كه ممكنه در موسسه مالی باشد financial هست با توجه به اينكه كلمه financial حرف تكراري داره و (i) است به طوری كه چهار حرف ديگه بين دو اتفاق i وجود داره حروف تكراری در متن رمزی رو در اين فاصله پيدا می كنيم 12 مورد وجود داره كه در موقعيت هاي 6 و 15 و 27 و 31 و 42 و 48 و 56 و 66 و 70 و 71 و 76 و 82 است (از چپ به راست) فقط در دو تا از اينها يعني 31 و 42 كاراكتر بعدی (متناظر با n در متن ساده) در موقعيت مناسبي تكرار شده از اين دو تا فقط در موقعيت 31 حرف a در موقعيت درستی قرار داره بنابراین میفهمیم كه financial از موقعيت 30 شروع میشه پس با استفاده از تكرار آماری در متن انگليسی به راحتی میتونیم به كليد دسترسی پیدا کنیم
رمزهای جابجايی
رمزهای جانشينی ترتيب نماد های متن ساده رو حفظ میكنن ولي اونا را تغيير میدن رمز های جابه جايی ترتيب حروف رو عوض میکنن ولی اونا رو را تغيير نمیدن
🔥3👍1
الگوريتمهای کليد متقارن یا Symmetric Key Algorithms
DES (Data Encryption Standard)
3DES
الگوريتمهای کليد نامتقارن (کليد عمومی) یا Asymmetric Key Algorithms
که داخل این رابطه D از E بسيار بسيار سخت تره بنابراین E رو نمیتونیم به سادگی کشف کنیم دیفی-هلمن و RSA نمونه ای از اين الگوريتمها هستند
رمز گذاری و رمز برداری با يک کليد انجام میشه از این دسته می تونیم روش های زیر رو نام ببریم
DES (Data Encryption Standard)
3DES
الگوريتمهای کليد نامتقارن (کليد عمومی) یا Asymmetric Key Algorithms
هر فرد يک کليد عمومی و يک کليد خصوصی داره که بر اساس قوانين زير عمل می کنن:
D(E(P))=P
که داخل این رابطه D از E بسيار بسيار سخت تره بنابراین E رو نمیتونیم به سادگی کشف کنیم دیفی-هلمن و RSA نمونه ای از اين الگوريتمها هستند
👍4