🕷؛TGSpyder: ابزاری OSINT برای جمعآوری دادهها از تلگرام
یک ابزار خط فرمان (CLI) برای تحلیلگران، روزنامهنگاران و محققان. این ابزار، اعضا، پیامها، لینکهای دعوت و فرادادهها را از گروهها/کانالهای عمومی و خصوصی جمعآوری میکند. تمام اطلاعات به فرمت CSV خروجی داده میشوند تا تجزیه و تحلیل آنها آسانتر باشد.
قابلیتها:
جمعآوری لیست اعضا (در صورت امکان)
خروجی گرفتن از تاریخچه پیامها
استخراج و حذف لینکهای تکراری t.me
جستجوی کاربر بر اساس نام کاربری یا شناسه (ID)
تعیین سازنده بستههای استیکر بر اساس شناسه (ID) مجموعه استیکرها
⚙ نحوه نصب:
bash
git clone https://github.com/Darksight-Analytics/tgspyder.git
cd tgspyder
pip install -r requirements.txt
pip install -e .
⚙ نحوه استفاده اولیه:
bash
tgspyder https://t.me/examplegroup --members --chats
tgspyder --user @username
tgspyder --sticker-pack https://t.me/addstickers/packname
خروجی: تمام دادهها در پوشهای به نام TGSpyder Output/ ذخیره میشوند و بر اساس پوشهها و زمانبندی مرتب شدهاند.
🔗 گیتهاب
#ᴛʏɢᴇʀ_ꜱᴘɪʀᴇ
یک ابزار خط فرمان (CLI) برای تحلیلگران، روزنامهنگاران و محققان. این ابزار، اعضا، پیامها، لینکهای دعوت و فرادادهها را از گروهها/کانالهای عمومی و خصوصی جمعآوری میکند. تمام اطلاعات به فرمت CSV خروجی داده میشوند تا تجزیه و تحلیل آنها آسانتر باشد.
قابلیتها:
جمعآوری لیست اعضا (در صورت امکان)
خروجی گرفتن از تاریخچه پیامها
استخراج و حذف لینکهای تکراری t.me
جستجوی کاربر بر اساس نام کاربری یا شناسه (ID)
تعیین سازنده بستههای استیکر بر اساس شناسه (ID) مجموعه استیکرها
⚙ نحوه نصب:
bash
git clone https://github.com/Darksight-Analytics/tgspyder.git
cd tgspyder
pip install -r requirements.txt
pip install -e .
⚙ نحوه استفاده اولیه:
bash
tgspyder https://t.me/examplegroup --members --chats
tgspyder --user @username
tgspyder --sticker-pack https://t.me/addstickers/packname
خروجی: تمام دادهها در پوشهای به نام TGSpyder Output/ ذخیره میشوند و بر اساس پوشهها و زمانبندی مرتب شدهاند.
🔗 گیتهاب
#ᴛʏɢᴇʀ_ꜱᴘɪʀᴇ
GitHub
GitHub - Darksight-Analytics/tgspyder
Contribute to Darksight-Analytics/tgspyder development by creating an account on GitHub.
❤6
آموزش جدید ترین متودها هک و امنیت با برترین مدرس ها
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
⚠️⚠️⚠️
دانلود فایل : کلیک
#ᴛʏɢᴇʀ_ꜱᴘɪʀᴇ
یه بد افزار worm (کرم) برای ویندوز!
دانلود کنید ولی اصلا باز نکنید!!
دانلود فایل : کلیک
#ᴛʏɢᴇʀ_ꜱᴘɪʀᴇ
❤6
┏━━━━━━━━━━━━━━━━━━━━━
☢️ ᴠᴇɴᴏx ᴜᴘʟᴏᴀᴅᴇʀ ʙᴏᴛ
┗━━━━━━━━━━━━━━━━━━━━━
┏━━━━━━━━━━━━━━━━━━━━━
💬 ᴅᴇsᴄʀɪᴘᴛɪᴏɴ:
┗━━━━━━━━━━━━━━━━━━━━━
👨💻 ᴏᴡɴᴇʀ:
☢️ ᴠᴇɴᴏx ᴜᴘʟᴏᴀᴅᴇʀ ʙᴏᴛ
┗━━━━━━━━━━━━━━━━━━━━━
┏━━━━━━━━━━━━━━━━━━━━━
💬 ᴅᴇsᴄʀɪᴘᴛɪᴏɴ:
یک ربات قدرتمند برای ساخت خودکار گروههای تلگرام با قابلیتهای پیشرفته
🔥 ویژگیهای کلیدی:
• ساخت گروههای متعدد با فاصله زمانی هوشمند
• مدیریت صف و زمانبندی پیشرفته با APScheduler
• نمایش زمان ایران و تاریخ شمسی
• سیستم شمارنده خودکار برای نام گروهها
• کنترل کامل فرآیند ساخت (شروع/توقف/ریست)┗━━━━━━━━━━━━━━━━━━━━━
👨💻 ᴏᴡɴᴇʀ:
خالی❤4
┏━━━━━━━━━━━━━━━━━━━━━
☢️ ᴠᴇɴᴏx ᴜᴘʟᴏᴀᴅᴇʀ ʙᴏᴛ
┗━━━━━━━━━━━━━━━━━━━━━
┏━━━━━━━━━━━━━━━━━━━━━
💬 ᴅᴇsᴄʀɪᴘᴛɪᴏɴ:
┗━━━━━━━━━━━━━━━━━━━━━
👨💻 ᴏᴡɴᴇʀ:
☢️ ᴠᴇɴᴏx ᴜᴘʟᴏᴀᴅᴇʀ ʙᴏᴛ
┗━━━━━━━━━━━━━━━━━━━━━
┏━━━━━━━━━━━━━━━━━━━━━
💬 ᴅᴇsᴄʀɪᴘᴛɪᴏɴ:
سورس ک/رک/ر وردپرس
چیزی در موردش نگفته
ارسالیه┗━━━━━━━━━━━━━━━━━━━━━
👨💻 ᴏᴡɴᴇʀ:
@NULL_DANGER❤4
✅ WhatsApp-OSINT
این ابزار، عکسهای پروفایل واتساپ را دریافت میکند، حسابهای تجاری را بررسی میکند، وضعیت کاربران را تعیین میکند و دستگاههای مرتبط را از طریق رابط OSINT شرکت RapidAPI تجزیه و تحلیل میکند.
💻 GitHub
#ᴛʏɢᴇʀ_ꜱᴘɪʀᴇ
این ابزار، عکسهای پروفایل واتساپ را دریافت میکند، حسابهای تجاری را بررسی میکند، وضعیت کاربران را تعیین میکند و دستگاههای مرتبط را از طریق رابط OSINT شرکت RapidAPI تجزیه و تحلیل میکند.
💻 GitHub
#ᴛʏɢᴇʀ_ꜱᴘɪʀᴇ
❤7
🛡؛PatchMon: مدیریت متمرکز بهروزرسانیها در محیطهای سرور
🔺این ابزار برای مدیران سیستم و تیمهای امنیتی طراحی شده است و امکان مدیریت ایمن و متمرکز بهروزرسانیها را در سرورهای مختلف فراهم میکند. عوامل (agents) فقط از طریق کانالهای خروجی با سرور PatchMon ارتباط برقرار میکنند، بنابراین نیازی به باز کردن پورتها و مواجهه با خطرات امنیتی نیست.
قابلیتها:
🔗 GitHub
#ᴛʏɢᴇʀ_ꜱᴘɪʀᴇ
🔺این ابزار برای مدیران سیستم و تیمهای امنیتی طراحی شده است و امکان مدیریت ایمن و متمرکز بهروزرسانیها را در سرورهای مختلف فراهم میکند. عوامل (agents) فقط از طریق کانالهای خروجی با سرور PatchMon ارتباط برقرار میکنند، بنابراین نیازی به باز کردن پورتها و مواجهه با خطرات امنیتی نیست.
قابلیتها:
مدیریت متمرکز پچها در تعداد زیادی سرور
عوامل از طریق اتصالات خروجی کار میکنند (بدون نیاز به پورتهای باز)
نمایش کامل وضعیت بهروزرسانیها
خودکارسازی ایمن فرآیندها
🔗 GitHub
#ᴛʏɢᴇʀ_ꜱᴘɪʀᴇ
❤4
یه سوال از همه شما ک نظرتون برام ارزشمند💙
نظرتون چیه یک چنل V.I.P بزنم برای ابزار های خطرناک و اوپن سورس و... که در دسترس عموم قرار نگیره
نظرتون چیه یک چنل V.I.P بزنم برای ابزار های خطرناک و اوپن سورس و... که در دسترس عموم قرار نگیره
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19👎13
مهندسی معکوس، اولین قدم
مهندسی معکوس یعنی فهمیدن یک برنامه بدون داشتن سورس کدش.
وقتی یه فایل اجرایی داری و نمیدونی چیکار میکنه، این مسیر رو طی میکنی.
قدم اول: تشخیص نوع فایل
file unknown.exe
خروجی بهت میگه PE32 هست یا ELF یا چیز دیگه.
قدم دوم: رشتههای داخل فایل
strings unknown.exe | head -50
دنبال URL، IP، اسم فایل، پیام خطا بگرد.
اکثر بدافزارها بدون رمزنگاری، خودشون رو لو میدن.
قدم سوم: اطلاعات هدر
objdump -f unknown.exe
معماری، آدرس ورودی، تعداد سکشنها.
قدم چهارم: دیساسمبلی
objdump -d unknown.exe > disasm.txt
حالا یه فایل داری پر از اسمبلی.
دنبال call های مشکوک بگرد.
دنبال syscall ها.
دنبال String References.
نکته کلیدی:
تو اسمبلی، هر call یعنی یه تابع صدا زده شده.
اگه اسم تابع تو خروجی نباشه، آدرسش هست.
آدرس رو برو تو Import Table پیدا کن.
ابزارهای حرفهای:
IDA Pro و Ghidra برای تحلیل عمیق.
x64dbg و OllyDbg برای دیباگ زنده.
PE-bear و CFF Explorer برای ساختار PE.
#ℳℴ𝒷𝒾𝓃
مهندسی معکوس یعنی فهمیدن یک برنامه بدون داشتن سورس کدش.
وقتی یه فایل اجرایی داری و نمیدونی چیکار میکنه، این مسیر رو طی میکنی.
قدم اول: تشخیص نوع فایل
file unknown.exe
خروجی بهت میگه PE32 هست یا ELF یا چیز دیگه.
قدم دوم: رشتههای داخل فایل
strings unknown.exe | head -50
دنبال URL، IP، اسم فایل، پیام خطا بگرد.
اکثر بدافزارها بدون رمزنگاری، خودشون رو لو میدن.
قدم سوم: اطلاعات هدر
objdump -f unknown.exe
معماری، آدرس ورودی، تعداد سکشنها.
قدم چهارم: دیساسمبلی
objdump -d unknown.exe > disasm.txt
حالا یه فایل داری پر از اسمبلی.
دنبال call های مشکوک بگرد.
دنبال syscall ها.
دنبال String References.
نکته کلیدی:
تو اسمبلی، هر call یعنی یه تابع صدا زده شده.
اگه اسم تابع تو خروجی نباشه، آدرسش هست.
آدرس رو برو تو Import Table پیدا کن.
ابزارهای حرفهای:
IDA Pro و Ghidra برای تحلیل عمیق.
x64dbg و OllyDbg برای دیباگ زنده.
PE-bear و CFF Explorer برای ساختار PE.
#ℳℴ𝒷𝒾𝓃
❤9
سرریز بافر، از تئوری تا عمل
سرریز بافر یعنی نوشتن داده بیشتر از ظرفیت یه متغیر.
مثال ساده:
char buffer[8];
strcpy(buffer, "ThisIsWayTooLong");
این کد باعث سرریز میشه.
چون buffer فقط ۸ بایت جا داره.
ولی ۱۹ بایت توش ریخته میشه.
چی اتفاق میافته؟
حافظه stack این شکلیه:
[buffer 8 بایت][ذخیره شده EBP][آدرس بازگشت]
وقتی ۱۹ بایت میریزی، ۱۱ بایت اضافه سرریز میشه.
اول EBP رو خراب میکنه.
بعد آدرس بازگشت رو خراب میکنه.
اگه آدرس بازگشت رو با آدرس shellcode عوض کنی، برنامه shellcode رو اجرا میکنه.
چطور آدرس درست رو پیدا کنیم؟
۱. الگو بساز
pattern_create.rb -l 100
خروجی: Aa0Aa1Aa2Aa3...
۲. برنامه رو اجرا کن با این الگو
۳. ببین EIP چقدر شده
۴. با pattern_offset.rb آفست رو پیدا کن
pattern_offset.rb -q 0x41326341
خروجی: 42
یعنی ۴۲ بایت بعد از شروع buffer، EIP قرار داره.
چرا این روزها سخت شده؟
ASLR: آدرسها هر بار رندوم میشن.
DEP: stack قابل اجرا نیست.
Stack Canary: قبل از EIP یه مقدار مخفی میذاره.
PIE: خود برنامه هم رندوم لود میشه.
برای همین، اکسپلویت مدرن نیاز به:
Info Leak برای شکستن ASLR
ROP Chain برای دور زدن DEP
Canary Leak برای دور زدن Stack Canary
#ℳℴ𝒷𝒾𝓃
سرریز بافر یعنی نوشتن داده بیشتر از ظرفیت یه متغیر.
مثال ساده:
char buffer[8];
strcpy(buffer, "ThisIsWayTooLong");
این کد باعث سرریز میشه.
چون buffer فقط ۸ بایت جا داره.
ولی ۱۹ بایت توش ریخته میشه.
چی اتفاق میافته؟
حافظه stack این شکلیه:
[buffer 8 بایت][ذخیره شده EBP][آدرس بازگشت]
وقتی ۱۹ بایت میریزی، ۱۱ بایت اضافه سرریز میشه.
اول EBP رو خراب میکنه.
بعد آدرس بازگشت رو خراب میکنه.
اگه آدرس بازگشت رو با آدرس shellcode عوض کنی، برنامه shellcode رو اجرا میکنه.
چطور آدرس درست رو پیدا کنیم؟
۱. الگو بساز
pattern_create.rb -l 100
خروجی: Aa0Aa1Aa2Aa3...
۲. برنامه رو اجرا کن با این الگو
۳. ببین EIP چقدر شده
۴. با pattern_offset.rb آفست رو پیدا کن
pattern_offset.rb -q 0x41326341
خروجی: 42
یعنی ۴۲ بایت بعد از شروع buffer، EIP قرار داره.
چرا این روزها سخت شده؟
ASLR: آدرسها هر بار رندوم میشن.
DEP: stack قابل اجرا نیست.
Stack Canary: قبل از EIP یه مقدار مخفی میذاره.
PIE: خود برنامه هم رندوم لود میشه.
برای همین، اکسپلویت مدرن نیاز به:
Info Leak برای شکستن ASLR
ROP Chain برای دور زدن DEP
Canary Leak برای دور زدن Stack Canary
#ℳℴ𝒷𝒾𝓃
❤6👍1
🕸️ ReconGraph | هر دارایی، بخشی از یک تصویر بزرگتر است.
در دنیای امنیت سایبری، شناخت یک دامنه کافی نیست؛ گاهی ارتباط میان داراییهای دیجیتال، اطلاعاتی را آشکار میکند که در نگاه اول دیده نمیشوند.
ReconGraph ابزاری برای شناسایی و تحلیل سطح حمله است که اطلاعات دامنهها، رکوردهای DNS، گواهیهای TLS و فناوریهای قابل مشاهده وب را جمعآوری کرده و در قالب یک گزارش ساختاریافته ارائه میدهد.
🔹 بررسی اطلاعات DNS
🔹 تحلیل گواهیهای TLS
🔹 شناسایی فناوریهای قابل مشاهده
🔹 بررسی وضعیت هدرهای امنیتی
🔹 ترسیم ارتباط میان داراییهای دیجیتال
🔹 تولید گزارش JSON برای تحلیل بیشتر
گاهی مهمترین سرنخ، یک دارایی نیست؛ ارتباطی است که میان چند دارایی وجود دارد.
ReconGraph — Map the Surface. Reveal the Connections.
دانلود فایل : کلیک
#ᴛʏɢᴇʀ_ꜱᴘɪʀᴇ
در دنیای امنیت سایبری، شناخت یک دامنه کافی نیست؛ گاهی ارتباط میان داراییهای دیجیتال، اطلاعاتی را آشکار میکند که در نگاه اول دیده نمیشوند.
ReconGraph ابزاری برای شناسایی و تحلیل سطح حمله است که اطلاعات دامنهها، رکوردهای DNS، گواهیهای TLS و فناوریهای قابل مشاهده وب را جمعآوری کرده و در قالب یک گزارش ساختاریافته ارائه میدهد.
🔹 بررسی اطلاعات DNS
🔹 تحلیل گواهیهای TLS
🔹 شناسایی فناوریهای قابل مشاهده
🔹 بررسی وضعیت هدرهای امنیتی
🔹 ترسیم ارتباط میان داراییهای دیجیتال
🔹 تولید گزارش JSON برای تحلیل بیشتر
گاهی مهمترین سرنخ، یک دارایی نیست؛ ارتباطی است که میان چند دارایی وجود دارد.
ReconGraph — Map the Surface. Reveal the Connections.
دانلود فایل : کلیک
#ᴛʏɢᴇʀ_ꜱᴘɪʀᴇ
❤7🔥1
Race Condition، وقتی زمانبندی همه چیز رو خراب میکنه
Race Condition یعنی دو تا عملیات همزمان روی یه منبع کار میکنن و نتیجه غیرقابل پیشبینیه.
مثال کلاسیک: انتقال پول
if balance >= amount:
balance -= amount
send_money()
فرض کن بالانس ۱۰۰ دلاره.
دو تا درخواست همزمان میاد، هر کدوم ۱۰۰ دلار.
هر دو چک میکنن: balance >= amount → True
هر دو کم میکنن: 100 - 100 = 0
هر دو پول میفرستن: ۲۰۰ دلار فرستاده شد، ولی بالانس صفر شد.
راه حل: قفل کردن
import threading
lock = threading.Lock()
with lock:
if balance >= amount:
balance -= amount
send_money()
حالا فقط یه thread همزمان میتونه وارد شه.
مثال تو وب:
فرض کن یه کد تخفیف یه بار مصرف داری.
دو تا درخواست همزمان میفرستی.
هر دو میان تو سرور، هر دو چک میکنن: used = False
هر دو تخفیف رو اعمال میکنن.
حالا دو بار تخفیف گرفتی.
برای تست:
از Burp Suite استفاده کن.
درخواست رو بگیر.
Send to Repeater.
تبدیل به Turbo Intruder کن.
۱۰۰ بار همزمان بفرست.
ببین چند تا موفق شد.
دفاع:
استفاده از Transaction
Row-Level Locking
Atomic Operations
Rate Limiting
#ℳℴ𝒷𝒾𝓃
Race Condition یعنی دو تا عملیات همزمان روی یه منبع کار میکنن و نتیجه غیرقابل پیشبینیه.
مثال کلاسیک: انتقال پول
if balance >= amount:
balance -= amount
send_money()
فرض کن بالانس ۱۰۰ دلاره.
دو تا درخواست همزمان میاد، هر کدوم ۱۰۰ دلار.
هر دو چک میکنن: balance >= amount → True
هر دو کم میکنن: 100 - 100 = 0
هر دو پول میفرستن: ۲۰۰ دلار فرستاده شد، ولی بالانس صفر شد.
راه حل: قفل کردن
import threading
lock = threading.Lock()
with lock:
if balance >= amount:
balance -= amount
send_money()
حالا فقط یه thread همزمان میتونه وارد شه.
مثال تو وب:
فرض کن یه کد تخفیف یه بار مصرف داری.
دو تا درخواست همزمان میفرستی.
هر دو میان تو سرور، هر دو چک میکنن: used = False
هر دو تخفیف رو اعمال میکنن.
حالا دو بار تخفیف گرفتی.
برای تست:
از Burp Suite استفاده کن.
درخواست رو بگیر.
Send to Repeater.
تبدیل به Turbo Intruder کن.
۱۰۰ بار همزمان بفرست.
ببین چند تا موفق شد.
دفاع:
استفاده از Transaction
Row-Level Locking
Atomic Operations
Rate Limiting
#ℳℴ𝒷𝒾𝓃
❤4👍1
SSRF، نفوذ از داخل شبکه
SSRF یعنی یه اپلیکیشن، از طرف خودش یه درخواست به یه URL میفرسته.
اگه مهاجم بتونه اون URL رو کنترل کنه، میتونه به منابع داخلی دسترسی بگیره.
مثال ساده:
یه سایت داره: example.com/avatar?url=https://gravatar.com/user.png
سرور میره gravatar رو دانلود میکنه و نشون میده.
حالا اگه بفرستی:
example.com/avatar?url=http://127.0.0.1:8080/admin
سرور از طرف خودش میره به پنل ادمین داخلی درخواست میده.
پنل ادمین IP لوکال رو قبول میکنه.
و مهاجم از راه دور به پنل دسترسی میگیره.
چطور بفهمیم SSRF داریم؟
از Burp Collaborator استفاده کن.
یه URL منحصربفرد بهت میده.
اگه بذاریش تو اون پارامتر و DNS Query دیدی، یعنی SSRF داری.
تکنیکهای دور زدن فیلتر:
۱. تبدیل IP به فرمتهای دیگه
http://2130706433 → معادل 127.0.0.1
http://0x7f000001 → معادل 127.0.0.1
http://0177.0.0.1 → معادل 127.0.0.1
http://127.1 → معادل 127.0.0.1
۲. Redirect
http://attacker.com/redirect → به 127.0.0.1 هدایت کنه
۳. DNS Rebinding
یه دامنه که اول IP عمومی میده، بعد IP خصوصی
۴. URL Parsing Bypass
http://expected.com@127.0.0.1
http://127.0.0.1#@expected.com
۵. Cloud Metadata
http://169.254.169.254/latest/meta-data/iam/security-credentials/
این آدرس تو AWS، کلید دسترسی به حساب میده.
دفاع:
Whitelist دامنههای مجاز
Block کردن IP های خصوصی
DNS Rebinding protection
استفاده از IMDSv2 در AWS
#ℳℴ𝒷𝒾𝓃
SSRF یعنی یه اپلیکیشن، از طرف خودش یه درخواست به یه URL میفرسته.
اگه مهاجم بتونه اون URL رو کنترل کنه، میتونه به منابع داخلی دسترسی بگیره.
مثال ساده:
یه سایت داره: example.com/avatar?url=https://gravatar.com/user.png
سرور میره gravatar رو دانلود میکنه و نشون میده.
حالا اگه بفرستی:
example.com/avatar?url=http://127.0.0.1:8080/admin
سرور از طرف خودش میره به پنل ادمین داخلی درخواست میده.
پنل ادمین IP لوکال رو قبول میکنه.
و مهاجم از راه دور به پنل دسترسی میگیره.
چطور بفهمیم SSRF داریم؟
از Burp Collaborator استفاده کن.
یه URL منحصربفرد بهت میده.
اگه بذاریش تو اون پارامتر و DNS Query دیدی، یعنی SSRF داری.
تکنیکهای دور زدن فیلتر:
۱. تبدیل IP به فرمتهای دیگه
http://2130706433 → معادل 127.0.0.1
http://0x7f000001 → معادل 127.0.0.1
http://0177.0.0.1 → معادل 127.0.0.1
http://127.1 → معادل 127.0.0.1
۲. Redirect
http://attacker.com/redirect → به 127.0.0.1 هدایت کنه
۳. DNS Rebinding
یه دامنه که اول IP عمومی میده، بعد IP خصوصی
۴. URL Parsing Bypass
http://expected.com@127.0.0.1
http://127.0.0.1#@expected.com
۵. Cloud Metadata
http://169.254.169.254/latest/meta-data/iam/security-credentials/
این آدرس تو AWS، کلید دسترسی به حساب میده.
دفاع:
Whitelist دامنههای مجاز
Block کردن IP های خصوصی
DNS Rebinding protection
استفاده از IMDSv2 در AWS
#ℳℴ𝒷𝒾𝓃
❤5
Deserialization، باگی که RCE میده
Serialization یعنی تبدیل یه آبجکت به رشته بایتی برای ذخیره یا انتقال.
Deserialization یعنی برگردوندن همون بایتها به آبجکت.
مشکل کجاست؟
اگه بایتها از سمت کاربر بیان، مهاجم میتونه آبجکت مخرب بسازه.
مثال PHP:
class User {
public $role = "user";
public function __destruct() {
// کد اجرا میشه وقتی آبجکت نابود میشه
}
}
$a = unserialize($_GET['data']);
اگه مهاجم یه آبجکت User بفرسته با role=admin،
حالا ادمین شده.
ولی این سادهست. حالت خطرناکتر:
اگه یه کلاس Magic Method مثل wakeup یا destruct داشته باشی که
بر اساس ورودی، یه فایل باز کنه یا یه دستور اجرا کنه،
مهاجم میتونه RCE بگیره.
مثال معروف: PHP Object Injection
class FileHandler {
public $filename;
public function __destruct() {
unlink($this->filename);
}
}
$a = unserialize($_GET['data']);
اگه مهاجم بفرسته:
O:11:"FileHandler":1:{s:8:"filename";s:11:"/etc/passwd";}
کلاس FileHandler ساخته میشه، filename میشه /etc/passwd.
وقتی اسکریپت تموم میشه، __destruct اجرا میشه.
فایل /etc/passwd پاک میشه.
چرا این خطرناکه؟
چون با زنجیرهسازی (POP Chain)، میتونی به RCE برسی.
ابزارش: ysoserial برای Java، phpggc برای PHP.
دفاع:
هرگز داده کاربر رو Deserialize نکن.
اگه مجبوری، از فرمتهای امن مثل JSON استفاده کن.
از کلاسهای Whitelist استفاده کن.
Signed Serialization
#ℳℴ𝒷𝒾𝓃
Serialization یعنی تبدیل یه آبجکت به رشته بایتی برای ذخیره یا انتقال.
Deserialization یعنی برگردوندن همون بایتها به آبجکت.
مشکل کجاست؟
اگه بایتها از سمت کاربر بیان، مهاجم میتونه آبجکت مخرب بسازه.
مثال PHP:
class User {
public $role = "user";
public function __destruct() {
// کد اجرا میشه وقتی آبجکت نابود میشه
}
}
$a = unserialize($_GET['data']);
اگه مهاجم یه آبجکت User بفرسته با role=admin،
حالا ادمین شده.
ولی این سادهست. حالت خطرناکتر:
اگه یه کلاس Magic Method مثل wakeup یا destruct داشته باشی که
بر اساس ورودی، یه فایل باز کنه یا یه دستور اجرا کنه،
مهاجم میتونه RCE بگیره.
مثال معروف: PHP Object Injection
class FileHandler {
public $filename;
public function __destruct() {
unlink($this->filename);
}
}
$a = unserialize($_GET['data']);
اگه مهاجم بفرسته:
O:11:"FileHandler":1:{s:8:"filename";s:11:"/etc/passwd";}
کلاس FileHandler ساخته میشه، filename میشه /etc/passwd.
وقتی اسکریپت تموم میشه، __destruct اجرا میشه.
فایل /etc/passwd پاک میشه.
چرا این خطرناکه؟
چون با زنجیرهسازی (POP Chain)، میتونی به RCE برسی.
ابزارش: ysoserial برای Java، phpggc برای PHP.
دفاع:
هرگز داده کاربر رو Deserialize نکن.
اگه مجبوری، از فرمتهای امن مثل JSON استفاده کن.
از کلاسهای Whitelist استفاده کن.
Signed Serialization
#ℳℴ𝒷𝒾𝓃
❤5
جمعآوری اطلاعات از Active Directory
Active Directory قلب شبکههای ویندوزیه.
اگه بخوای به یه شبکه سازمانی نفوذ کنی، اول باید AD رو بشناسی.
چرا مهمه؟
چون تو AD، همه چی ثبت شده:
کاربرا، کامپیوترا، گروهها، سیاستها، اعتمادها.
اگه بتونی AD رو بخونی، کل شبکه رو میشناسی.
اولین قدم: دسترسی به یه کاربر عادی
حتی با یه کاربر عادی، میتونی کلی اطلاعات بگیری.
کوئریهای پایه:
۱. لیست کاربران دامنه
net user /domain
۲. لیست گروهها
net group /domain
۳. اطلاعات دامنه
net accounts /domain
۴. اعضای Domain Admins
net group "Domain Admins" /domain
ابزارهای حرفهای:
BloodHound
یه ابزار گرافیکی که روابط AD رو نشون میده.
میتونی ببینی از کاربر عادی چطور به Domain Admin برسی.
PowerView
یه اسکریپت PowerShell برای شمارش AD.
Get-NetUser
Get-NetGroup
Get-NetComputer
Get-NetSession
ADExplorer
از Sysinternals، برای مرور AD به صورت گرافیکی.
SharpHound
نسخه Collector برای BloodHound.
دادهها رو جمع میکنه و به BloodHound میده.
چرا BloodHound انقلابی بود؟
قبلش، باید دستی همه روابط رو کشف میکردی.
الان، فقط یه بار داده جمع میکنی.
BloodHound خودش کوتاهترین مسیر به Domain Admin رو نشون میده.
مثال:
کاربر Ali، عضو گروه IT Support هست.
گروه IT Support، اجازه Reset Password کاربرا رو داره.
کاربر Reza، ادمین یه سرور قدیمیه.
سرور قدیمی، دسترسی به سرور اصلی داره.
سرور اصلی، Domain Controller هست.
BloodHound این زنجیره رو خودش پیدا میکنه.
دفاع:
Principle of Least Privilege
Tiered Admin Model
Regular Audit
Monitor BloodHound-like queries
#ℳℴ𝒷𝒾𝓃
Active Directory قلب شبکههای ویندوزیه.
اگه بخوای به یه شبکه سازمانی نفوذ کنی، اول باید AD رو بشناسی.
چرا مهمه؟
چون تو AD، همه چی ثبت شده:
کاربرا، کامپیوترا، گروهها، سیاستها، اعتمادها.
اگه بتونی AD رو بخونی، کل شبکه رو میشناسی.
اولین قدم: دسترسی به یه کاربر عادی
حتی با یه کاربر عادی، میتونی کلی اطلاعات بگیری.
کوئریهای پایه:
۱. لیست کاربران دامنه
net user /domain
۲. لیست گروهها
net group /domain
۳. اطلاعات دامنه
net accounts /domain
۴. اعضای Domain Admins
net group "Domain Admins" /domain
ابزارهای حرفهای:
BloodHound
یه ابزار گرافیکی که روابط AD رو نشون میده.
میتونی ببینی از کاربر عادی چطور به Domain Admin برسی.
PowerView
یه اسکریپت PowerShell برای شمارش AD.
Get-NetUser
Get-NetGroup
Get-NetComputer
Get-NetSession
ADExplorer
از Sysinternals، برای مرور AD به صورت گرافیکی.
SharpHound
نسخه Collector برای BloodHound.
دادهها رو جمع میکنه و به BloodHound میده.
چرا BloodHound انقلابی بود؟
قبلش، باید دستی همه روابط رو کشف میکردی.
الان، فقط یه بار داده جمع میکنی.
BloodHound خودش کوتاهترین مسیر به Domain Admin رو نشون میده.
مثال:
کاربر Ali، عضو گروه IT Support هست.
گروه IT Support، اجازه Reset Password کاربرا رو داره.
کاربر Reza، ادمین یه سرور قدیمیه.
سرور قدیمی، دسترسی به سرور اصلی داره.
سرور اصلی، Domain Controller هست.
BloodHound این زنجیره رو خودش پیدا میکنه.
دفاع:
Principle of Least Privilege
Tiered Admin Model
Regular Audit
Monitor BloodHound-like queries
#ℳℴ𝒷𝒾𝓃
❤6
جرمیابی حافظه، خوندن RAM
وقتی یه سیستم هک میشه، خیلی از شواهد تو RAM هستن، نه روی دیسک.
بدافزارهای مدرن Fileless کار میکنن.
یعنی چیزی روی دیسک نمینویسن.
اگه RAM رو نگرفتی، شواهد رو از دست دادی.
اولین قدم: گرفتن Memory Dump
ابزار: DumpIt (ویندوز)، LiME (لینوکس)
خروجی: یه فایل چند گیگابایتی که کل RAM توشه.
حالا چی توشه؟
پروسههای در حال اجرا
اتصالات شبکه فعال
کلیدهای رمزنگاری
پسوردهای تو حافظه
رشتههای متنی
فایلهای اخیراً باز شده
Command History
ابزار اصلی: Volatility
Volatility یه فریمورک پایتونی برای تحلیل Memory Dump هست.
دستورات پایه:
لیست پروفایلها
volatility -f memory.dump imageinfo
لیست پروسهها
volatility -f memory.dump --profile=Win10x64 pslist
پروسههای مخفی (با کد متفاوت)
volatility -f memory.dump --profile=Win10x64 psscan
اتصالات شبکه
volatility -f memory.dump --profile=Win10x64 netscan
فایلهای باز
volatility -f memory.dump --profile=Win10x64 filescan
استخراج یه فایل
volatility -f memory.dump --profile=Win10x64 dumpfiles -Q 0x12345 -D output/
DLL های لود شده تو یه پروسه
volatility -f memory.dump --profile=Win10x64 dlllist -p 1234
تاریخچه دستورات CMD
volatility -f memory.dump --profile=Win10x64 cmdscan
چرا مهمه؟
تو حملات APT، مهاجم ممکنه ماهها تو سیستم باشه.
ولی اگه یه بار Memory Dump بگیری،
میتونی ردپاش رو پیدا کنی.
نکته:
RAM بعد از خاموش شدن پاک میشه.
پس اگه سیستم قربانی رو خاموش کنی، شواهد از دست میره.
اول Memory Dump بگیر، بعد هر کار دیگه.
#ℳℴ𝒷𝒾𝓃
وقتی یه سیستم هک میشه، خیلی از شواهد تو RAM هستن، نه روی دیسک.
بدافزارهای مدرن Fileless کار میکنن.
یعنی چیزی روی دیسک نمینویسن.
اگه RAM رو نگرفتی، شواهد رو از دست دادی.
اولین قدم: گرفتن Memory Dump
ابزار: DumpIt (ویندوز)، LiME (لینوکس)
خروجی: یه فایل چند گیگابایتی که کل RAM توشه.
حالا چی توشه؟
پروسههای در حال اجرا
اتصالات شبکه فعال
کلیدهای رمزنگاری
پسوردهای تو حافظه
رشتههای متنی
فایلهای اخیراً باز شده
Command History
ابزار اصلی: Volatility
Volatility یه فریمورک پایتونی برای تحلیل Memory Dump هست.
دستورات پایه:
لیست پروفایلها
volatility -f memory.dump imageinfo
لیست پروسهها
volatility -f memory.dump --profile=Win10x64 pslist
پروسههای مخفی (با کد متفاوت)
volatility -f memory.dump --profile=Win10x64 psscan
اتصالات شبکه
volatility -f memory.dump --profile=Win10x64 netscan
فایلهای باز
volatility -f memory.dump --profile=Win10x64 filescan
استخراج یه فایل
volatility -f memory.dump --profile=Win10x64 dumpfiles -Q 0x12345 -D output/
DLL های لود شده تو یه پروسه
volatility -f memory.dump --profile=Win10x64 dlllist -p 1234
تاریخچه دستورات CMD
volatility -f memory.dump --profile=Win10x64 cmdscan
چرا مهمه؟
تو حملات APT، مهاجم ممکنه ماهها تو سیستم باشه.
ولی اگه یه بار Memory Dump بگیری،
میتونی ردپاش رو پیدا کنی.
نکته:
RAM بعد از خاموش شدن پاک میشه.
پس اگه سیستم قربانی رو خاموش کنی، شواهد از دست میره.
اول Memory Dump بگیر، بعد هر کار دیگه.
#ℳℴ𝒷𝒾𝓃
❤2
تست امنیت API، دنیای متفاوت
API ها با وبسایتهای معمولی فرق دارن.
HTML برنمیگردونن.
JSON برمیگردونن.
و اکثراً احراز هویت با Token هست، نه Session.
برای همین، ابزارهای معمولی وب کافی نیستن.
اولین قدم: کشف Endpoint ها
API ها معمولاً تو مستنداتشون یا تو کد JavaScript فرانتاند لو میرن.
یا از Swagger استفاده میکنن:
/api/swagger.json
/api/openapi.json
/swagger-ui.html
یا از Postman Collection.
چکهای پایه:
۱. تست Authentication
آیا بدون Token میشه درخواست زد؟
آیا با Token منقضی میشه؟
آیا با Token جعلی میشه؟
۲. تست Authorization
توکن کاربر A رو بگیر.
با اون به منابع کاربر B دسترسی بگیر.
اگه شد، IDOR داری.
۳. تست Mass Assignment
فرض کن API برای ثبتنام:
POST /api/register
{"username": "ali", "password": "123"}
حالا سعی کن فیلد اضافه بفرستی:
{"username": "ali", "password": "123", "is_admin": true}
اگه سرور قبول کرد، حالا ادمینی.
۴. تست Rate Limiting
۱۰۰۰ تا درخواست تو ۱۰ ثانیه بفرست.
اگه همشون ۲۰۰ دادن، Rate Limiting نداری.
۵. تست Verb Tampering
فرض کن GET /api/user/123 کار میکنه.
حالا PUT بفرست.
DELETE بفرست.
PATCH بفرست.
شاید یه Verb دیگه کار کنه.
۶. تست Parameter Pollution
GET /api/user?id=1&id=2
کدوم id استفاده میشه؟
۷. تست JWT
هدر رو با base64 -d چک کن.
alg رو به none تغییر بده.
امضا رو حذف کن.
ببین قبول میکنه یا نه.
ابزارها:
Postman
Insomnia
Burp Suite
OWASP ZAP
Kiterunner
#ℳℴ𝒷𝒾𝓃
API ها با وبسایتهای معمولی فرق دارن.
HTML برنمیگردونن.
JSON برمیگردونن.
و اکثراً احراز هویت با Token هست، نه Session.
برای همین، ابزارهای معمولی وب کافی نیستن.
اولین قدم: کشف Endpoint ها
API ها معمولاً تو مستنداتشون یا تو کد JavaScript فرانتاند لو میرن.
یا از Swagger استفاده میکنن:
/api/swagger.json
/api/openapi.json
/swagger-ui.html
یا از Postman Collection.
چکهای پایه:
۱. تست Authentication
آیا بدون Token میشه درخواست زد؟
آیا با Token منقضی میشه؟
آیا با Token جعلی میشه؟
۲. تست Authorization
توکن کاربر A رو بگیر.
با اون به منابع کاربر B دسترسی بگیر.
اگه شد، IDOR داری.
۳. تست Mass Assignment
فرض کن API برای ثبتنام:
POST /api/register
{"username": "ali", "password": "123"}
حالا سعی کن فیلد اضافه بفرستی:
{"username": "ali", "password": "123", "is_admin": true}
اگه سرور قبول کرد، حالا ادمینی.
۴. تست Rate Limiting
۱۰۰۰ تا درخواست تو ۱۰ ثانیه بفرست.
اگه همشون ۲۰۰ دادن، Rate Limiting نداری.
۵. تست Verb Tampering
فرض کن GET /api/user/123 کار میکنه.
حالا PUT بفرست.
DELETE بفرست.
PATCH بفرست.
شاید یه Verb دیگه کار کنه.
۶. تست Parameter Pollution
GET /api/user?id=1&id=2
کدوم id استفاده میشه؟
۷. تست JWT
هدر رو با base64 -d چک کن.
alg رو به none تغییر بده.
امضا رو حذف کن.
ببین قبول میکنه یا نه.
ابزارها:
Postman
Insomnia
Burp Suite
OWASP ZAP
Kiterunner
#ℳℴ𝒷𝒾𝓃
🔥2