
Charge et exécute des objets ELF entièrement en mémoire sur les systèmes Linux x86_64/x86, en résolvant les symboles libc à l'exécution pour une exécution furtive de commandes en post-exploitation.
Ceci est un chargeur/exécuteur d'objets ELF en mémoire. L'objectif est de créer un chargeur ELF unique qui puisse être utilisé pour exécuter des capacités ultérieures sur tous les systèmes d'exploitation nix x86_64 et x86.
Le fonctionnement de ce chargeur est qu'il contient tout le code nécessaire pour construire et charger un objet ELF pour l'OS pour lequel il a été compilé. Tout ce qui lui est envoyé qui n'est pas un fichier elf, qui n'est pas pour la bonne architecture, ou qui lie quelque chose qui ne peut pas être résolu, provoque sa sortie sans tenter d'exécution.
Une différence clé entre le COFFLoader et celui-ci est qu'il utilise les définitions standard de la libc de l'OS au lieu de devoir redéfinir chaque fonction utilisée.
.
├── 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
Génère pour afficher les fichiers trouvés, remplacement de find /etc/ -iname *release -exec cat {} \;
ou 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
Génère pour lister tous les fichiers avec des permissions mémoire rwx dans /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
Génère les arguments pour 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
C'est l'exemple générique qui ne prend aucun argument.
./ELFLoader.out SA/src/uname.o
make x86_64so
make x86_64runner
LD_LIBRARY_PATH=. ./runner.out ./SA/src/env.o