حمله زنجیره تامین محتمل است؛
ادمین های لینوکس مواظب باشند
بررسی امضای دیجیتال بستههای نرمافزاری توسط ادمینهای سیستم میتواند از حملات زنجیره تأمین جلوگیری کند تا بدافزارها در سیستم های ما تزریق نشوند.
در ادامه روشهای بررسی امضای بستهها در APT (Debian/Ubuntu)، YUM و DNF (RHEL/CentOS)، و Snap آورده شده است.
1. بررسی امضای دیجیتال در APT (Debian/Ubuntu)
در APT از GPG keys برای امضای بستهها استفاده میشود
الف) بررسی کلیدهای مخزن
ادمینها باید ابتدا کلیدهای مورداعتماد را تأیید کنند:
apt-key list
یا برای سیستمهای جدیدتر:
gpg --list-keys --keyring /etc/apt/trusted.gpg
اگر کلید جدیدی به مخزن اضافه شده است، باید اطمینان حاصل کنید که از منبع معتبری آمده است.
ب) بررسی امضای بستهها
برای بررسی امضای یک بسته قبل از نصب:
apt-cache policy <package-name>
مثال:
apt-cache policy openssh-server
اگر در خروجی "500" یا "100" مشاهده شد، یعنی از یک مخزن رسمی دریافت میشود.
ج) بررسی صحت بستههای دانلود شده
پس از دانلود:
dpkg-sig --verify package.deb
همچنین، میتوان از debsig-verify استفاده کرد:
debsig-verify package.deb
2. بررسی امضای دیجیتال در YUM و DNF (RHEL/CentOS)
YUM و DNF از GPG keys برای اعتبارسنجی استفاده میکنند.
الف) بررسی کلیدهای GPG
لیست کلیدهای نصبشده را بررسی کنید:
rpm -q gpg-pubkey --qf "%{NAME}-%{VERSION}-%{RELEASE}\n"
ب) بررسی امضای بستهها قبل از نصب
yum list <package-name>
dnf repoquery --info <package-name>
اگر Signature : RSA/SHA256, Key ID نمایش داده شود، یعنی بسته معتبر است.
ج) بررسی امضای یک بسته RPM
پس از دانلود بسته:
rpm --checksig -v package.rpm
مثال:
rpm --checksig -v httpd-2.4.6-97.el7.centos.x86_64.rpm
اگر نتیجه gpg OK باشد، یعنی امضا معتبر است.
3. بررسی امضای دیجیتال در Snap
Snap از امضای دیجیتال Canonical برای تضمین امنیت بستهها استفاده میکند.
الف) بررسی امضای بسته Snap
قبل از نصب:
snap info <package-name>
مثال:
snap info vlc
اطمینان حاصل کنید که نام Publisher همان ناشر رسمی بسته است.
ب) بررسی تأییدیه GPG برای Snap
برای بررسی صحت امضای مخزن:
snap known account-key
این دستور کلیدهای عمومی امضاکننده را نشان میدهد.
**هشدار : همانطور که مسبوق به سابقه است امضا ها هم جعل شده اند. پس مسوولان امنیت کشور و تیم امنیت سازمان باید فکری کند.
راهکار اول اطلاعات هوش تهدید
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
ادمین های لینوکس مواظب باشند
بررسی امضای دیجیتال بستههای نرمافزاری توسط ادمینهای سیستم میتواند از حملات زنجیره تأمین جلوگیری کند تا بدافزارها در سیستم های ما تزریق نشوند.
در ادامه روشهای بررسی امضای بستهها در APT (Debian/Ubuntu)، YUM و DNF (RHEL/CentOS)، و Snap آورده شده است.
1. بررسی امضای دیجیتال در APT (Debian/Ubuntu)
در APT از GPG keys برای امضای بستهها استفاده میشود
الف) بررسی کلیدهای مخزن
ادمینها باید ابتدا کلیدهای مورداعتماد را تأیید کنند:
apt-key list
یا برای سیستمهای جدیدتر:
gpg --list-keys --keyring /etc/apt/trusted.gpg
اگر کلید جدیدی به مخزن اضافه شده است، باید اطمینان حاصل کنید که از منبع معتبری آمده است.
ب) بررسی امضای بستهها
برای بررسی امضای یک بسته قبل از نصب:
apt-cache policy <package-name>
مثال:
apt-cache policy openssh-server
اگر در خروجی "500" یا "100" مشاهده شد، یعنی از یک مخزن رسمی دریافت میشود.
ج) بررسی صحت بستههای دانلود شده
پس از دانلود:
dpkg-sig --verify package.deb
همچنین، میتوان از debsig-verify استفاده کرد:
debsig-verify package.deb
2. بررسی امضای دیجیتال در YUM و DNF (RHEL/CentOS)
YUM و DNF از GPG keys برای اعتبارسنجی استفاده میکنند.
الف) بررسی کلیدهای GPG
لیست کلیدهای نصبشده را بررسی کنید:
rpm -q gpg-pubkey --qf "%{NAME}-%{VERSION}-%{RELEASE}\n"
ب) بررسی امضای بستهها قبل از نصب
yum list <package-name>
dnf repoquery --info <package-name>
اگر Signature : RSA/SHA256, Key ID نمایش داده شود، یعنی بسته معتبر است.
ج) بررسی امضای یک بسته RPM
پس از دانلود بسته:
rpm --checksig -v package.rpm
مثال:
rpm --checksig -v httpd-2.4.6-97.el7.centos.x86_64.rpm
اگر نتیجه gpg OK باشد، یعنی امضا معتبر است.
3. بررسی امضای دیجیتال در Snap
Snap از امضای دیجیتال Canonical برای تضمین امنیت بستهها استفاده میکند.
الف) بررسی امضای بسته Snap
قبل از نصب:
snap info <package-name>
مثال:
snap info vlc
اطمینان حاصل کنید که نام Publisher همان ناشر رسمی بسته است.
ب) بررسی تأییدیه GPG برای Snap
برای بررسی صحت امضای مخزن:
snap known account-key
این دستور کلیدهای عمومی امضاکننده را نشان میدهد.
**هشدار : همانطور که مسبوق به سابقه است امضا ها هم جعل شده اند. پس مسوولان امنیت کشور و تیم امنیت سازمان باید فکری کند.
راهکار اول اطلاعات هوش تهدید
Please open Telegram to view this post
VIEW IN TELEGRAM
فکر میکنم این کار جالبیه
https://docs.google.com/spreadsheets/u/0/d/1E5SDC5cwXWz36rPP_TXhhAvTvqz2RGnMYXieu4ZHx64/htmlview?pli=1#gid=0
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
https://docs.google.com/spreadsheets/u/0/d/1E5SDC5cwXWz36rPP_TXhhAvTvqz2RGnMYXieu4ZHx64/htmlview?pli=1#gid=0
Please open Telegram to view this post
VIEW IN TELEGRAM
Google Docs
ADCS Attack Techniques Cheatsheet
من بعد واسه آسیب پذیری ها این سایت رو هم چک کنید
https://center-for-threat-informed-defense.github.io/mappings-explorer/external/kev/attack-15.1/domain-enterprise/kev-02.13.2025/CVE-2024-37085/
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
https://center-for-threat-informed-defense.github.io/mappings-explorer/external/kev/attack-15.1/domain-enterprise/kev-02.13.2025/CVE-2024-37085/
Please open Telegram to view this post
VIEW IN TELEGRAM
Mappings Explorer | The Center for Threat-Informed Defense
Known Exploited Vulnerabilities CVE-2024-37085 - Mappings Explorer
Mappings Explorer enables cyber defenders to understand how security controls and capabilities map onto the adversary behaviors catalogued in the MITRE ATT&CK® knowledge base. These mappings form a bridge between the threat-informed approach to cybersecurity…
🚨کدام بهروش ها برای پیاده سازی DLP مناسب هستند چون برخی پروژه ها به شکست میخورند
پیادهسازی موفق DLP به یک رویکرد جامع نیاز دارد، زیرا بسیاری از پروژههای Data Loss Prevention (DLP) به دلیل عدم برنامهریزی مناسب، پیچیدگی فنی، و مقاومت کاربران شکست میخورند. در ادامه، بهترین روشها (Best Practices) برای پیادهسازی موفق Symantec DLP آورده شده است:
1. تعریف اهداف و استراتژی DLP
قبل از پیادهسازی باید به سؤالات زیر پاسخ دهید:
✅ چه دادههایی باید محافظت شوند؟ (اطلاعات مالی، مشتریان، دادههای محرمانه)
✅ چه تهدیداتی وجود دارند؟ (نشت داده از طریق ایمیل، USB، کپی در Cloud و غیره)
✅ کدام بخشها بیشترین خطر را دارند؟ (مالی، منابع انسانی، IT)
🔹 راهکار: استفاده از Data Classification برای اولویتبندی دادههای حساس.
2. شناخت و طبقهبندی دادهها
✅ راهکار: ابتدا یک Discovery Scan اجرا کنید تا بدانید دادههای حساس کجا ذخیره شدهاند و سپس Policyهای مناسب را تنظیم کنید.
💡 اشتباه رایج: تنظیم سیاستهای خیلی سختگیرانه بدون شناخت صحیح دادهها، که باعث هشدارهای کاذب (False Positive) و نارضایتی کاربران میشود.
3. شروع با مانیتورینگ (Monitor Mode) و نه بلاک کردن
✅ راهکار: ابتدا سیاستها را در حالت Monitor تنظیم کنید تا تأثیر آنها روی سیستم بررسی شود.
💡 دلیل: اگر سیاستها مستقیماً در حالت Block باشند، ممکن است عملیات تجاری دچار اختلال شود و مقاومت کاربران افزایش یابد.
4. اجرای سیاستها بهصورت مرحلهای (Phased Approach)
✅ راهکار: سیاستهای DLP را مرحلهبهمرحله اجرا کنید، نه بهصورت یکجا.
🔹 مثال:
فاز ۱: نظارت بر ایمیلهای خروجی
فاز ۲: نظارت بر دادههای USB و Cloud
فاز ۳: اجرای سیاستهای بلاکینگ
💡 چرا؟ اجرای ناگهانی تمام سیاستها باعث نارضایتی کارمندان و مشکلات عملکردی میشود.
5. ایجاد فرآیندهای پاسخگویی (Incident Response Plan)
✅ راهکار: قبل از اجرای سیاستهای DLP، مشخص کنید که در صورت نقض قوانین، چه اقدامی انجام خواهد شد.
🔹 مثال:
ارسال هشدار به کاربر و تیم امنیت
بررسی دستی و تأیید تخلفات
مسدود کردن خودکار انتقال داده
💡 اشتباه رایج: نداشتن برنامه مشخص، که باعث تأخیر در واکنش به تهدیدها میشود.
6. تعامل با کاربران و آموزش آنها
✅ راهکار: کارمندان باید بدانند که DLP برای کمک به امنیت سازمان است، نه صرفاً برای کنترل آنها.
🔹 اقدامات:
برگزاری جلسات آموزشی درباره سیاستهای DLP
اطلاعرسانی درباره دلایل مسدود شدن برخی فعالیتها
ارائه راهکارهای جایگزین (مانند استفاده از VPN یا Secure File Transfer برای ارسال دادههای حساس)
💡 دلیل شکست: مقاومت کاربران به دلیل اطلاع نداشتن از هدف پروژه DLP.
7. استفاده از Context-Aware Policies
✅ راهکار: به جای مسدود کردن تمام فعالیتها، از سیاستهای هوشمند و مبتنی بر محتوا (Content-Aware) استفاده کنید.
🔹 مثال:
ارسال فایلهای اکسل حاوی شماره کارت بانکی مسدود شود، ولی ارسال سایر فایلها مجاز باشد.
مدیران سطح بالا اجازه انتقال برخی دادههای حساس را داشته باشند، ولی کارمندان معمولی نه.
💡 دلیل شکست: تنظیم قوانین سفتوسخت که عملکرد کسبوکار را مختل میکند.
8. نظارت و بهینهسازی مداوم (Continuous Tuning & Optimization)
✅ راهکار: تنظیمات و سیاستهای DLP را بهصورت دورهای بازبینی کنید و بر اساس گزارشها و وقایع امنیتی بهینهسازی کنید.
🔹 ابزارها:
تحلیل False Positive و تنظیم قوانین برای کاهش آن
بررسی عملکرد سیستم و بهینهسازی سیاستها برای جلوگیری از کاهش کارایی
💡 اشتباه رایج: تنظیم یکبارهی DLP و عدم بررسی مداوم، که باعث هشدارهای زیاد و ناکارآمدی سیاستها میشود.
9. استفاده از یک تیم متخصص و همکاری با مدیران سازمان
✅ راهکار:
تیمی متشکل از امنیت اطلاعات، شبکه، حقوقی و منابع انسانی تشکیل دهید.
مدیران سازمان را در جریان بگذارید تا از اجرای سیاستهای DLP حمایت کنند.
💡 دلیل شکست: عدم حمایت مدیران و نادیده گرفتن نیازهای بخشهای مختلف سازمان.
جمعبندی: چرا پروژههای DLP شکست میخورند؟
❌ سیاستهای خیلی سختگیرانه بدون شناخت دقیق دادهها
❌ عدم تعامل و آموزش کاربران
❌ اجرای ناگهانی و بدون برنامهریزی
❌ تنظیم نکردن فرآیندهای پاسخگویی
❌ عدم بررسی و بهینهسازی مداوم
✅ راهکارهای موفقیت:
1️⃣ اجرای اسکنهای اولیه برای شناخت دادهها
2️⃣ شروع با مانیتورینگ و اجرای سیاستها بهصورت تدریجی
3️⃣ تعامل و آموزش کاربران برای کاهش مقاومت
4️⃣ تنظیم سیاستهای هوشمند و انعطافپذیر
5️⃣ بررسی مداوم و بهینهسازی سیاستهای DLP
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
پیادهسازی موفق DLP به یک رویکرد جامع نیاز دارد، زیرا بسیاری از پروژههای Data Loss Prevention (DLP) به دلیل عدم برنامهریزی مناسب، پیچیدگی فنی، و مقاومت کاربران شکست میخورند. در ادامه، بهترین روشها (Best Practices) برای پیادهسازی موفق Symantec DLP آورده شده است:
1. تعریف اهداف و استراتژی DLP
قبل از پیادهسازی باید به سؤالات زیر پاسخ دهید:
✅ چه دادههایی باید محافظت شوند؟ (اطلاعات مالی، مشتریان، دادههای محرمانه)
✅ چه تهدیداتی وجود دارند؟ (نشت داده از طریق ایمیل، USB، کپی در Cloud و غیره)
✅ کدام بخشها بیشترین خطر را دارند؟ (مالی، منابع انسانی، IT)
🔹 راهکار: استفاده از Data Classification برای اولویتبندی دادههای حساس.
2. شناخت و طبقهبندی دادهها
✅ راهکار: ابتدا یک Discovery Scan اجرا کنید تا بدانید دادههای حساس کجا ذخیره شدهاند و سپس Policyهای مناسب را تنظیم کنید.
💡 اشتباه رایج: تنظیم سیاستهای خیلی سختگیرانه بدون شناخت صحیح دادهها، که باعث هشدارهای کاذب (False Positive) و نارضایتی کاربران میشود.
3. شروع با مانیتورینگ (Monitor Mode) و نه بلاک کردن
✅ راهکار: ابتدا سیاستها را در حالت Monitor تنظیم کنید تا تأثیر آنها روی سیستم بررسی شود.
💡 دلیل: اگر سیاستها مستقیماً در حالت Block باشند، ممکن است عملیات تجاری دچار اختلال شود و مقاومت کاربران افزایش یابد.
4. اجرای سیاستها بهصورت مرحلهای (Phased Approach)
✅ راهکار: سیاستهای DLP را مرحلهبهمرحله اجرا کنید، نه بهصورت یکجا.
🔹 مثال:
فاز ۱: نظارت بر ایمیلهای خروجی
فاز ۲: نظارت بر دادههای USB و Cloud
فاز ۳: اجرای سیاستهای بلاکینگ
💡 چرا؟ اجرای ناگهانی تمام سیاستها باعث نارضایتی کارمندان و مشکلات عملکردی میشود.
5. ایجاد فرآیندهای پاسخگویی (Incident Response Plan)
✅ راهکار: قبل از اجرای سیاستهای DLP، مشخص کنید که در صورت نقض قوانین، چه اقدامی انجام خواهد شد.
🔹 مثال:
ارسال هشدار به کاربر و تیم امنیت
بررسی دستی و تأیید تخلفات
مسدود کردن خودکار انتقال داده
💡 اشتباه رایج: نداشتن برنامه مشخص، که باعث تأخیر در واکنش به تهدیدها میشود.
6. تعامل با کاربران و آموزش آنها
✅ راهکار: کارمندان باید بدانند که DLP برای کمک به امنیت سازمان است، نه صرفاً برای کنترل آنها.
🔹 اقدامات:
برگزاری جلسات آموزشی درباره سیاستهای DLP
اطلاعرسانی درباره دلایل مسدود شدن برخی فعالیتها
ارائه راهکارهای جایگزین (مانند استفاده از VPN یا Secure File Transfer برای ارسال دادههای حساس)
💡 دلیل شکست: مقاومت کاربران به دلیل اطلاع نداشتن از هدف پروژه DLP.
7. استفاده از Context-Aware Policies
✅ راهکار: به جای مسدود کردن تمام فعالیتها، از سیاستهای هوشمند و مبتنی بر محتوا (Content-Aware) استفاده کنید.
🔹 مثال:
ارسال فایلهای اکسل حاوی شماره کارت بانکی مسدود شود، ولی ارسال سایر فایلها مجاز باشد.
مدیران سطح بالا اجازه انتقال برخی دادههای حساس را داشته باشند، ولی کارمندان معمولی نه.
💡 دلیل شکست: تنظیم قوانین سفتوسخت که عملکرد کسبوکار را مختل میکند.
8. نظارت و بهینهسازی مداوم (Continuous Tuning & Optimization)
✅ راهکار: تنظیمات و سیاستهای DLP را بهصورت دورهای بازبینی کنید و بر اساس گزارشها و وقایع امنیتی بهینهسازی کنید.
🔹 ابزارها:
تحلیل False Positive و تنظیم قوانین برای کاهش آن
بررسی عملکرد سیستم و بهینهسازی سیاستها برای جلوگیری از کاهش کارایی
💡 اشتباه رایج: تنظیم یکبارهی DLP و عدم بررسی مداوم، که باعث هشدارهای زیاد و ناکارآمدی سیاستها میشود.
9. استفاده از یک تیم متخصص و همکاری با مدیران سازمان
✅ راهکار:
تیمی متشکل از امنیت اطلاعات، شبکه، حقوقی و منابع انسانی تشکیل دهید.
مدیران سازمان را در جریان بگذارید تا از اجرای سیاستهای DLP حمایت کنند.
💡 دلیل شکست: عدم حمایت مدیران و نادیده گرفتن نیازهای بخشهای مختلف سازمان.
جمعبندی: چرا پروژههای DLP شکست میخورند؟
❌ سیاستهای خیلی سختگیرانه بدون شناخت دقیق دادهها
❌ عدم تعامل و آموزش کاربران
❌ اجرای ناگهانی و بدون برنامهریزی
❌ تنظیم نکردن فرآیندهای پاسخگویی
❌ عدم بررسی و بهینهسازی مداوم
✅ راهکارهای موفقیت:
1️⃣ اجرای اسکنهای اولیه برای شناخت دادهها
2️⃣ شروع با مانیتورینگ و اجرای سیاستها بهصورت تدریجی
3️⃣ تعامل و آموزش کاربران برای کاهش مقاومت
4️⃣ تنظیم سیاستهای هوشمند و انعطافپذیر
5️⃣ بررسی مداوم و بهینهسازی سیاستهای DLP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
این مقاله امروزه که براتون انتخاب کردم
https://hunt.io/blog/golang-beacons-vs-code-tunnels-tracking-cobalt-strike
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
https://hunt.io/blog/golang-beacons-vs-code-tunnels-tracking-cobalt-strike
Please open Telegram to view this post
VIEW IN TELEGRAM
hunt.io
Golang Beacons and VS Code Tunnels: Tracking a Cobalt Strike Server Leveraging Trusted Infrastructure
Discover how a Cobalt Strike server with a TLS certificate and watermark used a Golang beacon to communicate via Visual Studio Code tunnels. Learn more.
💫 مقایسه TLSH و ssdeep در تحلیل بدافزار و فیشینگ
در دنیای امنیت سایبری، شناسایی فایلهای مخرب و حملات فیشینگ یکی از چالشهای مهم است. روشهای سنتی هشینگ مانند MD5 و SHA-256 برای شناسایی دقیق یک فایل خاص مفید هستند، اما در برابر تغییرات جزئی در فایلها کارایی ندارند یعنی هکر با تغییر کوچکی در بدافزار ؛ امضا (هش)آنرا تغییر داده و ما را دور میزند. .
برای حل این مشکل، روشهای هشینگ فازی مانند TLSH (Trend Locality Sensitive Hashing) و ssdeep توسعه یافتهاند. این روشها امکان شناسایی شباهتهای ساختاری بین فایلها را فراهم میکنند، حتی اگر تغییراتی در محتوا رخ داده باشد. در این اینجا ، به بررسی این دو روش و کاربردهای آنها در امنیت سایبری میپردازم.
🟧معرفی ssdeep
این ssdeep یک ابزار هشینگ فازی است که از Context Triggered Piecewise Hashing (CTPH) استفاده میکند. این روش فایل را به بلوکهای کوچکتر تقسیم کرده و برای هر بلوک یک مقدار هش تولید میکند. سپس این هشها ترکیب شده و مقدار نهایی هشینگ فازی را تشکیل میدهند. تفاوت اصلی ssdeep با روشهای هشینگ سنتی این است که امکان مقایسه درصدی دو فایل را فراهم میکند، به طوری که فایلهایی که تغییرات اندکی دارند، همچنان به عنوان فایلهای مشابه شناخته میشوند.
✔️از جمله کاربردهای ssdeep میتوان به موارد زیر اشاره کرد:
تحلیل بدافزارها: شناسایی نمونههای مشابه از بدافزارها، حتی اگر تغییرات جزئی در آنها ایجاد شده باشد.
تشخیص فیشینگ: مقایسه محتوای HTML سایتهای فیشینگ برای یافتن الگوهای مشابه.
مدیریت دادههای بزرگ: شناسایی فایلهای مشابه در حجمهای عظیم داده.
با این حال، ssdeep دارای محدودیتهایی نیز هست. برای مثال، اگر تغییرات در فایل به صورت پراکنده باشد، دقت شناسایی کاهش مییابد.
🔴معرفی TLSH
این TLSH یک روش هشینگ فازی توسعهیافته توسط Trend Micro است که بر خلاف ssdeep، از رویکرد متفاوتی برای شناسایی شباهتها استفاده میکند. TLSH ساختار کلی فایل را با استفاده از تجزیه و تحلیل الگوی بایتی آن بررسی کرده و یک هش خاص تولید میکند. این هشها قابلیت مقایسه عددی دارند، به طوری که امتیازات پایینتر نشاندهنده شباهت بیشتر بین فایلها هستند.
❇️مزایای TLSH عبارتند از:
دقت بالاتر در مقایسه فایلها: برخلاف ssdeep، این روش به تغییرات جزئی حساسیت کمتری دارد.
کارایی بالا در تحلیل بدافزار: قابلیت تشخیص نمونههای تغییر یافته از یک بدافزار با دقت بیشتر.
عدم نیاز به اندازه ثابت فایلها: برخلاف ssdeep که به فایلهای بزرگ وابسته است، TLSH روی فایلهای کوچکتر نیز موثر عمل میکند.
یکی از نقاط ضعف TLSH این است که به اندازه ssdeep در تشخیص تغییرات محلی حساس نیست، زیرا تمرکز آن بر ساختار کلی فایل است.
👌به طور کلی، اگر نیاز به تشخیص تغییرات جزئی در یک فایل باشد، ssdeep انتخاب بهتری است. اما اگر هدف، تحلیل ساختاری کلی فایل باشد، TLSH عملکرد بهتری دارد.
هشینگ فازی یک ابزار قدرتمند برای شناسایی بدافزارها و حملات فیشینگ است. هر دو روش ssdeep و TLSH در امنیت سایبری کاربردهای فراوانی دارند، اما بسته به نیاز، یکی ممکن است بر دیگری برتری داشته باشد. ترکیب این دو روش میتواند به تحلیلگران امنیتی کمک کند تا تهدیدات جدید را سریعتر و دقیقتر شناسایی کنند.
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
در دنیای امنیت سایبری، شناسایی فایلهای مخرب و حملات فیشینگ یکی از چالشهای مهم است. روشهای سنتی هشینگ مانند MD5 و SHA-256 برای شناسایی دقیق یک فایل خاص مفید هستند، اما در برابر تغییرات جزئی در فایلها کارایی ندارند یعنی هکر با تغییر کوچکی در بدافزار ؛ امضا (هش)آنرا تغییر داده و ما را دور میزند. .
برای حل این مشکل، روشهای هشینگ فازی مانند TLSH (Trend Locality Sensitive Hashing) و ssdeep توسعه یافتهاند. این روشها امکان شناسایی شباهتهای ساختاری بین فایلها را فراهم میکنند، حتی اگر تغییراتی در محتوا رخ داده باشد. در این اینجا ، به بررسی این دو روش و کاربردهای آنها در امنیت سایبری میپردازم.
🟧معرفی ssdeep
این ssdeep یک ابزار هشینگ فازی است که از Context Triggered Piecewise Hashing (CTPH) استفاده میکند. این روش فایل را به بلوکهای کوچکتر تقسیم کرده و برای هر بلوک یک مقدار هش تولید میکند. سپس این هشها ترکیب شده و مقدار نهایی هشینگ فازی را تشکیل میدهند. تفاوت اصلی ssdeep با روشهای هشینگ سنتی این است که امکان مقایسه درصدی دو فایل را فراهم میکند، به طوری که فایلهایی که تغییرات اندکی دارند، همچنان به عنوان فایلهای مشابه شناخته میشوند.
✔️از جمله کاربردهای ssdeep میتوان به موارد زیر اشاره کرد:
تحلیل بدافزارها: شناسایی نمونههای مشابه از بدافزارها، حتی اگر تغییرات جزئی در آنها ایجاد شده باشد.
تشخیص فیشینگ: مقایسه محتوای HTML سایتهای فیشینگ برای یافتن الگوهای مشابه.
مدیریت دادههای بزرگ: شناسایی فایلهای مشابه در حجمهای عظیم داده.
با این حال، ssdeep دارای محدودیتهایی نیز هست. برای مثال، اگر تغییرات در فایل به صورت پراکنده باشد، دقت شناسایی کاهش مییابد.
🔴معرفی TLSH
این TLSH یک روش هشینگ فازی توسعهیافته توسط Trend Micro است که بر خلاف ssdeep، از رویکرد متفاوتی برای شناسایی شباهتها استفاده میکند. TLSH ساختار کلی فایل را با استفاده از تجزیه و تحلیل الگوی بایتی آن بررسی کرده و یک هش خاص تولید میکند. این هشها قابلیت مقایسه عددی دارند، به طوری که امتیازات پایینتر نشاندهنده شباهت بیشتر بین فایلها هستند.
❇️مزایای TLSH عبارتند از:
دقت بالاتر در مقایسه فایلها: برخلاف ssdeep، این روش به تغییرات جزئی حساسیت کمتری دارد.
کارایی بالا در تحلیل بدافزار: قابلیت تشخیص نمونههای تغییر یافته از یک بدافزار با دقت بیشتر.
عدم نیاز به اندازه ثابت فایلها: برخلاف ssdeep که به فایلهای بزرگ وابسته است، TLSH روی فایلهای کوچکتر نیز موثر عمل میکند.
یکی از نقاط ضعف TLSH این است که به اندازه ssdeep در تشخیص تغییرات محلی حساس نیست، زیرا تمرکز آن بر ساختار کلی فایل است.
👌به طور کلی، اگر نیاز به تشخیص تغییرات جزئی در یک فایل باشد، ssdeep انتخاب بهتری است. اما اگر هدف، تحلیل ساختاری کلی فایل باشد، TLSH عملکرد بهتری دارد.
هشینگ فازی یک ابزار قدرتمند برای شناسایی بدافزارها و حملات فیشینگ است. هر دو روش ssdeep و TLSH در امنیت سایبری کاربردهای فراوانی دارند، اما بسته به نیاز، یکی ممکن است بر دیگری برتری داشته باشد. ترکیب این دو روش میتواند به تحلیلگران امنیتی کمک کند تا تهدیدات جدید را سریعتر و دقیقتر شناسایی کنند.
Please open Telegram to view this post
VIEW IN TELEGRAM
جلوگیری از شناسایی VM هنگام تحلیل بدافزار
بدافزار ها را معمولا در یک vm اجرا میکنیم تا رفتار آنرا ببینیم. بدافزارها هم تلاش دارند محیط vm را شناسایی کنند و اقدامات لازم را انجام دهند.
حال ما چه میکنیم ؟
🔆بطور خلاصه یکسری ایده :
✔️استفاده از دیباگر (x64dbg) و تغییر مقدار APIها در حافظه.
✔️ویرایش رجیستری برای حذف نامهای مربوط به VMware و VirtualBox.
✔️انجام Hook کردن APIها در سطح کد (DLL Injection) برای تغییر مقدار برگشتی.
✔️استفاده از ابزارهای آماده مثل ScyllaHide برای مخفی کردن محیط مجازی.
🔴شرح موضوع
برای جلوگیری از شناسایی محیط مجازی، میتوانیم APIهایی که بدافزار برای تشخیص VM استفاده میکند را Patch کنیم یا مقادیر جعلی برگردانیم. این کار را میتوان از طریق Hook کردن APIها، ویرایش کد اسمبلی، یا استفاده از ابزارهای آماده انجام داد.
روش ۱: Hook کردن APIها در دیباگر (x64dbg / OllyDbg)
مثال: Patch کردن NtQuerySystemInformation
یکی از رایجترین روشهای تشخیص VM، استفاده از NtQuerySystemInformation است. این API مقدار SystemFirmwareTableInformation یا SystemManufacturer را بررسی میکند. اگر مقادیر مربوط به VMware یا VirtualBox باشند، بدافزار متوجه محیط مجازی خواهد شد.
مراحل Patch کردن در دیباگر (x64dbg)
بدافزار را در x64dbg اجرا کنید.
به منوی Symbols بروید و ntdll.dll را انتخاب کنید.
تابع NtQuerySystemInformation را پیدا کنید.
روی آن Breakpoint (BP) بگذارید تا ببینید چه مقدار برمیگرداند.
مقدار برگشتی را با مقدار یک سیستم فیزیکی جایگزین کنید. (مثلاً "DELL" یا "HP" برای سازندهی سیستم)
در اسمبلی، مقدار EAX را به عدد 0 تغییر دهید (که یعنی تابع موفق اجرا شده ولی مقدار VM را برنمیگرداند).
mov eax, 0
ret
روش ۲: تغییر مقادیر رجیستری برای جلوگیری از تشخیص VM
اگر بدافزار مستقیماً از رجیستری ویندوز مقدار را میخواند، میتوانیم آن را تغییر دهیم. برخی کلیدهای مهم:
ویرایش مقدار SystemBiosVersion در رجیستری
regedit را باز کنید.
به مسیر زیر بروید:
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System
مقدار SystemBiosVersion را تغییر دهید و مثلاً "DELL BIOS" را جایگزین کنید.
حذف اطلاعات مربوط به VMware از رجیستری
به مسیرهای زیر بروید و مقدار آنها را پاک کنید:
HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VBoxGuest
روش ۳: Hook کردن APIها در سطح کد (با DLL Injection)
✴️میتوان با نوشتن یک DLL و تزریق آن در پروسهی بدافزار، مقدار خروجی API را تغییر داد.
مثال: Hook کردن CPUID برای جلوگیری از شناسایی VMware
۱. کد C++ برای تغییر خروجی CPUID
#include <windows.h>
#include <detours.h>
#include <intrin.h>
typedef void (WINAPI* CPUID_t)(int[4], int);
CPUID_t Real_CPUID = (CPUID_t)__cpuid;
void WINAPI Fake_CPUID(int CPUInfo[4], int InfoType) {
Real_CPUID(CPUInfo, InfoType);
if (InfoType == 0) {
// تغییر مقدار برگشتی برای جلوگیری از شناسایی VM
CPUInfo[1] = 'Genu'; // تغییر به پردازنده Intel
CPUInfo[2] = 'ineI';
CPUInfo[3] = 'ntel';
}
}
void HookAPI() {
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)Real_CPUID, Fake_CPUID);
DetourTransactionCommit();
}
۲. کامپایل کد و تزریق آن در بدافزار
این کد مقدار CPUID را تغییر میدهد تا سیستم بهعنوان Intel واقعی شناسایی شود و نه ماشین مجازی.
برای اجرای آن، باید از DLL Injection استفاده کنید.
روش ۴: استفاده از ابزارهای آماده برای مخفی کردن VM
ScyllaHide (برای دور زدن Anti-Debug و VM Detection)
این ScyllaHide یک پلاگین برای x64dbg است که بهصورت خودکار مقدار APIها را تغییر میدهد تا سیستم، فیزیکی به نظر برسد.
مراحل استفاده از ScyllaHide
پلاگین ScyllaHide را در x64dbg نصب کنید.
به مسیر Plugins > ScyllaHide بروید.
گزینههای VM Detection Bypass و Anti-Debug Protection را فعال کنید.
اجرای بدافزار را تست کنید تا ببینید آیا همچنان محیط را به عنوان VM تشخیص میدهد یا نه.
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
بدافزار ها را معمولا در یک vm اجرا میکنیم تا رفتار آنرا ببینیم. بدافزارها هم تلاش دارند محیط vm را شناسایی کنند و اقدامات لازم را انجام دهند.
حال ما چه میکنیم ؟
🔆بطور خلاصه یکسری ایده :
✔️استفاده از دیباگر (x64dbg) و تغییر مقدار APIها در حافظه.
✔️ویرایش رجیستری برای حذف نامهای مربوط به VMware و VirtualBox.
✔️انجام Hook کردن APIها در سطح کد (DLL Injection) برای تغییر مقدار برگشتی.
✔️استفاده از ابزارهای آماده مثل ScyllaHide برای مخفی کردن محیط مجازی.
🔴شرح موضوع
برای جلوگیری از شناسایی محیط مجازی، میتوانیم APIهایی که بدافزار برای تشخیص VM استفاده میکند را Patch کنیم یا مقادیر جعلی برگردانیم. این کار را میتوان از طریق Hook کردن APIها، ویرایش کد اسمبلی، یا استفاده از ابزارهای آماده انجام داد.
روش ۱: Hook کردن APIها در دیباگر (x64dbg / OllyDbg)
مثال: Patch کردن NtQuerySystemInformation
یکی از رایجترین روشهای تشخیص VM، استفاده از NtQuerySystemInformation است. این API مقدار SystemFirmwareTableInformation یا SystemManufacturer را بررسی میکند. اگر مقادیر مربوط به VMware یا VirtualBox باشند، بدافزار متوجه محیط مجازی خواهد شد.
مراحل Patch کردن در دیباگر (x64dbg)
بدافزار را در x64dbg اجرا کنید.
به منوی Symbols بروید و ntdll.dll را انتخاب کنید.
تابع NtQuerySystemInformation را پیدا کنید.
روی آن Breakpoint (BP) بگذارید تا ببینید چه مقدار برمیگرداند.
مقدار برگشتی را با مقدار یک سیستم فیزیکی جایگزین کنید. (مثلاً "DELL" یا "HP" برای سازندهی سیستم)
در اسمبلی، مقدار EAX را به عدد 0 تغییر دهید (که یعنی تابع موفق اجرا شده ولی مقدار VM را برنمیگرداند).
mov eax, 0
ret
روش ۲: تغییر مقادیر رجیستری برای جلوگیری از تشخیص VM
اگر بدافزار مستقیماً از رجیستری ویندوز مقدار را میخواند، میتوانیم آن را تغییر دهیم. برخی کلیدهای مهم:
ویرایش مقدار SystemBiosVersion در رجیستری
regedit را باز کنید.
به مسیر زیر بروید:
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System
مقدار SystemBiosVersion را تغییر دهید و مثلاً "DELL BIOS" را جایگزین کنید.
حذف اطلاعات مربوط به VMware از رجیستری
به مسیرهای زیر بروید و مقدار آنها را پاک کنید:
HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VBoxGuest
روش ۳: Hook کردن APIها در سطح کد (با DLL Injection)
✴️میتوان با نوشتن یک DLL و تزریق آن در پروسهی بدافزار، مقدار خروجی API را تغییر داد.
مثال: Hook کردن CPUID برای جلوگیری از شناسایی VMware
۱. کد C++ برای تغییر خروجی CPUID
#include <windows.h>
#include <detours.h>
#include <intrin.h>
typedef void (WINAPI* CPUID_t)(int[4], int);
CPUID_t Real_CPUID = (CPUID_t)__cpuid;
void WINAPI Fake_CPUID(int CPUInfo[4], int InfoType) {
Real_CPUID(CPUInfo, InfoType);
if (InfoType == 0) {
// تغییر مقدار برگشتی برای جلوگیری از شناسایی VM
CPUInfo[1] = 'Genu'; // تغییر به پردازنده Intel
CPUInfo[2] = 'ineI';
CPUInfo[3] = 'ntel';
}
}
void HookAPI() {
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)Real_CPUID, Fake_CPUID);
DetourTransactionCommit();
}
۲. کامپایل کد و تزریق آن در بدافزار
این کد مقدار CPUID را تغییر میدهد تا سیستم بهعنوان Intel واقعی شناسایی شود و نه ماشین مجازی.
برای اجرای آن، باید از DLL Injection استفاده کنید.
روش ۴: استفاده از ابزارهای آماده برای مخفی کردن VM
ScyllaHide (برای دور زدن Anti-Debug و VM Detection)
این ScyllaHide یک پلاگین برای x64dbg است که بهصورت خودکار مقدار APIها را تغییر میدهد تا سیستم، فیزیکی به نظر برسد.
مراحل استفاده از ScyllaHide
پلاگین ScyllaHide را در x64dbg نصب کنید.
به مسیر Plugins > ScyllaHide بروید.
گزینههای VM Detection Bypass و Anti-Debug Protection را فعال کنید.
اجرای بدافزار را تست کنید تا ببینید آیا همچنان محیط را به عنوان VM تشخیص میدهد یا نه.
Please open Telegram to view this post
VIEW IN TELEGRAM
تکنیک Patch کردن API یعنی چی و چطور انجام میشود؟
تکنیکPatch کردن API ؛ یعنی تغییر رفتار یک تابع در حافظه یا کد اجرایی بهطوری که هنگام اجرای برنامه، تابع مقدار متفاوتی برگرداند یا اصلاً اجرا نشود.
این تکنیک در مهندسی معکوس، تحلیل بدافزار، و دور زدن محدودیتهای نرمافزاری استفاده میشود.
روشهای مختلف Patch کردن API
برای Patch کردن API میتوان از چندین روش مختلف استفاده کرد:
ویرایش باینری (Binary Patching) در فایل اجرایی
تکنیک Patch کردن در حافظه (Runtime Patching) با دیباگر
انجام Hook کردن API با DLL Injection یا Inline Hooking
۱. ویرایش باینری (Binary Patching) در فایل اجرایی
در این روش، مستقیماً فایل اجرایی (EXE / DLL) را ویرایش میکنیم و کد تابع را تغییر میدهیم.
مثال: حذف یک شرط در Assembly
فرض کنید یک برنامه این شرط را دارد:
cmp eax, 1 ;
مقدار EAX را با 1 مقایسه میکند
jne Exit ;
اگر برابر نبود، به Exit میرود
اگر بخواهیم این شرط را حذف کنیم تا برنامه همیشه مقدار موردنظر ما را بپذیرد، میتوانیم این دو دستور را NOP (No Operation) کنیم:
nop ; هیچ عملی انجام نده
nop ; هیچ عملی انجام نده
ابزارهای مورد نیاز برای این روش
Hiew → برای ویرایش فایلهای باینری
IDA Pro / Ghidra → برای مشاهده و تغییر کد اسمبلی
x64dbg / OllyDbg → برای دیباگ و Patch کردن در حافظه
۲. انجامPatch کردن در حافظه (Runtime Patching) با دیباگر
در این روش، برنامه را اجرا میکنیم و در لحظه (runtime) کد آن را تغییر میدهیم.
مثال: Patch کردن NtQuerySystemInformation در x64dbg
فرض کنید یک بدافزار از این API استفاده میکند تا ببیند سیستم داخل VM است یا نه:
call NtQuerySystemInformation
cmp eax, 0x1 ;
اگر مقدار برگشتی ۱ باشد، یعنی سیستم مجازی است
je Exit ;
اگر مقدار ۱ بود، خروج
مراحل انجام کار در x64dbg:
برنامه را در x64dbg اجرا کنید.
به تابع NtQuerySystemInformation بروید.
روی دستور cmp eax, 0x1 Breakpoint بگذارید.
مقدار eax را به ۰ تغییر دهید تا برنامه فکر کند در سیستم واقعی اجرا میشود.
mov eax, 0
اجرای برنامه را ادامه دهید.
🔹 نتیجه: بدافزار نمیتواند تشخیص دهد که در VM اجرا شده است!
۳. انجام Hook کردن API با DLL Injection یا Inline Hooking
در این روش، یک DLL جدید مینویسیم و آن را به برنامه تزریق میکنیم تا رفتار یک API را تغییر دهد.
مثال: Hook کردن NtQuerySystemInformation با DLL Injection
کد زیر باعث میشود که مقدار برگشتی NtQuerySystemInformation همیشه مقدار جعلی (مثلاً ۰) باشد، بنابراین بدافزار فکر میکند در یک سیستم واقعی اجرا شده است.
#include <windows.h>
#include <detours.h>
#include <winternl.h>
typedef NTSTATUS (WINAPI* NtQuerySystemInformation_t)(SYSTEM_INFORMATION_CLASS, PVOID, ULONG, PULONG);
NtQuerySystemInformation_t OriginalNtQuerySystemInformation;
NTSTATUS WINAPI HookedNtQuerySystemInformation(SYSTEM_INFORMATION_CLASS SystemInformationClass, PVOID SystemInformation, ULONG SystemInformationLength, PULONG ReturnLength) {
if (SystemInformationClass == SystemManufacturer) {
strcpy((char*)SystemInformation, "DELL");
مقدار جعلی برای سیستم فیزیکی
return 0;
}
return OriginalNtQuerySystemInformation(SystemInformationClass, SystemInformation, SystemInformationLength, ReturnLength);
}
void HookAPI() {
OriginalNtQuerySystemInformation = (NtQuerySystemInformation_t)GetProcAddress(GetModuleHandle("ntdll.dll"), "NtQuerySystemInformation");
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)OriginalNtQuerySystemInformation, HookedNtQuerySystemInformation);
DetourTransactionCommit();
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
HookAPI();
}
return TRUE;
}
مراحل اجرای Hook
این کد را کامپایل کنید و یک DLL بسازید.
این DLL را به بدافزار Inject کنید (مثلاً با Process Hacker یا DLL Injector).
حالا API NtQuerySystemInformation مقدار دلخواه شما را برمیگرداند.
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
تکنیکPatch کردن API ؛ یعنی تغییر رفتار یک تابع در حافظه یا کد اجرایی بهطوری که هنگام اجرای برنامه، تابع مقدار متفاوتی برگرداند یا اصلاً اجرا نشود.
این تکنیک در مهندسی معکوس، تحلیل بدافزار، و دور زدن محدودیتهای نرمافزاری استفاده میشود.
روشهای مختلف Patch کردن API
برای Patch کردن API میتوان از چندین روش مختلف استفاده کرد:
ویرایش باینری (Binary Patching) در فایل اجرایی
تکنیک Patch کردن در حافظه (Runtime Patching) با دیباگر
انجام Hook کردن API با DLL Injection یا Inline Hooking
۱. ویرایش باینری (Binary Patching) در فایل اجرایی
در این روش، مستقیماً فایل اجرایی (EXE / DLL) را ویرایش میکنیم و کد تابع را تغییر میدهیم.
مثال: حذف یک شرط در Assembly
فرض کنید یک برنامه این شرط را دارد:
cmp eax, 1 ;
مقدار EAX را با 1 مقایسه میکند
jne Exit ;
اگر برابر نبود، به Exit میرود
اگر بخواهیم این شرط را حذف کنیم تا برنامه همیشه مقدار موردنظر ما را بپذیرد، میتوانیم این دو دستور را NOP (No Operation) کنیم:
nop ; هیچ عملی انجام نده
nop ; هیچ عملی انجام نده
ابزارهای مورد نیاز برای این روش
Hiew → برای ویرایش فایلهای باینری
IDA Pro / Ghidra → برای مشاهده و تغییر کد اسمبلی
x64dbg / OllyDbg → برای دیباگ و Patch کردن در حافظه
۲. انجامPatch کردن در حافظه (Runtime Patching) با دیباگر
در این روش، برنامه را اجرا میکنیم و در لحظه (runtime) کد آن را تغییر میدهیم.
مثال: Patch کردن NtQuerySystemInformation در x64dbg
فرض کنید یک بدافزار از این API استفاده میکند تا ببیند سیستم داخل VM است یا نه:
call NtQuerySystemInformation
cmp eax, 0x1 ;
اگر مقدار برگشتی ۱ باشد، یعنی سیستم مجازی است
je Exit ;
اگر مقدار ۱ بود، خروج
مراحل انجام کار در x64dbg:
برنامه را در x64dbg اجرا کنید.
به تابع NtQuerySystemInformation بروید.
روی دستور cmp eax, 0x1 Breakpoint بگذارید.
مقدار eax را به ۰ تغییر دهید تا برنامه فکر کند در سیستم واقعی اجرا میشود.
mov eax, 0
اجرای برنامه را ادامه دهید.
🔹 نتیجه: بدافزار نمیتواند تشخیص دهد که در VM اجرا شده است!
۳. انجام Hook کردن API با DLL Injection یا Inline Hooking
در این روش، یک DLL جدید مینویسیم و آن را به برنامه تزریق میکنیم تا رفتار یک API را تغییر دهد.
مثال: Hook کردن NtQuerySystemInformation با DLL Injection
کد زیر باعث میشود که مقدار برگشتی NtQuerySystemInformation همیشه مقدار جعلی (مثلاً ۰) باشد، بنابراین بدافزار فکر میکند در یک سیستم واقعی اجرا شده است.
#include <windows.h>
#include <detours.h>
#include <winternl.h>
typedef NTSTATUS (WINAPI* NtQuerySystemInformation_t)(SYSTEM_INFORMATION_CLASS, PVOID, ULONG, PULONG);
NtQuerySystemInformation_t OriginalNtQuerySystemInformation;
NTSTATUS WINAPI HookedNtQuerySystemInformation(SYSTEM_INFORMATION_CLASS SystemInformationClass, PVOID SystemInformation, ULONG SystemInformationLength, PULONG ReturnLength) {
if (SystemInformationClass == SystemManufacturer) {
strcpy((char*)SystemInformation, "DELL");
مقدار جعلی برای سیستم فیزیکی
return 0;
}
return OriginalNtQuerySystemInformation(SystemInformationClass, SystemInformation, SystemInformationLength, ReturnLength);
}
void HookAPI() {
OriginalNtQuerySystemInformation = (NtQuerySystemInformation_t)GetProcAddress(GetModuleHandle("ntdll.dll"), "NtQuerySystemInformation");
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)OriginalNtQuerySystemInformation, HookedNtQuerySystemInformation);
DetourTransactionCommit();
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
HookAPI();
}
return TRUE;
}
مراحل اجرای Hook
این کد را کامپایل کنید و یک DLL بسازید.
این DLL را به بدافزار Inject کنید (مثلاً با Process Hacker یا DLL Injector).
حالا API NtQuerySystemInformation مقدار دلخواه شما را برمیگرداند.
Please open Telegram to view this post
VIEW IN TELEGRAM
دستگرمی با یادگیری ماشینی
و اسپلانک Machine Learning and splunk
☘️تشخیص حمله با Splunk MLTK
یک بانک متوجه شده است که برخی از سیستمهای داخلی در حال برقراری ارتباط با یک سرور خارجی مشکوک هستند. رفتار غیرعادی این سیستمها نشاندهندهی یک حمله است. تیم امنیتی قصد دارد با استفاده از Splunk Machine Learning Toolkit (MLTK) و SOAR، این نوع حملات را بهتر شناسایی و کنترل کند.
از مدل PCA (Principal Component Analysis) برای تحلیل رفتار نرمال و تشخیص انحرافات استفاده میکنیم:
اول
index=network_traffic sourcetype=firewall_logs
| stats count dc(dest_ip) as unique_destinations by src_ip
| where unique_destinations > 50
سیستمهایی که با بیش از ۵۰ دامنهی مختلف در مدت کوتاه ارتباط دارند، ممکن است به سرورهای C2 متصل باشند.
این دادهها برای یادگیری ماشین آماده میشوند.
دوم
| fit PCA unique_destinations into anomaly_model
| where anomaly_model_score > 2.5
مدل PCA دادههای پرت (Outliers) را که از الگوی عادی انحراف دارند، شناسایی میکند.
سیستمهایی که امتیاز anomaly_model_score > 2.5 دارند، بهعنوان ارتباطات مشکوک شناخته میشوند.
☘️تطبیق با IOCها و ایجاد هشدار امنیتی
اگر IP مقصد در Indicator of Compromise (IOC) ها موجود باشد، باید به آن وزن بیشتری داده شود:
| lookup ioc_list.csv dest_ip AS suspicious_ip
| eval risk_score = case(anomaly_model_score > 2.5 AND isnotnull(suspicious_ip), 100, anomaly_model_score > 2.5, 80)
| table src_ip, dest_ip, risk_score
| sendalert "notable"
اگر IP مقصد در IOC لیست سیاه باشد، امتیاز ریسک به ۱۰۰ افزایش پیدا میکند.
اگر ارتباط فقط از مدل یادگیری ماشین مشکوک باشد، امتیاز ۸۰ دریافت میکند.
☘️پاسخ خودکار با Splunk SOAR (Phantom)
با استفاده از Splunk SOAR، اقداماتی خودکار اجرا میشود:
مسدود کردن IP مشکوک در فایروال:
phantom.act("block ip", parameters={"ip": suspicious_ip, "device": "firewall"})
🌷نقش یادگیری ماشین در این سناریو و چرایی استفاده از آن
در این سناریو، هدف ما شناسایی ارتباطات مشکوک بین سیستمهای داخلی بانک و سرورهای خارجی (که احتمالاً سرورهای C2 هستند) است. اما چرا از یادگیری ماشین استفاده کردیم؟
۱. مشکل اصلی: تشخیص ارتباطات غیرعادی در میان حجم بالای ترافیک
در یک سازمان بزرگ، روزانه میلیونها ارتباط شبکهای ثبت میشود. تشخیص حملات APT از طریق روشهای سنتی مانند Signature-based Detection (مبتنی بر قوانین و فیلترها) دشوار است، زیرا:
مهاجمان از IPهای جدید و ناشناخته استفاده میکنند که در لیستهای IOC نیستند.
رفتار C2 ممکن است آهسته و پنهانی باشد (ارتباطات مداوم اما کمحجم).
قوانین ثابت (مثل "اگر بیش از ۵۰ ارتباط داشت، هشدار بده") ممکن است False Positive زیادی تولید کند.
یادگیری ماشین کمک میکند که رفتار عادی کاربران و سرورها را یاد بگیرد و فقط موارد غیرعادی را علامتگذاری کند.
۲. نقش PCA (Principal Component Analysis) در تشخیص ناهنجاریها
ما از PCA (تحلیل مؤلفههای اصلی) استفاده کردیم که یک روش یادگیری ماشین برای کاهش ابعاد دادهها و کشف نقاط پرت است.
چطور کار میکند؟
مدل PCA الگوهای عادی را در ارتباطات کاربران یاد میگیرد (مثلاً کاربران معمولاً با چند سرور مشخص کار میکنند).
وقتی سیستمی رفتار جدید و غیرعادی از خود نشان دهد (مثلاً تعداد زیادی ارتباط به دامنههای ناشناخته)، امتیاز ناهنجاری بالایی میگیرد.
سیستمهایی که امتیازشان از یک حد خاص عبور کند (anomaly_model_score > 2.5)، به عنوان مشکوک علامتگذاری میشوند.
🔆 یادگیری ماشین به ما کمک کرد که فقط روی سیستمهایی تمرکز کنیم که رفتارشان واقعاً متفاوت از رفتار نرمال است، بدون اینکه هزاران هشدار غلط تولید شود.
۳. ترکیب یادگیری ماشین با IOCها برای دقت بالاتر
برخی ارتباطات ناهنجار ممکن است بیخطر باشند (مثلاً یک مهندس شبکه که به سرورهای زیادی متصل میشود).
اما اگر یک سیستم هم رفتار غیرعادی داشته باشد و هم به یک IP مشکوک متصل شود، احتمال حمله بسیار زیاد است.
ترکیب این دو (امتیاز PCA + تطبیق با IOCها) باعث شد که فقط موارد مهم با امتیاز ریسک بالا (مثلاً 100) به تیم امنیتی گزارش شود.
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
و اسپلانک Machine Learning and splunk
☘️تشخیص حمله با Splunk MLTK
یک بانک متوجه شده است که برخی از سیستمهای داخلی در حال برقراری ارتباط با یک سرور خارجی مشکوک هستند. رفتار غیرعادی این سیستمها نشاندهندهی یک حمله است. تیم امنیتی قصد دارد با استفاده از Splunk Machine Learning Toolkit (MLTK) و SOAR، این نوع حملات را بهتر شناسایی و کنترل کند.
از مدل PCA (Principal Component Analysis) برای تحلیل رفتار نرمال و تشخیص انحرافات استفاده میکنیم:
اول
index=network_traffic sourcetype=firewall_logs
| stats count dc(dest_ip) as unique_destinations by src_ip
| where unique_destinations > 50
سیستمهایی که با بیش از ۵۰ دامنهی مختلف در مدت کوتاه ارتباط دارند، ممکن است به سرورهای C2 متصل باشند.
این دادهها برای یادگیری ماشین آماده میشوند.
دوم
| fit PCA unique_destinations into anomaly_model
| where anomaly_model_score > 2.5
مدل PCA دادههای پرت (Outliers) را که از الگوی عادی انحراف دارند، شناسایی میکند.
سیستمهایی که امتیاز anomaly_model_score > 2.5 دارند، بهعنوان ارتباطات مشکوک شناخته میشوند.
☘️تطبیق با IOCها و ایجاد هشدار امنیتی
اگر IP مقصد در Indicator of Compromise (IOC) ها موجود باشد، باید به آن وزن بیشتری داده شود:
| lookup ioc_list.csv dest_ip AS suspicious_ip
| eval risk_score = case(anomaly_model_score > 2.5 AND isnotnull(suspicious_ip), 100, anomaly_model_score > 2.5, 80)
| table src_ip, dest_ip, risk_score
| sendalert "notable"
اگر IP مقصد در IOC لیست سیاه باشد، امتیاز ریسک به ۱۰۰ افزایش پیدا میکند.
اگر ارتباط فقط از مدل یادگیری ماشین مشکوک باشد، امتیاز ۸۰ دریافت میکند.
☘️پاسخ خودکار با Splunk SOAR (Phantom)
با استفاده از Splunk SOAR، اقداماتی خودکار اجرا میشود:
مسدود کردن IP مشکوک در فایروال:
phantom.act("block ip", parameters={"ip": suspicious_ip, "device": "firewall"})
🌷نقش یادگیری ماشین در این سناریو و چرایی استفاده از آن
در این سناریو، هدف ما شناسایی ارتباطات مشکوک بین سیستمهای داخلی بانک و سرورهای خارجی (که احتمالاً سرورهای C2 هستند) است. اما چرا از یادگیری ماشین استفاده کردیم؟
۱. مشکل اصلی: تشخیص ارتباطات غیرعادی در میان حجم بالای ترافیک
در یک سازمان بزرگ، روزانه میلیونها ارتباط شبکهای ثبت میشود. تشخیص حملات APT از طریق روشهای سنتی مانند Signature-based Detection (مبتنی بر قوانین و فیلترها) دشوار است، زیرا:
مهاجمان از IPهای جدید و ناشناخته استفاده میکنند که در لیستهای IOC نیستند.
رفتار C2 ممکن است آهسته و پنهانی باشد (ارتباطات مداوم اما کمحجم).
قوانین ثابت (مثل "اگر بیش از ۵۰ ارتباط داشت، هشدار بده") ممکن است False Positive زیادی تولید کند.
یادگیری ماشین کمک میکند که رفتار عادی کاربران و سرورها را یاد بگیرد و فقط موارد غیرعادی را علامتگذاری کند.
۲. نقش PCA (Principal Component Analysis) در تشخیص ناهنجاریها
ما از PCA (تحلیل مؤلفههای اصلی) استفاده کردیم که یک روش یادگیری ماشین برای کاهش ابعاد دادهها و کشف نقاط پرت است.
چطور کار میکند؟
مدل PCA الگوهای عادی را در ارتباطات کاربران یاد میگیرد (مثلاً کاربران معمولاً با چند سرور مشخص کار میکنند).
وقتی سیستمی رفتار جدید و غیرعادی از خود نشان دهد (مثلاً تعداد زیادی ارتباط به دامنههای ناشناخته)، امتیاز ناهنجاری بالایی میگیرد.
سیستمهایی که امتیازشان از یک حد خاص عبور کند (anomaly_model_score > 2.5)، به عنوان مشکوک علامتگذاری میشوند.
🔆 یادگیری ماشین به ما کمک کرد که فقط روی سیستمهایی تمرکز کنیم که رفتارشان واقعاً متفاوت از رفتار نرمال است، بدون اینکه هزاران هشدار غلط تولید شود.
۳. ترکیب یادگیری ماشین با IOCها برای دقت بالاتر
برخی ارتباطات ناهنجار ممکن است بیخطر باشند (مثلاً یک مهندس شبکه که به سرورهای زیادی متصل میشود).
اما اگر یک سیستم هم رفتار غیرعادی داشته باشد و هم به یک IP مشکوک متصل شود، احتمال حمله بسیار زیاد است.
ترکیب این دو (امتیاز PCA + تطبیق با IOCها) باعث شد که فقط موارد مهم با امتیاز ریسک بالا (مثلاً 100) به تیم امنیتی گزارش شود.
Please open Telegram to view this post
VIEW IN TELEGRAM
✅با توجه به پست قبل که در لینکدین منتشر شد دانشجویان از من درمورد مدلهای یادگیری ماشین در اسپلانک سوال داشتند
۱. مدلهای تشخیص ناهنجاری (Anomaly Detection)
🔹 Density Function
از توزیع دادهها برای شناسایی نقاط پرت (Outliers) استفاده میکند.
کاربرد: تشخیص رفتار غیرعادی در ورود کاربران، تشخیص حجم غیرعادی ترافیک شبکه.
مثال: تشخیص افزایش ناگهانی ورود ناموفق به سیستم (Brute Force).
دستور:
| fit DensityFunction count into anomaly_model
🔹 Local Outlier Factor (LOF)
ارتباط هر نقطه داده را با همسایگانش مقایسه میکند.
کاربرد: تشخیص حملات سایبری با الگوهای جدید، مثل APT.
دستور:
| fit LOF network_activity into lof_model
🔹 Isolation Forest
دادههای پرت را با ساخت درختهای تصادفی شناسایی میکند.
کاربرد: تشخیص بدافزارهای ناشناخته در ترافیک شبکه.
دستور:
| fit IsolationForest dest_ip into if_model
۲. مدلهای پیشبینی (Prediction Models)
🔹 Linear Regression
برای پیشبینی مقدار عددی استفاده میشود.
کاربرد: پیشبینی حجم ترافیک آینده یا رشد لاگهای ناموفق ورود.
دستور:
| fit LinearRegression count from time into prediction_model
🔹 Random Forest Regressor
از چندین درخت تصمیم (Decision Trees) برای پیشبینی استفاده میکند.
کاربرد: پیشبینی تعداد حملات DDoS در روزهای آینده.
دستور:
| fit RandomForestRegressor error_rate from time into rf_model
۳. مدلهای دستهبندی (Classification Models)
🔹 Decision Tree Classifier
دادهها را به گروههای مختلف طبقهبندی میکند.
کاربرد: شناسایی حملات بر اساس نوع (مثلاً Phishing، DDoS، Malware).
دستور:
| fit DecisionTreeClassifier attack_type from features into dt_model
🔹 Support Vector Machine (SVM)
دادهها را با استفاده از مرزهای مشخص شده طبقهبندی میکند.
کاربرد: شناسایی ایمیلهای فیشینگ بر اساس محتوا و فرستنده.
دستور:
| fit SVM email_content into svm_model
🔹 Naïve Bayes Classifier
از احتمالات برای دستهبندی دادهها استفاده میکند.
کاربرد: طبقهبندی رویدادهای امنیتی (مثلاً تمایز بین خطای کاربری و حمله).
دستور:
| fit NaiveBayes attack_type from event_logs into nb_model
۴. مدلهای خوشهبندی (Clustering Models)
🔹 K-Means Clustering
دادهها را به چند گروه مشابه تقسیم میکند.
کاربرد: تشخیص رفتار مشابه بین کاربران مشکوک.
دستور:
| fit KMeans number_of_logins into cluster_model k=3
🔹 DBSCAN (Density-Based Clustering)
خوشههای پرتراکم را پیدا کرده و نقاط پرت را جدا میکند.
کاربرد: تشخیص دستگاههایی که رفتار مشکوک مشابه دارند.
دستور:
| fit DBSCAN network_activity into dbscan_model
۵. مدلهای کاهش ابعاد (Dimensionality Reduction)
🔹 PCA (Principal Component Analysis)
تعداد ویژگیهای داده را کاهش میدهد و به تشخیص ناهنجاریها کمک میکند.
کاربرد: تحلیل دادههای بزرگ برای کشف الگوهای پنهان در حملات APT.
دستور:
| fit PCA network_features into pca_model
جمعبندی
✅ اگر دنبال تشخیص ناهنجاری هستیم: Density Function، Isolation Forest، LOF
✅ اگر نیاز به پیشبینی روند داریم: Linear Regression، Random Forest
✅ اگر باید دادهها را دستهبندی کنیم: Decision Tree، SVM، Naïve Bayes
✅ اگر میخواهیم خوشههای مشکوک را پیدا کنیم: K-Means، DBSCAN
پی نوشت : این مدلها از حوزه یادگیری ماشین زیر مجموعه هوش مصنوعی هستند
درصورت علاقه به یادگیری خود مدل ؛ باید به کتابهای هوش مصنوعی مراجعه کرد
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
۱. مدلهای تشخیص ناهنجاری (Anomaly Detection)
🔹 Density Function
از توزیع دادهها برای شناسایی نقاط پرت (Outliers) استفاده میکند.
کاربرد: تشخیص رفتار غیرعادی در ورود کاربران، تشخیص حجم غیرعادی ترافیک شبکه.
مثال: تشخیص افزایش ناگهانی ورود ناموفق به سیستم (Brute Force).
دستور:
| fit DensityFunction count into anomaly_model
🔹 Local Outlier Factor (LOF)
ارتباط هر نقطه داده را با همسایگانش مقایسه میکند.
کاربرد: تشخیص حملات سایبری با الگوهای جدید، مثل APT.
دستور:
| fit LOF network_activity into lof_model
🔹 Isolation Forest
دادههای پرت را با ساخت درختهای تصادفی شناسایی میکند.
کاربرد: تشخیص بدافزارهای ناشناخته در ترافیک شبکه.
دستور:
| fit IsolationForest dest_ip into if_model
۲. مدلهای پیشبینی (Prediction Models)
🔹 Linear Regression
برای پیشبینی مقدار عددی استفاده میشود.
کاربرد: پیشبینی حجم ترافیک آینده یا رشد لاگهای ناموفق ورود.
دستور:
| fit LinearRegression count from time into prediction_model
🔹 Random Forest Regressor
از چندین درخت تصمیم (Decision Trees) برای پیشبینی استفاده میکند.
کاربرد: پیشبینی تعداد حملات DDoS در روزهای آینده.
دستور:
| fit RandomForestRegressor error_rate from time into rf_model
۳. مدلهای دستهبندی (Classification Models)
🔹 Decision Tree Classifier
دادهها را به گروههای مختلف طبقهبندی میکند.
کاربرد: شناسایی حملات بر اساس نوع (مثلاً Phishing، DDoS، Malware).
دستور:
| fit DecisionTreeClassifier attack_type from features into dt_model
🔹 Support Vector Machine (SVM)
دادهها را با استفاده از مرزهای مشخص شده طبقهبندی میکند.
کاربرد: شناسایی ایمیلهای فیشینگ بر اساس محتوا و فرستنده.
دستور:
| fit SVM email_content into svm_model
🔹 Naïve Bayes Classifier
از احتمالات برای دستهبندی دادهها استفاده میکند.
کاربرد: طبقهبندی رویدادهای امنیتی (مثلاً تمایز بین خطای کاربری و حمله).
دستور:
| fit NaiveBayes attack_type from event_logs into nb_model
۴. مدلهای خوشهبندی (Clustering Models)
🔹 K-Means Clustering
دادهها را به چند گروه مشابه تقسیم میکند.
کاربرد: تشخیص رفتار مشابه بین کاربران مشکوک.
دستور:
| fit KMeans number_of_logins into cluster_model k=3
🔹 DBSCAN (Density-Based Clustering)
خوشههای پرتراکم را پیدا کرده و نقاط پرت را جدا میکند.
کاربرد: تشخیص دستگاههایی که رفتار مشکوک مشابه دارند.
دستور:
| fit DBSCAN network_activity into dbscan_model
۵. مدلهای کاهش ابعاد (Dimensionality Reduction)
🔹 PCA (Principal Component Analysis)
تعداد ویژگیهای داده را کاهش میدهد و به تشخیص ناهنجاریها کمک میکند.
کاربرد: تحلیل دادههای بزرگ برای کشف الگوهای پنهان در حملات APT.
دستور:
| fit PCA network_features into pca_model
جمعبندی
✅ اگر دنبال تشخیص ناهنجاری هستیم: Density Function، Isolation Forest، LOF
✅ اگر نیاز به پیشبینی روند داریم: Linear Regression، Random Forest
✅ اگر باید دادهها را دستهبندی کنیم: Decision Tree، SVM، Naïve Bayes
✅ اگر میخواهیم خوشههای مشکوک را پیدا کنیم: K-Means، DBSCAN
پی نوشت : این مدلها از حوزه یادگیری ماشین زیر مجموعه هوش مصنوعی هستند
درصورت علاقه به یادگیری خود مدل ؛ باید به کتابهای هوش مصنوعی مراجعه کرد
Please open Telegram to view this post
VIEW IN TELEGRAM
شناسایی حمله باجافزاری (Ransomware) با Splunk و یادگیری ماشین (AI)
حمله باجافزاری معمولاً در چند مرحله اجرا میشود و یادگیری ماشین و هوش مصنوعی میتواند در شناسایی آن از طریق تحلیل رفتار فایلها، پردازشها و ارتباطات شبکهای کمک کند.
در اینجا یک سناریو از کشف باجافزار با استفاده از Splunk Machine Learning Toolkit (MLTK) ارائه شده است.
🔹 مراحل اجرای یک حمله باجافزاری
۱. دسترسی اولیه (Initial Access)
مهاجم از یکی از روشهای زیر استفاده میکند:
فیشینگ (Phishing)
اکسپلویت آسیبپذیریها (مثلاً RDP یا SMB باز)
حمله بروت فورس برای ورود به سیستم
✅ منبع دادهای: SIEM Logs، Email Logs، Authentication Logs
✅ مدل تشخیصی: Naïve Bayes (برای شناسایی ایمیل فیشینگ)
۲. اجرای بدافزار (Execution)
باجافزار معمولاً یک پردازش جدید و غیرمعمول روی سیستم اجرا میکند. این پردازش ممکن است دارای مشخصات زیر باشد:
اجرای پردازش جدید از پوشه Temp یا AppData
اجرای اسکریپتهای PowerShell مشکوک
ایجاد پردازشهای فرزند (مثلاً parent process = powershell.exe)
✅ منبع دادهای: Sysmon Logs، EDR Logs
✅ مدل تشخیصی: Decision Tree (برای شناسایی فرآیندهای مشکوک)
🔹 جستجوی پیشنهادی در Splunk برای پردازشهای مشکوک:
index=endpoint_logs sourcetype=sysmon
| stats count by process_name, parent_process
| where parent_process="powershell.exe" AND count > 3
| fit DecisionTreeClassifier malware_flag from process_name into ransomware_exec_model
۳. رمزگذاری فایلها (Encryption Phase)
هنگامی که باجافزار اجرا شد، شروع به رمزگذاری فایلها میکند:
افزایش ناگهانی تغییرات در فایلها
تغییر پسوند فایلها به مقدار غیرعادی (مثلاً .lock، .encrypted)
حذف فایلهای بکاپ (Volume Shadow Copies)
✅ منبع دادهای: File System Logs (Windows Security Logs, Sysmon Event ID 4663)
✅ مدل تشخیصی: Density Function (برای تشخیص رفتار غیرعادی فایلها)
🔹 جستجوی پیشنهادی در Splunk برای شناسایی تغییرات غیرعادی فایلها:
index=file_logs sourcetype=sysmon event_id=4663
| stats count by file_path, action
| where action="write" AND count > 100
| fit DensityFunction count into ransomware_file_model
۴. برقراری ارتباط با سرور فرماندهی و کنترل (C2 Communication)
در این مرحله، باجافزار به سرورهای خارجی متصل میشود تا کلید رمزگذاری یا دستورات جدید دریافت کند:
ارتباط با دامنههای تازه ثبتشده (Newly Registered Domains)
استفاده از پروتکلهای غیرمعمول (مثلاً DNS tunneling)
ارتباط با IPهای شناختهشده در تهدیدات سایبری
✅ منبع دادهای: Firewall Logs، DNS Logs، Threat Intelligence Feeds
✅ مدل تشخیصی: Isolation Forest (برای تشخیص ارتباطات غیرعادی)
🔹 جستجوی پیشنهادی در Splunk برای شناسایی ارتباط با C2:
index=network_traffic sourcetype=firewall_logs
| stats count by dest_ip, protocol
| where protocol IN ("dns", "http", "https")
| fit IsolationForest count into ransomware_c2_model
| where ransomware_c2_model_score > 2.5
۵. درخواست باج (Ransom Demand)
ایجاد یک فایل متنی روی دسکتاپ کاربر (README.txt)
نمایش یک پیام در صفحه (Popup یا Wallpaper تغییر یافته)
✅ منبع دادهای: Endpoint Logs، Windows Event Logs
✅ مدل تشخیصی: K-Means Clustering (برای تحلیل الگوهای مشترک باجافزارها)
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
حمله باجافزاری معمولاً در چند مرحله اجرا میشود و یادگیری ماشین و هوش مصنوعی میتواند در شناسایی آن از طریق تحلیل رفتار فایلها، پردازشها و ارتباطات شبکهای کمک کند.
در اینجا یک سناریو از کشف باجافزار با استفاده از Splunk Machine Learning Toolkit (MLTK) ارائه شده است.
🔹 مراحل اجرای یک حمله باجافزاری
۱. دسترسی اولیه (Initial Access)
مهاجم از یکی از روشهای زیر استفاده میکند:
فیشینگ (Phishing)
اکسپلویت آسیبپذیریها (مثلاً RDP یا SMB باز)
حمله بروت فورس برای ورود به سیستم
✅ منبع دادهای: SIEM Logs، Email Logs، Authentication Logs
✅ مدل تشخیصی: Naïve Bayes (برای شناسایی ایمیل فیشینگ)
۲. اجرای بدافزار (Execution)
باجافزار معمولاً یک پردازش جدید و غیرمعمول روی سیستم اجرا میکند. این پردازش ممکن است دارای مشخصات زیر باشد:
اجرای پردازش جدید از پوشه Temp یا AppData
اجرای اسکریپتهای PowerShell مشکوک
ایجاد پردازشهای فرزند (مثلاً parent process = powershell.exe)
✅ منبع دادهای: Sysmon Logs، EDR Logs
✅ مدل تشخیصی: Decision Tree (برای شناسایی فرآیندهای مشکوک)
🔹 جستجوی پیشنهادی در Splunk برای پردازشهای مشکوک:
index=endpoint_logs sourcetype=sysmon
| stats count by process_name, parent_process
| where parent_process="powershell.exe" AND count > 3
| fit DecisionTreeClassifier malware_flag from process_name into ransomware_exec_model
۳. رمزگذاری فایلها (Encryption Phase)
هنگامی که باجافزار اجرا شد، شروع به رمزگذاری فایلها میکند:
افزایش ناگهانی تغییرات در فایلها
تغییر پسوند فایلها به مقدار غیرعادی (مثلاً .lock، .encrypted)
حذف فایلهای بکاپ (Volume Shadow Copies)
✅ منبع دادهای: File System Logs (Windows Security Logs, Sysmon Event ID 4663)
✅ مدل تشخیصی: Density Function (برای تشخیص رفتار غیرعادی فایلها)
🔹 جستجوی پیشنهادی در Splunk برای شناسایی تغییرات غیرعادی فایلها:
index=file_logs sourcetype=sysmon event_id=4663
| stats count by file_path, action
| where action="write" AND count > 100
| fit DensityFunction count into ransomware_file_model
۴. برقراری ارتباط با سرور فرماندهی و کنترل (C2 Communication)
در این مرحله، باجافزار به سرورهای خارجی متصل میشود تا کلید رمزگذاری یا دستورات جدید دریافت کند:
ارتباط با دامنههای تازه ثبتشده (Newly Registered Domains)
استفاده از پروتکلهای غیرمعمول (مثلاً DNS tunneling)
ارتباط با IPهای شناختهشده در تهدیدات سایبری
✅ منبع دادهای: Firewall Logs، DNS Logs، Threat Intelligence Feeds
✅ مدل تشخیصی: Isolation Forest (برای تشخیص ارتباطات غیرعادی)
🔹 جستجوی پیشنهادی در Splunk برای شناسایی ارتباط با C2:
index=network_traffic sourcetype=firewall_logs
| stats count by dest_ip, protocol
| where protocol IN ("dns", "http", "https")
| fit IsolationForest count into ransomware_c2_model
| where ransomware_c2_model_score > 2.5
۵. درخواست باج (Ransom Demand)
ایجاد یک فایل متنی روی دسکتاپ کاربر (README.txt)
نمایش یک پیام در صفحه (Popup یا Wallpaper تغییر یافته)
✅ منبع دادهای: Endpoint Logs، Windows Event Logs
✅ مدل تشخیصی: K-Means Clustering (برای تحلیل الگوهای مشترک باجافزارها)
Please open Telegram to view this post
VIEW IN TELEGRAM
🥇سناریوی امشب : کشف نفوذ آرام با ماندگاری طولانی
✅یک سناریوی پیچیده و جذاب برای کشف نفوذ با کمک از Splunk براتون آماده کردم که ترکیبی از تکنیکهای فرار از شناسایی (Evasion)، حرکت جانبی (Lateral Movement) و دسترسی مداوم (Persistence) است.
🟧یک مهاجم موفق شده است از طریق یک حمله فیشینگ هوشمند و اجرای ماکرو مخرب در Excel، کنترل اولیه را روی یک سیستم کاربر در شبکه به دست بگیرد. سپس با استفاده از Cobalt Strike و تکنیکهای Living off the Land (LOLBins)، در شبکه حرکت جانبی انجام داده و یک حساب کاربری جعلی در اکتیو دایرکتوری ایجاد میکند تا دسترسی دائمی داشته باشد.
🔰جزئیات حمله:
✔️ دریافت شل اولیه:
حمله فیشینگ با ارسال یک فایل Excel حاوی ماکروی مخرب به کاربر.
اجرای ماکرو باعث دانلود و اجرای یک PowerShell reverse shell میشود که به یک C2 Server متصل است.
ارتباط بهصورت Encoded PowerShell ارسال میشود تا از SIEM و آنتیویروس فرار کند.
✔️ حرکت جانبی و افزایش دسترسی:
مهاجم از Mimikatz برای استخراج کردنشیالهای ذخیرهشده استفاده میکند.
از طریق Pass-the-Hash (PtH) به یک سرور داخلی متصل میشود.
با استفاده از PsExec یا WMI روی یک سیستم دیگر کد اجرا میکند.
استفاده از ابزارهای ذاتی ویندوز (LOLBins) برای فرار از شناسایی:
اجرای کدهای مخرب با MSBuild.exe و CertUtil.exe برای دور زدن ابزارهای امنیتی.
استفاده از Rundll32.exe برای اجرای فایل DLL مخرب بدون ایجاد پروسس جدید مشکوک.
✔️ ماندگاری و دسترسی مداوم:
ایجاد یک حساب جعلی در Active Directory با نامی شبیه به ادمینهای واقعی.
تنظیم یک Scheduled Task که در هر ریبوت، یک ریکانکت به C2 برقرار میکند.
ذخیره Web Shell در IIS روی یک سرور حساس برای دسترسی آینده.
🔮 بررسی کامل و انجام تحلیل در Splunk:
بحث کامل تحلیل و حل مساله را در پست های آینده بخوانید
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
✅یک سناریوی پیچیده و جذاب برای کشف نفوذ با کمک از Splunk براتون آماده کردم که ترکیبی از تکنیکهای فرار از شناسایی (Evasion)، حرکت جانبی (Lateral Movement) و دسترسی مداوم (Persistence) است.
🟧یک مهاجم موفق شده است از طریق یک حمله فیشینگ هوشمند و اجرای ماکرو مخرب در Excel، کنترل اولیه را روی یک سیستم کاربر در شبکه به دست بگیرد. سپس با استفاده از Cobalt Strike و تکنیکهای Living off the Land (LOLBins)، در شبکه حرکت جانبی انجام داده و یک حساب کاربری جعلی در اکتیو دایرکتوری ایجاد میکند تا دسترسی دائمی داشته باشد.
🔰جزئیات حمله:
✔️ دریافت شل اولیه:
حمله فیشینگ با ارسال یک فایل Excel حاوی ماکروی مخرب به کاربر.
اجرای ماکرو باعث دانلود و اجرای یک PowerShell reverse shell میشود که به یک C2 Server متصل است.
ارتباط بهصورت Encoded PowerShell ارسال میشود تا از SIEM و آنتیویروس فرار کند.
✔️ حرکت جانبی و افزایش دسترسی:
مهاجم از Mimikatz برای استخراج کردنشیالهای ذخیرهشده استفاده میکند.
از طریق Pass-the-Hash (PtH) به یک سرور داخلی متصل میشود.
با استفاده از PsExec یا WMI روی یک سیستم دیگر کد اجرا میکند.
استفاده از ابزارهای ذاتی ویندوز (LOLBins) برای فرار از شناسایی:
اجرای کدهای مخرب با MSBuild.exe و CertUtil.exe برای دور زدن ابزارهای امنیتی.
استفاده از Rundll32.exe برای اجرای فایل DLL مخرب بدون ایجاد پروسس جدید مشکوک.
✔️ ماندگاری و دسترسی مداوم:
ایجاد یک حساب جعلی در Active Directory با نامی شبیه به ادمینهای واقعی.
تنظیم یک Scheduled Task که در هر ریبوت، یک ریکانکت به C2 برقرار میکند.
ذخیره Web Shell در IIS روی یک سرور حساس برای دسترسی آینده.
🔮 بررسی کامل و انجام تحلیل در Splunk:
بحث کامل تحلیل و حل مساله را در پست های آینده بخوانید
Please open Telegram to view this post
VIEW IN TELEGRAM
Linux Persistence - systemd.pdf
682 KB
مکانیسم های حضور دائمی هکر در لینوکس
فارسی از جناب ملکی
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
فارسی از جناب ملکی
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Network Security Channel
🥇سناریوی امشب : کشف نفوذ آرام با ماندگاری طولانی ✅یک سناریوی پیچیده و جذاب برای کشف نفوذ با کمک از Splunk براتون آماده کردم که ترکیبی از تکنیکهای فرار از شناسایی (Evasion)، حرکت جانبی (Lateral Movement) و دسترسی مداوم (Persistence) است. 🟧یک مهاجم موفق…
تحلیل سناریوی فوق در Splunk:
۱. کشف ارتباط اولیه (PowerShell Reverse Shell)
جستجوی دستورات مشکوک در لاگهای PowerShell که ممکن است ارتباط C2 برقرار کند:
index=windows EventCode=4104 ScriptBlockText="*IEX*(New-Object Net.WebClient).DownloadString*"
یا استفاده از Base64 encoded PowerShell:
index=windows EventCode=4104 ScriptBlockText="*FromBase64String*"
۲. کشف حرکت جانبی (Mimikatz و Pass-the-Hash)
index=windows EventCode=4624 LogonType=9 OR LogonType=3 Account_Name!=”Administrator” Account_Name!=”Service”
Logon Type 9: نشاندهنده استفاده از مکانیزمهای احراز هویت غیرمعمول است.
Logon Type 3: اتصال از راه دور، اما بدون نام کاربری ادمین، که مشکوک است.
۳. کشف اجرای ابزارهای LOLBins (مانند MSBuild و CertUtil)
index=windows EventCode=4688 New_Process_Name="*MSBuild.exe" OR New_Process_Name="*CertUtil.exe"
این پردازشها معمولاً در شبکه سازمانی استفاده نمیشوند، مگر در شرایط خاص.
۴. کشف ماندگاری (Scheduled Task و Web Shell در IIS)
index=windows EventCode=4698 OR EventCode=4700 Task_Name="*Update*"
بسیاری از مهاجمان برای فرار از شناسایی، نامهای مشابه آپدیتهای ویندوز برای Scheduled Task میگذارند.
و برای کشف Web Shell در IIS:
index=webserver sourcetype="iis" cs_uri_stem="*.asp" OR cs_uri_stem="*.aspx" cs_method="POST"
درخواستهای POST غیرعادی به صفحات ASPX ممکن است نشاندهنده یک Web Shell باشد.
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
۱. کشف ارتباط اولیه (PowerShell Reverse Shell)
جستجوی دستورات مشکوک در لاگهای PowerShell که ممکن است ارتباط C2 برقرار کند:
index=windows EventCode=4104 ScriptBlockText="*IEX*(New-Object Net.WebClient).DownloadString*"
یا استفاده از Base64 encoded PowerShell:
index=windows EventCode=4104 ScriptBlockText="*FromBase64String*"
۲. کشف حرکت جانبی (Mimikatz و Pass-the-Hash)
index=windows EventCode=4624 LogonType=9 OR LogonType=3 Account_Name!=”Administrator” Account_Name!=”Service”
Logon Type 9: نشاندهنده استفاده از مکانیزمهای احراز هویت غیرمعمول است.
Logon Type 3: اتصال از راه دور، اما بدون نام کاربری ادمین، که مشکوک است.
۳. کشف اجرای ابزارهای LOLBins (مانند MSBuild و CertUtil)
index=windows EventCode=4688 New_Process_Name="*MSBuild.exe" OR New_Process_Name="*CertUtil.exe"
این پردازشها معمولاً در شبکه سازمانی استفاده نمیشوند، مگر در شرایط خاص.
۴. کشف ماندگاری (Scheduled Task و Web Shell در IIS)
index=windows EventCode=4698 OR EventCode=4700 Task_Name="*Update*"
بسیاری از مهاجمان برای فرار از شناسایی، نامهای مشابه آپدیتهای ویندوز برای Scheduled Task میگذارند.
و برای کشف Web Shell در IIS:
index=webserver sourcetype="iis" cs_uri_stem="*.asp" OR cs_uri_stem="*.aspx" cs_method="POST"
درخواستهای POST غیرعادی به صفحات ASPX ممکن است نشاندهنده یک Web Shell باشد.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
تکنیک های بدافزارها علیه کشف
👿ضد مهندسی معکوس
در دنیای امنیت سایبری و تحلیل بدافزار، یکی از مهمترین چالشها برای هکر شناسایی و مقابله با تکنیکهای دیباگینگ و نقاط توقف (breakpoints) است که برای بررسی و تجزیه و تحلیل برنامههای آلوده به کار میروند. یکی از تکنیکهای رایج برای ایجاد نقاط توقف در فرآیند دیباگینگ، استفاده از پرچم ترپ (Trap Flag) در رجیستر EFLAGS است. این پرچم به دیباگرها این امکان را میدهد که بهصورت گامبهگام دستورات برنامه را اجرا کنند و تغییرات حافظه و رجیسترها را بررسی نمایند. با این حال، شناسایی استفاده از پرچم ترپ برای نقاط توقف میتواند چالشبرانگیز باشد، زیرا بهراحتی نمیتوان این پرچم را خواند و بررسی کرد.
🤡پرچم ترپ (Trap Flag) چیست؟
این Trap Flag (TF) یک پرچم خاص در رجیستر EFLAGS در معماری پردازندههای x86 است که برای فعال کردن Single-Stepping یا گامبهگام اجرا کردن دستورات برنامه به کار میرود. هنگامی که دیباگر بهطور گام به گام یک برنامه را تحلیل میکند، این پرچم در رجیستر EFLAGS تنظیم میشود تا پس از اجرای هر دستور، پردازنده یک Interrupt 1 (خطای دیباگ) ایجاد کند و کنترل را به دیباگر بازگرداند.
این ویژگی به دیباگر اجازه میدهد تا بتواند پس از اجرای هر دستور، وضعیت حافظه و مقادیر رجیسترها را بررسی کرده و تغییرات آنها را نظارت کند. بنابراین، Trap Flag یک ابزار بسیار مفید برای تحلیل و بررسی دقیق عملکرد برنامهها در سطح اسمبلی است.
👻چالشهای شناسایی Trap Flag:
هرچند استفاده از Trap Flag برای گام به گام اجرا کردن برنامه بسیار مفید است، اما شناسایی و تشخیص آن از بیرون (یعنی توسط خود برنامه یا ابزارهای شناسایی بدافزار) کار دشواری است. دلایل این مشکل عبارتند از:
✔️این EFLAGS بهطور مستقیم قابل خواندن نیست:
این EFLAGS که شامل Trap Flag میباشد، بهطور مستقیم از طریق دستوراتی مانند mov قابل خواندن نیست. برای خواندن وضعیت این رجیستر باید از دستور pushf استفاده کرد، که وضعیت EFLAGS را در استک ذخیره میکند.
✔️پرچم Trap Flag بهطور خودکار غیرفعال میشود:
پس از هر بار برگشت از دیباگر، Trap Flag بهطور خودکار به حالت False (غیرفعال) تغییر میکند. این ویژگی باعث میشود که بررسی وضعیت این پرچم برای شناسایی نقاط توقف در برنامه سخت باشد.
👽روشهای شناسایی رفتار دیباگینگ با استفاده از Trap Flag:
با وجود اینکه Trap Flag بهطور مستقیم قابل شناسایی نیست، روشهایی برای شناسایی رفتار دیباگرها و نقاط توقف وجود دارد. برخی از این روشها عبارتند از:
✔️ بررسی استک با استفاده از دستور pushf:
همانطور که اشاره شد، تنها راه دسترسی به وضعیت EFLAGS استفاده از دستور pushf است که وضعیت EFLAGS را در استک ذخیره میکند. بدافزار میتواند بهطور پیوسته وضعیت استک را بررسی کرده و در صورتی که تغییرات غیرمنتظرهای در آن مشاهده شود، به وجود یک دیباگر مشکوک شود.
✔️ تحلیل زمانبندی دستورات:
اجرای گام به گام دستورات توسط دیباگر باعث تغییرات در زمانبندی اجرای دستورات میشود. این زمانبندی ممکن است برای برنامه قابل شناسایی باشد. بهعنوان مثال، اگر برنامه بین هر دستور وقفههای کوچکی داشته باشد (که ناشی از فعال بودن Trap Flag است)، این تفاوتها میتوانند بهعنوان علائم رفتاری دیباگر شناسایی شوند.
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
👿ضد مهندسی معکوس
در دنیای امنیت سایبری و تحلیل بدافزار، یکی از مهمترین چالشها برای هکر شناسایی و مقابله با تکنیکهای دیباگینگ و نقاط توقف (breakpoints) است که برای بررسی و تجزیه و تحلیل برنامههای آلوده به کار میروند. یکی از تکنیکهای رایج برای ایجاد نقاط توقف در فرآیند دیباگینگ، استفاده از پرچم ترپ (Trap Flag) در رجیستر EFLAGS است. این پرچم به دیباگرها این امکان را میدهد که بهصورت گامبهگام دستورات برنامه را اجرا کنند و تغییرات حافظه و رجیسترها را بررسی نمایند. با این حال، شناسایی استفاده از پرچم ترپ برای نقاط توقف میتواند چالشبرانگیز باشد، زیرا بهراحتی نمیتوان این پرچم را خواند و بررسی کرد.
🤡پرچم ترپ (Trap Flag) چیست؟
این Trap Flag (TF) یک پرچم خاص در رجیستر EFLAGS در معماری پردازندههای x86 است که برای فعال کردن Single-Stepping یا گامبهگام اجرا کردن دستورات برنامه به کار میرود. هنگامی که دیباگر بهطور گام به گام یک برنامه را تحلیل میکند، این پرچم در رجیستر EFLAGS تنظیم میشود تا پس از اجرای هر دستور، پردازنده یک Interrupt 1 (خطای دیباگ) ایجاد کند و کنترل را به دیباگر بازگرداند.
این ویژگی به دیباگر اجازه میدهد تا بتواند پس از اجرای هر دستور، وضعیت حافظه و مقادیر رجیسترها را بررسی کرده و تغییرات آنها را نظارت کند. بنابراین، Trap Flag یک ابزار بسیار مفید برای تحلیل و بررسی دقیق عملکرد برنامهها در سطح اسمبلی است.
👻چالشهای شناسایی Trap Flag:
هرچند استفاده از Trap Flag برای گام به گام اجرا کردن برنامه بسیار مفید است، اما شناسایی و تشخیص آن از بیرون (یعنی توسط خود برنامه یا ابزارهای شناسایی بدافزار) کار دشواری است. دلایل این مشکل عبارتند از:
✔️این EFLAGS بهطور مستقیم قابل خواندن نیست:
این EFLAGS که شامل Trap Flag میباشد، بهطور مستقیم از طریق دستوراتی مانند mov قابل خواندن نیست. برای خواندن وضعیت این رجیستر باید از دستور pushf استفاده کرد، که وضعیت EFLAGS را در استک ذخیره میکند.
✔️پرچم Trap Flag بهطور خودکار غیرفعال میشود:
پس از هر بار برگشت از دیباگر، Trap Flag بهطور خودکار به حالت False (غیرفعال) تغییر میکند. این ویژگی باعث میشود که بررسی وضعیت این پرچم برای شناسایی نقاط توقف در برنامه سخت باشد.
👽روشهای شناسایی رفتار دیباگینگ با استفاده از Trap Flag:
با وجود اینکه Trap Flag بهطور مستقیم قابل شناسایی نیست، روشهایی برای شناسایی رفتار دیباگرها و نقاط توقف وجود دارد. برخی از این روشها عبارتند از:
✔️ بررسی استک با استفاده از دستور pushf:
همانطور که اشاره شد، تنها راه دسترسی به وضعیت EFLAGS استفاده از دستور pushf است که وضعیت EFLAGS را در استک ذخیره میکند. بدافزار میتواند بهطور پیوسته وضعیت استک را بررسی کرده و در صورتی که تغییرات غیرمنتظرهای در آن مشاهده شود، به وجود یک دیباگر مشکوک شود.
✔️ تحلیل زمانبندی دستورات:
اجرای گام به گام دستورات توسط دیباگر باعث تغییرات در زمانبندی اجرای دستورات میشود. این زمانبندی ممکن است برای برنامه قابل شناسایی باشد. بهعنوان مثال، اگر برنامه بین هر دستور وقفههای کوچکی داشته باشد (که ناشی از فعال بودن Trap Flag است)، این تفاوتها میتوانند بهعنوان علائم رفتاری دیباگر شناسایی شوند.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#تجربه
پایش تجهیزات شبکه
کشف نفوذ هایی که ندیده ایم
یکی از مواردی که در SOC هایی که مواجه میشم میبینم کم توجهی به لاگ های تجهیزات شبکه ای است.
🔴این لاگها معمولا مشکلات زیر را دارند:
- اصلا جمع نمیشوند
- میزان Granularity لازم را ندارند
- تمام و کمال پارس نمیشوند
- رولهای کشفی مناسب برای آنها در SIEM نوشته نشده است
- به میزان مناسب در پریود زمانی نگهداری نمیشوند
- توجه چندانی به آلرت های آنها وجود ندارد
⚠️این مسائل میتواند مسبب نفوذ های پیچیده و ماندگاری در شبکه های ما باشد. مخصوصا در شبکه هایی که به سمت نرم افزار محور شدن رفته اند یا شبکه هایی که ادمین آنها در مورد فریم ور دقت کافی ندارد
یک گرا بدهم😈 : گزارش این حمله گروه هکری روسی Grizzly Steppe رو بخونید تا به اهمیت موضوع پی ببرید
پی نوشت :راه اندازی سرور AAA یکی از ضروریات برای تجهیزات شبکه است.
https://cloud.google.com/blog/topics/threat-intelligence/synful-knock-acis
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
پایش تجهیزات شبکه
کشف نفوذ هایی که ندیده ایم
یکی از مواردی که در SOC هایی که مواجه میشم میبینم کم توجهی به لاگ های تجهیزات شبکه ای است.
🔴این لاگها معمولا مشکلات زیر را دارند:
- اصلا جمع نمیشوند
- میزان Granularity لازم را ندارند
- تمام و کمال پارس نمیشوند
- رولهای کشفی مناسب برای آنها در SIEM نوشته نشده است
- به میزان مناسب در پریود زمانی نگهداری نمیشوند
- توجه چندانی به آلرت های آنها وجود ندارد
⚠️این مسائل میتواند مسبب نفوذ های پیچیده و ماندگاری در شبکه های ما باشد. مخصوصا در شبکه هایی که به سمت نرم افزار محور شدن رفته اند یا شبکه هایی که ادمین آنها در مورد فریم ور دقت کافی ندارد
یک گرا بدهم😈 : گزارش این حمله گروه هکری روسی Grizzly Steppe رو بخونید تا به اهمیت موضوع پی ببرید
پی نوشت :راه اندازی سرور AAA یکی از ضروریات برای تجهیزات شبکه است.
https://cloud.google.com/blog/topics/threat-intelligence/synful-knock-acis
Please open Telegram to view this post
VIEW IN TELEGRAM
Google Cloud Blog
SYNful Knock - A Cisco router implant - Part I | Mandiant | Google Cloud Blog
❤1👍1
تکنیکهای ضد مهندسی معکوس
فاصله زمانی
در مهندسی معکوس و تحلیل بدافزار ما از اجرای single-stepping یا به تعبیری اجرای خط به خط برای رفتار شناسی قطعه کد مشکوک استفاده میکنیم.
هکر دنبال آن است که این حرکت ما را شناسایی کند تا بتواند خود را از این آنالیز برهاند.
یک راهکار استفاده از تکنیکهای زمانبندی برای شناسایی "single-stepping" در فرآیند دیباگ یا مهندسی معکوس است. در این روش، زمان دقیق (با دقت میلیثانیه) از لحظه شروع سیستم تا اجرای دستور خاصی اندازهگیری میشود. دستور rdtsc در معماری x86 برای این منظور استفاده میشود، که زمان سیستمی را در دو رجیستر EDX و EAX ذخیره میکند.
در فرآیند شبیهسازی دیباگ یا مهندسی معکوس (reverse engineering)، وقتی یک متخصص امنیت در حال اجرای کد است، ممکن است از تکنیکهایی مانند "single-stepping" استفاده کند. این به معنای اجرای کد خط به خط و بررسی هر دستور است. اما این کار باعث تأخیرهای زمانی میشود، چون در این فرآیند، پردازش کد به صورت تدریجی انجام میشود. اگر بتوان زمان دقیق قبل و بعد از اجرای یک دستور را محاسبه کرد، تأخیر ناشی از این فرآیند به وضوح قابل مشاهده خواهد بود.
با استفاده از دستور rdtsc، تفاوت زمانی بین دو نقطه (قبل و بعد از اجرای یک دستور) محاسبه میشود. اگر تأخیری در اجرای دستور مشاهده شود، این به احتمال زیاد نشاندهنده این است که یک دیباگر در حال "single-stepping" در کد است و این تکنیک میتواند برای شناسایی و مقابله با مهندسی معکوس استفاده شود.
دستور rdtsc (Read Time-Stamp Counter) یک دستور در معماری x86 است که برای خواندن شمارنده زمانسنج (Timestamp Counter) استفاده میشود. این شمارنده یک شمارنده 64 بیتی است که از زمان بوت شدن سیستم شروع به افزایش میکند و به صورت پیوسته از آن زمان افزایش مییابد. هدف اصلی این دستور دسترسی به این شمارنده است که برای اندازهگیری زمان و انجام محاسبات زمانی دقیق (با دقت بسیار بالا) کاربرد دارد.
پی نوشت:
زمانی که دستور rdtsc اجرا میشود، مقدار شمارنده زمانسنج سیستم (که زمان از شروع سیستم تا آن لحظه را نشان میدهد) در دو رجیستر EDX و EAX ذخیره میشود. EAX نیمی از شمارنده (کمتر از 32 بیت) و EDX نیمه دیگر را نگه میدارد
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
فاصله زمانی
در مهندسی معکوس و تحلیل بدافزار ما از اجرای single-stepping یا به تعبیری اجرای خط به خط برای رفتار شناسی قطعه کد مشکوک استفاده میکنیم.
هکر دنبال آن است که این حرکت ما را شناسایی کند تا بتواند خود را از این آنالیز برهاند.
یک راهکار استفاده از تکنیکهای زمانبندی برای شناسایی "single-stepping" در فرآیند دیباگ یا مهندسی معکوس است. در این روش، زمان دقیق (با دقت میلیثانیه) از لحظه شروع سیستم تا اجرای دستور خاصی اندازهگیری میشود. دستور rdtsc در معماری x86 برای این منظور استفاده میشود، که زمان سیستمی را در دو رجیستر EDX و EAX ذخیره میکند.
در فرآیند شبیهسازی دیباگ یا مهندسی معکوس (reverse engineering)، وقتی یک متخصص امنیت در حال اجرای کد است، ممکن است از تکنیکهایی مانند "single-stepping" استفاده کند. این به معنای اجرای کد خط به خط و بررسی هر دستور است. اما این کار باعث تأخیرهای زمانی میشود، چون در این فرآیند، پردازش کد به صورت تدریجی انجام میشود. اگر بتوان زمان دقیق قبل و بعد از اجرای یک دستور را محاسبه کرد، تأخیر ناشی از این فرآیند به وضوح قابل مشاهده خواهد بود.
با استفاده از دستور rdtsc، تفاوت زمانی بین دو نقطه (قبل و بعد از اجرای یک دستور) محاسبه میشود. اگر تأخیری در اجرای دستور مشاهده شود، این به احتمال زیاد نشاندهنده این است که یک دیباگر در حال "single-stepping" در کد است و این تکنیک میتواند برای شناسایی و مقابله با مهندسی معکوس استفاده شود.
دستور rdtsc (Read Time-Stamp Counter) یک دستور در معماری x86 است که برای خواندن شمارنده زمانسنج (Timestamp Counter) استفاده میشود. این شمارنده یک شمارنده 64 بیتی است که از زمان بوت شدن سیستم شروع به افزایش میکند و به صورت پیوسته از آن زمان افزایش مییابد. هدف اصلی این دستور دسترسی به این شمارنده است که برای اندازهگیری زمان و انجام محاسبات زمانی دقیق (با دقت بسیار بالا) کاربرد دارد.
پی نوشت:
زمانی که دستور rdtsc اجرا میشود، مقدار شمارنده زمانسنج سیستم (که زمان از شروع سیستم تا آن لحظه را نشان میدهد) در دو رجیستر EDX و EAX ذخیره میشود. EAX نیمی از شمارنده (کمتر از 32 بیت) و EDX نیمه دیگر را نگه میدارد
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
به دور از تمام مقدمات و تعاریف اولیه ؛ زیرو تراست رو ببینیم و انواع ش رو
https://www.ibm.com/think/insights/the-evolution-of-zero-trust-and-the-frameworks-that-guide-it
🔹 Share & Support Us 🔹
📱 Channel : @Engineer_Computer
https://www.ibm.com/think/insights/the-evolution-of-zero-trust-and-the-frameworks-that-guide-it
Please open Telegram to view this post
VIEW IN TELEGRAM
Ibm
The Evolution of Zero Trust and the Frameworks that Guide It | IBM
Discover the evolution of Zero Trust security, its development, models, and framework, and learn how it can protect your organization from modern threats.
❤3👍1