Syhunt Hybrid: Análise via CLI

As informações contidas neste documento se aplicam a versão 7.0.11.7 do Syhunt Hybrid.

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:

SODiretório Padrão
WindowsC:\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

  1. Siga até o diretório onde o Syhunt Hybrid está instalado usando o prompt de comando.
  2. 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âmetroDescriçãoValor Padrão
sn:[nome]Um nome de sessão que precisa ser único. Se omitido, um ID único será gerado e atribuido à varreduraID auto-gerado
hm:[nome]o método a ser usado durante a varredura. Se omitido, o método padrão será usadoappscan
emu:[modo]Modo de Emulação de Navegador. Modos disponíveis incluem: chrome, edge, firefox, msie, safarichrome
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 
nrDesliga a geração de um arquivo de relatório ao término de uma varredura 
orAbre um relatório após a varredura 
rout:[nomedoarquivo]Define o nome de saída para o relatório e seu formatoReport_[session name].html
rtpl:[nome]Define o modelo de relatórioStandard
xout:[nomedoarquivo]Define o nome de saída do export e seu formatoExport_[session name].xml
xout2:[nomedoarquivo]Define um segundo nome de saída de export e seu formatoExport_[session name].xml
pfcond:[condição]Define uma condição de aprovação/reprovação a ser relatado 
nvDesativa o modo verbose. Erro e informações básicas ainda são exibidas 
inc:[modo]Define o modo de varredura incrementaltargetpref
inctag:[nome]Opcionalmente guarda os dados incrementais associados à uma tag 
mnl:[n]Define o número máximo de links por servidor10000
mnr:[n]Define o número máximo de tentativas no caso de tempo esgotado em requisição HTTP2
mcd:[n]Define a profundidade máxima de mapeamento (crawling)0 (ilimitado)
tmo:[ms]Define o tempo de timeout de uma conexão HTTP8000
tml:[tempo]Define o tempo máximo de uma varredura (ex: 1d, 3h, 2h30m, 50m)Sem limite
ver:[v]Define a versão HTTP1.1
nofrisDesativa o seguimento automatico de redirecionamento fora do domínio no URL de início 
nodosDesativa os testes de negação de serviço 
nojsDesativa 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 
aboutExibe 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

  1. Siga até o diretório onde o Syhunt está instalado usando o prompt de comandos.
  2. 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âmetroDescriçãoValor Padrão
sn:[nome]Um nome de sessão que precisa ser único. Se omitido, um ID único será gerado e atribuido à varreduraID auto-gerado
hm:[nome]o método a ser usado durante a varredura. Se omitido, o método padrão será usadoappscan
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 
nrDesliga a geração de um arquivo de relatório ao término de uma varredura 
orAbre um relatório após a varredura 
rout:[nomedoarquivo]Define o nome de saída para o relatório e seu formatoReport_[session name].html
rtpl:[nome]Define o modelo de relatórioStandard
xout:[nomedoarquivo]Define o nome de saída do export e seu formatoExport_[session name].xml
xout2:[nomedoarquivo]Define um segundo nome de saída de export e seu formatoExport_[session name].xml
pfcond:[condição]Define uma condição de aprovação/reprovação a ser relatado 
nvDesativa o modo verbose. Erro e informações básicas ainda são exibidas 
inc:[modo]Define o modo de varredura incrementaltargetpref
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
noifaDesliga 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
aboutExibe 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

  1. Siga até o diretório onde o Syhunt está instalado usando o prompt de comandos.
  2. 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âmetroDescriçãoValor 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á usadodarkplus
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 
nrDesliga a geração de um arquivo de relatório ao término de uma varredura 
orAbre um relatório após a varredura 
rout:[nomedoarquivo]Define o nome de saída para o relatório e seu formatoReport_[session name].html
rtpl:[nome]Define o modelo de relatórioStandard
xout:[nomedoarquivo]Define o nome de saída do export e seu formatoExport_[session name].xml
xout2:[nomedoarquivo]Define um segundo nome de saída de export e seu formatoExport_[session name].xml
pfcond:[condition]Define uma condição de aprovação/reprovação a ser relatado 
nvDesativa 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
aboutExibe 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 ou fail-if:risk=high - Falha se for encontrada uma vulnerabilidade ou ameaça de alto risco
  • medium ou fail-if:risk=mediumup - Falha se for encontrada uma vulnerabilidade ou ameaça de risco Médio ou Alto
  • low ou fail-if:risk=lowup - Falha se for encontrada uma vulnerabilidade ou ameaça de risco Baixo, Médio ou Alto

Modos do Scan Incremental

autoGerencia automaticamente o cache de varredura incremental (modo recomendado)
disabledDesliga o cache de varredura incremental. Isto desacelera as varreduras, passando a levar de 3 a 4 vezes mais tempo para complentar uma varredura
forcedForç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
targetprefUsa 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:

PTPortuguês
DEAlemão
ESEspanhol
FRFrancês
ITItaliano
JPJaponês
KRCoreano
PTPortuguê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:

.htmlRelatório HTML
.pdfRelatório em Adobe PDF
.xmlResultados exportados em XML
.jsonVulnerabilidades exportadas em JSON
.csvCSV (Comma-Separated Values)
.mse.csvCSV (Comma-Separated Values) para MS Excel
.txtRelatório em formato texto

Os seguintes modelos de relatório estão disponíveis:

StandardEste é o relatório padrão com informações sobre vulnerabilidades de risco baixo à alto
ComparisonInclui as informações padrão e também informações sobre a evolução das vulnerabilidades
ComplianceInclui informações sobre conformidade com o OWASP Top 10, CWE/SANS Top 25 2019 e PCI DSS v3.2.1
MobileInclui informações sobre conformidade com o OWASP Mobile Top 10, CWE/SANS Top 25 2019 e PCI DSS v3.2.1
CompleteInclui 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étodoNome na CLITipoF. BrutaInjeçãoDoSDemorado
Application Scan (Padrão)appscanYYYN
Structure Brute ForcestructbfY (Profundo)NNY (Very)
Old & Backup FilesfileoldYNNY
Fault InjectionfaultinjNYYN
Top 10 (OWASP)top10NP (TOP10)YN
Top 25 (CWE)top25cweNP (TOP25)YN
Top 5 (OWASP PHP)top5phpNP (TOP5)NN
Cross-Site ScriptingxssNP (XSS)NN
SQL InjectionsqlinjNP (SQL)NN
File InclusionfileincNP (FI)NN
Unvalidated RedirectsunvredirNP (UR)NN
Malware ContentmalscanP (Malware)P (Malware)NN
PassivepassiveNNNN
Spider OnlyspiderNNNN
Complete ScancompleteYYYY (Very)
Complete Scan, No DoScompnodosYYNY (Muito)
Complete Scan, ParanoidcomppnoidY (Profundo)YYY (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:

  1. A1 2017: Injection
  2. A2 2017: Broken Authentication
  3. A3 2017: Sensitive Data Exposure
  4. A4 2017: XML External Entities (XXE)
  5. A5 2017: Broken Access Control
  6. A6 2017: Security Misconfiguration
  7. A7 2017: Cross-Site Scripting (XSS)
  8. A8 2017: Insecure Deserialization
  9. A9 2017: Using Components with Known Vulnerabilities
  10. 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:

  1. Execução Remota de Comandos
  2. Cross-Site Scripting (XSS), incluindo DOM XSS
  3. Injeção de SQL
  4. 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:

  1. Vulnerabilidades JavaScript no lado do cliente
  2. Diversas fraquezas de formulário
  3. Divulgação de tecnologias usadas
  4. Cabeçalhos HTTP inseguros
  5. Software de Servidor Desatualizado e Vulnerável
  6. Scripts Referenciados Desatualizados e Vulneráveis
  7. Comentários HTML suspeitos
  8. Divulgação de Código Fonte
  9. 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

Contato