De opdracht chroot creëert een geïsoleerde omgeving op Linux door de hoofdmap voor alle actieve processen te wijzigen.
Wilt u applicaties of services uitvoeren in een geïsoleerde ruimte op Linux? Of misschien wilt u een toepassing testen en debuggen zonder dat deze de rest van uw systeem verstoort? Als dat zo is, wil je meer leren over chroot, een krachtig mechanisme dat in Linux is ingebouwd waarmee je een aparte omgeving binnen je systeem kunt creëren.
Laten we chroot in detail bekijken, meer te weten komen over de voordelen, use cases, hoe het op een Linux-systeem moet worden ingesteld en, indien nodig, hoe we eraan kunnen ontsnappen.
Wat is chroot in Linux?
chroot of change-root is misschien wel een van de gemakkelijkste en oude vormen van containerisatiesoftware waarmee een gebruiker veilig applicaties en services kan sandboxen. Sandboxing, in computertermen, is het proces van het isoleren van een programma in een besloten ruimte met vooraf gedefinieerde bronnen.
Als je bekend bent met
Docker en hoe het werkt, kun je chroot zien als een zwaar uitgeklede versie ervan. chroot werkt door de hoofdmap van een programma te wijzigen, de toegang en zichtbaarheid te beperken en zo een extra isolatie- en beveiligingslaag te bieden.In wezen maakt u een aparte map, kopieert u alle afhankelijkheden van het programma naar de nieuwe map en voert u vervolgens de chroot-opdracht uit. Hierdoor kan het programma correct functioneren terwijl het geen toegang heeft tot het basisbestandssysteem.
Het chrooten van een programma is een geweldige manier om de betrouwbaarheid ervan in een veilige ruimte te testen zonder de daadwerkelijke systeembestanden te wijzigen. Bovendien kunt u ook het beveiligingsrisico verminderen dat wordt veroorzaakt door een gecompromitteerd pakket, aangezien in een chroot-omgeving het gecompromitteerde pakket geen toegang heeft tot gevoelige systeembestanden en deze niet kan wijzigen.
Het programma kan alleen bestanden openen en bekijken die zijn geïmporteerd naar de gechroote directory, ook wel bekend als een "chroot jail". Dit zorgt ervoor dat het programma en zijn subprocessen het basissysteem niet verstoren.
Wat is een chroot-gevangenis?
Een chroot-jail is een geïsoleerde omgeving waar chroot-programma's zich bevinden en worden uitgevoerd. De term chroot jail is afgeleid van het concept dat het proces en zijn subprocessen binnen de chroot-omgeving plaatsvinden hebben geen toegang tot of zicht op het basisbestandssysteem en zitten vast binnen de grenzen van chroot met vooraf bepaalde bronnen.
Nu het concept van chroot je duidelijk is, laten we aan de slag gaan en leren hoe je een chroot-gevangenis kunt maken en processen erin kunt spawnen.
Hoe een chroot-gevangenis te maken en programma's erin uit te voeren
Een chroot-jail is in wezen een map die alle vereiste bronnen, bestanden, binaire bestanden en andere afhankelijkheden bevat die een programma nodig heeft om correct te functioneren.
In tegenstelling tot een gewone Linux-omgeving is de omgeving van de chroot-jail echter zeer beperkt en heeft het programma geen toegang tot externe of aanvullende bestanden en systeembronnen.
Om bijvoorbeeld de Bash-shell in een chroot-jail uit te voeren, zou je het Bash-binaire bestand en al zijn afhankelijkheden naar de chroot-directory moeten kopiëren.
Hier zijn de stappen om een chroot-jail te maken en een Bash-shell te spawnen:
- Om een programma met succes te laten werken, moet u al zijn afhankelijkheden naar de gechroote map kopiëren. Laten we het binaire bestand zoeken, in dit geval Bash, en de locatie van al zijn afhankelijkheden met behulp van de commando's which en ldd:
welke bash
ldd /usr/bin/bash - Nu je de locaties van het binaire bestand en zijn afhankelijkheden kent, kopieer je ze naar de directory die je in een chroot-jail wilt veranderen. Gebruik de opdracht mkdir om de benodigde mappen aan te maken en gebruik het cp-commando, kopieer alle bestanden naar de overeenkomstige mappen:
mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
- Eindelijk, met het programma en zijn afhankelijkheden gekopieerd, kunt u de chroot-opdracht uitvoeren met verhoogde rechten met behulp van het sudo-voorvoegsel om de chroot-omgeving in de gekozen map te spawnen. Standaard zal het een Bash-shell spawnen. Hier is de opdracht om in te typen:
sudo chroot mapnaam
Dat zijn alle stappen om een chroot-gevangenis te spawnen en er een programma in uit te voeren.
Hoe te ontsnappen uit een chroot-gevangenis
Hoewel chroot-jails goed zijn voor het testen van onstabiele software, zijn ze ook handig bij het afhandelen van SSH-verbindingen, aangezien het chrooten van verbonden gebruikers een van de vele is manieren om uw SSH-server te beveiligen.
Aan de andere kant, als je een penetratietester bent en bent ingelogd op de SSH-server van je doelwit, kan het frustrerend zijn om te ontdekken dat het een gechroote omgeving is en als een doodlopende weg aanvoelen.
Er zijn echter nogal wat manieren om uit een verkeerd geconfigureerde chroot-gevangenis te ontsnappen, sommige vereisen C-programmeervaardigheden, terwijl andere kunnen worden geautomatiseerd met tooling. Een paar eenvoudige manieren om te ontsnappen aan een chroot zijn:
- Geneste chroot-oproepen
- Geneste chroot-oproepen met opgeslagen bestandsbeschrijving
- Mount root-methode
- procs ontsnappen
- ontsnapping
Houd er rekening mee dat om chroot-escape uit te voeren met een van deze methoden, u geëscaleerde privileges in het systeem nodig heeft. Lees meer over deze ontsnappingsmethoden door naar te gaan chw00t's GitHub-repository, een automatiseringstool voor chroot-escape.
Nu weet je alles over chroot in Linux
Nu je weet wat chroot is, hoe het werkt en hoe je het moet implementeren, zou je applicaties moeiteloos vanuit de terminal moeten kunnen sandboxen. Houd er rekening mee dat er, zoals u weet, meerdere manieren zijn om uit een gechroote omgeving te ontsnappen.
Dit laat zien dat chroot op geen enkele manier is ontworpen om als beveiligingsfunctie te worden geïmplementeerd. U moet chroot dus met grote voorzichtigheid gebruiken, aangezien een onjuiste configuratie kan leiden tot een averechts effect en de veiligheid van uw systeem in gevaar kan brengen.
Het is het beste om vast te houden aan speciale sandboxing-oplossingen zoals containerisatiesoftware of virtuele machines. Beiden zijn gecentreerd rond sandboxing en beveiliging, dus tenzij er een nieuwe zero-day in de stad is, hoef je je geen zorgen te maken over de veiligheid en integriteit van je systeem.
Als u niet zeker weet welke u moet kiezen tussen containerisatie- en virtualisatiesoftware, moet u beide uitproberen en zelf zien welke beter is.