Hacka dig in i VMWare ESXi

Glömt lösenordet till din ESXi server? Eller bara sugen på att ta dig in i någon annans ESXi (som du har lokal access till)?

Inga problem….

(verifierat på ESXi 5.5 – ESXi 6.5)

1. Starta på annat media

Vi börjar med att boota upp servern på en skiva med Ubuntu för att få tillgång till ESXi:s filsystem.

Som i många andra fall där man vill bryta sig in i ett operativsystem börjar vi med att starta värdservern på annat media för att få tillgång till filsystemet. Vi behöver använda ett os som kan läsa och skriva fat16-filsystem.

ESXi använder en Linux-liknande struktur i filsystemet och blir enklast att arbeta med genom att man startar ett parallellt Linux-os. Vi använder Ubuntu som har fördelen att det kan köras helt i ram-minnet i stället för att installeras. Det innebär att vi snabbt kan få tillgång till värdserverns filsystem utan att påverka något i övrigt.

Ubuntu laddar du enkelt hem gratis från Ubuntu.com och bränner ut på optiskt media eller gör en bootbar usb-sticka.

 

2. Sätt lösenord för root i Ubuntu

För att kunna göra det vi behöver måste vi ha root-behörigheter i Ubuntu. Starta en terminalprompt och kör kommandot ”sudo passwd root” för att sätta ett lösenord. Kör sedan kommandot su och ange det nyligen satta lösenordet för att få rätt behörigheter.

 

3. Montera rätt volym

Den partition som du är ute efter på ESXi-installationen heter /dev/sdX5 (X är beroende på vilken bokstav disken fått i ditt system). Om du vill kan du starta Ubuntu-programmet GParted för att ta en titt på vilka olika partitioner som finns, men förändra inget eftersom du då löper stor risk att förstöra värdservern så att den inte startar efteråt.

Skapa mapparna ”mkdir /temp” och ”mkdir /mnt/sdX5”

Montera partitionen med kommandot ”mount /dev/sdX5 /mnt/sdX5”. Det gör att du når partitionen sdX5 via mappen /mnt/sdX5. På /mnt/sdX5 finns en fil som heter state.tgz. Kopiera den filen till /temp och gå till /temp. Placera filen i /temp för att minimera risken att ställa till något på hårddisken där ESXi ligger installerat.

 

4. Packa upp filerna

State.tgz innehåller filen local.tgz som i sin tur innehåller den fil som du är ute efter. Kör kommandot ”tar -xf /mnt/sda5/state.tgz –C /temp/” följt av ”tar -xf /temp/local.tgz –C /temp/” för att packa upp filerna. När du packar upp local.tgz får du en mapp i /temp som heter etc. Gå in i mappen etc.

 

5. Återställ lösenordet

Vi ska nu ta bort lösenordsvärdet för root i filen shadow. Allt mellan de första två kolontecknen ska bort. Låt alla andra värden vara i fred.

I mappen etc finns en fil som heter shadow. Kör kommandot ”nano shadow” för att se innehållet.

På den rad som börjar med ordet ”root” ska du ta bort all text mellan de första två kolontecknen. Notera att lösenordshashen börjar med $1$ vilket betyder att lösenordet är i formatet md5.

Om strängen börjar med $6$ innebär detta att hashvärdet utgörs av sha-512. Om du vill och har tid och möjlighet kan du alltid försöka knäcka lösenordet genom att använda någon av de tjänster som finns på internet för att reversera md5-hashar.

Vi vill här bara in i värdservern, så vi nöjer oss med att återställa det blanka lösenordet. Det gör man genom att helt enkelt ta bort löseordsvärdet, du skall dock behålla sista biten av:: raden. Det skall se ut liknande detta ”root::17745:0:99999:7:::”. Tryck ctrl-o för att spara filen följt av ctrl-x för att avsluta nano.

I shadow-filen kan det hända att du ser att kontot vpxuser har fått ett lösenord. Det innebär att den här värdservern är underkastad en Vcenter-server.

Vpxuser används för kommunikationen mellan Vcenter och värdservern, och att du återställer lösenordet för root påverkar alltså inte förhållandet med Vcenter. Du borde därför inte märka av några konstigheter när du nästa gång arbetar med den här värden i Vcenter.

Kontot vpxuser använder ett sha-512-kodat lösenord och borde ha ett $6$-prefix för sitt hashvärde på lösenordet.

 

6. Packa ihop filerna igen och placera dem rätt

Gå upp ett mappsteg så att du åter står i /temp. Kör kommandot ”tar czf local.tgz etc” för att packa ihop etc-mappen.

Kör sedan kommandot ”tar czf state.tgz local.tgz” för att packa ihop local.tgz i filen state.tgz.

Kör kommandot ”cp state.tgz /mnt/sdX5” för att kopiera tillbaka state.tgz till hårddisken och skriva över den befintliga filen.

 

7. Snygga till och starta om

Nu är lösenordet återställt och vi ska nu bara avsluta snyggt. Koppla loss partitionen genom att köra kommandot ”umount /mnt/sdX5”. Kör sedan kommandot ”reboot” för att starta om Ubuntu.

När detta är klart så plockar du ur Ubuntu-skivan/usb-stickan och startar den fysiska servern som vanligt igen och låter ESXi boota upp.

 

8. Logga in och byt lösenord

När ESXi har startat så loggar du in med root och tomt lösenord. Sätt sedan ett eget lösenord som du garanterat kommer ihåg och dokumenterar noga. Du kan antingen logga in direkt på konsolen med tomt lösenord för root eller ansluta Vsphere-klienten direkt till värdservern och loggar in den vägen.
Oavsett vilken väg du tar så se till att sätta ett lösenord efteråt, du kommer annars att få varningar i klienten ända tills du bytt lösenordet.

Om du använder det grafiska verktyget, tänk på att du bara kan hantera värdserver-lokala konton när du är ansluten till värden och inte till Vcenter.

Processen att återställa lösenordet består av ett ganska stort antal steg och kan kännas ovant för en Windowsadministratör, men kunskapen om hur man återställer lösenordet kan vara synnerligen viktig om du hamnar i en situation där detta har gått förlorat.

Kunskapen kan förstås också missbrukas av personer som vill bryta sig in och stjäla dina vm:ar eller ställa till med annan oreda i miljön. Nu när du vet hur enkelt det är att återställa lösenordet så förstår du säkert hur viktigt det är att se till att ingen obehörig kommer åt dina värdservrar.

Det absolut enklaste och bästa sättet att se till att ingen obehörig person kommer åt dina vm:ar är att säkerställa den fysiska säkerheten kring dina värdservrar. Ingen obehörig person ska kunna komma åt dem, har de den möjligheten är det en smal sak att ta över kontrollen över dem. Detta är sant oavsett vilket os som körs på en server – Windows, Linux, ESX, alla är ganska enkla att bryta sig in i om man har fysisk tillgång till en server.

Även om det bästa är att garantera den fysiska säkerheten kan man också använda sig av någon form av kryptering av systemhårddisken för att skydda ett os. Windows Server har den möjligheten i dag, men VMware har inte själva byggt in något sådant stöd i ESXi. I det fallet får du i stället se till att skydda servern rent fysiskt.