PsExec och de otäcka saker det kan göra
de flesta verktyg vi använder för att administrera nätverk tenderar att vara ett tveeggat svärd. Dessa verktyg ger stor flexibilitet och möjliggör enklare hantering av enheter, tjänster och programvara. I rätt händer har vi inget att oroa oss för, men i fel händer blir våra fjärradministrationsverktyg kraftfulla vapen som kan användas av angripare för att utföra ett brett utbud av skadliga aktiviteter., I den här artikeln kommer jag att prata om ett verktyg som passar denna beskrivning. Detta verktyg är Microsoft Sysinternals PsExec verktyg. I denna artikel kommer jag att ge en översikt över vad PsExec är och vad dess kapacitet är ur administrativ synvinkel. Efter detta kommer jag att ta rollen som en motståndare och visa några av de otäcka saker som den kan användas för i ett nätverk.
den här artikeln syftar till att tjäna två målgrupper., Den första publiken består av systemadministratörer som ansvarar för att skydda sina nätverk från användning av verktyg som PsExec för skadliga ändamål. Den andra avsedda publiken består av etiska hackare och professionella penetrationstestare som kan få viss nytta av att veta lite mer om några av de saker som PsExec kan användas för., Oavsett vilken publik du faller i dess viktiga att jag ger ansvarsfriskrivningen att några av de kommandon och tekniker jag diskuterar här kan vara ganska olagligt beroende på vilken omständighet de används, så jag uppmanar att fortsätta med försiktighet om några åtgärder du tar kan vara tveksamt.
Vad är PsExec?
PsExec-verktyget utformades som en del av pstools-sviten, som ursprungligen utvecklades av Mark Russinovich från Sysinternals, som nu ägs av Microsoft., Verktyget myntas som ett kommandoradsbaserat fjärradministrationsverktyg och möjliggör fjärrkörning av processer på andra system. Det är mycket flexibelt eftersom det kommer att möjliggöra användning av alternativa autentiseringsuppgifter snarare än de av användaren som utför det, vilket innebär att du kan hantera enheter åtskilda av domän-och webbplatsgränser. Inte bara kan PsExec köra program på ett fjärrsystem, men det kan också omdirigera konsolingång och utgång mellan system så att du kan använda interaktiva verktyg på distans.,
Till skillnad från de flesta Microsoft tillhörande programvara, de inre arbetena i PsExec är ingen hemlighet och är ganska enkelt. PsExec tillåter omdirigeringar av inmatning och utmatning av en fjärrstartad körbar genom användning av SMB och den dolda $ADMIN-andelen på fjärrsystemet. Med detta dela PsExec använder Windows Service control Manager API för att starta PsExecsvc service på fjärrkontrollen system som skapar en namngiven pipe som PsExec kommunicerar med. Detta namngivna rör är vad som gör det möjligt för input / output omdirigering tillbaka till det system som lanserade PsExec.,
spela bra med PsExec
enligt sin ursprungliga design, kan PsExec användas för att göra ett antal mycket användbara saker som kan aide systemadministratörer. Ett sådant scenario som jag har befunnit mig i ett antal gånger är en Där jag ” har känt DNS-namnet på en dator men inte de exakta IP-konfigurationsinställningarna (DNS-server, default gateway, etc). Under normala omständigheter skulle jag använda ipconfig på det lokala systemet för att bestämma denna information., I de allra flesta fall kan det dock innebära att jag måste köra till en annan plats eller låna en användares dator, vilket i sig minskar produktiviteten för dagen. Eftersom ipconfig inte har kapacitet för att köras mot en icke-lokal maskin, kan jag använda PsExec för att starta den framgångsrikt, som visas i Figur 1.
Figur 1: Använda PsExec för att starta ipconfig på ett fjärrsystem
Efter att PsExec har anropats betecknas fjärrdatorn efter det dubbla snedstrecket ( \ \ ), följt av kommandot ipconfig., När du kör PsExec är det standard för katalogen% SYSTEM % på fjärrsystemet du försöker köra kommandot på, varför jag inte behövde ange en fullständig sökväg här. Slutligen anges / all-omkopplaren för ipconfig för att mata ut all tillgänglig ipconfig-information.
en annan vanlig implementering av PsExec är att använda den för distribution av uppdateringar, patchar och snabbkorrigeringar. Även om den typiska föredragna metoden för att göra detta är genom grupppolicy kan det finnas fall där den metoden är för långsam., Jag har varit i många situationer där jag har behövt distribuera en högprioriterad säkerhetspatch som inte kan vänta på varaktigheten av standardgrupprincip-uppdateringstiden, så jag har vänt mig till PsExec för att distribuera filen på ett snabbare sätt. Ett exempel på detta ses i Figur 2.
Figur 2: lansera en körbar patch på distans
kommandobilden ovan använder några ytterligare funktioner. Först märker du att det finns två datornamn åtskilda med kommatecken efter dubbel snedstreck (\\)., PsExec kan du ange flera målenheter här, eller alternativt, en fil som innehåller en lista över enhetsnamn eller adresser. Kommandot innehåller också / C-omkopplaren, som används när du vill ange en fil på det lokala systemet som ska utföras på fjärrsystemet. I det här fallet har jag angivit filplåstret.exe. Filen finns på mitt lokala system vid roten av C-enheten,så jag ” ve var tvungen att ange den fullständiga sökvägen. Växeln / C ser som standard ut i katalogen % SYSTEM% på det lokala systemet., Som du kan se körs filen framgångsrikt och utmatningen omdirigeras tillbaka till den lokala konsolen som vi kör PsExec från.
en sista vänskaplig användning av PsExec i har visat sig vara mycket bekvämt att använda den för att fjärrstyra system med en högre behörighetsnivå när du använder ett system under ett lägre privilegierat konto. Jag kan inte räkna antalet gånger jag har varit på plats som arbetar på en användardator och jag har fått ett samtal som kräver att jag utför en administrativ funktion som en lösenordsändring., Naturligtvis, i en Active Directory-miljö kunde jag bara RDP i en domänkontrollant och utföra denna förändring, men jag har haft flera kunder som inte använder active directory eller RDP av olika skäl. När så är fallet är det ganska lätt att dyka i en USB – flash-enhet och komma åt kopian av PsExec jag har installerat på den. När det gäller Figur 3 har jag använt PsExec för att återställa ett användarlösenord på ett system genom att höja privilegierna ” för net-verktyget som exekveras av PsExec.,
Figur 3: ändra en användares lösenord genom att höja PsExec”s privilegier
göra otäcka saker med PsExec
låt nu”S ta en promenad på den mörka sidan och titta på några saker som kan göras med hjälp av p>
sExec av dem med potentiellt onda avsikter. Först och främst, låt oss överväga ett scenario där en angripare har fått referenser för ett system men inte har någon direkt tillgång till det., I det här fallet syftar angriparen till att få GUI eller kommandoradsstyrning av systemet, men de vägar som är tillgängliga för användningen av dessa referenser kan vara begränsade. En metod som kan vara användbar i denna situation är att använda PsExec för att köra en bakdörr körbar på systemet, som vad som visas i Figur 4.
Figur 4: en skadlig körbar som lanseras på distans
i fallet med denna skärmdump använder en fjärrangripare PsExec med / C-omkopplaren för att köra den lokala filen nc.exe på fjärrsystemet., Tillsammans med detta används-u och-p-omkopplarna för att ange det komprometterade användarnamnet och lösenordet så att filen kan utföras med root-nivåbehörighet. Unbeknownst till offret, filen som tyst körs i faktiskt en bakdörr som gör det möjligt för angriparen att ansluta till systemet och få en administrativ kommandotolk.
en intressant sak om attacken vi just tittat på är att du faktiskt inte ens behöver en användares lösenord för att kunna utföra den. I all verklighet, allt du behöver är användarnamn och lösenord hash av användaren., I Windows tillämpas matematiska beräkningar på användartillförda lösenord för att göra dessa lösenord till en krypterad sträng med fast längd, kallad hash. Dessa hashar är en säkerhetsfunktion som är utformad för att hålla tydliga textlösenord från att överföras över ett nätverk. När autentisering sker skickas dessa lösenordshashar från en värd till en annan. Använda PsExec detta kan utnyttjas genom att helt enkelt leverera lösenord hash istället för lösenordet, som visas i Figur 5.,
Figur 5: använda ett lösenord hash för att köra en fil på distans
det här exemplet är detsamma som det som visas i Figur 4, den enda skillnaden är att ett lösenord hash används i stället för lösenordet. Mottagningssystemet har inga problem att acceptera denna hash för autentiseringsändamål. Det finns en mängd olika metoder för att erhålla lösenord hashar som är lite utanför ramen för denna artikel. Jag har skrivit en annan artikel om detta ämne som ses här.,
ett annat snyggt trick som PsExec möjliggör är möjligheten att komma åt filer och spawnprocesser med det inbyggda systemet. Systemkontot på en Windows-dator är det mest kraftfulla kontot och ger tillgång till ganska mycket vad som helst, inklusive vissa objekt som inte är tillgängliga av administratörskontot och användarskapade konton.. Figur 6 ger ett exempel för åtkomst till regedit-programmet.,
Figur 6: åtkomst till offrets register
kommandot ovan körs direkt på ett lokalt system men anger-s-omkopplaren för att kunna använda det lokala systemkontot. Detta kombineras med-i (interactive) alternativet som körs regedit i interaktivt läge. Kör detta kommando kommer att starta regedit med systemåtkomst som ger ytterligare tillgång till några intressanta filer. Ett sådant exempel på detta är SAM-filen som innehåller användarlösenord hashar., Med tanke på rätt motivation kan en angripare med tillgång till ett system och PsExec enkelt extrahera alla lösenordshashar från systemet med hjälp av denna teknik, vilket potentiellt ger honom information som kan möjliggöra kompromiss mellan andra system eller konton.
några varningar
referenser i clear – om du är orolig för vem som kanske lyssnar på din nätverksaktivitet är PsExec förmodligen inte det bästa verktyget att använda., PsExec överför alla användaruppgifter som levereras till den i klar, vilket innebär att om du levererar ett användarnamn och lösenord för att komma åt ett system på distans, kan någon med en kopia av Wireshark eller tcpdump running avlyssna autentiseringsuppgifterna.
Antivirus Detection-detta brukade inte vara så mycket av ett problem, men nu när de flesta virusscanningsprogram gör en viss nivå av system-och minnesövervakning kommer de flesta av dem att fånga PsExec som används på det system de övervakar., Om du gör en penetration test på ett Windows-system och PsExec isn”t fungerar som det ska vara då chansen är att du blir blockerad av antivirus, och ännu värre, du kan låta slutanvändaren vet att du leker med deras system.
PsExec och Metasploit-när det är möjligt använder jag aldrig PsExec av sig själv längre. En modifierad version av PsExec ingår nu i Metasploit Framework. Metasploit är en penetrationstest ram som ger en hel del funktionalitet., Om du vill använda PsExec för någon form av säkerhetsbedömning överväger du att titta på den extra funktionaliteten Metasploit ger den. Jag använde faktiskt den här versionen av PsExec i en artikel som jag skrev tidigare om att passera Hashteknikerna.
slutsats
PsExec-verktyget har många användningsområden för en mängd olika intentioner hos användaren. Förhoppningsvis, denna artikel har hjälpt till att utbilda dig på några av dess funktioner och hur de kan användas för fel-gör. PsExec är den typ av verktyg som gör det möjligt för en angripare att vara kreativ., Även om jag bara har täckt några unika användningsområden för verktyget här skulle jag våga säga att dussintals eller till och med hundratals intressanta attackvektorer är tillgängliga med hjälp av dess funktionsuppsättning. Vid något tillfälle kommer jag att planera för att skriva en uppföljningsartikel som innehåller mer intressanta och avancerade användningsområden för PsExec. Under tiden, om du har några intressanta PsExec tricks då gärna skriva till mig direkt för att ingå i nästa artikel.