قاعدة بيانات مكتبة كبيرة للمساعدة في الاستغلال الثنائي على نظام Linux. يمكن أن تساعد هذه الأداة في تحديد المكتبات غير المعروفة من خلال توفير موقع الرموز المعروفة، ويمكنها المساعدة في تحديد اسم الحزم التي تحتوي على مكتبة معينة ويمكنها العثور على إصدار تصحيح الأخطاء للمكتبة التي تعمل معها.
بمجرد التعرف على المكتبة، يمكنك تفريغ معلومات مفيدة مثل الرموز (كل من الرموز المصدرة والمواقع المحسوبة الخاصة المفيدة المفيدة للاستغلال)، والأدوات الذكية لسلاسل ROP أو طلقة واحدة (AKA الأدوات السحرية أو الأدوات الواحدة) وقيودها.
الاستخدام مستوحى من قاعدة بيانات libc الممتازة.
وهو يدعم العديد من البنى بما في ذلك:
هناك العديد من المكتبات المفهرسة على مدى توزيعات عديدة تمتد لسنوات عديدة. المكتبات المفهرسة هي:
الطريقة المفضلة هي تنزيل الإصدار الأخير واستخراجه فقط. سيقوم Karkinos بإدارة التحديثات بنفسه من تلك النقطة فصاعدًا. وبدلاً من ذلك، يمكنك استنساخ هذا المستودع.
بمجرد حصولك على Karkinos من خلال أي من الطريقتين، يمكنك بعد ذلك الوصول إلى الأداة عن طريق تشغيل:
$ ./kark.py --help
في التشغيل الأول، سيحاول استخراج قواعد البيانات من الملفات المضغوطة، وسوف تحتاج إلى تثبيت ثنائيات xz
و cat
وإتاحتها من خلال PATH
env var.
usage: kark.py [-h] [--libdb {glibc,libstdc++}] [--distro DISTRO]
[--arch {x86,amd64,i386,arm,arm64,mips,mips64,ppc,ppc64,sparc,sparc64,m68k,hppa,sh4}]
[--endian {little,big}]
{find,dump,info,update} ...
description:
karkinos is a library database to assist with exploitation by helping to
identify libraries from known offsets or to dump useful offsets from those
identified libraries. Each database indexes symbols, gadgets and where
possible one shot gadgets (AKA magic gadgets or one gadgets).
architectures indexed:
- x86 (amd64, i386)
- arm (arm, arm64)
- mips (mips, mips64)
- ppc (ppc, ppc64)
- sparc (sparc, sparc64)
- m68k
- hppa
- sh4
- riscv
libraries indexed:
- glibc
- libstdc++
- glibc-ld
- libgcc
- musl
commands:
- find find a library by symbol offsets, file, build id or file hash
- dump dump symbols/gadgets for a given library
- info print some information about a specific library
- update check for updates to the database
- version display version information and exit
positional arguments:
{find,dump,info,update}
command to execute
args arguments for specific command, see examples
optional arguments:
-h, --help show this help message and exit
--libdb {glibc,libstdc++}
the library database to use
--distro DISTRO the linux distribution to filter in symbol search
--arch {x86,amd64,i386,arm,arm64,mips,mips64,ppc,ppc64,sparc,sparc64,m68k,hppa,sh4}
architecture to filter in symbol search
--endian {little,big}
endianess to filter in symbol search
examples:
./kark.py find fgets b20 puts 9c0 fwrite 8a0
./kark.py find 50390b2ae8aaa73c47745040f54e602f
./kark.py find b417c0ba7cc5cf06d1d1bed6652cedb9253c60d0
./kark.py find /lib/x86_64-linux-gnu/libc.so.6
./kark.py --arch arm --endian big find system 440
./kark.py --distro ubuntu fgets b20 puts 9c0
./kark.py dump centos_glibc-2.12-1.107.el6_4.2.x86_64
./kark.py dump opensuse_glibc-2.19-16.9.1.i686 fgets system str_bin_sh
./kark.py info ubuntu_libc6-udeb_2.27-3ubuntu1_amd64
./kark.py update
@0xb0bb