Encoding برای دور زدن آنتی ویروس
- کورش سنایی
- ۱۴ آذر ۱۴۰۳
- زمان مطالعه: 5 دقیقه
یکی از تکنیک های خیلی مهم که شما در زمان دور زدن آنتی ویروس باید بلد باشید Encoding هست. در این مقاله Encoding برای دور زدن انتی ویروس سعی کردیم به شما یک توضیح مفید و مختصری رو ارائه بدیم تا درکش کنید و در مسیر رسیدن به اهدافتون ازش استفاده کنید . در ادامه این آموزش هک با ما همراه باشید . چرا که اگر به دنیای امنیت سایبری و نفوذ پیشرفته وارد شده باشید، Encoding یکی از ابزارهای کلیدی برای مخفی کردن دادهها و دور زدن مکانیزمهای شناسایی مثل آنتیویروس یا IDS/IPS است.
Encoding برای دور زدن آنتی ویروس
فرآیند Encoding (رمزگذاری) تبدیل دادهها از حالت اصلی به یک فرمت خاص است که بسته به نوع الگوریتم یا نوع رمزگذاری مشخص میشود. این فرآیند روی انواع مختلفی از دادهها مانند ویدیوها، HTML، آدرسهای URL، و فایلهای باینری (مانند EXE و تصاویر) قابل اعمال است. رمزگذاری (Encoding) مفهومی کلیدی است که در اهداف مختلفی از آن استفاده میشود، از جمله:
- کامپایل و اجرای برنامهها
- ذخیرهسازی و انتقال دادهها
- پردازش دادهها مانند تبدیل فرمت فایلها
اما وقتی بحث به تکنیکهای دور زدن آنتیویروسها (AV Evasion) میرسد، رمزگذاری نقش مهمی در پنهان کردن رشتههای Shellcode داخل یک فایل باینری دارد. البته صرفاً رمزگذاری کافی نیست، زیرا نرمافزارهای آنتیویروس مدرن بسیار هوشمندتر از قبل عمل میکنند. این نرمافزارها فایلهای باینری را تحلیل کرده و اگر رشتهای رمزگذاریشده پیدا کنند، آن را رمزگشایی کرده تا به متن اصلی دسترسی پیدا کنند.
نکات پیشرفته برای دور زدن آنتیویروس با انکودینگ
استفاده از دو یا چند الگوریتم رمزگذاری به صورت همزمان میتواند کار تحلیل و شناسایی محتوای مخفی توسط آنتیویروسها را سختتر کند. به عنوان مثال، اگر رشتهای مانند "ZERODEY.ir"
ابتدا به فرمت هگزادسیمال (Hexadecimal) تبدیل شود و سپس با Base64 رمزگذاری شود، آنتیویروس برای شناسایی آن باید دو مرحله رمزگشایی را انجام دهد.
نکته: اگر از این روش استفاده میکنید، باید Dropper (برنامهای که فایل یا کد مخرب را اجرا میکند) شما توانایی بازگردانی (Decoding) این رشتهها به حالت اولیه را داشته باشد. این فرآیند هم امنیت بیشتر و هم اختفای بهتری برای محتوای مورد نظر فراهم میکند.
مثال Encoding برای دور زدن آنتی ویروس
برای مثال در تصویر بالا شما میبینید که ما رشته یا همون متن zerodey.ir رو به حالت Hexadecimal درآوردیم که خروجی برابر با 7a65726f6465792e6972 این مقدار شد و حالا ما میایم و این مقدار رو به Base64 تبدیل میکنیم که یکی از روش های Encoding بسیار پرکاربرد در C2 ها و . . . هست که خروجی تبدیل هگزادِسیمال تصویر بالا به Base64 رو در پایین به شما نمایش میدهیم :
در تصویر بالا میبینید که ما به عنوان ورودی همون مقدار Hex شده رو وارد کردیم و در خروجی مقدار Encode شده ی Base64 رو دریافت کردیم که اگر بخوایم Decode کنیم یا به اصطلاح به حالت اول برگردونیم این N2E2NTcyNmY2NDY1NzkyZTY5NzI= رو میرسیم به متن zerodey.ir که حالا این متن میتونه یه قطعه کد مخرب نوشته شده توسط هکر باشه که سعی داره اون کد رو از دید آنتی ویروس ها مخفی نگهداره . البته لازم به ذکر هست که آنتی ویروس های بروز مقادیر Encode شده رو به حالت اولیه برمیگردونن و میشه گفت که Encode کردن تنها برای دور زدن آنتی ویروس ها کافی نیست و باید از تکنیک های دیگه هم استفاده کنید که در ادامه این مقالات به این مباحث هم میرسیم که چطوری تمام این موارد رو به صورت عملی جلو ببریم .
الگوریتم های Encoding معروف
base64 : یکی از محبوبترین روشهای Encoding که برای انتقال دادههای باینری در قالب متن ASCII استفاده میشود.Base64 دادهها را به بلوکهای 6 بیتی تقسیم کرده و هر بلوک را به یکی از 64 کاراکتر ASCII (مثل حروف، اعداد و نمادها) نگاشت میدهد. و به دلیل سادگی در پیادهسازی و مناسب برای پنهانسازی دادهها در فایلهای متنی مثل HTTP Headers یا Email Attachments و پشتیبانی در زبان های برنامه نویسی بسیار محبوب است :
نمونه خروجی تبدیل Hello به Base64
Input: Hello
Output: SGVsbG8=
Hexadecimal (Hex): روش دیگری برای رمزگذاری دادههای باینری به رشتههای متنی.Hex هر بایت از داده (8 بیت) به دو رقم در سیستم عددی هگزادسیمال (پایه 16) تبدیل میشود. , و به دلیل مناسب بود برای مخفی کردن ShellCode,خوانایی بالا برای برنامه نویسان, سازگازی با زبان هایی مانند Python و C محبوب است و نمونه تبدیل رو میتونید ببینید :
تبدیل عبارت "Hack" به Hex:
Input: Hack
Output: 4861636b
URL Encoding: این روش به طور خاص برای دادههایی که در URLها ارسال میشوند استفاده میشود. در این روش کاراکترهای غیرمجاز در URL (مثل فاصله یا کاراکترهای خاص) با یک درصد (%
) و مقدار هگزادسیمال آن جایگزین میشوند. هکر ها با استفاده از این تکنیک میتونن Payload های مخرب رو به سرور بدون جلب توجه ارسال کنن, یا مخفی کردن کدهای جاوااسکرپت در حملات XSS و …
تبدیل عبارت "Hack the World!" به URL Encoding:
Input: Hack the World!
Output: Hack%20the%20World%21
ROT13: یکی از سادهترین روشهای رمزگذاری که کاراکترها را در الفبا 13 موقعیت به جلو یا عقب میچرخاند.در این روش هر حرف الفبای لاتین با حرفی که 13 موقعیت جلوتر است جایگزین میشود. این تکنیک مناسب برای پنهان کردن پیام, دور زدن سیستمهای تشخیص کلمات کلیدی (مثل کلمات حساس در چتها) و . . . هست
تبدیل عبارت "Hello" به ROT13:
Input: Hello
Output: Uryyb
XOR Encoding: این روش از عملگر XOR برای رمزگذاری دادهها استفاده میکند. در واقع هر بایت از داده با یک مقدار کلیدی XOR میشود. این روش به راحتی قابل رمزگشایی است، اما با یک کلید مناسب میتواند کار تحلیل را سختتر کند. کاربرد این روش برای هکرها در رمزگذاری Shellcode برای جلوگیری از شناسایی توسط آنتیویروس و پنهانسازی دادهها در فایلهای مخرب و … هست
XOR کردن یک داده با کلید 0xAA:
Input: 0x45 (E)
Key: 0xAA
Output: 0xEF
ASCII Encoding: یک روش ابتدایی برای تبدیل دادهها به متن قابل خواندن در واقع هر بایت داده به کاراکتر معادل آن در جدول ASCII تبدیل میشود. کاربرد این روش برای هکرها در ایجاد فایلهای مخرب با ظاهر بیخطر و پنهان سازی کدها در اسناد متنی هست .
تبدیل عدد 72 به ASCII:
Input: 72
Output: H
Custom Encoding: هکرهای حرفهای اغلب از الگوریتمهای سفارشی استفاده میکنند که تحلیل و شناسایی آنها را دشوارتر میکند این روش از ترکیب چند الگوریتم استاندارد (مثل XOR، Base64 و Hex) به همراه تغییرات اختصاصی استفاده میشود . کاربرد این روش برای هکرها در جلوگیری از تحلیل دستی و خودکار و یا شناسایینشدن توسط موتورهای آنتیویروس هستش مثل دقیقا کاری که در اول مقاله کردیم اومدیم داده رو به Hex تبدیل کردیم و بعد به Base64 .
نتیجه گیری Encoding در دور زدن آنتی ویروس
هر کدام از این روشهای رمزگذاری، کاربرد خاصی در دنیای واقعی دارند. اما چیزی که حرفهایها را از تازهکارها متمایز میکند، ترکیب خلاقانه این روشها برای دور زدن لایههای مختلف امنیتی است. فعلا خودتو رو آشنا کنید با این روش ها و کار کردن باهاشون تا بعدا در ادامه مقالات به صورت عملی این کار هارو بر روی PE ها یا همون فایل های Exe انجام بدیم . برای آشنایی بیشتر با این روش ها میتونید از وبسایت CyberChef استفاده کنید .