Syhunt Code: Getting Started

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

How to perform a code scan

Syhunt's whitebox scan (source code scan) can uncover multiple classes of application vulnerabilities and also identify key areas of the code that need review. Its static source code analysis functionality can detect over 40 vulnerability types, including the 2019 CWE Top 25 Most Dangerous Software Errors and the OWASP mobile top 10 security risks. Initially only PHP was supported. As of today, multiple web and mobile programming languages are supported.

Supported Languages (Web)

ASP Classic (VBScript & JavaScript)
ASP.Net (C# & VB.Net)
Java (JEE / JSP)
JavaScript (Client and Server-Side, Node.js, Angular, AngularJS, Express.js & Koa.js)
Lua (ngx_lua, mod_lua, CGILua & Lua Pages)
Perl
PHP
Python (CGI, Django, mod_python & WSGI)
Ruby (Rails & ERB)
TypeScript (Client and Server-Side, Node.js & Angular)

Supported Languages (Mobile)

Java (Android)
Swift (iOS)
Objective-C, C & C++ (iOS)
JavaScript (including Node.js, Angular, AngularJS, Express.js & Koa.js)

Follow along with this guide to learn how to perform a source code scan and generate a vulnerability report.

  1. Launch Syhunt Hybrid and click the Syhunt Code icon or New Scan button in the welcome page.

  2. Select a source code directory, source file, APK file or repository to scan.
  3. Select a scan method. We recommend the Application Code Scan (Default) method, which scans for all vulnerabilities using the recommended settings - the different methods are explained in the Hunt Methods document.
  4. Press the OK button to start the scan.

In the end of the scan, you can click Generate a Report to save the results as a HTML report or any other prefered format.

How to perform a code scan via command-line

  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]] -gr

# Exemplos:
scancode git://sub.domain.com/repo.git -gr
scancode https://github.com/user/repo.git -rb:master -gr
scancode c:\source\www\ -gr
scancode c:\source\www\file.php -gr
scancode c:\mobile\myapp.apk -gr
scancode "c:\source code\www\" -gr

Os relatórios da ferramenta scancode são gerados e salvos de forma automática quando o parâmetro -gr é 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]Sets a repository branchmaster
grGera um arquivo de relatório ao término de uma varredura 
gxGera um arquivo com dados exportados ao término de uma varredura 
orAbre um relatório após a varredura 
erEnvia o relatório por email imediamente após ele ter sido gerado 
etrk:[nomedotracker]Indica as preferências de email a serem usadas ao enviar o relatório por email 
esbj:[assunto]O assunto do email a ser usado ao enviar o relatório por emailSyhunt Hybrid Report
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 
aboutExibe informações sobre a versão atual do Syhunt 
help (ou /?)Mostra a lista de parâmetros disponíveis 

Advanced Features

Preventing a Code Vulnerability From Being Reported

You can prevent specific vulnerabilities from being reported through ignore IDs or rules: just create a .vulnignore file in the root directory of the code repository or directory to be scanned. Each line of this file can contain a different ignore ID or rule.

Attach:code_vulnignore.png Δ

Ignore IDs are shown in reports at the end of each vulnerability entry and are the recommended and easiest way to ignore vulnerabilities in Syhunt. Alternatively, you can create and add Ignore Rules? that can apply to wider scenarios.

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).

Agendando Varreduras

Adicionar e configurar um agendamento é uma tarefa fácil:

  1. Clique no ícone Scheduled Scans (Agendamentos) na barra de tarefas inicial. A tela de Scheduled Scans irá abrir.
  2. Clique no ícone Add Scheduled Scan (Adicionar Agendamento) na barra da tela Scheduled Scans.
  3. Preencha um nome de referência para o novo agendamento (como MeuScan) e pressione OK. A janela de preferências irá abrir.
  4. Na aba Scan, preencha os detalhes do alvo e selecione o método de varredura e as opções desejadas.

  5. Na aba Report (Relatório), configure como desejado as opções de criação de relatório.
  6. Na aba Schedule (Cronograma), preencha o plano de evento desejado.

  7. Clique no botão OK quando estiver tudo pronto.

Enviando Relatórios Por Email

Em primeiro lugar, você precisa adicionar uma conta de email:

  1. Clique no ícone de Issue Trackers (Rastreadores de Problemas) na barra da tela inicial. A tela de Issue Trackers irá abrir.
  2. Clique no ícone Add Tracker (Adicionar Rastreador) na barra da tela de rastreadores e escolha a opção do menu Add tracker: Email (Adicionar rastreador: Email).
  3. Digite um nome de referência para o novo rastreador (como Mail) e pressione OK. A janela de preferências irá abrir.
  4. Preencha os endereços de email em Sender/Recipient (Remetente / Destinatário).
  5. Preencha o endereço do host e as credenciais em SMTP Authentication (Autenticação de SMTP) e clique no botão OK.
  6. Clique no ícone Scheduled Scans na barra inicial. A tela Scheduled Scans irá abrir.
  7. Clique com o botão direito do mouse em um agendamento e clique na opção Edit Schedule Preferences (Editar Preferências do Agendamento). A janela de preferências irá abrir.
  8. Vá até a aba Email e marque a opção Automatically email report after generation para ativar o envio de relatório por email.

  9. Selecione a conta criada anteriormente.
  10. Clique no botão de OK quando estiver tudo pronto.

Revendo resultados das varreduras programadas

A qualquer momento você pode ver os resultados de varreduras atuais ou anteriores e gerar um novo relatório. Apenas abra o Syhunt Hybrid e clique no ícone de Past Sessions (Sessões Anteriores) na barra da tela inicial.

Trabalhando com Lançadores e Agendadores de Terceiros

Confira este documento sobre como iniciar o Syhunt a partir de agendadores de terceiros, Jenkins e outras ferramentas

Personalizando o Relatório

Adicionando um Logo ao Relatório

Antes de salvar um relatório, você pode adicionar um logo que será incluído com os relatórios gerados de agora em diante:

  1. Clique no botão Editar Preferências de Relatório (Edit Report Preferences) na barra. O diálogo Preferências de Relatório (Report Preferences) abrirá.
  2. Preencha o endereço da imagem contendo o logo
  3. Clique OK para guardar as preferências.

Agora ao gerar um relatório, ele irá conter o logo de sua organização em vez do logo da Syhunt.

System Requirements

O Syhunt Hybrid (incluindo sua versão Community) deve ser instalado sobre plataformas 64-bit Windows ou Linux, mas é capaz de analisar aplicações concebidas para qualquer plataforma alvo, incluindo Android, Apple iOS e MacOS, BSD, Linux, Windows, Solaris e Unix, independente da plataforma a partir de qual o software é executado.

  1. 4GB de RAM disponível (8GB recomendado)
  2. 1GB de espaço livre em disco*
  3. Conexão com a Internet (recomendada para scans de código e para scans dinâmicos e algumas funcionalidades chave)
  4. Um dos seguintes sistemas operacionais 64-bit compatíveis:
    1. Windows 7, 8 ou 10, ou Windows Server 2008 a 2019
    2. Ubuntu Server ou Desktop 18 ou posterior
    3. CentOS 7 ou 8 (Minimal ou Everything)
    4. Qualquer distribuição Linux não oficialmente suportada como as listadas logo abaixo neste documento.
  5. (Opcional) GIT no Linux ou GIT para Windows instalado, para realizar scans de repositórios GIT
  6. Java ou Java Headless instalado em SO Linux
  7. Caso binários nativos não estejam disponíveis para sua distribuição Linux específica ainda, o Wine64 Stable (3, 4 ou 5) precisa estar instalado.
  8. (Opcional) Java 8 ou superior, para realizar scans de arquivos APK do Android

* Isto não inclui o espaço necessário para salvar os dados de sessões de scan, o que varia dependendo do website ou código-fonte alvo de análise e a frequência de varreduras.

Distribuições Linux Compatíveis

Oficialmente Suportadas:
Ubuntu Server/Desktop 18.10 e posterior
CentOS 7.7 e posterior
Não Oficialmente (Testado com Sucesso):
Kali Linux 2019 e posterior
Parrot OS 4.1, 4.7 e posterior
Debian 9.11 e posterior
Linux Mint 19.2 e posterior
OpenSUSE Leap 15.1 e posterior
Arch Linux 2019 e posterior
Fedora 32
MX Linux 19.1 e posterior
KDE Neon 2020.03 e posterior
Deepin 15.9
Manjaro 19
Não Suportado:
Elementary OS 5.1 (Testado com Sucesso), 5.0 (Não Suportado)
CentOS 6.1 (Testado com Sucesso)
Solus 4.1 (Instável)


Para documentação adicional do produto, visite syhunt.com/docs/br

お問い合わせ

Contact