karkinos
1.0.0
Linux에서 바이너리 활용을 지원하는 대규모 라이브러리 데이터베이스입니다. 이 도구는 알려진 기호의 위치를 제공하여 알 수 없는 라이브러리를 식별하는 데 도움이 될 수 있고, 특정 라이브러리가 포함된 패키지 이름을 찾는 데 도움이 될 수 있으며, 작업 중인 라이브러리의 디버깅 버전을 찾을 수 있습니다.
라이브러리가 식별되면 기호(내보낸 기호 및 활용에 유용한 특별하고 유용한 계산 위치 모두), ROP 체인용 가젯 또는 원샷(AKA 마법 가젯 또는 단일 가젯) 및 해당 제약 조건과 같은 유용한 정보를 덤프할 수 있습니다.
사용법은 뛰어난 libc-database에서 영감을 받았습니다.
다음을 포함한 다양한 아키텍처를 지원합니다.
수년에 걸쳐 많은 배포판에 걸쳐 색인화된 많은 라이브러리가 있습니다. 색인이 생성된 라이브러리는 다음과 같습니다.
선호되는 방법은 최신 릴리스를 다운로드하고 추출하는 것입니다. 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