ZeroCipher
316 subscribers
8 photos
16 files
6 links
Download Telegram
Channel created
this channel is established to educate everyone about cybersecurity

this channel will be up and running soon

content : RedTeaming and NetworkSecurity

languages : english and russian and persian

языки : русский и английский и перский
🔥5
art of exploitation in hacking!


پارت اول از مبانی هنر طراحی اکسپولیت در امنیت


اکسپلویت چیست ؟

اکسپلویت در زبان انگلیسی به معنی بحره برداری یا بحره وری از چیزی یا کسی می باشد

در علم برنامه نویسی تکه کد های وجود دارند که با error همراه هستند مانند error های ساختاری (syntax) و یا نداشتن دسترسی به بخشی از حافظه که در کد ذکر شده (segmentation fault) و یا error های مرتبط به runtime .


اما در بعضی از برنامه ها این گونه نمی باشد و مشکل و آسیب پذیری ساختاری نمی باشد اما در اصل مبتنی بر یک اشتباه از منطق برنامه نویس میباشد.

برای مثال به کد زیر توجه کنید :

#include <stdio.h>

int main() {
int end = 60;
int i = 5;
int j;
printf("please enter your number for getting access for you:");
scanf("%d", &j);
if (j < i || j > end) {
printf("this value is not valid\n");
} else {
GetAccess(user); //با فرض اینکه این یک تابع تعریف شده می باشد برای اعطای دسترسی به کاربر
}
return 0;
}

در کد بالا انتظار میرود که دسترسی 60 یک دسترسی بالا و غیر معمول می باشد

اما مشکل در اینجا این می باشد که فقط دسترسی هایی که بالاتر از 60 باشد فقط توسط شرط if ما رد می شود ولی خود دسترسی 60 خیر و این به دلیل استفاده نا درست برنامه نویس از عبارت شرطی می باشد .


در اینجا برنامه نویس باید از شرط =< استفاده می کرد به معنای اینکه خود دسارسی 60 هم محاسبه می شود.


اکثر درایور ها و سرویس های سیستمیک از این ساختار برای اعطای دسترسی استفاده نمی کنند اما این مسئله کوچک فقط یک مثال برای درک این مشکل بزرگ می باشد .

اکسپلویت ها میتوانند تکه کد هایی برای این مسائل باشند که تحت شبکه ، وب ، وب اپلیکیشن ، سیستمیک و غیره باشند ...

و یا یک عملیات مانند بحره گیری از آسیب پذیری ها به روش manually یا دستی .

به اکسپلویت (exploit) هایی که همچنان شناسایی نشده اند و پچ (patch) (به معنی جلو گیری و پوشش دادن آسیب پذیری) نشده اند Zero-Day گفته می شود .


در پارت هایی بعدی به تحلیل آدرس های حافظه رجیستر و ... پرداخته خواهد شد .
3
hack and security roadmap !

در نظر بسیاری از علاقه مندان به هک و امنیت این حوزه ی وسیع فقط یک شاخه تلقی می شود

اما در اصل هک و امنیت دارای زیر شاخه بسیار زیادی می شود...

که هر کدام در زیر شاخه ی offensive یا defensive قرار می گیرد‌‌‌‌‌‌‌‌‌‌‌‌‌ .

برای مثال

network pentesting(تست و نفوذ شبکه)
web application pentesting(تست و نفوذ وب اپلیکیشن ها)
cloud pentesting(تست و نفوذ کلود یا ابر)
ICS/SCADA hacking(تست و نفوذ بر روی سیستم های کنترل صنعتی)
red teaming(طراحی و پیاده سازی حملات چند جانبه و مدرن)
و...


تمام زیر شاخه هایی که در بالا ذکر شد در شاخه ی offensive قرار می گیرند .


blue team(پچ و پشتیبانی از حفره های امنیتی گزارش شده)

SOC Tier 1(آنالیز ترافیک شبکه و جمع آوری اطلاعات مورد نیاز از لاگ های سیستمیک و تحلیل آنها و تریاژ حوادث امنیتی)
SOC Tier 2(تحلیل پیشرفته ی ترافیک شبکه و لاگ های سیستمیک و در صورت نیاز بلاک کردن ترافیک یا پراسس مشکوک و بررسی حوادث امنیتی)
SOC Tier 3:
threat hunting(پیشگیری از حوادث امنیتی قبل از وقوع حادثه)
forensic analysis(تجزیه و تحلیل شواهد دیجیتال پس از وقوع حادثه)
malware reverse engineer(مهندسی معکوس بد افزارها برای درک عملکرد آنها)
security engineer(چینش معماری امنیتی سازمان)

و...


لیستی که در بالا مشاهده کردید بخشی از زیر شاخه های امنیتی برای defensive می باشد .


شما می توانید با تحقیق بر روی حوزه ی مورد نظر خود به راه خود ادامه دهید و یا وارد امنیت سایبری شوید .
3🔥1
<red teamind>
<the ART of EXPLOITATION>

در پارت اول از توسعه اکسپلویت سیستمیک ما به قضیه طراحی اکسپلویت پرداختیم و به این پی بردیم که رفتار اکسپلویت ها چگونه می باشد


در این پارت ما buffer overflow یا stack overflow خواهیم پرداخت و در پارت بعد به heap overflow خواهیم پرداخت.

در کد هایی که ما توسعه میدهیم اسیب پذیری هایی موجود می باشد که حتی به آن فکر هم نمیتوانیم بکنیم برای مثال include کردن هدر فایل های اضافی

برای مثال:

#include <stdlib.h>

وقتی این هدر فایل را به کد خود اضافه میکنید و کاربردی درون کد شما ندارد باعث می شود فردی که طراح اکسپلویت می باشد بتواند از توابع هدر فایل برای byte code injection استفاده کند و یا ROP پیاده سازی کند و مکانیزم های DEP و ASLR را بای پس نماید .

buffer بخشی از حافظه است که درون stack رزرو می شود تا محتوای متغیر ها و دگر آدرس های حافظه مورد نیاز را در خود جای دهد برای مثال

char ch[500];

کد بالا 500 اندیس را در حالت کرکتر %c رزرو میکند اما برای کد های ماشین باید بگوییم ۵۰۰ بایت از حافظه را رزرو میکند


به نظر شما ۵۰۰ بایت حافظه چگونه پر می شود؟

و آیا پس از پر شدن buffer چه اتفاقی می افتد؟

بله درست حدس زدید پس از اتمام فضای بافر اگر همچنان دیتایی درحال ریخته شدن درون buffer باشد برنامه کرش خواهد کرد

به مقدار دقیق حافظه ذخیره شده offset گفته می شود برای مثال درون مموری این امکان وجود دارد که یک متغیر char که برای آن 500 بایت درون stack رزرو شده است 524 بایت offset داشته باشد

مقدار دقیق offset را می توان با pattern و کم کردن آن از آدرس رجیستر EIP پس از اتمام فضای بافر به دست آورد.

مقدار دقیق offset بسیار کاربردی می باشد چون ما می دانیم که چگونه می توانیم shellcode خود را درون یک بافر inject کنیم که برنامه دچار crash نشود علاوه بر این offset به صورت مستقیم درون فرمول محاسبه finally address بسیاری از آدرس های حافظه نقش مستقیم دارد

مانند

Base Register - register segement(DI, ES, SS, CS, ...) - offset = finally address

فرمول بالا جهت دادن آدرس نهایی و دیتای نهایی با محاسبه سگمنت و بیس رجیستر به cpu استفاده می شود.

اگر ما بتوانیم shellcode خود را در زمان انتهای بافر اینجکت کنیم موفق میشویم byte code دلخواه خود را برای مثال برای گرفتن uid روت از یک فایل دارای دسترسی suid root کسب کنیم و با استفاده از buffer overflow کد آسیب پذیر را اکسپلویت کنیم و privilege escalation کنیم.


در حالی که ASLR و DEP امکان این اکسپلویتیشن را کاهش میدهند با تکنیک هایی مانند ROP می توان آنها را bypass کرد و به uid روت رسید.
🔥4
<red teaming>
<introduction to NS(Network Security)> <1>

در این پارت که پارت اول از ضمیمه های امنیت شبکه می باشد به معرفی راه ها و منابع یادگیری این field خواهیم پرداخت.

امنیت شبکه چیست؟

دنیای ارتباطات سالها است که یکی از پر جهش ترین علوم فناوری در جهان می باشد و با تکامل به شدت قوی ای رو به رو می باشد .

بر همین روال سالها پیش توسعه دهندگان پروتکل های شبکه می اندیشیدند تا به روش های امنیتی دست پیدا کنند که بتوانند DATA کاربران را با سلامت و در امنیت کامل به مقصد برسانند .


از همین رو در packet header که ساختار یک packet (بسته) می باشد مکانیزم های امنیتی به وجود آمد تا بتوان packet را سالم به مقصد رساند .

packet یا datagram
واحدی انتقال دیتا در لایه 3 از مدل OSI می باشد که نام آن Network Layer می باشد .

-------------------------------------------------

یکی از پروتکل های مهم در سطح شبکه IP یا Internet Protocol می باشد.

IP که با RFC 791 شناخته می شود دارای پکتی به طول MTU می باشد که در مسیر مشخص می شود.

MTU چیست؟

در اصل MTU یا Maximum Transmition Unite تایین کننده ی حد اکثر طول پکت هدر می باشد می باشد که در مسیر برای ترافیک تایین می شود .


اگر یک packet در شبکه از MTU گذر کند عمل fragmentation برای آن انجام می شود .

طول ip fragment header حدودا 13 bit می باشد که با بالارفتن طول ip header از MTU می تواند طول fragment هم بالا رود .

---------------------------------------------------

اولین لایه محافظتی سرور ها و اجزای شبکه از پکت های مخرب checksum می باشد .

checksum
مکانیزمی می باشد که یک کلید مبنای 16 ارائه می دهد که اگر packet در راه دچار تغییر شود firewall می تواند آن را drop یا block کند .

--------------------------------------------------


NS
شامل field های مختلفی می شود که در ادامه به آن می پردازیم .

SOC
NOC
the expert of firewalls
...

در بالا ۳ نمونه از شغل های مرتبط با NS نام برده شد که از محبوب ترین ها می باشد و SOC در متون بالا توضیح داده شده است .

در پارت بعدی از NS introduction به معرفی کامل IP packet header خواهیم پرداخت .
🔥2👏2
<Red Teaming>
<introduction to NS(Network Security)> <2>

در پارت قبلی درمورد یکسری مبانی از نقشه راه و مبانی مقدماتی network security بحث کردیم .

حال امروز به مبحث IP Datagram Header خواهیم پرداخت و با ساختار پکت های ip آشنا خواهیم شد .

IP DATAGRAM HEADER
یا پکت هدر پروتکل اینترنت شامل هدر های از جمله:

version:
این هدر شامل ورژن پروتکل می شود که یا v4 خواهد بود با v6 به دلیل اینکه ip در دو ورژن v6 و v4 می باشد که 4 bit سایز این هدر است.

size: 4 bit

IHL:
یا internet header lenght همانطور که از نامش مشخص می باشد این هدر با سایز 4 bit نشان دهنده ی سایز هدر اینترنت می باشد .
size: 4 bit

TOS:
یا type of service که نشان‌دهنده‌ی پارامترهای انتزاعی کیفیت سرویس مورد نظر است و این پارامترها برای هدایت انتخاب پارامترهای واقعی سرویس هنگام انتقال یک دیتاگرام از طریق یک شبکه‌ی خاص استفاده می‌شوند.

تایپ می تواند شامل موارد زیر باشند که از بیت 0 تا 7 مشمول می شود :

Bits 0-2: Precedence
Bit 3: 0 = Normal Delay
1 = Low Delay

Bits 4:
0 = Normal Throughput
1 = High Throughput

Bits 5:
0 = Normal Relibility
1 = High Relibility

Bit 6-7: Reserved for Future Use

size: 8 bit

precedence این هدر شامل موارد زیر می باشد:

111 - Network Control
110 - Internetwork Control
101 - CRITIC/ECP
100 - Flash Override
011 - Flash
010 - Immediate
001 - Priority
000 - Routine

total lenght:

در اصل total lenght طول دیتاگرام است که بر حسب اکتت اندازه‌گیری می‌شود شامل هدر اینترنت و داده‌ها این فیلد اجازه می‌دهد طول یک دیتاگرام تا 65535 اکتت باشد چنین دیتاگرام‌های طولانی برای اکثر host و شبکه‌ها غیرعملی هستند همه host ها باید آماده باشند تا دیتاگرام‌هایی تا 576 اکتت را بپذیرند (چه به صورت کامل و چه به صورت قطعه قطعه یا fragment) توصیه می‌شود host ها فقط در صورتی دیتاگرام‌هایی بزرگتر از 576 اکتت ارسال کنند که مطمئن باشند مقصد آماده پذیرش دیتاگرام‌های بزرگتر است

size: 16 bit

identification:

این هدر یک مقدار شناسایی است که توسط فرستنده برای کمک به اسمبل fragment های یک دیتاگرام اختصاص داده شده است

size: 16 bit

flags:

فلگ ها 3 بیت می باشند که در زیر توضیح داده می شود و این فلگ ها نربدط به هدر fragment می باشند .

Bit 0: reserved, must be zero
Bit 1: (DF) 0 = May Fragment, 1 = Don't Fragment
Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments

size: 3 bit

fragment offset:

این فیلد شامل دیتا های دیگر دیتا گرام می باشد در صورت بزرگ بودن دیتاگرام این فیلد به کار گرفته خواهد شد .

size: 13 bit

time to live(ttl):

این فیلد حداکثر زمانی را که دیتاگرام اجازه دارد در سیستم اینترنت باقی بماند نشان می‌دهد اگر این فیلد حاوی مقدار صفر باشد دیتاگرام باید از بین برود این فیلد در پردازش هدر اینترنت اصلاح می‌شود زمان بر حسب ثانیه اندازه‌گیری می‌شود، اما از آنجایی که هر ماژولی که یک دیتاگرام را پردازش می‌کند حتی اگر دیتاگرام را در کمتر از یک ثانیه پردازش کند، باید TTL را حداقل یک واحد کاهش دهد TTL را باید فقط به عنوان یک حد بالا برای زمانی که یک دیتاگرام ممکن است وجود داشته باشد در نظر گرفت هدف این است که دیتاگرام‌های غیرقابل تحویل کنار گذاشته شوند و حداکثر طول عمر دیتاگرام محدود شود

size: 8 bit

protocol:

این فیلد پروتکل سطح بعدی مورد استفاده در بخش داده‌ی دیتاگرام اینترنت را نشان می‌دهد

size: 8 bit

header checksum:

از آنجایی که برخی از فیلدهای هدر تغییر می‌کنند (مثلاً ttl) این مقدار در هر نقطه‌ای که هدر اینترنت پردازش می‌شود دوباره محاسبه و تأیید می‌شود الگوریتم هدر به شرح زیر است:
فیلد هدر مکمل یک ۱۶ بیتی از مجموع مکمل یک تمام کلمات ۱۶ بیتی در هدر است. برای محاسبه هدر مقدار فیلد هدر صفر است این یک سربرگ ساده برای محاسبه است و شواهد تجربی نشان می‌دهد که کافی است اما موقت است و بسته به تجربه بیشتر ممکن است با یک روش CRC جایگزین شود

source address:

این فیلد شامل آی پی آدرس فرستنده می شود.

destination address:

این فیلد شامل آی پی آدرس گیرنده می شود.

-------------------------------------------------

در بالا هدر های اصلی یک ip datagram نام برده و توضیح داده شد اما به جز این هدر ها آفست های دیگری تحت عنوان option و padding موجود می باشد که مقدار آنها متغیر می باشد .


با بعضی از ابزار ها مانند scapy می توان هدر های ip را دستکاری و چنج کرد .
🔥4
2
<Red Teaming>
<the art of exploitation> <3>

در پارت قبل از هنر طراحی اکسپلویت به مبحث stack overflow پرداختیم.

اکنون قصد ما فوکوس بر روی مبانی heap overflow می باشد .

heap چیست؟

heap
یک بخش حافظه از مموری می باشد که به صورت دستی مقدار دهی می شود .

برای مثال در کد c پایین مشاهده خواهید کرد:

#include <stdio.h>

int main(int argc, int* argv[]) {
int x[500];
scanf("%d", &x);
printf("this is your number: %d", x);
return 0;
}

در کد بالا یک متغیر با نام x تعریف شده با نوع دیتای int که قرار است مقداری عددی را از کاربر بگیرد و بعد آن را درون x با سایز 500 بایت ذخیره کند .

در کد بالا 500 بایت برای متغیر x در stack به طور اتومات ذخیره خواهد شد .


ولی در کد پایین:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
char* x = malloc(20);
scanf("%19s", x);
printf("%s", x);
return 0;
}

در کد بالا که به زبان c نوشته شده ما یک کد را دارا می باشیم که به جز مدیریت غلط حافظه کار دیکری انجام نمی دهد .


در کد بالا با تابع malloc از هدر فایل stdlib می توانیم 20 بایت از حافظه را به متغیر x از نوع داده char بدهیم .


متغیر x چون یک متغیر معمولی char است نمی تواند از malloc بحره ببرد و آدرسی را در heap ذخیره کند اما اگر یک متغیر pointer از نوع داده char باشد می تواند .

در خطوط بعد کد یک رشته ی 19 اندیسی را می گیرد با حسب 0\ برای خاتمه دادن به بایت های حافظه تا حد اکثر 19 بایت .


اما یک مشکلی در اینجا وجود دارد این کد با شروط مدیریت نشده و کاربر اگر بخواهد می تواند یک رشته ی بالای 19 بایت به متغیر اینجکت کند و آن را دچار کرش کند .

یا اگر برنامه دارای دسترسی suid root باشد می تواند با byte code injection یک شل کد را به heap تزریق کند .

عمل بالا شروطی دارد و شروط آن دانستن offset دقیق می باشد .

اگر فرد بتواند آخرین دستور اجرایی بر روی offset را پیدا کند که pattern قابل انجام می باشد می تواند از روی ثبات EIP آخرین دستور را پیدا کند .

و با یک کد c یا اینجکشن تحت خط فرمان با perl شل کد خود را به جای دستور آخر قرار دهد .

در bss overflow هم به همین رکند می توان بر روی متغیر های static یک bytecode را اینجکت نمود .


در قسمت بعد به DTor ها خواهیم پرداخت .
4
MAC Address چیه و چرا توی لایه دوم قرار داره؟

برای اینکه بفهمیم MAC چی هست، اول باید یه مرور کوتاه روی مدل OSI داشته باشیم:

لایه ۱ (Physical): این لایه فقط وظیفه داره بیت‌ها (۰ و ۱) رو از طریق سیم، فیبر یا امواج رادیویی منتقل کنه. اینجا هیچ آدرس‌دهی وجود نداره.

لایه ۲ (Data Link): اینجاست که بیت‌ها رو تبدیل به فریم (Frame) می‌کنه و مشخص می‌کنه این فریم باید به کدوم دستگاه روی همون شبکه‌ی محلی (LAN) بره.

اینجا ما به چیزی به اسم آدرس سخت‌افزاری (Hardware Address) یا همون MAC Address نیاز داریم.

MAC Address دقیقاً چیه؟

یک آدرس منحصربه‌فرد سخت‌افزاریه که روی کارت شبکه (NIC) دستگاه‌ها مثل لپ‌تاپ، موبایل، پرینتر، روتر و... توسط سازنده (Vendor) ثبت میشه.

معمولاً به شکل ۶ جفت عدد هگزادسیمال نمایش داده میشه، مثل:

00:1A:2B:3C:4D:5E


در هدر هر فریم اترنت دو تا MAC داریم:

Source MAC → فرستنده

Destination MAC → گیرنده

به همین دلیل میگیم MAC در لایه دوم قرار داره، چون بدون اون دستگاه‌ها داخل یک LAN نمی‌تونن همدیگه رو پیدا کنن.

چطور MAC رو ببینیم؟

توی ویندوز کافیه دستور زیر رو توی CMD وارد کنید:

ipconfig /all


اونجا قسمت Physical Address رو می‌بینید که همون MAC Address هست.

ساختار و طول MAC Address

طول MAC Address دقیقاً ۴۸ بیت (۶ بایت)ه.

هر بایت ۸ بیت هست → در مجموع ۶×۸ = ۴۸ بیت.

در نمایش هگزادسیمال، ۱۲ رقم (۶ جفت) داریم.

مثال:

D4-F5-47-8C-1A-2B


۲۴ بیت اول (OUI) = مشخص‌کننده‌ی شرکت سازنده (مثلاً Intel، Cisco، Apple).
۲۴ بیت دوم = شماره سریال کارت شبکه.
🔥31🤮1💩1🙏1🖕1
<Red Teaming>
<the ART of EXPLOITATION> <4:1>

در پارت قبلی ما به مسئله BSS Overflow و Heap Overflow پرداختیم و به این نتیجه رسیدیم که اگر یک بافر سمت heap یا bss اگر درست کنترل و رزرو نشود می تواند مشکلات جدی را مانند stack overflow به وجود بیاورد .

در همین باره مسئله ای برای طراحان درایور ها و طراحان مکانیزم های امنیتی سیستم عامل پیش آمد که چطور می توانند از این ضعف ها برنامه ها را حفظ کنند .

در بعضی موارد می توان حتی stack های کنترل شده را هم مورد آسیب پذیری قرار داد و کنترل آنها را به دست گرفت .

به همین دلیل مکانیزم هایی مانند ASLR برای رندوم کردن آدرس های حافظه و DEP برای کنترل بافر و جلو گیری از Execution کد در بافر طراحی شد .

در زندگی امروزه خیلی از متخصصان برای تاکتیک هایی مانند privillege escalation ترجیح می دهند از winapi ها استفاده کنند که همین api ها بدون دسته ای از ماژول های Nt از زیر مجموعه ntdll.dll فقط به user mode دسترسی خواهند داشت و دسترسی بسیار پایینی به kernel mode خواهند داشت .

اکثر متخصصانی که در سیستم هایی با مکانیزم امنیتی فوق پیچیده اکثر تاکتیک ها را به winapi محدود می کنند متخصصان low level هستند ، اما متخصصان APT ای که از zero day استفاده می کنند اکثرا افراد متخصص high level می باشند که برای مکانیزم ها می توانند در هر شرایطی یک حمله طراحی کنند ، اکثر این متخصصان علمی برابر با توسعه دهنده مکانیزم های امنیتی و توسعه دهندگان درایور های سیستم عامل ها دارند و یا دانشی فراتر از آنها دارند .

در سیستم عامل های زیرمجموعه کرنل لینوکس مانند kali بر پایه debian ما winapi هایی را دارا نمی باشیم اما رابط های برنامه نویسی را مانند POSIX یا Portable Operating System Interface دارا می باشیم دارای توابعی مانند:
file managment:
read()
write()
open()

flow managment:
fork()
exec()

thread managment:
pthread_create()

اکثر توزیع های لینوکسی با POSIX سازگار می باشند اما POSIX هم مانند wiapi محدودیت هایی را دارا می باشد شاید از winapi هم محدود تر !

حالا ما قصد آشنایی با یک سری جداول و stub handler هارا در این بخش از پارت چهارم داریم به نام GOT/PLT در ELF برای linux و IAT/TF درون windows .

اول با این جداول در لینوکس آشنا خواهیم شد :
PLT (Procedure Linkage Table)
این مکانیزم یک جدول Linkage می باشد که بر پایه GOT کار می کند و در ادامه به کار آن آشنا خواهیم شد .

GOT(Global Offset Table)
این مکانیزم یک جدول می باشد که در ELF آدرس توابع خارجی مانند ()exit از libc را درون خود نگه میدارد.

PLT/GOT:
در ادامه وقتی کد اجرا خواهد شد باید توابع خارجی توسط Dynamic Loader درون جداول GOT پیاده سازی شوند .

وقتی تابع توسط داینامیک لودر درون GOT پیاده سازی شد ، و وقتی نیاز به اجرای یک تابع خارجی باشد PLT به دنبال آدرس آن تابع درون GOT خواهد گشت و اگر آن را پیدا کند با یک jmp به آن آدرس پرش می کند و آن را فراخوانی می کند .

اگر آدرس آن تابع درون GOT وجود نداشته باشد به داینامیک لودر یک سیگنال خواهد فرستاد که داینامیک لودر موظف به resolve کردن توابع مد نظر درون GOT می باشد .

در بخش بعد به معرفی IAT/TF خواهیم پرداخت
4
جاسوسی سخت‌افزاری و شنود در تلفن‌های هوشمند

تلفن‌های همراه از چندین لایه‌ی اساسی برای پردازش و انتقال داده تشکیل شده‌اند:

1. سخت‌افزار (Hardware):

شامل اجزای اصلی مانند تراشه پردازشی (CPU/SOC)، حافظه‌ها (RAM، Flash)، ماژول‌های ارتباطی (Baseband/Modem، Wi-Fi، Bluetooth)، و سنسورها (میکروفون، GPS، ژیروسکوپ، دوربین و …).


2. فریمور (Firmware):

نرم‌افزار سطح پایینی است که مستقیماً بر روی سخت‌افزار اجرا شده و کنترل مستقیم آن را بر عهده دارد.


3. سیستم‌عامل (Operating System مانند Android یا iOS):

لایه‌ای بالاتر که تعامل کاربر با دستگاه از طریق آن انجام می‌شود.



زمانی که جاسوسی در سطح سخت‌افزار یا فریمور صورت بگیرد، داده‌ها پیش از رسیدن به سیستم‌عامل یا کاربر جمع‌آوری و منتقل می‌شوند. به این نوع تهدید، جاسوسی سخت‌افزاری گفته می‌شود.




روش‌های احتمالی شنود سخت‌افزاری

میکروفون یا ماژول صوتی:

در صورت دستکاری، قابلیت ضبط صدای محیط بدون نیاز به اجرای برنامه خاصی وجود دارد و داده‌ها می‌توانند ذخیره یا ارسال شوند.

دوربین:

در صورت تغییرات در سطح فریمور، امکان ثبت تصویر یا ویدئو بدون فعال‌شدن نشانگر LED فراهم می‌شود.

ماژول‌های ارتباطی (Wi-Fi، Bluetooth، GSM Modem):

در صورت آلودگی، می‌توانند اطلاعات را مستقیماً به خارج از دستگاه منتقل کنند.

سنسورهای به ظاهر بی‌خطر: مانند ژیروسکوپ یا شتاب‌سنج، که از طریق تحلیل لرزش‌ها می‌توانند به‌طور غیرمستقیم اطلاعات صوتی یا حرکتی را استنتاج کنند.





تفاوت با جاسوسی نرم‌افزاری

در جاسوسی نرم‌افزاری لازم است بدافزاری روی گوشی نصب و توسط کاربر اجرا شود. این نوع حمله معمولاً قابل شناسایی و با حذف بدافزار یا ریست دستگاه برطرف می‌شود.

اما در جاسوسی سخت‌افزاری، کد یا مدار مخرب مستقیماً در سطح برد اصلی یا تراشه تعبیه می‌شود. چنین تهدیدی با فرمت یا ریست از بین نمی‌رود و شناسایی و حذف آن بسیار دشوارتر است.
👏4🔥1
What is the APC?

A mechanism in Windows that allows you to execute functions asynchronously in threads With QueueUserAPC you can add a function (such as shellcode) to a thread queue and execute it with NtTestAlert .

What is the APC injection?

APC injection is a exploitation technique for reserving function execution in one thread flow

this technique is excuting shellcode in memory of the one thread

This technique is done using functions such as QueueUserAPC and NtTestAlert and has the ability to bypass a number of EDR security mechanisms However because it will be executed in memory a number of EDRs can detect it such as SentinelOne

example code for APC injection:
#include <windows.h>
int main() {
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 1234);
LPVOID addr = VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
unsigned char code[] = "\x31\xc0\xc3";
WriteProcessMemory(hProcess, addr, code, sizeof(code), NULL);
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)QueueUserAPC, addr, 0, NULL);
CloseHandle(hThread);
CloseHandle(hProcess);
return 0;
}

Outside of Training
thank you for following us
🔥51👏1
<Red Teaming>
<the ART of Exploitation> <4:2>

در پارت قبل به مسئله exploitation از طریقت جداول GOT/PLT پرداختیم که دو stub handler می باشند و در ELF و لینوکس کاربرد فراوانی دارند.

هم اکنون قصد آشنایی با IAT معادل جدول GOT و (TF(Thunk Function معادل جدول PLT در لینوکس را داریم.

این دو جدول کاربرد کاملا مشابهی را دارا می باشند

TF:
این جدول مانند procedure linkage table یک جدول linkage میباشد که مسئول jmp به توابع فراخوانی شده خارجی می باشد و فقط دارای دسترسی READ می باشد و قابل WRITE نمی باشد.

این جدول یعنی مانند TF آدرس توابع خارجی را از IAT دریافت میکند که IAT آدرس توابع خارجی خود را از dynamic loader دریافت میکند.

اگر قصد ما تغییر روند و فرایند آدرس دهی این جداول باشد باید آدرس مورد نظر در جدول IAT را overwrite کنیم.

برای مثال تابع ()exit در زبان c از هدر فایل stdio.h کاربرد خروج از فرایند را محیی میکند.

آدرس این تابع توسط DL درون IAT بازنشانی می شود و زمانی که نیاز به فراخوانی این تابع در برنامه مورد نظر باشد و نیاز به اسمبل شدن آن دستور باشد در این زمان جدول TF به آدرس آن تابع در IAT یک jmp میزند و آن تابع را فراخوانی میکند.

اگر قصد جا به جایی آدرس این توابع را در این جدتل داشته باشیم باید DEP و ASLR و CFG و HVCI را bypass کنیم تا نظارتی بر flow تابع جایگزین ما وجود نداشته باشد اولین قدم Address Leak میباشد برای دور زدن ASLR قدم دوم Return-Oriented Programming برای دور زدن DEP و قدم سوم بای پس Control Flow Guard از طریق پیدایش گجت های cfguard از طریق دستور "cfguard!" در windbg و یا immunity در قدم چهارم نیاز به بایپس HVCI برای کنترل نشدن جریان اجرای آدرس ها میباشد.

در پارت 5 از این آموزشات به راهکار عملی دستکاری IAT/TF و بای پس پروتکتور های ذکر شده خواهیم پرداخت
7
what is the RootKit?

Rootkits are categorized into 5 types of rootkits.

The use of rootkits is generally to increase the attacker's access to the victim's system.

But the high performance can be changed and induce more complex tasks to the system.

Types of rootkits:

user-mode rootkit:

This type of rootkit includes access at the top layer of the operating system and has capabilities such as controlling surface access such as opening chrome and notepad or making changes to their data.

This rootkit works in ring3 and is considered a relatively low-risk rootkit.

kernel-mode rootkit:

This type of rootkit can have access between ring3 and ring0 and has access to control the process of processes and threads.

This type of rootkit is a little more complex in terms of risk, but still detectable.

Rootkits that run in the Windows registry can be of this type.

bootkits:
This type of rootkit operates in the boot loader and post process and has the ability to change the flows before the kernel loads and definitely has ring0 access and can take control of hardware sockets and even change the kernel loading flows.

This type of rootkit is dangerous but can still be found with special tools.

bios rootkit:
This type of rootkit can even control the boot loading flows and abuse all these flows and perform the work before all operations.

This type of rootkit is very dangerous but can still be detected with external boot and tools like kaspersky rescue disk.

hypervisor rootkit:
This is the ultimate level of rootkits that runs in the hypervisor layer and can copy all the system flows by virtualizing all those flows and taking control of a complete copy of the system.

This type of rootkit runs at the hardware firmware layer and is extremely dangerous because it can only be removed by resetting the system and changing the hardware.

Like the subVist rootkit, which is research.

Yes, my friends, as you have seen, roots can be extremely dangerous and in some cases, such as level 4 and 5, namely the bios rootkit and hypervisor rootkit, they can even cause explosions.

It is worth noting that level 4 and 5 rootkits can only be carried out with hardware and physical access.
👏63❤‍🔥2
ZeroCipher
what is the RootKit? Rootkits are categorized into 5 types of rootkits. The use of rootkits is generally to increase the attacker's access to the victim's system. But the high performance can be changed and induce more complex tasks to the system. Types…
do you like rootkits?
Anonymous Poll
89%
yeah so
11%
no bro
❤‍🔥5🔥31