Syhunt Hybrid: Análise via CLI
As informações contidas neste documento se aplicam a versão 7.0.11.7 do Syhunt Hybrid.
Índice
Introdução
Siga este guia para aprender como realizar um scan dinâmico ou de código-fonte e gerar um relatório de vulnerabilidades através de linha de comandos.
O diretório das ferramentas de CLI da Syhunt depende da versão do Syhunt e do seu SO:
SO | Diretório Padrão |
Windows | C:\Arquivos de Programas\Syhunt Hybrid\ C:\Arquivos de Programas (x86)\Syhunt Hybrid\ C:\Arquivos de Programas\Syhunt Community Core\ |
Linux | /home/[usuario]/syhunt-hybrid/carbon/ /home/[usuario]/syhunt-community/carbon/ |
macOS | /Applications/Syhunt Hybrid Core/carbon /Applications/Syhunt Community Core/carbon |
Como realizar uma varredura dinâmica via CLI
- Siga até o diretório onde o Syhunt Hybrid está instalado usando o prompt de comando.
- Use a seguinte linha de comando:
scanurl [urlinicial] -hm:[metodo]]
Exemplo: scanurl http://www.somehost.com -hm:appscan
Os relatórios da ferramenta scanurl são gerados e salvos de forma automática a menos que o parâmetro -nr tenha sido fornecido. Você também pode abrir a sessão após o término da varredura através da interface gráfica do Syhunt, usando a opção Menu -> Past Sessions (Sessões Anteriores).
Os seguintes parâmetros podem ser fornecidos ao chamar a ferramenta scanurl, sendo todos eles opcionais:
Parâmetro | Descrição | Valor Padrão |
sn:[nome] | Um nome de sessão que precisa ser único. Se omitido, um ID único será gerado e atribuido à varredura | ID auto-gerado |
hm:[nome] | o método a ser usado durante a varredura. Se omitido, o método padrão será usado | appscan |
emu:[modo] | Modo de Emulação de Navegador. Modos disponíveis incluem: chrome, edge, firefox, msie, safari | chrome |
srcdir:[dir local] | Confira uma pasta de código-fonte alvo para uma Análise Híbrida (ex. "C:\www\docs\" or "/home/user/www/") | |
tk:[nomedotracker] | Envia resultados para um rastreador após a varredura. Pode ser combinado com o parâmetro -pfcond | |
tk2:[nomedotracker] | Mesmo que o indicado acima | |
tk3:[nomedotracker] | Mesmo que o indicado acima | |
nr | Desliga a geração de um arquivo de relatório ao término de uma varredura | |
or | Abre um relatório após a varredura | |
rout:[nomedoarquivo] | Define o nome de saída para o relatório e seu formato | Report_[session name].html |
rtpl:[nome] | Define o modelo de relatório | Standard |
xout:[nomedoarquivo] | Define o nome de saída do export e seu formato | Export_[session name].xml |
xout2:[nomedoarquivo] | Define um segundo nome de saída de export e seu formato | Export_[session name].xml |
pfcond:[condição] | Define uma condição de aprovação/reprovação a ser relatado | |
nv | Desativa o modo verbose. Erro e informações básicas ainda são exibidas | |
inc:[modo] | Define o modo de varredura incremental | targetpref |
inctag:[nome] | Opcionalmente guarda os dados incrementais associados à uma tag | |
mnl:[n] | Define o número máximo de links por servidor | 10000 |
mnr:[n] | Define o número máximo de tentativas no caso de tempo esgotado em requisição HTTP | 2 |
mcd:[n] | Define a profundidade máxima de mapeamento (crawling) | 0 (ilimitado) |
tmo:[ms] | Define o tempo de timeout de uma conexão HTTP | 8000 |
tml:[tempo] | Define o tempo máximo de uma varredura (ex: 1d, 3h, 2h30m, 50m) | Sem limite |
ver:[v] | Define a versão HTTP | 1.1 |
nofris | Desativa o seguimento automatico de redirecionamento fora do domínio no URL de início | |
nodos | Desativa os testes de negação de serviço | |
nojs | Desativa a emulação e execução de JavaScript | |
atype:[tipo] | Define o tipo de autenticação; Basic, Form and Manual | |
auser:[nomedeusuario] | Define um nome de usuário para autenticação | |
apass:[senha] | Define uma senha para autenticação | |
about | Exibe informações sobre a versão atual do Syhunt | |
help (ou /?) | Mostra a lista de parâmetros disponíveis |
Realizando scan de endereços IPv6
O Syhunt Dynamic suporta a realização de scans contra endereços do tipo IPv6. Para testar um alvo IPv6, lembre-se de colocar o endereço entre colchetes, ex:
http://[2001:4860:0:2001::68]/index.php
Como realizar uma varredura de código-fonte via CLI
- Siga até o diretório onde o Syhunt está instalado usando o prompt de comandos.
- Use a seguinte linha de comando:
scancode [alvo] -hm:[metodo]]
# Exemplos:
scancode git://sub.domain.com/repo.git
scancode https://github.com/user/repo.git -rb:master
scancode /source/www/
Repositórios TFS e caminhos locais no Windows:
// Caminho local
scancode c:\source\www\
scancode c:\source\www\file.php
scancode c:\mobile\myapp.apk
scancode "c:\source code\www\"
// Repositórios TFS
scancode https://dev.azure.com/user/project
scancode https://myserver/tfs/project
scancode collection:https://dev.azure.com/user$/project
Os relatórios da ferramenta scancode são gerados e salvos de forma automática a menos que o parâmetro -nr tenha sido fornecido. Você também pode abrir a sessão após o término da varredura através da interface gráfica do Syhunt e usando a opção Menu -> Past Sessions (Sessões Anteriores).
Os seguintes parâmetros podem ser fornecidos ao chamar a ferramenta scancode, sendo todos eles opcionais:
Parâmetro | Descrição | Valor Padrão |
sn:[nome] | Um nome de sessão que precisa ser único. Se omitido, um ID único será gerado e atribuido à varredura | ID auto-gerado |
hm:[nome] | o método a ser usado durante a varredura. Se omitido, o método padrão será usado | appscan |
rb:[branch] | Define o branch do repositório | |
tk:[nomedotracker] | Envia resultados para um rastreador após a varredura. Pode ser combinado com o parâmetro -pfcond | |
tk2:[nomedotracker] | Mesmo que o indicado acima | |
tk3:[nomedotracker] | Mesmo que o indicado acima | |
nr | Desliga a geração de um arquivo de relatório ao término de uma varredura | |
or | Abre um relatório após a varredura | |
rout:[nomedoarquivo] | Define o nome de saída para o relatório e seu formato | Report_[session name].html |
rtpl:[nome] | Define o modelo de relatório | Standard |
xout:[nomedoarquivo] | Define o nome de saída do export e seu formato | Export_[session name].xml |
xout2:[nomedoarquivo] | Define um segundo nome de saída de export e seu formato | Export_[session name].xml |
pfcond:[condição] | Define uma condição de aprovação/reprovação a ser relatado | |
nv | Desativa o modo verbose. Erro e informações básicas ainda são exibidas | |
inc:[modo] | Define o modo de varredura incremental | targetpref |
inctag:[nome] | Opcionalmente guarda os dados incrementais associados à uma tag | |
refurl:[url] | Define um URL associado com o código-fonte alvo para propósito de referência | |
noifa | Desliga a análise de filtragem de entrada durante a varredura | |
tml:[tempo] | Define o tempo máximo de uma varredura (ex: 1d, 3h, 2h30m, 50m) | Sem limite |
about | Exibe informações sobre a versão atual do Syhunt | |
help (ou /?) | Mostra a lista de parâmetros disponíveis |
Como realizar uma verificação de brechas na dark web via CLI
- Siga até o diretório onde o Syhunt está instalado usando o prompt de comandos.
- Use a seguinte linha de comando:
scandark [target] -hm:[a huntmethod]]
// Exemplo:
scandark meudominio.com
Os relatórios da ferramenta scandark são gerados e salvos de forma automática a menos que o parâmetro -nr tenha sido fornecido. Você também pode abrir a sessão após o término da varredura através da interface gráfica do Syhunt e usando a opção Menu -> Past Sessions (Sessões Anteriores).
Os seguintes parâmetros podem ser fornecidos ao chamar a ferramenta scandark, sendo todos eles opcionais:
Parâmetro | Descrição | Valor Padrão |
sn:[nome] | Um nome de sessão que precisa ser único. Se omitido, um ID único será gerado e atribuido à varredura|ID auto-gerado | |
hm:[nome] | o método a ser usado durante a varredura. Se omitido, o método padrão será usado | darkplus |
tk:[nomedotracker] | Envia resultados para um rastreador após a varredura. Pode ser combinado com o parâmetro -pfcond | |
tk2:[nomedotracker] | Mesmo que o indicado acima | |
tk3:[nomedotracker] | Mesmo que o indicado acima | |
nr | Desliga a geração de um arquivo de relatório ao término de uma varredura | |
or | Abre um relatório após a varredura | |
rout:[nomedoarquivo] | Define o nome de saída para o relatório e seu formato | Report_[session name].html |
rtpl:[nome] | Define o modelo de relatório | Standard |
xout:[nomedoarquivo] | Define o nome de saída do export e seu formato | Export_[session name].xml |
xout2:[nomedoarquivo] | Define um segundo nome de saída de export e seu formato | Export_[session name].xml |
pfcond:[condition] | Define uma condição de aprovação/reprovação a ser relatado | |
nv | Desativa o modo verbose. Erro e informações básicas ainda são exibidas | |
tml:[tempo] | Define o tempo máximo de uma varredura (ex: 1d, 3h, 2h30m, 50m) | Sem limite |
about | Exibe informações sobre a versão atual do Syhunt | |
help (ou /?) | Mostra a lista de parâmetros disponíveis |
Condições de aprovação / reprovação
Uma condição de teste de aprovação / reprovação pode ser transmitida ao scancode, scanurl ou scandark com o parâmetro -pfcond: A seguir estão as condições de aprovação / reprovação atualmente suportadas pelo Syhunt:
high
oufail-if:risk=high
- Falha se for encontrada uma vulnerabilidade ou ameaça de alto riscomedium
oufail-if:risk=mediumup
- Falha se for encontrada uma vulnerabilidade ou ameaça de risco Médio ou Altolow
oufail-if:risk=lowup
- Falha se for encontrada uma vulnerabilidade ou ameaça de risco Baixo, Médio ou Alto
Modos do Scan Incremental
auto | Gerencia automaticamente o cache de varredura incremental (modo recomendado) |
disabled | Desliga o cache de varredura incremental. Isto desacelera as varreduras, passando a levar de 3 a 4 vezes mais tempo para complentar uma varredura |
forced | Força a varredura incremental a estar sempre ligada. Caso utilize este modo, certifique-se de que você possui uma varredura que não seja forçada configurada para executar todo mês ou com frequência similar |
targetpref | Usa o modo de varredura incremental definido nas preferências do alvo |
Você pode redefinir o cache de varreduras incrementais através do comando scancore -runcmd:clearinc.
Modelos e Formatos de Relatório Disponíveis
Os seguintes idiomas são suportados:
PT | Português |
DE | Alemão |
ES | Espanhol |
FR | Francês |
IT | Italiano |
JP | Japonês |
KR | Coreano |
PT | Português |
-- Habilitando a tradução dos relatórios
scancore -prefset:hybrid.report.defaultlanguage -v:PT
Outra forma: através da UI, siga até a tela Other Hybrid Preferences ( -> Preferences -> Other Hybrid Preferences) e selecione o idioma desejado.
Os seguintes formatos de relatório estão disponíveis:
.html | Relatório HTML |
Relatório em Adobe PDF | |
.xml | Resultados exportados em XML |
.json | Vulnerabilidades exportadas em JSON |
.csv | CSV (Comma-Separated Values) |
.mse.csv | CSV (Comma-Separated Values) para MS Excel |
.txt | Relatório em formato texto |
Os seguintes modelos de relatório estão disponíveis:
Standard | Este é o relatório padrão com informações sobre vulnerabilidades de risco baixo à alto |
Comparison | Inclui as informações padrão e também informações sobre a evolução das vulnerabilidades |
Compliance | Inclui informações sobre conformidade com o OWASP Top 10, CWE/SANS Top 25 2019 e PCI DSS v3.2.1 |
Mobile | Inclui informações sobre conformidade com o OWASP Mobile Top 10, CWE/SANS Top 25 2019 e PCI DSS v3.2.1 |
Complete | Inclui as informações padrão junto e também detalhes sobre evolução, conformidade, respostas da aplicação e cobertura da análise |
Diferenças entre os Métodos de Varredura
Método | Nome na CLI | Tipo | F. Bruta | Injeção | DoS | Demorado |
Application Scan (Padrão) | appscan | Y | Y | Y | N | |
Structure Brute Force | structbf | Y (Profundo) | N | N | Y (Very) | |
Old & Backup Files | fileold | Y | N | N | Y | |
Fault Injection | faultinj | N | Y | Y | N | |
Top 10 (OWASP) | top10 | N | P (TOP10) | Y | N | |
Top 25 (CWE) | top25cwe | N | P (TOP25) | Y | N | |
Top 5 (OWASP PHP) | top5php | N | P (TOP5) | N | N | |
Cross-Site Scripting | xss | N | P (XSS) | N | N | |
SQL Injection | sqlinj | N | P (SQL) | N | N | |
File Inclusion | fileinc | N | P (FI) | N | N | |
Unvalidated Redirects | unvredir | N | P (UR) | N | N | |
Malware Content | malscan | P (Malware) | P (Malware) | N | N | |
Passive | passive | N | N | N | N | |
Spider Only | spider | N | N | N | N | |
Complete Scan | complete | Y | Y | Y | Y (Very) | |
Complete Scan, No DoS | compnodos | Y | Y | N | Y (Muito) | |
Complete Scan, Paranoid | comppnoid | Y (Profundo) | Y | Y | Y (Muito) |
Letras: Sim/Não/Parcial (Y/N/P)
Tipo de Teste
- - Híbrido (Caixa Cinza), Dinâmico e Código
- - Apenas Dinâmico (Caixa Preta)
- - Apenas Código (Caixa Branca)
Demorado
Um Sim significa que verificações adicionais e mutações de ataque serão realizadas e que o número de verificações será influenciado pelo número de diretórios encontrados durante o estágio de mapeamento do site.
Descrição
O método Application Scan é o método padrão de scan no Syhunt. Se você desejar utilizar um método diferente de varredura, você poderá selecionar uma das seguintes as opções:
Application Scan (Scan de Aplicação)
Identifica falhas em aplicações web que você tenha desenvolvido, no servidor web e em componentes de terceiros. Este método mapeia o web site e realiza ataques contra a estrutura do site e suas aplicações web. Isto inclui procurar por vulnerabilidades de injeção de falhas como XSS, Injeção de SQL, Inclusão de Arquivos, e mais.
Structure Brute Force (Força Bruta de Estrutura)
Uma força bruta de estrutura verificará por:
- Scripts Comuns Vulneráveis
- Arquivos Comuns
- Vazamento de Banco de Dados
- Backdoors baseadas na Web
O número de verificações será influenciado pelo número de diretórios encontrado durante o estágio de mapeamento do site.
Old & Backup Files (Arquivos Antigos e de Backups)
Executa verificações de extensão ao redor da estrutura mapeada de um website.
OWASP Top 10
Verifica especificamente pelas vulnerabilidades do OWASP Top 10 2017:
- A1 2017: Injection
- A2 2017: Broken Authentication
- A3 2017: Sensitive Data Exposure
- A4 2017: XML External Entities (XXE)
- A5 2017: Broken Access Control
- A6 2017: Security Misconfiguration
- A7 2017: Cross-Site Scripting (XSS)
- A8 2017: Insecure Deserialization
- A9 2017: Using Components with Known Vulnerabilities
- A10 2017: Insufficient Logging & Monitoring
CWE Top 25
Verifica especificamente pela lista CWE de Erros Mais Perigosos de Software de 2019.
Confira a lista completa em: https://cwe.mitre.org/top25/archive/2019/2019_cwe_top25.html
OWASP PHP Top 5 (Cinco Mais do OWASP)
Verifica especificamente pela Lista das Cinco Principais Vulnerabilidades do PHP, do OWASP:
- Execução Remota de Comandos
- Cross-Site Scripting (XSS), incluindo DOM XSS
- Injeção de SQL
- Ataques ao Sistema de Arquivos, incluindo Inclusão de Arquivos.
Fault Injection (Injeção de Falhas)
Verifica especificamente por vulnerabilidades de injeção de falhas. Caso este método de varredura seja selecionado, todas as outras verificações que não necessitam de injeção são desligadas e o Syhunt então verificará especificamente por falhas como injeção de SQL, XSS, inclusão de arquivos e outras falhas similares.
Cross-Site Scripting (XSS)
Verifica especificamente por vulnerabilidades do tipo XSS, incluindo DOM XSS.
SQL Injection (Injeção de SQL)
Verifica especificamente por vulnerabilidades de injeção de SQL & NoSQL.
File Inclusion
Verifica especificamente por vulnerabilidades de Inclusão de Arquivos e Directory Traversal.
Unvalidated Redirects
Verifica especificamente por vulnerabilidades de Redirecionamento Não-Validado.
Malware Scan
Verifica especificamente por malware, como:
- Web Backdoors
- Conteúdo Malicioso
- Parâmetros de Debug escondidos na aplicação
Passive Scan
Mapeia a estrutura do web site e reporta vulnerabilidades descobertas sem lançar quaisquer tipos de ataques, como:
- Vulnerabilidades JavaScript no lado do cliente
- Diversas fraquezas de formulário
- Divulgação de tecnologias usadas
- Cabeçalhos HTTP inseguros
- Software de Servidor Desatualizado e Vulnerável
- Scripts Referenciados Desatualizados e Vulneráveis
- Comentários HTML suspeitos
- Divulgação de Código Fonte
- Conteúdo Malicioso sendo servido
Spider Only
Apenas mapeia a estrutura do website, sem testar por ou reportar qualquer tipo de vulnerabilidade ou fraqueza.
Complete Scan (Scan Completo)
Verifica por todos os tipos de vulnerabilidade em aplicações web usando todos os tipos de mutação e métodos de pen-tester, incluindo ataques de Manipulação de Cabeçalho. Um scan completo pode algumas vezes ser bastante demorado quando executado contra um servidor web que possui uma grande quantidade de pastas e pontos de entrada.
Complete Scan - No DoS (Scan Completo - Sem DoS)
O mesmo de antes, mas com os testes de negação de serviço (denial-of-service) desligados.
Complete Scan - Paranoid (Scan Completo - Paranóico)
Verifica por todos os tipos de vulnerabilidades em aplicações web usando força bruta profunda na estrutura do site, todos os tipos de mutações e métodos de pen-tester, incluindo ataques de Manipulação de Cabeçalho. Este método pode ser bastante demorado, especialmente se executado contra grandes sites. Este método tambem realiza uma verificação tripla na força bruta da estrutura, que se aplica a servidores sensíveis a letras maiúsculas e minúsculas - o Syhunt tentará todas as possibilidades de nome de arquivo (tudo em maiúsculas, tudo em minúsculas, etc).
Modificando as Preferências do Syhunt
Caso possua o Syhunt 6.9.6.3 ou superior, você pode atualizar as preferências permanentes do Syhunt (globais ou específicas por alvo) via CLI através do novo parâmetro -prefset. Também é possível visualizar o valor de uma preferência através do novo parâmetro -prefprint.
-- Exemplo 1 - Configurando um logo a ser exibido em novos relatórios gerados
scancore -prefset:hybrid.report.company.logo.url -v:https://www.mydomain.com/mylogo.png
-- Exemplo 2 - Visualizando o URL de logo de relatório atual
scancore -prefprint:hybrid.report.company.logo.url
-- Exemplo 3 - Configurando autenticação Básica para um site específico
scancore -tg:http://127.0.0.1 -prefset:dynamic.servauth.type -v:Basic
scancore -tg:http://127.0.0.1 -prefset:dynamic.servauth.username -v:myuser
scancore -tg:http://127.0.0.1 -prefset:dynamic.servauth.password -vsecret
-- Exemplo 4 - Ligando ou desligando as preferências de um site específico
scancore -tg:http://127.0.0.1 -prefset:enabled -v:true
scancore -tg:http://127.0.0.1 -prefset:enabled -v:false
-- Exemplo 5 - Configurando um valor obtido de um arquivo de listas
scancore -tg:http://127.0.0.1 -prefset:dynamic.lists.cookies -fromfile:mycookies.lst
Uma lista de IDs de preferência disponíveis pode ser acessado aqui.
Redefinindo todas as preferências
Você pode remover todas as modificações de preferências realizadas chamando os comandos abaixo.
-- Redefinindo preferências globais
scancore -runcmd:clearpref
-- Redefinindo preferências de todos os sites
scancore -runcmd:clearsite
Utilizando Rastreadores de Problemas
Caso possua o Syhunt 6.9.6.3 ou superior, você pode adicionar, gerenciar ou utilizar rastreadores de problemas via CLI através do novo parâmetro -tracker.
-- Exemplo 1 - Adicionando um novo rastreador do tipo GitHub
scancore -tracker:add
-- Indique o tipo GitHub e o nome que deseja para o rastreador e pressione enter
-- Configure o rastreador
scancore -tracker:set to:mytrackername -key:project.name -v:owner/repo
scancore -tracker:set to:mytrackername -key:auth.token.encrypted -vsecret
-- Exemplo 2 - Adicionando um novo rastreador do tipo email
scancore -tracker:add
-- Indique o tipo Email e o nome que deseja para o rastreador e pressione enter
scancore -tracker:set to:myemailtracker -key:message.from -v:robot@yourdomain.com
scancore -tracker:set to:myemailtracker -key:message.tolist -v:security@yourdomain.com,team@yourdomain.com
scancore -tracker:set to:myemailtracker -key:auth.targethost -v:smtp.yourdomain.com
scancore -tracker:set to:myemailtracker -key:smtp.targetport -v:587
scancore -tracker:set to:myemailtracker -key:auth.username -v:myusername
scancore -tracker:set to:myemailtracker -key:auth.password -vsecret
-- Exemplo 3 - Testando o rastreador
scancore -tracker:send -tid:TEST -to:mytrackername -note:"My comment"
-- Exemplo 4 - Enviando uma vulnerabilidade de um relatório para o rastreador
-- 1596281007-7-4771 é o track ID (código de rastreamento) de uma vulnerabilidade presente no relatório. Cada vulnerabilidade tem seu próprio track ID.
scancore -tracker:send -tid:1596281007-7-4771 -to:mytrackername -note:"My comment"
-- Exemplo 5 - Listando todos os rastreadores já criados e ainda disponíveis
scancore -tracker:list
-- Exemplo 6 - Removendo um rastreador
scancore -tracker:del to:mytrackername
Uma lista de IDs de preferência de rastreadores está disponível aqui.
Enviando vulnerabilidades para um rastreador após a verificação
O Syhunt pode enviar automaticamente um resumo das vulnerabilidades identificadas para um rastreador se você fornecer o parâmetro -si ao comando scanurl ou scancode.
-- Exemplo 1: Enviando através de um rastreador criado anteriormente
scanurl mydomain -si:trackername
-- Exemplo 2: Enviando por meio de um rastreador criado anteriormente apenas se forem identificadas vulnerabilidades de alta gravidade
scanurl mydomain -si:trackername -pfcond:fail-if:risk=high
-- Exemplo 3: Enviando através de um rastreador criado dinamicamente
scanurl mydomain -si:"?app=github###project=user/repo###token=ghp_etc"
Removendo todos os rastreadores
Você pode remover todos os rastreadores já adicionados através do comando: scancore -runcmd:cleartrack
Atualizando o Syhunt
No Linux ou macOS, você pode usar o comando scanupdate para verificar por atualizações. Caso atualizações estejam disponíveis, o Syhunt perguntará se você deseja baixar e instalar elas. Caso você rode scanupdate auto, o Syhunt verificará por atualizações e instalará elas automaticamente no momento em que o comando for executado, sem pedir confirmação.
No Windows, você deve baixar e instalar as atualizações diretamente do website da Syhunt.
Trabalhando com Lançadores de Terceiros
Confira este documento sobre como gerar uma linha de comandos completa que permite iniciar o Syhunt a partir de arquivos BAT, agendadores de terceiros, Jenkins e outras ferramentas.
Para documentação adicional do produto, visite syhunt.com/docs/br