Este repo pretende servir a dois propósitos. Primeiro, ele fornece um bom conjunto de comandos básicos de consciência situacional implementados em um Beacon Object File (BOF). Isso permite realizar algumas verificações em um host antes de começar a executar comandos que podem ser mais invasivos.
Seu objetivo maior é fornecer um exemplo de código e fluxo de trabalho para que outros comecem a criar mais BOFs. É um documento que acompanha a postagem do blog feita aqui: https://www.trustedsec.com/blog/a-developers-introduction-to-beacon-object-files/
Se você quiser usar o mesmo fluxo de trabalho deste repositório, suas etapas básicas são as seguintes:
Realisticamente, isso poderia ser compactado em um script auxiliar, mas essas etapas não foram executadas para esse esforço.
Comandos | Uso | Notas |
---|---|---|
adcs_enum | adcs_enum | Enumerar CAs e modelos no AD usando funções Win32 |
adcs_enum_com | adcs_enum_com | Enumerar CAs e modelos no AD usando o objeto ICertConfig COM |
adcs_enum_com2 | adcs_enum_com2 | Enumerar CAs e modelos no AD usando o objeto COM IX509PolicyServerListManager |
adv_audit_policies | adv_audit_policies | Recuperar políticas avançadas de auditoria de segurança |
arp | arp | Listar tabela ARP |
cacls | cacls [caminho do arquivo] | Listar permissões de usuário para o arquivo especificado, curingas suportados |
diretório | dir [diretório] [/s] | Listar arquivos em um diretório. Suporta curingas (por exemplo, "C:WindowsS*") ao contrário do comando CobaltStrike ls |
motoristas | motoristas | Enumerar Imagepaths de serviços instalados para verificar o certificado de assinatura em relação a fornecedores de AV/EDR conhecidos |
enum_filter_driver | enum_filter_driver [opt:computador] | Enumerar drivers de filtro |
enumLocalSessions | enumLocalSessions | Enumerar sessões de usuário atualmente anexadas, tanto locais quanto por RDP |
ambiente | ambiente | Listar variáveis de ambiente do processo |
findLoadedModule | findLoadedModule [modulepart] [opt:procnamepart] | Descubra em quais processos *modulepart* são carregados, opcionalmente pesquisando apenas *procnamepart* |
get_password_policy | get_password_policy [nome do host] | Obtenha a política de senha e os bloqueios configurados do servidor de destino ou do domínio |
ipconfig | ipconfig | Listar endereço IPv4, nome de host e servidor DNS |
ldapsearch | ldapsearch [consulta] [opt: atributo] [opt: results_limit] [opt: nome de host DC ou IP] [opt: Nome distinto] | Execute pesquisas LDAP (NOTA: especifique *,ntsecuritydescriptor como parâmetro de atributo se desejar todos os atributos + ACL codificado em base64 dos objetos, isso pode ser resolvido usando BOFHound. Possivelmente poderia quebrar a paginação, embora tudo parecesse bem durante o teste.) |
listadns | listadns | Listar entradas de cache DNS. Tente consultar e resolver cada |
list_firewall_rules | list_firewall_rules | Listar regras de firewall do Windows |
listamods | listmods [optar: pid] | Listar módulos de processo (DLL). Alvo do processo atual se o PID estiver vazio. Complemento aos driversigs para determinar se nosso processo foi injetado por AV/EDR |
listpipes | listpipes | Listar pipes nomeados |
localidade | localidade | Listar idioma local do sistema, ID local, data, hora e país |
netGroupList | netGroupList [opt: domínio] | Listar grupos do domínio padrão ou especificado |
membrosnetGroupList | netGroupListMembers [nome do grupo] [opt: domínio] | Listar membros do grupo do domínio padrão ou especificado |
netLocalGroupList | netLocalGroupList [opt: servidor] | Listar grupos locais do computador local ou especificado |
netLocalGroupListMembers | netLocalGroupListMembers [nome do grupo] [opt: servidor] | Listar grupos locais do computador local ou especificado |
netLocalGroupListMembers2 | netLocalGroupListMembers2 [opt: nome do grupo] [opt: servidor] | Versão modificada de netLocalGroupListMembers que suporta BOFHound |
conectado à rede | netlogado [nome do host] | Retornar usuários logados no computador local ou remoto |
netlogadoon2 | netloggedon2 [optar: nome do host] | Versão modificada do netloggedon que suporta BOFHound |
sessão de rede | netsession [opt:computador] | Enumerar sessões no computador local ou especificado |
netsession2 | netsession2 [opt:computador] [opt:método de resolução] [opt:servidor dns] | Versão modificada do netsession que suporta BOFHound |
compartilhamentos de rede | compartilhamentos de rede [nome do host] | Listar compartilhamentos no computador local ou remoto |
netstat | netstat | Portas de listagem TCP e UDP IPv4 |
horário da rede | nettime [nome do host] | Exibir hora no computador remoto |
tempo de rede | netuptime [nome do host] | Retornar informações sobre o tempo de inicialização no computador local ou remoto |
usuário da rede | netuser [nome de usuário] [opt: domínio] | Obtenha informações sobre um usuário específico. Extrair do domínio se um nome de domínio for especificado |
netuse_add | netuse_add [nome do compartilhamento] [opt:nome de usuário] [opt:senha] [opt:/DEVICE:nome do dispositivo] [opt:/PERSIST] [opt:/REQUIREPRIVACY] | Vincule uma nova conexão a um computador remoto |
netuse_delete | netuse_delete [dispositivo||nome do compartilhamento] [opt:/PERSIST] [opt:/FORCE] | Exclua o dispositivo vinculado/nome do compartilhamento] |
netuse_list | netuse_list [opt:target] | Listar todos os recursos de compartilhamento vinculados ou informações sobre o recurso local de destino |
visualização da rede | visualização da rede | Listar computadores acessíveis no domínio atual |
nslookup | nslookup [nome do host] [opt: servidor DNS] [opt: tipo de registro] | Faça uma consulta DNS. Servidor DNS é o servidor que você deseja consultar (não especifique ou 0 como padrão) tipo de registro é algo como A, AAAA ou ANY. Algumas situações são limitadas devido a falhas observadas |
sonda | sonda [host] [porta] | Verifique se uma porta específica está aberta |
recessão | sessão [opt: nome do host] | Retorne os SIDs dos usuários conectados enumerando HKEY_USERS. Compatível com BOFHound |
consulta_reg | [opt:hostname] [hive] [caminho] [opt: valor a ser consultado] | Consulte um valor de registro ou enumere uma única chave |
reg_query_recursivo | [opt:nome do host] [colmeia] [caminho] | Enumerar recursivamente uma chave começando no caminho |
recursos | recursos | Liste o uso de memória e o espaço em disco disponível no disco rígido principal |
impressão de rota | impressão de rota | Listar rotas IPv4 |
sc_enum | sc_enum [opt:servidor] | Enumerar serviços para informações de qc, query, qfailure e qtriggers |
sc_qc | sc_qc [nome do serviço] [opt:servidor] | impelmentação sc qc em BOF |
sc_qdescrição | sc_qdescription [nome do serviço] [opt: servidor] | implementação sc qdescription no BOF |
sc_qfailure | sc_qfailure [nome do serviço] [opt:server] | Consultar um serviço para condições de falha |
sc_qtriggerinfo | sc_qtriggerinfo [nome do serviço] [opt:server] | Consultar um serviço para condições de gatilho |
sc_query | sc_query [opt: nome do serviço] [opt: servidor] | implementação de consulta sc no BOF |
schtasksenum | schtasksenum [opt: servidor] | Enumerar tarefas agendadas no computador local ou remoto |
schtasksquery | schtasksquery [opt: servidor] [caminho da tarefa] | Consulte a tarefa fornecida no computador local ou remoto |
lista de tarefas | lista de tarefas [opt: servidor] | Listar processos em execução, incluindo PID, PPID e ComandLine (usa wmi) |
tempo de atividade | tempo de atividade | Liste o tempo de inicialização do sistema e há quanto tempo ele está em execução |
vssenum | vssenum [nome do host] [opt:nome do compartilhamento] | Enumerar cópias de sombra em alguns servidores Server 2012+ |
uau | uau | Listar whoami /todos |
lista de janelas | lista de janelas [opt:all] | Listar janelas visíveis na sessão atual do usuário |
wmi_query | consulta wmi_query [opt: server] [opt: namespace] | Execute uma consulta wmi e exiba os resultados em formato CSV |
Observe que o motivo para incluir reg_query quando o CS possui um comando reg query(v) integrado é porque este pode ter como alvo computadores remotos e tem a capacidade de enumerar recursivamente uma chave inteira.
O código funcional para a maioria desses comandos foi retirado do projeto reactos ou de exemplos de código hospedados no MSDN. A base de código driversigs vem de https://gist.github.com/jthuraisamy/4c4c751df09f83d3620013f5d370d3b9
Obrigado a todos os contribuidores listados em contribuidores. Cada um de vocês contribuiu com algo significativo para este repositório e lidou comigo e com meus processos de revisão. Agradeço a cada um de vocês por me ensinar e ajudar a tornar este repositório BOF o melhor possível!
BOFs pré-compilados são fornecidos neste projeto e são compilados usando uma versão recente do Mingw-w64 normalmente instalada no Brew.
Esses BOFs foram escritos tendo em mente o suporte ao Windows Vista+. Um novo branch chamado winxp_2003 foi criado se você precisar usar o conjunto principal de BOFs nesses sistemas mais antigos. Este branch permanecerá em um estado menos suportado. Será funcional, mas não será atualizado com cada novo push/recurso que possamos adicionar.