Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
ScareCrow — ScareCrow - Framework de criação de payloads projetado para bypass de EDR. | Kitploit
Ferramentas/GitHubGitHub/optiv/scarecrow
Frameworks de ExploraçãoGeração de PayloadsShellcodeTestes de PenetraçãoRed TeamingDesenvolvimento de PayloadsArchived
GitHuboptiv/scarecrow

ScareCrow

ScareCrow - Framework de criação de payloads projetado para bypass de EDR.

Ver Repositório
2.9k52921há 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 →
Compartilhar

ESTE REPOSITÓRIO FOI ARQUIVADO

Para visualizar a versão mais recente do ScareCrow ou enviar um problema, consulte https://github.com/Tylous/ScareCrow.



ScareCrow

Mais Informações

Se você quiser saber mais sobre as técnicas utilizadas neste framework, dê uma olhada na Parte 1 e na Parte 2

Descrição

ScareCrow é um framework de criação de payloads para sideloading (não injeção) em um processo legítimo do Windows (contornando controles de Application Whitelisting). Uma vez que o carregador DLL é carregado na memória, ele utiliza uma técnica para remover os hooks de um EDR das DLLs do sistema em execução na memória do processo. Isso funciona porque sabemos que os hooks do EDR são colocados quando um processo é criado.

ScareCrow pode segmentar essas DLLs e manipulá-las na memória usando a função de API VirtualProtect, que altera as permissões de uma seção da memória de um processo para um valor diferente, especificamente de Executar–Ler para Ler-Gravar-Executar.

ScareCrow utiliza um de dois métodos para remover os hooks

Disk

Quando executado, o ScareCrow copiará os bytes das DLLs do sistema armazenadas em disco em C:\Windows\System32\. Essas DLLs são armazenadas em disco "limpas" de hooks de EDR porque são usadas pelo sistema para carregar uma cópia inalterada em um novo processo quando ele é criado. Como os EDRs apenas hookam esses processos na memória, eles permanecem inalterados. O ScareCrow não copia todo o arquivo DLL, em vez disso, ele foca apenas na seção .text das DLLs. Esta seção de uma DLL contém o assembly executável, e ao fazer isso, o ScareCrow ajuda a reduzir a probabilidade de detecção, pois a releitura de arquivos inteiros pode fazer com que um EDR detecte que há uma modificação em um recurso do sistema. Os dados são então copiados para a região correta da memória usando o offset de cada função. Cada função possui um offset que denota o número exato de bytes a partir do endereço base onde residem, fornecendo a localização da função na pilha.

Para fazer isso, o ScareCrow altera as permissões da região .text da memória usando VirtualProtect. Embora esta seja uma DLL do sistema, como foi carregada em nosso processo (que controlamos), podemos alterar as permissões de memória sem exigir privilégios elevados.

Indirect Syscalls

ScareCrow carrega o shellcode na memória primeiro descriptografando o shellcode, que é criptografado por um dos três métodos de criptografia (descritos abaixo). Uma vez descriptografado e carregado, o shellcode é então executado. Dependendo das opções do loader especificadas, o ScareCrow configurará diferentes funções de exportação para a DLL. A DLL carregada também não contém a função DLLMain padrão que todas as DLLs normalmente precisam para operar. A DLL ainda será executada sem problemas porque o processo no qual carregamos procurará por essas funções de exportação e não se preocupará com a presença do DLLMain.

Binary Sample

After

KnownDLLs

KnownDLLs é uma lista de DLLs que são carregadas pelo Windows durante o processo de inicialização do sistema. Como essas DLLs são consideradas essenciais para o funcionamento do sistema operacional, elas são armazenadas em cache para ajudar a reduzir os tempos de carregamento e melhorar o desempenho quando os aplicativos são iniciados. KnownDLLs inclui DLLs como kernel32.dll, kernelbase.dll e ntdll.dll.

Utilizando esses KnownDlls, o ScareCrow mapeia uma cópia da DLL de \KnownDlls\<dllname> usando uma combinação de NtOpenSection e NtMapViewOfSection para carregá-la na memória do processo. O ScareCrow não carrega toda a DLL, apenas carrega a seção .text da DLL (pois esta contém todas as syscalls). A partir daí, o ScareCrow usa syscalls indiretas para chamar NtProtectVirtualMemory e alterar as permissões da seção .text da DLL para permitir que o ScareCrow sobrescreva os hooks do EDR antes de restaurar as permissões.

Para mais informações, você pode ler o artigo detalhado do modexp

Uma vez que esses hooks são removidos, o ScareCrow então utiliza System Calls personalizadas para carregar e executar shellcode na memória. O ScareCrow faz isso mesmo após os hooks do EDR serem removidos para ajudar a evitar a detecção por ferramentas de coleta de telemetria baseadas em hooks do modo de usuário, como Event Tracing for Windows (ETW) ou outros mecanismos de registro de eventos. Essas system calls personalizadas também são usadas para realizar a chamada VirtualProtect para remover os hooks colocados pelos EDRs, descrita acima, para evitar a detecção por quaisquer controles anti-adulteração do EDR. Isso é feito chamando uma versão personalizada da syscall VirtualProtect, NtProtectVirtualMemory. O ScareCrow utiliza Golang para gerar esses loaders e depois assembly para essas funções de syscall personalizadas.

Durante o processo de criação do loader, o ScareCrow utiliza uma biblioteca para se misturar ao fundo após um beacon contatar o servidor. Esta biblioteca faz duas coisas:

Arquivos que são assinados com certificados de assinatura de código são frequentemente colocados sob menos escrutínio, tornando mais fácil serem executados sem serem questionados, pois arquivos assinados por um nome confiável são geralmente menos suspeitos que outros. A maioria dos produtos antimalware não tem tempo para validar e verificar esses certificados (agora alguns o fazem, mas tipicamente os nomes de fornecedores comuns estão incluídos em uma whitelist). O ScareCrow cria esses certificados usando uma versão em pacote go da ferramenta limelighter para criar um arquivo pfx12. Este pacote pega um nome de domínio fornecido pelo usuário para criar um certificado de assinatura de código para esse domínio. Se necessário, você também pode usar seu próprio certificado de assinatura de código, se tiver um, usando a opção de linha de comando valid.

  • ScareCrow também contém a capacidade de pegar a cadeia completa e todos os atributos de um certificado de assinatura de código legítimo de um arquivo e copiá-lo para outro arquivo. Isso inclui a data de assinatura, contra-assinaturas e outros atributos mensuráveis. Esta opção pode usar arquivos DLL ou .exe para copiar usando a opção de linha de comando clone, junto com o caminho para o arquivo do qual você deseja copiar o certificado.

OpSec Consideration:

  Ao assinar o loader com microsoft.com, usá-lo contra produtos WINDOWS DEFENDER ATP pode não ser tão eficaz, pois eles podem validar o certificado já que ele pertence a eles. Se você estiver usando um loader contra um produto da Windows, possivelmente use um domínio diferente.
  • Spoofar os atributos do loader: Isso é feito usando arquivos syso, que são uma forma de arquivos de recurso incorporados que, quando compilados junto com nosso loader, modificarão as porções de atributo do nosso código compilado. Antes de gerar um arquivo syso, o ScareCrow gerará um nome de arquivo aleatório (baseado no tipo de loader) para usar. Uma vez escolhido, esse nome de arquivo mapeará para os atributos associados a esse nome de arquivo, garantindo que os valores corretos sejam atribuídos.

File Attribute Sample

Com esses arquivos e o código go, o ScareCrow irá compilar cruzadamente em DLLs usando a opção de biblioteca c-shared. Uma vez que a DLL é compilada, ela é ofuscada em uma string base64 quebrada que será embutida em um arquivo. Isso permite que o arquivo seja puxado remotamente, acessado e executado programaticamente.

Baixar ferramenta