
مكتبة Python وعميل لمعالجة الرموز والانتحال لتصعيد الامتيازات على Windows
PYTMIPE (مكتبة بايثون لمعالجة الرموز المميزة وانتحال الشخصية لتصعيد الامتيازات) هي مكتبة Python 3 لمعالجة رموز Windows وإدارة عمليات الانتحال بهدف الحصول على امتيازات إضافية على Windows. TMIPE هو العميل Python 3 الذي يستخدم مكتبة pytmipe.
شرائح "معالجة رموز Windows وانتحال الشخصية وتصعيد الامتيازات" (بالإنجليزية): رابط
مقال في MISC 112 (بالفرنسية): رابط
| الطريقة | الامتيازات المطلوبة | نظام التشغيل (غير شامل) | الهدف المباشر (الأقصى) |
|---|---|---|---|
| إنشاء الرمز المميز وانتحاله | اسم المستخدم وكلمة المرور | الكل | مسؤول محلي |
| سرقة/انتحال الرمز المميز | SeDebugPrivilege | الكل | nt authority\system |
| تزوير PID الأصلي (توريث المقبض) | SeDebugPrivilege | >= Vista | nt authority\system |
| الخدمة (SCM) | مسؤول محلي (ومستوى تكامل عالي إذا كان UAC مفعّلاً) | الكل | nt authority\system أو حساب نطاق |
| حدث WMI | مسؤول محلي (ومستوى تكامل عالي إذا كان UAC مفعّلاً) | الكل | nt authority\system |
| ثغرة « Printer Bug » لتصعيد الامتيازات | SeImpersonatePrivilege (حساب خدمة) | Windows 8.1, 10 & Server 2012R2/2016/2019 | nt authority\system |
| ثغرة خدمة RPCSS لتصعيد الامتيازات | SeImpersonatePrivilege (حساب خدمة) | Windows 10 & Server 2016/2019 | nt authority\system |
القائمة التالية غير الشاملة تُظهر بعض الميزات المُنفَّذة في مكتبة pytmipe:
يتم استخدام ctypes لأقصى وقت. تم إعادة تطوير العديد من ميزات pywin32 في pytmipe لتجنب استخدام pywin32 من أجل قابلية نقل أفضل. ومع ذلك، لا تزال وحدة جدولة المهام تستخدم pywin32 (بشكل أكثر دقة pythoncom) بسبب ضيق الوقت. جميع الوحدات الأخرى تستخدم ctypes فقط.
لـ عميل بايثون (اسمه tmipe):
python.exe tmipe.py -h
usage: tmipe.py [-h] [--version]
{cangetadmin,printalltokens,printalltokensbyname,printalltokensbypid,printsystemtokens,searchimpfirstsystem,imppid,imptoken,printerbug,rpcss,spoof,impuser,runas,scm}
...
**
888888 8b d8 88 88""Yb 888888
88 88b d88 88 88__dP 88__
88 88YbdP88 88 88""" 88""
88 88 YY 88 88 88 888888
-------------------------------------------
Token Manipulation, Impersonation and
Privilege Escalation (Tool)
-------------------------------------------
By Quentin HARDY ([email protected])
positional arguments:
{cangetadmin,printalltokens,printalltokensbyname,printalltokensbypid,printsystemtokens,searchimpfirstsystem,imppid,imptoken,printerbug,rpcss,spoof,impuser,runas,scm}
Choose a main command
cangetadmin Check if user can get admin access
printalltokens Print all tokens accessible from current thread
printalltokensbyname
Print all tokens accessible from current thread by account name
printalltokensbypid Print all tokens accessible from current thread by pid
printsystemtokens Print all system tokens accessible from current
searchimpfirstsystem
search and impersonate first system token
imppid impersonate primary token of selected pid and try to spawn cmd.exe
imptoken impersonate primary or impersonation token of selected pid/handle and try to spawn cmd.exe
printerbug exploit the "printer bug" for getting system shell
rpcss exploit "rpcss" for getting system shell
spoof parent PID Spoofing ("handle inheritance)"
impuser create process with creds with impersonation
runas create process with creds as runas
scm create process with Service Control Manager
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
لـ مكتبة بايثون (اسمها pytmipe)، راجع الكود المصدري والأمثلة. عادةً، قمت بتوثيق الكود المصدري جيدًا... معظم الدوال موثقة.
لـ أمثلة pyinstaller والملفات المستقلة، راجع الملفات في مجلدات src/examples/.
إذا كنت تريد معرفة كيفية استخدام مكتبة pytimpe، انظر مجلد src/examples للعديد من الأمثلة.
لانتحال أول رمز system والحصول على موجه cmd.exe كـ system من عميل بايثون (tmipe):
python.exe tmipe.py searchimpfirstsystem -vv
لفعل الشيء نفسه باستخدام مكتبة pytmipe مباشرة، انظر الملف src/examples/searchAndImpersonateFirstSystemToken.py:
from impersonate import Impersonate
from utils import configureLogging
configureLogging()
imp = Impersonate()
imp.searchAndImpersonateFirstSystemToken(targetPID=None, printAllTokens=False)
سيؤدي ذلك إلى فتح موجه cmd.exe كـ system إذا كان مستخدم Windows الحالي لديه الصلاحيات المطلوبة.
بالطبع، من هذا الكود المصدري، يمكنك إنشاء ملف exe مستقل باستخدام pyinstaller.
للحصول على الرموز الأساسية ورموز الانتحال المستخدمة في العملية الحالية:
python.exe tmipe.py printalltokens --current --full --linked