آموزش Invoke Adversary و شبیه سازی حملات هکری برای آزمایش

سلام ، در این آموزش قصد داریم تا شمارو با یک شبیه ساز حمله به شبکه های داخلی اشنا کنیم . شاید برای شماهم پیش اومده باشه که بخواید بعد از اینکه تمام تجهیزات امنیتی خودتون اعم از فایروال، آنتی ویروس، DLP و غیره رو کانفیگ کردید و تو شبکه قرار دادید اون هارو محک بزنید تا ببینید چقدر میتونند جلوی حمله به سازمان شمارو بگیرند. به وسیله این آموزش شما میتوانید از دیدگاه یک نفوذگر کلاه سیاه یا اصطلاحا به صورت Red Teaming شبکه داخلی را تست نفوذ کرده تا از ضعف های موجود در شبکه مطلع بشید. اما به سراغ ادامه ماجرا می رویم ، زمانی که یک حمله سایبری اتفاق می افتد چه اتفاقاتی رخ میدهد و نفوذگر چه پروسه هایی را طی میکند؟

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
  • - Reconnaissance (شناسایی): نفوذگر شروع به شناسایی شبکه داخلی میکند تا سرویس های ضعیف، پیکربندی های نادرست، گرفتن شمای کلی شبکه (تعداد کامپیوترها و یوزرها و سایبر آبجکت ها) را پیدا کند.
  • - Weaponization (فارسیش سخته حقیقتا اما بخوایم عامیانش کنیم میشه تسلیحات و ابزارهای نفوذگر): در این مرحله نفوذگر شروع به ساخت Payload میکند تا بتواند آنرا به وسیله های مختلف مانند PDF به دست هدف مورد نظر برساند.
  • - Delivery (تحویل بدافزار): این مرحله payload ساخته شده را به وسیله ایمیل، لینک مخرب، فلش مموری و راه های دیگر برای هدف مورد نظر ارسال میکند.
  • - Exploit (معنیش مشخصه (-: ): در این مرحله نفوذگر پیلود موردنظر را روی سیستم هدف اجرا میکند.
  • - Installation (تلاش برای همیشگی کردن دسترسی): در این مرحله نفوذگر سعی میکند تا دسترسی خود را برای مدت زمان طولانی حفظ کند و اصطلاحا بدافزار خود را persist کند.
  • - Command and Control (اجرای دستورات از راه دور): نفوذگر اقدام به اجرای دستورات از راه دور میکند تا کنترل سیستم قربانی را به طور کامل در دست بگیرد
  • - Actions (کاری که نفوذگر قصد انجامشو داره): نفوذگر در این مرحله مقصود خود را به سرانجام میرساند. این مقصود میتواند تخلیه اطلاعات، ایجاد باج افزار در شبکه و ... باشد
وب سایت توسینسو

بسیاری از کمپانی ها از نرم افزار های مانیتورینگ، DLP ها و مراکز عملیات امنیت (SOC) استفاده میکنند تا از تجهیزات خودشان محافظت کنند. حالا ابزاری که اینجا خلا آن احساس میشود ابزاری است که بتواند داده های واقعی حمله در دنیای واقعی را تولید کند. ابزاری که در این آموزش به آن پرداخته میشود این فرایند را برای شما انجام میدهد.

معرفی ابزار Invoke-Adversary

Invoke-Adversary یک اسکریپت پاورشل است که رفتارهای یک نفوذگر واقعی در یک شبکه Enterprise را از خود بروز میدهد. به وسیله این اسکریپت شما میتوانید :

  • ابزار و شیوه های نظارت امنیتی خود را ارزیابی کنید.
  • نرم افزارهای Endpoint که روی کلاینت های شبکه نسب شده اند را ارزیابی کنید.

آموزش نصب Invoke-Adversary

نیازمندی ها:

  • پاورشل ورژن 3 یا بالاتر
  • ویندوز 7 به بالا

دانلود Invoke-Adversary لینک دانلود

طریقه استفاده از Invoke-Adversary

اسکریپت را به وسیله برنامه Powershell ise و با دسترسی ادمین باز میکنیم

وب سایت توسینسو

سپس دستور زیر را در Powershell ise وارد میکنیم.

Set-ExecutionPolicy -ExecutionPolicy Bypass

و بعد گزینه Yes To All را میزنیم.سپس کلید F5 را میفشاریم. (پس از فشردن کلید باید صفحه زیر نمایش داده شود

وب سایت توسینسو

سپس با نوشتن Yes وارد محیط اصلی برنامه میشویم.

وب سایت توسینسو

در اینجا میتوانید شماره دسته بندی های مختلف را انتخاب کنید تا وارد تست های قابل انجام در آن دسته بشوید.برای مثال ما شماره 4 که Discovery هست را انتخاب میکنیم.

وب سایت توسینسو

همانظور که مشاهده میکنید تست های مختلفی در این مرحله قابل انجام است که با انتخاب هرکدام میتوانیم پروسه آن را استارت بزنیم.خوب تا اینجا با فضای کلی برنامه آشنا شدیم حالا میخوایم ببینیم این برنامه چه کارهایی رو میتونه برای ما انجام بده و هرکدوم رو توضیح بدیم.

Defense Evasion

همانطور که مشاهده میکنید گزینه اول این برنامه Defense Evasion است. حالا این یعنی چی؟ تو این مرحله چه چیزهایی رو میتونیم تست کنیم؟ خب اینجا کاری که انجام میشه اینه که سعی میکنه بخش های دفاعی سیستم رو مختل کنه و از کار بندازه.بعد از این که این گزینه رو انتخاب کنیم وارد منوی جدید میشیم تا بتونیم مشخص کنیم چه تستی رو برای ما انجام بده.

  1. Disable network interface: این گزینه سعی میکند تا کارت شبکه سیستم مورد نظر را غیرفعال کند.
  2. Disable Windows Defender AV: این گزینه سعی میکند تا ویندوز دیفندر سیستم مورد نظر را از کار بیندازد.
  3. Add local firewall rule exceptions: این گزینه سعی میکند تا یک رول در فایروال ویندوز ایجاد کند. هدف از این کار چک کردن داشتن دسترسی برای این کار است. چراکه در صورت داشتن دسترسی نفوذگر میتواند به وسیله ایجاد یک رول در فایروال ترافیک مخرب خود را به راحتی از سیستم قربانی عبور دهد.
  4. Turn off Windows Firewall: همون طور که از اسمش مشخصه سعی میکنه تا فایروال ویندوز رو خاموش کنه.
  5. Clear Security Log: لاگ های امنیتی سیستم را که در Event Viewer قابل دسترسی هستند را به وسیله دستور wevtutil پاک میکند :-)

Persistence

خب میرسیم به گزینه دوم. این گزینه سعی میکنه تا متدهای مختلف حفظ و ماندگاری دسترسی رو روی سیستم شما تست کنه. میریم سراغ توضیحات این که هرکدوم از اینا چه کاری میکنند.

1- Accessibility Features: به وسیله "Image File Execution Options" میاد و برنامه sethc.exe رو با cmd.exe جایگزین میکنه.

2- AppInit DLLs: به طور اختصار میشه این که هر برنامه ای که بخواد user32.dll رو اجرا کنه میاد و DLL مارو اجرا میکنه. (اگز ویندوز 8 به بالا باشه و Secure boot فعال باشه کار نمیکنه)

3- Application Shimming: یک کلید رجیستری در مسیر زیر درست میکند.

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{842562ef-8d28-411d-a67d-ab75ef611fe8}.sdb

4- Create local user: سعی میکند تا یک یوزرنیم جدید ایجاد کند. (در صورت موفقیت اسم یوزرنیم را support_388945a0 میگذارد)

5- Create local Administrator: سعی میکند یک یوزر جدید ایجاد کند و آن را در دسته ادمین قرار میدهد. (در صورت موفقیت اسم یوزرنیم را Lost337fde6981a9 میگذارد)

6- Create New Service: سعی میکند تا یک سرویس جدید ایجاد کند. (در صورت موفقیت اسم سرویس را WindowsHealth میگذارد)

7- (Create New Service (Unquoted Path: مانند قبلی عمل میکند اما با این فرق که این را با unquoted path میسازد.

8- (Registry Run Keys (HKLM: یک کلید رجیستری در مسیر زیر ایجاد میکند.

HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run

9- (Registry Run Keys (HKCU: یک کلید رجیستری در مسیر زیر ایجاد میکند. تفاوتی که با بالایی دارد این است که هر برنامه ای که در این مسیر گذاشته شود بعد از هر لاگین توسط ((یوزری که کلید را ساخته)) اجرا میشود اما در بالایی (نیاز به دسترسی ادمین دارد) برنامه فوق با هرلاگینی که در سیستم توسط هر یوزری باشد اجرا میشود.

HKCU\Software\Microsoft\Windows\CurrentVersion\Run

10- Scheduled tasks: یک scheduled task ایجاد میکند. (در صورت موفیت اسم task را OfficeUpdaterA میگذارد)

Credential Access

رسیدیم به گزینه سوم! این بخش به نظر من شیرین ترین قسمته. ما تو اینجا سعی میکنیم به وسیله روش های مختلف پسورد ویندوز و هش اون رو به دست بیاریم. فقط لازمه اینجا یه توضیحاتی بدم برای اون دسته از عزیزانی که با ابزار mimikatz آشنا نیستند. این ابزار به وسیله خوندن پروسس LSASS.exe سعی میکنه پسورد ویندوز رو به صورت Clear text نشون بده. البته خیلی کارهای دیگه هم انجام میده و یه جورایی سیستم Authentication ماکروسافت رو به سخره میگیره که توضیحاتش در این مطلب نمیگنجه.

خب بریم سر اصل مطلب

1- Mimikatz - Logonpasswords: برنامه mimikatz را از گیت هاب اصلی اش دانلود کرده، با یک اسم رندوم ذخیره میکند و با پارامترهای زیر آن را اجرا میکند.

"privilege::debug" "sekurlsa::logonpasswords" "exit"

پارامتر اول برای گرفتن دسترسی ادمین از سیستم و پارامتر دوم برای گرفتن پسوردهای سیستم میباشد. در این روش احتمال تشخیص توسط انتی ویروس بسیار بالاست.

2- PowerShell Mimikatz: در این روش mimikatz را به وسیله پاورشل و در مموری اجرا میکند. این روش از دید بسیاری از نرم افزارهای امنیتی مخفی میماند.

3- PowerShell Encoded Mimikatz: در این روش اسکریپت کد شده mimikatz را در مموری اجرا میکند. درحال حاضر امکان تشخیص این روش بسیار پایین است.

4- Capture Lsass Memory Dump: از Windows Error Reporting استفاده میکند تا مموری مربوط به پروسس LSASS را به دامپ کند.

5- (Capture Lsass Memory Dump (Prodump: برنامه Prodump را که محصول Sysinternal است از ماکروسافت دانلود کرده و با یک نام رندوم ذخیره میکند سپس به وسیله این برنامه اقدام به دامپ پروسس LSASS میکند.

procdump.exe -accepteula -64 -ma lsass.exe

اگر خواستید به صورت دستی این کار را انجام دهید میتوانید از دستور بالا استفاده کنید.

6- (Copy Local SAM File (via Invoke-NinjaCopy: به وسیله NinjaCopy فایل SAM که در C:\Windows\System32\config\sam است را برای ما کپی میکند. به دلیل این که فایل SAM در حال اجرا است در حالت معمولی قادر به این کار نیستیم به همین دلیل از NinjaCopy که یک اسکریپت پاورشل است استفاده میکنیم.

Discovery Tactics

خب میریم سراغ گزینه چهارم! در این بخش تمرکز روی فاز شناسایی قرار داده شده و سعی شده که بیشتر اطلاعاتی که یک نفوذگر از سیستم و شبکه شما لازم داره رو بدست بیاره.این اطلاعات میتونه تعداد یوزرهای شبکه، تعداد کامپیوترها، تاریخ اخرین باری که پسورد عوض شده و ... باشه. بریم سر توضیحات!

1- Account Discovery: در این روش به وسیله گروه کامندهای NET مانند net user, net account و ... یوزرها و گروه های دامینی و لوکالی رو بدست میاره.

2- Network Service Scanning: پورت های 1 تا 1024 رو روی هاست نیمی که ما براش تعیین میکنیم اسکن میکنه.

3- System Owner Discovery: یه جورایی همون کامند whoami خودمون رو میزنه.

4- System Time Discovery: کامند net time و w32tm.exe /tz رو میزنه.

5- Service Discovery: لیست تمام سرویس هارو برای شما نمایش میده.

6- Network Connections Discovery: اینم مثل همون netstat خودمونه.

Command and Control

رسیدیم به گزینه پنجم. کاری که تو این مرحله انجام میشه اینه که سعی میکنه با سیستم های دیگه ارتباط برقرار کنه و کامندهای موردنظر خودشو اجرا کنه. خب بریم ببینیم دقیقا هرکدوم از گزینه ها چه کاری انجام میدن

1- Commonly used Ports: تو این روش سعی میکنه تا به وسیله پرت های معمول با سیستمی که ما بهش میدیم ارتباط برقرار کنه. پرت هایی که تست میکنه اینها هستند:

80, 443, 25, 8080, 1433

البته از طریق سورس قابل تغییره.

2- Uncommonly used Ports: اینم مثل بالایی عمل میکنه اما خب اینجا پرتایی که کمتر رواج دارند رو تست میکنه. یعنی این پرت ها:

1913, 81, 8081, 8088, 995, 13000

که البته این ها هم قابل تغییر هستند.

3- Web Service: در این روش یک پست جدید در pastebin ایجاد میکنه و اطلاعات BITS service رو اونجا آپلود میکنه.

4- DNS: آی پی های بلک لیست را از https://www.ip-finder.me/ip-full-list میگیرد.

5- Connect: اینجا میاد به آی پی هایی که تو روش بالایی گرفت وصل میشه. هدف از اینکار اینه که ببینه سیستم های نظارتی و امنیتی شما چه عکس العملی به این ارتباط نشون میدن.

Execution

خب میرسیم به مرحله ششم. اینجا ما میایم به روش های مختلف سعی میکنیم دستورات خودمونو تو شبکه اجرا کنیم. یکی از مهم ترین مراحلی که نفوذگران دسترسی خودشونو پخش میکنند همینجاست. پس حسابی حواستونو جمع کنید! خب بریم سراغ شرح گزینه ها.

1- (PSExec (random file name: برنامه psexec را از ماکروسافت دانلود میکند، اسم آن را به یک اسم رندوم تغییر میدهد سپس آن را اجرا میکند.

PSEXEC چیست؟

به وسیله این برنامه مدیران شبکه میتوانند روی سیستم های شبکه خود دستورات مختلف را اجرا کنند و مدیریت آنهارا در دست بگیرند که نفوذگران استفاده زیادی از آن میکنند تا به سیستم های شبکه دسترسی پیدا کنند

2- (PSExec (Remote: در این روش برنامه psexec را دانلود کرده و اجرا میکند اما فرقش با بالایی اینه که به اون سیستمی وصل میشه که ما بهش میدیم.

3- PowerShell API call: در این روش API بومی را از پاورشل فراخوانی میکند.

4- (Self Delete (batch file: تو این مرحله میاد و عمل self deleting batch file رو انجام میده.

5- WMI Process Execution: در این روش به سیستمی که HostName آن را ازما میگیرد، به وسیله پروتکل WMI وصل میشود و دستوراتش را اجرا میکند.

Collection

خب کم کم داریم به آخراش نزدیک میشیم. کاری که اینجا انجام میشه گرداوری اطلاعاته که البته این مرحله زیاد گسترده نیست اما میتونیم خودمون بهش ماژول اضافه کنیم.

1- Screen Capture: همونجوری که از اسمش معلومه میاد از سیستم ما عکس میگیره و اونو ذخیره میکنه.

AppLocker ByPasses

خب رسیدیم به مرحله آخر. کاری که اینجا انجام میشه اینه که سعی میکنه Applocker رو دور بزنه که روش هایی که استفاده میکنه هم زیاد نیست و با یه تست قضیه رو جمع میکنه :-( خب بریم سراغ توضیح همون یه دونه.

1- Regsvr32: در این روش سعی میکنه به وسیله تکنیک Regsvr32 بیاد و Applocker رو دور بزنه. اگر تو این مرحله تست موفقیت امیز باشه میتونه خیلی خطرناک باشه چون امکان اجرای بدافزار رو فراهم میکنه.

خب این آموزش هم به پایان رسید. امیدوارم که از خوندن این مطلب لذت برده باشید و استفاده لازم را برده باشید. هر سوالی بود در ذیل همین پست مطرح کنید در خدمتم ^_^

فقط مواظب باشید این فرایند رو روی یک سیستم تستی انجام بدید که شبکه تون نره رو هوا

بدرود


Terinnon
Terinnon

سلام امیرعلی هستم کارشناس ارشد امنیت شبکه. از سال 82 کار تو زمینه امنیت رو شروع کردم.

نظرات