Page cover

Windows

Olika sätt att överföra filer till och från Windows-system. I huvudsak hämtat från HTB Academy.


Överföring genom Base64-kodning

Det finns begränsningar för hur stora filer man kan göra detta med. CMD.exe har t.ex. en begränsning på 8 191 tecken. De övre kommandona i varje steg visar överföring från egen Linux-klient till fjärrklient (Windows) och nedre kommandona visar exfiltrering av fil till egen Linux-klient.

Steg 1 - Ta fram checksumma för filen

# Bash
md5sum <filnamn>
# PowerShell
Get-FileHash "C:\<sökväg till fil>\<filnamn>" -Algorithm MD5 | select Hash

Steg 2 - Base64-koda filen

# Bash
cat <filnamn> | base64 -w 0;echo
# PowerShell
[Convert]::ToBase64String((Get-Content -path "C:\<sökväg till fil>\<filnamn>" -Encoding byte))

Steg 3 - Konvertera tillbaka filen

# PowerShell
[IO.File]::WriteAllBytes("C:\<sökväg>\<filnamn>", [Convert]::FromBase64String("<base64-sträng>"))

Steg 4 - Kontrollera att checksumman stämmer från steg 1


Powershell DownloadFile

Från en Powershell-prompt

Exempel 1:

Exempel 2:


PowerShell DownloadString - Fileless

Använder modulen Invoke-Expression. Invoke-Expression används för att tolka och exekvera en sträng som ett kommando. Den tar ett argument i formen av en sträng innehållandes PowerShell-kod och exekverar den som att den knappades in direkt i kommandotolken.

Exempel 1:

Exempel 2:

Laddar ner en fil och pipe:ar det till Invoke-Expression.


PowerShell Invoke-WebRequest

Fr.o.m PS 3.0 finns det även modulen Invoke-WebRequest. Tar dock längre tid att ladda ner filer än ovanstående. Det går även att använda följande alias istället för Invoke-WebRequest:

  • iwr

  • curl

  • wget

Exempel 1:

Felhantering

Om man stöter på problem med SSL/TLS secure channel (för att certifikatet inte är betrott) kan man ange följande kommando:

Om uppstartskonfigurationen inte är gjord för Internet Explorer så kan man behöva lägga till följande växel efter kommandot:


Resurser

harmj0y har gjort en utförlig lista över fler kommandon:


SMB (oautentiserat)

Steg 1 - Starta en SMB-server

Starta en SMB-server på egen klient med Impackets "smbserver.py".

Steg 2 - Kopiera över önskad fil

Använd kommandot "copy" för att föra över önskad fil till fjärrklient.

SMB (autentiserat)

Steg 1 - Starta SMB-server med inloggningsuppgifter

Om Windows-klienten inte tillåter oautentiserade överföringar så kan man istället starta SMB-servern med specificerade användare-uppgifter.

Steg 2 - Mount:a share på Windows-klienten

Steg 3 - Kopiera över önskad fil


FTP

Steg 1 - Installera pyftpdlib

Steg 2 - Starta FTP-server

Steg 3 - Överföra filer

PowerShell:

FTP-klient (inbyggd i Windows)

Först skapar vi en "kommando"-fil med kommandon vi vill exekvera. Sedan kör vi kommandona och hämtar specificerad fil.

  • -v = visa ej fjärr-serverns svar.

  • -n = ingen autologin vid anslutning.

  • -s: <textfil med kommandon> = specificerar en textfil som innehåller FTP-kommandon och som kommer köras efter att FTP startats.


PowerShell Web Uploads

PowerShell har ingen inbyggd funktion för att ladda upp filer. Man kan dock använda "Invoke-WebRequest" eller "Invoke-RestMethod" för att bygga en uppladdningsfunktion. Det behövs även en webbserver som kan ta emot uppladdningar, detta är dock inte standard i de flesta webbserver-verktyg.

Pythons HTTP.server-modul har en utökad modul som heter "uploadserver" och inkluderar en filuppladdnings-sida. Den sätter upp en webbserver på port 8000.

Steg 1 - Upprätta en webbserver med uppladdningsfunktionalitet

Steg 2 - PowerShell-skript för att ladda upp fil


PowerShell Base64 Web Upload

Man kan även använda "Invoke-WebRequest" och "Invoke-RestMethod" tillsammans med Netcat för att ladda upp filer. Man sätter då upp en Netcat-lyssnare och skickar filen (Base64-strängen) som en POST-request. Slutligen så kopierar man informationen i request:en och använder Base64-avkodning för att konvertera strängen till en fil.

Steg 1 - Sätt upp en Netcat-lyssnare

Steg 2 - Konvertera filen som ska skickas till Base64-sträng

Steg 3 - Skicka filen som en POST-request

Steg 4 - Konvertera tillbaka filen från Base64


SMB Uploads

Vanligtvis tillåter man inte SMB-trafik ut från det interna nätverket. För att komma runt detta kan man nyttja SMB över HTTP m.h.a WebDav. WebDav är en förlängning av HTTP-protokollet och tillåter en webbserver att agera som en filserver. Det stödjer även HTTPS.

Steg 1 - Installera Pythons WebDav-modul

Steg 2 - Starta WebDav-modulen

Steg 3 - Anslut till WebDav-share:en

Steg 4 - Ladda upp filer med SMB


FTP Uploads

Steg 1 - Starta FTP-servern med skriv-rättigheter

Steg 2 - Ladda upp filer

PowerShell

FTP-klient (inbyggd i Windows)


Filkryptering i Windows

Exempel 1:

PowerShell - Kryptering m.h.a "Invoke-AESEncryption.ps1".

Steg 1 - Hämta PowerShell-skriptet

Steg 2 - Överför skriptet med någon av ovanstående metoder

Steg 3 - Importera modulen med PowerShell

Steg 4 - Kryptera önskad fil

Last updated