
يحمّل ويشغّل كائنات ELF بالكامل في الذاكرة عبر أنظمة Linux بمعماريتي x86_64/x86، مع حلّ رموز libc في وقت التشغيل لتنفيذ أوامر خفي بعد الاستغلال.
هذه أداة تحميل/تشغيل كائنات ELF في الذاكرة. الهدف هو إنشاء مُحمّل elf واحد يمكن استخدامه لتشغيل القدرات اللاحقة عبر جميع أنظمة تشغيل x86_64 و x86 nix.
الطريقة التي يعمل بها هذا المُحمّل هي أنه يحتوي على كل الكود اللازم لبناء وتحميل كائن ELF لنظام التشغيل الذي تم تجميعه من أجله، وأي شيء يُرسل إليه ليس ملف elf، أو ليس للبنية الصحيحة، أو إذا كان يرتبط بشيء لا يمكن حله، فإنه يخرج دون محاولة التشغيل.
الفرق الرئيسي بين COFFLoader وهذا المُحمّل هو أنه يستخدم التعريفات القياسية من libc الخاصة بنظام التشغيل بدلاً من الاضطرار إلى إعادة تعريف كل دالة مستخدمة.
.
├── includes
│ ├── beacon_api.h
│ ├── beacon_compatibility.h
│ ├── debug.h
│ ├── ELFLoader.h
│ └── minimal_elf.h
├── Makefile
├── README.md
├── SA
│ └── src
│ ├── cat.c
│ ├── chmod.c
│ ├── env.c
│ ├── find.c
│ ├── grep.c
│ ├── id.c
│ ├── ifconfig.c
│ ├── pwd.c
│ ├── tasklist.c
│ ├── uname.c
│ ├── walk.c
│ └── whoami.c
├── Scripts
│ └── beacon_generate.py
├── src
│ ├── beacon_compatibility.c
│ └── ELFLoader.c
└── testobjects
├── getuid.c
├── test2.c
├── test2_duplicatetext.c
└── test.c
6 directories, 26 files
توليد لطباعة الملفات التي تم العثور عليها، كبديل عن find /etc/ -iname *release -exec cat {} \;
أو cat /etc/*release*
Beacon>reset
Beacon>addString /etc
Beacon>addString release
Beacon>addString
Beacon>addint 1
Beacon>addint 1
Beacon>addint 1
Beacon>generate
b'26000000050000002f657463000800000072656c65617365000100000000010000000100000001000000'
./ELFLoader.out ./SA/src/find.o 26000000050000002f657463000800000072656c65617365000100000000010000000100000001000000
توليد لعرض جميع الملفات التي تملك صلاحيات ذاكرة rwx في /proc.
Beacon>reset
Beacon>addString /proc
Beacon>addString rwx
Beacon>addString maps
Beacon>addint 1
Beacon>addint 0
Beacon>addint 0
Beacon>generate
b'27000000060000002f70726f63000400000072777800050000006d61707300010000000000000000000000'
./ELFLoader.out ./SA/src/grep.o 27000000060000002f70726f63000400000072777800050000006d61707300010000000000000000000000
توليد معاملات الأمر chmod 777 /tmp/test.sh.
Beacon>reset
Beacon>addString 777
Beacon>addString /tmp/test.sh
Beacon>generate
b'1900000004000000373737000d0000002f746d702f746573742e736800'
./ELFLoader.out ./SA/src/chmod.o 1900000004000000373737000d0000002f746d702f746573742e736800
هذا هو المثال العام الذي لا يأخذ أي معاملات.
./ELFLoader.out SA/src/uname.o
make x86_64so
make x86_64runner
LD_LIBRARY_PATH=. ./runner.out ./SA/src/env.o