Exchange Server و نفوذ به سازمان
نویسنده: یاسین عابدینی · دسته: RedTeam · تاریخ انتشار: ۱۴۰۵/۴/۳۱
Microsoft Exchange از دید Red Team: شناسایی، حملات و Detection
۱. Exchange چیست؟
Microsoft Exchange Server یک پلتفرم Messaging و Collaboration است که شرکت مایکروسافت از دهه ۹۰ میلادی توسعه میدهد و امروز ستون فقرات ایمیل سازمانی در اکثر شرکتهای بزرگ دنیا محسوب میشود. Exchange علاوه بر ایمیل، امکاناتی مثل Calendar، Contacts، Tasks و Global Address List را فراهم میکند و معمولاً بهصورت یکپارچه با Active Directory کار میکند؛ یعنی هر Mailbox متناظر با یک User Object در AD است.
دو مدل استقرار اصلی وجود دارد:
- On-Premises Exchange (نسخههای 2013 / 2016 / 2019) — سرور داخل شبکه سازمان نصب میشود و معمولاً یک یا چند سرویس آن (OWA، ActiveSync، Autodiscover) رو به اینترنت باز است. این مدل تمرکز اصلی این مقاله است.
- Exchange Online (Microsoft 365) — نسخه Cloud که بخشی از حملات مشابه (مثل Password Spray و GAL Enumeration) روی آن هم صدق میکند، اما سطح حمله متفاوت است.
از نظر معماری، Exchange سه نقش اصلی دارد: Mailbox (نگهداری داده)، Client Access (لایهای که پروتکلهای HTTP مثل OWA، EWS، EAS، Autodiscover و RPC/MAPI روی آن Proxy میشوند) و در نسخههای قدیمیتر Edge Transport. تقریباً همه چیزی که یک مهاجم بیرونی میبیند از طریق لایه Client Access رد میشود.
Exchange یکی از جذابترین اهداف برای Red Team و APTهاست چون:
- معمولاً مستقیماً از اینترنت در دسترس است.
- به AD متصل است و نفوذ به آن میتواند مسیری برای Domain Compromise باز کند.
- حاوی دادههای حساس (ایمیل، Credential، اطلاعات داخلی سازمان) است.
- تاریخچهای طولانی از آسیبپذیریهای Critical دارد.
۲. آسیبپذیریهای معروف Exchange
ProxyLogon (CVE-2021-26855)
کشفشده توسط Orange Tsai از DEVCORE. این باگ یک SSRF در لایه Client Access است که به مهاجم بدون احراز هویت اجازه میدهد درخواستهایی را به بخش Back-end سرور هدایت کند. مهاجم یک درخواست SSRF با کوکی مخرب جعلشده به کامپوننت IIS در لایه front-end ارسال میکند و این کامپوننت درخواست را برای پردازش به IIS بخش back-end فوروارد میکند. با ترکیب چند CVE دیگر، این زنجیره به Remote Code Execution کامل میرسد.
ProxyShell (CVE-2021-34473 / CVE-2021-34523 / CVE-2021-31207)
معرفیشده توسط Orange Tsai در Pwn2Own و Black Hat USA 2021. این حمله با زنجیره کردن سه CVE کار میکند: CVE-2021-34473 (باگ SSRF)، CVE-2021-34523 (Elevation of Privilege روی PowerShell Backend) و CVE-2021-31207 (نوشتن Web Shell). این زنجیره به مهاجم بدون احراز هویت اجازه میدهد از طریق پورت ۴۴۳ روی نسخههای On-Premises، دستورات دلخواه اجرا کند.
ProxyNotShell (CVE-2022-41040 و CVE-2022-41082)
کشفشده در سال ۲۰۲۲. CVE-2022-41040 یک آسیبپذیری SSRF است که مهاجم احرازهویتشده میتواند برای Privilege Escalation از آن استفاده کند؛ CVE-2022-41082 یک باگ Deserialization است که برای رسیدن به RCE در بکاند PowerShell سوءاستفاده میشود. برخلاف دو مورد قبلی، این زنجیره نیاز به یک حساب کاربری معتبر دارد.
۳. OWA (Outlook Web App) و سطح حمله آن
OWA همان رابط وب Exchange است. از دید یک مهاجم، OWA فقط یک صفحه لاگین نیست؛ بلکه مجموعهای از چند سرویس HTTP روی همان Client Access Server است که هرکدام سطح حمله جدا دارند:
| مسیر / سرویس | کاربرد قانونی | چرا برای مهاجم جذاب است |
|---|---|---|
/owa |
وبمیل کاربر نهایی | فرم لاگین قابل Brute Force / Password Spray |
/ecp |
پنل مدیریتی Exchange | در صورت دسترسی، کنترل کامل روی Exchange |
/EWS/Exchange.asmx |
Exchange Web Services | خواندن Mailbox، دامپ GAL، نقطه شروع ProxyShell |
/Microsoft-Server-ActiveSync |
سینک با کلاینتهای موبایل | معمولاً Basic Auth دارد و اغلب فاقد Lockout سخت |
/Autodiscover/Autodiscover.xml |
کشف آدرس سرورهای داخلی توسط کلاینتها | افشای نامهای داخلی، نقطه ورود اولیه در ProxyShell |
/rpc یا /mapi |
ارتباط Outlook Desktop | مسیر ابزارهایی مثل Ruler و exchanger.py |
نکته کلیدی: همه این Endpointها روی همان IIS مشترک هستند، پس کشف یکی از آنها عملاً یعنی همه سطح حمله بالا در دسترس مهاجم قرار میگیرد.
۴. شناسایی سرورهای Exchange با Shodan
Shodan یکی از سریعترین راهها برای پیدا کردن سرورهای Exchange/OWA در سطح اینترنت است.
دورکهای پرکاربرد
http.component:"outlook web app"
http.title:"Outlook Web App"
http.html:"X-OWA-Version"
http.favicon.hash:<hash مربوط به آیکون OWA>
بعد از پیدا کردن هدف، تشخیص نسخه دقیق Exchange اهمیت دارد. هدر X-OWA-Version یا صفحه /owa/auth/logon.aspx معمولاً این اطلاعات را لو میدهند.
استخراج اطلاعات داخلی از NTLMSSP
بسیاری از Endpointهای احراز هویت (مثل /autodiscover/autodiscover.xml، /ews/ یا /rpc/rpcproxy.dll) حتی زمانی که پاسخ نهایی خطا یا Not Found باشد، در هدر WWW-Authenticate: NTLM یک بلاک Base64 به نام NTLMSSP برمیگردانند. این بلاک شامل NetBIOS Domain Name، NetBIOS Computer Name، DNS Domain Name و DNS Computer Name سرور داخلی است.
ابزارهایی که این کار را خودکار میکنند:
nmap --script http-ntlm-info— با اجرای این اسکریپت روی مسیر autodiscover، مقادیر DNS_Domain_Name، NetBIOS_Domain_Name، DNS_Computer_Name و Product_Version برگردانده میشود.- ntlmscan — پیمایش یک لیست از Endpointهای رایج NTLM.
- ntlm-info — ابزار Rust که اطلاعات را هم از HTTP و هم از SMB میگیرد.
این تکنیک کاملاً Unauthenticated است و اغلب هیچ Alert بلوتیمی برای آن ست نمیشود.
۵. پیدا کردن Mail Domain واقعی با MailSniper
MailSniper نوشته Beau Bullock یکی از استانداردترین ابزارهای Red Team روی Exchange است.
Invoke-DomainHarvestOWA
این ماژول تلاش میکند به یک پورتال OWA متصل شود و نام دامنه معتبر برای لاگین را از هدر WWW-Authenticate برگشتی، یا بر اساس تفاوتهای زمانی کوچک در تلاشهای لاگین، تشخیص دهد.
Invoke-DomainHarvestOWA -ExchHostname mail.domain.com
Invoke-UsernameHarvestOWA
بعد از پیدا کردن دامنه، این ماژول لیستی از نامهای کاربری احتمالی را تست میکند و بر اساس تفاوتهای زمانی کوچک در تلاشهای لاگین، نامهای کاربری معتبر را شناسایی میکند (Timing Attack).
Invoke-UsernameHarvestOWA -ExchHostname mail.domain.com -UserList .\userlist.txt -Threads 1 -OutFile owa-valid-users.txt
۶. انواع Brute Force / Password Spray روی Exchange
هر Endpoint سیاست Lockout، Logging و رفتار متفاوتی دارد:
الف) OWA Form-Based Login
لاگین معمولی از طریق /owa/auth.owa. معمولاً پشت آن Account Lockout Policy در AD فعال است، پس Password Spray (یک پسورد روی چند هزار یوزر) استراتژی معمول است.
ب) EAS — Exchange ActiveSync
مسیر /Microsoft-Server-ActiveSync. از Basic Authentication استفاده میکند. معمولاً MFA و Conditional Access روی آن پیادهسازی نشده — یکی از محبوبترین سطوح برای Password Spray در سازمانهایی که OWA را با MFA محافظت کردهاند اما EAS را فراموش کردهاند.
ج) NTLM Auth Endpoints (Autodiscover / EWS / OAB)
مسیرهایی مثل Autodiscover و EWS از NTLM Authentication استفاده میکنند. چون NTLM Handshake چند مرحلهای است، رفتار Logging آنها با فرم OWA متفاوت است و ممکن است از دید SOC که فقط روی لاگ OWA تنظیم شده، دیده نشوند.
نکات عملی Red Team
- اول Account Lockout Policy را تعیین کنید تا استراتژی Spray را بر همان اساس تنظیم کنید.
- زمانبندی حملات را پخش کنید (یک پسورد در هر بازه Lockout Window).
- Endpointهای مختلف (OWA / EAS / EWS) را بهصورت چرخشی امتحان کنید.
۷. GAL چیست و چرا برای مهاجم ارزشمند است؟
Global Address List (GAL) لیست کامل تمام کاربران، گروهها و منابع سازمان است. از دید Red Teamer، GAL یک منبع طلایی است چون معمولاً شامل:
- آدرس ایمیل کامل تمام کارمندان (پایه هر حمله Password Spray یا Phishing).
- ساختار سازمانی (Department، Title، Manager) برای طراحی سناریوهای Social Engineering.
- گاهی شماره تلفن و دفتر کار برای Vishing یا Pretexting.
روشهای دامپ GAL
- از طریق OWA Address Book — با یک حساب کاربری معتبر، بخش Address Book همان GAL را نمایش میدهد.
- از طریق EWS با MailSniper — ماژول
Get-GlobalAddressListمستقیماً از طریق Exchange Web Services لیست را میکشد. - از طریق پروتکل NSPI با Impacket exchanger.py — سطح پایینتر و مستقیمتر نسبت به OWA/EWS.
۸. Impacket و اسکریپت exchanger.py
exchanger.py ابزاری برای اتصال به Microsoft Exchange از طریق RPC over HTTP v2 است که توسط پژوهشگر امنیتی mohemiv توسعه داده شده. این اسکریپت پروتکل MS-OXNSPI را پیادهسازی میکند.
زیردستورهای کلیدی:
dump-tables— دامپ هر Address Book مشخصشده بر اساس نام یا GUID، با امکان درخواست همه Propertyها یا یک ست از پیشتعیینشده از فیلدها.guid-known— دامپ آبجکتهای مشخص از طریق GUID.dnt-lookup— جستجوی Distinguished Name Tag اشیاء داخل Address Book.
این پروتکل (NSPI/MAPI) اغلب کمتر از OWA یا EWS مانیتور میشود، چون خیلی از تیمهای SOC فقط روی لاگهای HTTP سطح بالا (IIS) تنظیم شدهاند.
۹. Detection — چطور این حملات را شناسایی کنیم؟
مانیتورینگ سطح شبکه و WAF
- محدودکردن دسترسی مستقیم به
/ecpو/PowerShellاز اینترنت. - فعالسازی Rate Limiting روی
/owa/auth.owa،/Microsoft-Server-ActiveSyncو Endpointهای NTLM بهطور مجزا. - Alert روی درخواستهایی با User-Agent غیرمعمول به مسیرهای Autodiscover/EWS.
شناسایی Password Spray / Username Harvesting
- بررسی الگوی لاگین Failed در فایلهای لاگ HttpProxy اکسچنج (
C:\Program Files\Microsoft\Exchange Server\V15\Logging\HttpProxy) برای الگوی «یک پسورد روی تعداد بالای یوزر در بازه زمانی کوتاه». - نرمالسازی زمان پاسخ سرور (Constant-Time Response) برای درخواستهای لاگین نامعتبر در برابر Timing Attack.
- فعالسازی ADFS Smart Lockout برای On-Prem.
شناسایی دامپ GAL و Recon از طریق NTLM
- Alert روی حجم بالای درخواست به
/autodiscover/autodiscover.xml،/ews/یا/rpc/rpcproxy.dllبدون Authentication موفق از یک IP یکسان. - بررسی Log برای درخواستهای متعدد NSPI/MAPI با حجم غیرعادی از یک Session.
پچمدیریت و Hardening
- اجرای منظم Exchange Health Checker و Exchange Emergency Mitigation Service (EEMS).
- مانیتورینگ CISA KEV Catalog برای این خانواده CVE.
- بررسی وجود Web Shell در مسیرهای معمول (
\inetpub\wwwroot\aspnet_client\). - استفاده از Microsoft Defender for Endpoint / Sentinel Hunting Queries رسمی مایکروسافت.
۱۰. جمعبندی
Exchange با اینکه یکی از قدیمیترین محصولات مایکروسافت است، همچنان یکی از پرتکرارترین نقاط ورود در حملات واقعی و تمرینهای Red Team است. دلیل اصلی ترکیب «قرارگیری مستقیم رو به اینترنت» + «اتصال عمیق به Active Directory» + «سطح حمله چندلایه» است.
برای یک Red Teamer، شناخت دقیق این لایهها (نه فقط فرم لاگین OWA) کلید موفقیت است؛ و برای یک Blue Teamer، پوشش Logging و Detection روی همه این Endpointها همان چیزی است که فاصله بین یک اسکن بیخطر و یک نفوذ کامل را تعیین میکند.
یادآوری: تمام این تکنیکها را فقط در Lab شخصی یا در چارچوب یک قرارداد Pentest رسمی و دارای مجوز کتبی تست کنید.