Transferência de Arquivos

Configurando Servidor Web

Python

Abre um servidor web na porta 9999 (a porta padrão é a 8000):

# Python 2
python -m SimpleHTTPServer 9999

# Python 3
sudo python3 -m http.server 9999

PHP

php -S 0.0.0.0:<port>

Ruby

ruby -run -e httpd . -p <port>

Baixando Arquivos de Servidores Web

Para baixar os arquivos dos servidores web acima (PHP e Python), utilize um dos comandos abaixo:

Linux

curl

wget

Windows - Fileless

Essa técnica consiste em executar o arquivo diretamente na Memória RAM, sem precisar salvar no HD, fazendo assim com que o ataque fique em modo stealth, conseguindo realizar bypass em ferramentas de segurança, como o AV.

WebClient

Invoke-WebRequest (IWR)

Internet Explorer

certutil

WinHttpRequest

Msxml2

BitsAdmin, uma ferramente nativa do Windows que permite fazer download (e também upload) de arquivos.

Windows - Salvando no HD

Powershell

Primeiro é preciso abrir uma sessão na máquina alvo

Após isso podemos transferir arquivo (de maneira bidirecional), com as seguintes maneiras:

WebClient

Caso tenho problemas de certificado ao realizar download de arquivos via WebClient, execute o comando abaixo:

Invoke-WebRequest (IWR)

Certutil

nc

Ncat

RDP

GfxDownloadWrapper

NGNIX

Criando diretório e atribuindo permissões

Crie arquivo de configuração em /etc/nginx/sites-available/upload.conf, com o seguinte conteúdo:

Criar link simbólico

Reiniciando o Ngnix

OBS.: Caso tenho algum erro nesse ponto, verifique o arquivo /var/log/nginx/error.log para obter mais informações.

Removendo padrões do ngnix

Agora basta enviar um arquivo via PUT.

O arquivo enviado irá ser enviado para /var/www/uploads/myuploads/.

PHP

Python 2 e 3

Ruby

Perl

Javascript

Primeiro salve o arquivo abaixo com o nome downloader.js (ou outro nome da sua preferência)

Agora execute-o através do cscript.exe, que é nativo Windows

VBScript

Primeiro salve o arquivo abaixo com o nome downloader.vbs (ou outro nome da sua preferência)

Agora execute-o através do cscript.exe, que é nativo Windows

Baixando Arquivos de Servidores FTP

Para este cenário, iremos precisar ter as credenciais de autenticação no servidor FTP. Todo o seu conteúdo será baixado de form recursiva

SCP (Download/Upload)

Arquivos do Linux para Linux

Certifique-se de que o host remoto tenha o SSH instalado, pois esse processo irá pedir a senha do usuário em questão.

OBS.: Utilize o parâmetro -r depois do scp para enviar um diretório completo de modo recursivo.

Arquivos do Windows para Linux

Ao colocar o caminho absoluto em sistema Windows, temos que fazer um pouco diferente, pois o : é utilizado como delimitador entre host e path, porém o Windows tem um : após sua unidade de disco (Ex.: C:\), então devemos escapar isso utilizando aspas duplas e invertendo as barras.

Clonando Site

Esse tipo de clone é com recursividade

Netcat

Método 1

Método 2

OBS.: Utilizando esse segundo método, assim que o host receber o arquivo, o nc será finalizado, porém ele continuará baixando o arquivo em background.

Método 3

xfreerdp

Irá ser criado a unidade data no Windows, que pode ser acessada no /tmp do Linux.

Socat

Recebendo arquivo:

Enviando arquivo:

Base64

Copiando e Colando

No host onde contém o arquivo, iremos digitar o comando:

Copie a saída encodada em base64 e execute no host onde o arquivo irá ser salvo:

Enviando via POST

Também podemos encodar um arquivo e enviá-lo via POST. Primeiro vamos abrir o nosso listener para receber o conteúdo do arquivo em base64.

Agora na máquina alvo, execute:

SMB

Esse método utiliza o Linux como um servidor SMB e iremos acessar os seus arquivos através do Windows (PowerShell), como em um mapeamento de unidade de rede.

impacket-smbserver

Execute no Linux:

Execute no Windows de duas maneiras, via web browser / UNC, com o caminho:

Ou se preferir, via powershell, da seguinte maneira:

No comando New-PSDrive... não é necessário ter mesmo name que foi setado no Linux. Caso precise realizar mais de uma conexão, altere esse valor.

smbserver.py (Impacket)

Compartilhando o arquivo via Linux

Baixando o arquivo pelo Windows

FTP

Download

Máquina que irá fornecer o arquivo

Depois acesse o ftp com o usuário anonymous a partir da máquina que irá receber o arquivo

Upload

Na máquina atacante vamos abrir um FTP com permissão de escrita, para que assim, a máquina comprometida realize upload de arquivos.

Realizando upload na máquina alvo

UploadServer

Esse método é um pouco diferente dos demais, pois apesar de termos uma máquina atacante sendo utilizada como servidor, dessa vez será um servidor que irá aceitar upload de arquivos, ou seja, a máquina alvo irá realizar enviar os arquivos para a máquina atacante. Se quiser baixar arquivos do server, acesse a raiz (http://<ip>:<port>) e se quiser fazer um upload, acesso http://<ip>:<port>/upload.

Agora que já temos um servidor que aceita upload de arquivos, vamos acessá-lo a partir de um Windows (nossa máquina alvo) e enviar arquivos através do script PSUpload.ps1. Note que temos que passar o /upload no final da URI, porém ao recebermos o arquivo, ele estará no mesmo diretório em que o servidor foi executado.

Ou então, fazer um upload a partir do Python

TempDavFS

Ferramenta semelhante ao smbserver, para disponibilizar arquivos entre computadores

Sites

Last updated

Was this helpful?