Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
FFM — Modo de Luta pela Liberdade: plataforma de hacking open source | Kitploit
Ferramentas/GitHubGitHub/justicerage/ffm
Escalada de PrivilégiosMovimento LateralExfiltração de DadosColeta de InformaçõesPós-ExploraçãoTestes de PenetraçãoComando e ControleUtilitários e FrameworksRed Teaming
GitHubjusticerage/ffm

FFM

Modo de Luta pela Liberdade: plataforma de hacking open source

34947há 4 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

Modo de Luta pela Liberdade (FFM)

FFM é um harness de hacking que você pode usar durante a fase de pós-exploração de um engajamento de red-teaming. A ideia da ferramenta foi derivada de uma conferência de 2007 do @thegrugq.

Foi apresentada no SSTIC 2018 (vídeo) e o deck de slides que a acompanha está disponível em esta url. Se você não estiver familiarizado com esta classe de ferramentas, é fortemente recomendado dar uma olhada nelas para entender qual é o propósito de um harness de hacking. Todos os comentários estão incluídos nos slides.

Este projeto é distribuído sob os termos da Licença GPL v3.

Documentação

A documentação principal está neste README e nos módulos de comando em commands/. A palestra do SSTIC mencionada acima continua sendo o melhor background de alto nível sobre como o harness deve ser usado. Material adicional de walkthrough está disponível em:

  • https://ice-wzl.gitbook.io/hacknetics/c2-frameworks/ffm-documentation

Contribuidores

  • ice-wzl contribuiu com comandos, documentação e refatorações durante a história do projeto.

Instalação

Instalação com Docker

  • Com a diversidade de prompts de terminais modernos, recomendamos fortemente usar docker com esta ferramenta.
  • Utilizar o Dockerfile neste repositório reduzirá drasticamente os erros em potencial encontrados.
  • Utilizar um contêiner para interagir com hosts remotos também é mais seguro. Se você fosse explorado enquanto interage com um host remoto, eles estariam no seu contêiner em vez do seu host real. Vamos torcer para que isso não aconteça.
  • Certifique-se de ter o Docker instalado no seu sistema local
root@kitploit:~
git clone https://github.com/JusticeRage/FFM.git
cd /FFM

docker build Docker_Install/ -t ffm:ffm

docker image list 
REPOSITORY                TAG         IMAGE ID      CREATED        SIZE
localhost/ffm             ffm         fb6dd17e3b91  9 minutes ago  614 MB
docker.io/library/ubuntu  22.04       3b418d7b466a  2 weeks ago    80.3 MB

#execute seu novo contêiner e acesse um prompt /bin/bash como root
docker run -it --entrypoint /bin/bash -u 0 fb6dd17e3b91
  • Depois de entrar no seu contêiner, defina a passwd para root e neo
  • su neo e agora você está pronto

Instalação sem Docker

  • Não recomendado
root@kitploit:~
 git clone https://github.com/JusticeRage/FFM.git
 cd /FFM
 pip install -r requirements.txt

Uso

O objetivo de um harness de hacking é atuar como um auxiliar que automatiza tarefas comuns durante a fase de pós-exploração, mas também protege o usuário contra erros que possa cometer.

É uma instrumentação do shell. Execute ./ffm.py para ativá-lo e você pode começar a trabalhar imediatamente. Os comandos são distribuídos nos pequenos módulos em commands/, com commands/command_manager.py lidando com descoberta e registro. Os principais grupos são enumeração, ajuda, stealth, transferência e execução.

Existem dois comandos que você precisa conhecer:

  • Digite !list para exibir todos os comandos fornecidos pelo harness.
  • Digite !list tags para ver as diferentes tags nas quais os comandos podem ser agrupados
root@kitploit:~
!list tags
Lista de comandos disponíveis:
	 enumeration
	 execution
	 help
	 stealth
	 transfer
  • Agora você pode digitar !list enumeration (ou uma das outras tags) para ver comandos que se enquadram nessa categoria.
root@kitploit:~
!list enumeration
Lista de comandos disponíveis:
	!backup-hunter: Caça por arquivos de backup
	!info: Retorna CPU(s), Arquitetura, Memória e Versão do Kernel para a máquina atual.
	!log: Alterna o registro (logging) da entrada e saída do harness para um arquivo.
	!mtime: Retorna arquivos modificados nos últimos X minutos
	!os: Exibe a distribuição da máquina atual.
	!db-hunter: Caça por arquivos .sqlite, .sqlite3 e .db
	!sshkeys: Caça por chaves SSH privadas e públicas na máquina atual.
	!suid: Encontra binários SUID, SGID na máquina atual.
	--snip--

  • Digite SHIFT+TAB para realizar a conclusão com tab na máquina local. Isso pode ser útil se você estiver conectado via SSH em um computador remoto, mas precisar referenciar um arquivo localizado na sua máquina.

Lista de funcionalidades

Este harness de hacking fornece algumas funcionalidades descritas abaixo. Conforme descritas, a filosofia de design por trás da ferramenta também será apresentada. Não se espera que todos os comandos implementados no FFM sejam adequados para você. Cada um tem sua própria maneira de fazer as coisas, e ajustar o harness à sua necessidade específica provavelmente exigirá que você modifique parte do código e/ou escreva alguns plugins. Muito esforço foi dedicado para garantir que esta seja uma tarefa indolor.

Comandos

Comandos de Enumeração

  • !os é um comando extremamente simples que apenas executa cat /etc/*release* para mostrar qual SO a máquina atual está executando. Provavelmente é mais valioso como uma demonstração de que, no contexto de um harness de hacking, você pode definir aliases que funcionam através dos limites das máquinas. Conecte-se via SSH a qualquer computador, digite !os e o comando será executado. Os comandos de enumeração residem em commands/enumeration_commands.py, os comandos de ajuda em commands/help_commands.py, e os comandos relacionados a stealth estão divididos entre commands/stealth_commands.py, commands/notty_sudo.py e commands/log_control.py.
  • !backup-hunter Caça por arquivos de backup
  • !info Retorna CPU(s), Arquitetura, Memória e Versão do Kernel para a máquina atual.
  • !log Alterna o registro (logging) da entrada e saída do harness para um arquivo. Implementado em .

Comandos de Transferência

  • Comandos que ajudam a puxar e enviar arquivos, bem diretos.
  • !download [arquivo remoto] [caminho local] obtém um arquivo da máquina remota e o copia localmente através do terminal. Este comando é um pouco mais complexo porque uma verificação de erros mais rigorosa é necessária, mas é outro comando que você pode ler facilmente para começar. Ele reside em commands/download_file.py. Observe que requer xxd ou od na máquina remota para funcionar corretamente.
  • !download-dir [diretório remoto] [destino local] transmite um arquivo tar de um diretório remoto através do terminal e o extrai localmente sem tocar no sistema de arquivos remoto. Ele reside em commands/download_directory.py. Requer tar e base64 na máquina remota, e também usa gzip quando disponível.
  • !upload [arquivo local] [caminho remoto] funciona exatamente como o comando anterior, exceto que um arquivo local é colocado na máquina remota. Ele reside em commands/upload_file.py.

Comandos de Execução

  • !sh [script local] Executa um script shell da máquina local na memória. Ele reside em commands/remote_script.py.
  • !py [script local] executa um script Python local na máquina remota, e o faz inteiramente na memória. Ele reside em commands/remote_script.py. Confira meu outro repositório para scripts que você pode querer usar. Este comando usa uma sintaxe multilinha com <<, o que significa que pseudo-shells que não suportam isso (Weevely é um bom exemplo) quebrarão este comando bastante.
  • !py3 [script local] faz exatamente a mesma coisa, exceto para sistemas com python3. Ele usa o mesmo módulo, commands/remote_script.py.
  • !elf [script local] Executa um executável da máquina local na memória usando qualquer interpretador Python compatível disponível na máquina remota. Ele reside em commands/remote_elf.py.

Comandos de Stealth

  • Estou plenamente ciente de que esses dois módulos são o oposto de "furtivos", mas é onde eles estão atualmente colocados até que uma localização alternativa possa ser trabalhada. Esta categoria de stealth provavelmente conterá comandos que ajudam você a se misturar melhor, além daqueles comandos que podem fazer você se destacar.
  • !pty gera um TTY, que é algo que você não quer na maioria dos casos porque tende a deixar evidências forenses. No entanto, alguns comandos (sudo) ou exploits exigem um TTY para serem executados, então isso é fornecido como uma conveniência. UNSET HISTFILE HISTFILESIZE HISTSIZE PROMPT_COMMAND é passado para ele assim que é gerado, junto com export TERM=xterm
  • !sudo Invoca o sudo sem um TTY. Ele reside em commands/notty_sudo.py.

Plugins podem ser ainda mais configurados editando ffm.conf.

Processadores

Conceitualmente, comandos (conforme descritos acima) são usados para gerar um pouco de bash que é encaminhado para o shell. Eles podem realizar operações mais complexas capturando a saída do shell e gerando instruções adicionais com base no que é retornado. Processadores são um pouco diferentes, pois são usados para reescrever dados circulando entre o usuário e o processo bash subjacente. Embora seja verdade que qualquer processador poderia ser reescrito como um comando, pareceu um pouco mais limpo separar os dois. Processadores de entrada trabalham em qualquer coisa digitada pelo usuário assim que pressionam a tecla ENTER, e processadores de saída podem modificar qualquer coisa retornada pelo shell.

  • Um bom exemplo de processador pode ser encontrado em processors/ssh_command_line.py. Tudo o que ele faz é adicionar a opção -T a qualquer comando SSH que ele veja se estiver faltando. Certifique-se de verificar seu código simples se você estiver interessado em escrever um processador.
  • Outro processador de entrada presente no framework, processors/assert_torify.py, contém uma lista negra de comandos de rede (ssh, nc) e os bloqueia se eles não parecerem estar sendo proxyados através de uma ferramenta como torify. O harness faz o possível para incomodar o usuário apenas se parecer que o comando está sendo executado na máquina local. Obviamente, isso não deve ser sua única salvaguarda contra vazar seu endereço IP residencial.
  • Finalmente, processors/sample_output_processor.py é um processador de saída muito simples que destaca em vermelho qualquer ocorrência da palavra "password". Como é bastante inútil, não está habilitado no framework, mas você ainda pode usá-lo como ponto de partida se quiser fazer algo mais sofisticado.

Problemas conhecidos

CTRL+R ainda não foi implementado e todos sentimos muita falta dele.

Mais problemático é o fato de que o framework trava de vez em quando. Em 99% dos casos, isso acontece quando ele falha em detectar que um comando que lançou terminou de executar. Geralmente, isso significa que o prompt de comando da máquina na qual você está logado não pôde ser reconhecido como tal. Nesse caso, você pode tentar melhorar a expressão regular localizada bem no início do arquivo ffm.py, ou fazer login na mesma máquina com ssh -T, pois não haverá mais nenhum prompt problemático. Por padrão, o FFM desistirá de tentar ler a saída de um comando após 5 minutos (alguns plugins podem implementar timeouts diferentes); portanto, se o framework travar, você precisará esperar até ver uma mensagem de erro (embora se o processo subjacente ainda estiver em execução, você pode ainda não conseguir digitar comandos).

Considerações finais

Acho que cobri tudo sobre esta ferramenta. Novamente, é um pouco diferente do que eu costumo lançar, pois a maioria das pessoas provavelmente precisará modificá-lo antes que possa ser valioso para elas.

Muitos plugins ainda precisam ser escritos, portanto, certifique-se de compartilhar quaisquer melhorias que você fizer no FFM. Sinta-se à vontade para abrir issues não apenas para bugs, mas também se você estiver tentando fazer algo e não conseguir descobrir como; assim poderei melhorar a documentação para todos.

A fazer

  • Módulo de criptografia de arquivo único

Contato

Baixar ferramenta
commands/log_control.py
  • !mtime Retorna arquivos modificados nos últimos X minutos. Por exemplo, !mtime 5 obterá todos os arquivos na máquina local (aos quais você tem direitos de ver) que foram modificados nos últimos 5 minutos.
  • !db-hunter Caça por arquivos .sqlite, .sqlite3 e .db e outros arquivos de banco de dados
  • !sshkeys Caça por chaves SSH privadas e públicas na máquina atual.
  • !suid Encontra binários SUID, SGID na máquina atual.
  • !strange-dirs Verifica o dispositivo começando pelo caminho especificado pelo usuário em busca de diretórios estranhos em um host
  • !sudo-version Verifica se há uma versão vulnerável do sudo
  • !vm Verifica se o dispositivo é uma Máquina Virtual