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
asminject — Heavily-modified fork of David Buchanan's dlinject project. Injects arbitrary assembly (or precompiled binary) payloads directly into x86-64, x86, and ARM32 Linux processes without the use of ptrace by accessing /proc/<pid>/mem. Useful for certain post-exploitation scenarios, recovering content from process memory, etc.. | Kitploit
Ferramentas/GitHubGitHub/bishopfox/asminject
ShellcodePost-ExploitationPenetration TestingPayload DevelopmentContainer Escape
GitHubbishopfox/asminject

asminject

Ver Repositório
14815há 3 anosRevisado 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 →

Sobre

Heavily-modified fork of David Buchanan's dlinject project. Injects arbitrary assembly (or precompiled binary) payloads directly into x86-64, x86, and ARM32 Linux processes without the use of ptrace by accessing /proc/<pid>/mem. Useful for certain post-exploitation scenarios, recovering content from process memory, etc..

Compartilhar

asminject.py

asminject.py é um fork fortemente modificado do projeto dlinject de David Buchanan. Injeta payloads de assembly arbitrário (ou binário pré-compilado) diretamente em processos Linux x86-64, x86 e ARM32 acessando /proc/<pid>/mem em vez de anexar via ptrace. Útil para adulterar processos confiáveis, certos cenários de pós-exploração, recuperar conteúdo da memória de processos e contornar alguns controles de segurança. Pode injetar em processos conteinerizados de fora do contêiner, desde que você tenha acesso root no host.

Você também pode ler mais sobre o asminject.py e suas origens na página da ferramenta Bishop Fox, incluindo um relato detalhado do trabalho que inspirou a ferramenta.

Neste documento:

  • Pitches de elevador ou TLDR
  • Origens
  • Exemplos
  • Mas e as restrições de ptrace_scope do Yama?
  • Objetivos futuros

Documentação separada, mais detalhada:

  • Como o asminject.py funciona - uma discussão arquitetural de alto nível com mergulhos profundos em alguns detalhes técnicos, especialmente para leitores que nunca trabalharam com ferramentas de injeção de memória antes
  • Primeiros passos
  • Diferenças em relação ao dlinject.py
  • Opções especializadas
  • Solução de problemas
  • Histórico de versões

Pitches de elevador ou TLDR

  • "asminject.py é como o dlinject, exceto que permite injetar qualquer payload que você quiser em vez de apenas carregar uma biblioteca, e funciona em múltiplas arquiteturas."
  • "asminject.py é vagamente como o Frida, exceto que não se anexa via interface ptrace, então os processos não podem bloqueá-lo ao usarem ptrace em si mesmos."

Origens

asminject.py foi escrito para dois cenários principais em testes de penetração em ambientes Linux:

  • Atacar controles de segurança em nível de processo e contêiner na perspectiva de um atacante com acesso root ao host
  • Evitar a detecção após explorar com sucesso outra vulnerabilidade

Por exemplo, considere um teste de penetração em que o pentester obteve acesso root a um servidor que hospeda muitos contêineres. Um dos contêineres processa transferências bancárias e possui um produto de segurança de endpoint muito robusto instalado. Quando o pentester tenta modificar os dados de transferência bancária de dentro do contêiner, o software de segurança de endpoint detecta e bloqueia a tentativa. O asminject.py permite que o pentester injete código arbitrário diretamente na memória do processo do software bancário ou até mesmo no produto de segurança de endpoint, de fora do contêiner. Como uma vítima do "demônio maligno" de Descartes, o software de segurança dentro do contêiner é impotente, pois existe em um ambiente totalmente sob o controle do atacante.

O dlinject.py original foi projetado especificamente para carregar bibliotecas compartilhadas Linux em um processo existente. O asminject.py faz tudo o que o original fazia e muito mais. Ele executa código assembly arbitrário e inclui modelos para uma variedade de ataques. Ele também foi redesenhado para ajudar a evitar a detecção por mecanismos de segurança que se baseiam em atividades potencialmente suspeitas, como eventos de carregamento de bibliotecas.

Exemplos

O diretório practice deste repositório inclui código básico de loop que exibe um timestamp e a iteração do loop no console, para que você possa praticar a injeção de vários tipos de código em um ambiente controlado. Esses loops de prática são referenciados nos exemplos restantes.

A sintaxe básica para chamar o asminject.py é:

root@kitploit:~
# python3 ./asminject.py <target_process_id> <payload> \
  --arch [x86-64|x86|arm32] --relative-offsets-from-binaries --stop-method "slow" \
  --var <payload_variable_1_name> <payload_variable_1_value> \
  # ... \
  --var <payload_variable_n_name> <payload_variable_n_value>

Na maioria dos casos, qualquer um dos payloads usados nos exemplos será executado em qualquer uma das arquiteturas suportadas.

  • Exemplos básicos - payloads simples que, por exemplo, fazem um processo existente copiar arquivos para você
  • Injeção de código Python
  • Injeção de código PHP
  • Injeção de código Ruby
  • Injeção de shellcode/stager
  • Injeção de biblioteca compartilhada

Mas e as restrições de ptrace_scope do Yama?

A maioria das distribuições Linux inclui um módulo de segurança do kernel chamado Yama que controla o acesso ao uso da capacidade ptrace contra outros processos. Embora o asminject.py não se anexe à interface do depurador, ele ainda exige permissão para usar a capacidade ptrace. Se você estiver recebendo erros relacionados a essa capacidade, verifique o conteúdo de /proc/sys/kernel/yama/ptrace_scope. Se estiver definido como 2, execute o seguinte comando como root:

root@kitploit:~
echo 1 > /proc/sys/kernel/yama/ptrace_scope

Valores 3 ou superiores não podem ser desativados sem uma reinicialização. No entanto, se você for um administrador autorizado de um sistema Linux em que alguém definiu acidentalmente /proc/sys/kernel/yama/ptrace_scope como 3, ou estiver conduzindo um teste de penetração autorizado em um ambiente onde esse valor foi definido, veja o diretório ptrace_scope_kernel_module para uma possível solução alternativa que não exige reinicialização.

Objetivos futuros

  • Adicionar suporte para ARM64 (Aarch64).
  • Permitir que o shellcode seja passado via stdin, além do método atual de leitura de um arquivo.
  • Investigar o uso do Keystone para montagem de shellcode em vez de chamar o comando gcc em nível de SO.
  • Para Python e outros interpretadores de script com APIs para passar bytecode compilado para execução (em vez da execução no estilo eval de código de script legível por humanos), fornecer payloads para aproveitar essa capacidade para obter ainda mais furtividade.
  • Se viável, injetar código Java em processos Java via JNI.
  • Adicionar opções para interceptar um método específico (ou endereço, etc.) como alternativa à técnica atual de "interceptar a próxima syscall" herdada do dlinject.py.
  • Fornecer uma maneira de usar a ferramenta para quase-depuração, por exemplo, interceptar uma função e exibir os argumentos passados a ela sempre que for chamada.
    • Pode fazer mais sentido encontrar uma maneira de injetar o Frida usando asminject.py - mais pesquisa é necessária.
  • Desenvolver payloads interativos, por exemplo, em vez de injetar uma linha específica de código de script Python em um processo Python, o asminject.py poderia solicitar ao operador uma linha de código para injetar, injetá-la, retornar a saída resultante e então solicitar ao operador outra linha de código.
    • Isso também pode fazer mais sentido se for tratado usando Frida, caso o Frida possa ser injetado em um processo usando asminject.py de uma forma que evite a necessidade de o Frida invocar temporariamente a interface do depurador.
  • Fornecer uma maneira de interagir com um processo alvo executando em uma arquitetura de processador que não corresponde àquela em que o está sendo executado. Por exemplo, interagir com um dispositivo remoto usando hardware como um PCI leech, explorar casos extremos como dispositivos com acessível como root por meio de um compartilhamento NFS, etc.
Baixar ferramenta
asminject.py
/proc/mem
  • Adicionar fragmentos de ofuscação mais elaborados.