debugging the life logo
  • About 
  • Blog 
  • Tags 
Blog
  1. Home
  2. Blogs
  3. EC-Council CASE .NET - Certified Application Security Engineer - Review

EC-Council CASE .NET - Certified Application Security Engineer - Review

Posted on November 8, 2024  (Last modified on December 15, 2024) • 12 min read • 2,442 words
Application Security
 
.NET
 
ASP.NET
 
Microsoft
 
EC-Council
 
CASE .NET
 
Certification Review
 
Application Security
 
.NET
 
ASP.NET
 
Microsoft
 
EC-Council
 
CASE .NET
 
Certification Review
 
Share via
debugging the life
Link copied to clipboard

Certificação interessante, mas perigosa para desenvolvedores versados apenas nas últimas versões da tecnologia Microsoft .NET ou inexperientes como eu. Este é um post review do curso e seu conteúdo, com direcionamentos para não cair do penhasco no momento da prova.

On this page
  • Contexto de carreira
  • CASE (Certified Application Security Engineer) ℹ️
    • Valores e o que está incluso
    • Pra quem é indicado
    • Critério de eligibilidade para o exame
    • Sobre o exame
  • Conteúdo teórico bom e atemporal, mas tecnologias antigas abordadas impactam diretamente no aprendizado 😮‍💨
    • Mais informações
    • Ementa do curso
  • Meu jeito de estudar
    • Sugestão de roteiro de leitura 💎
  • Santa Madre de Díos, o legado ataca na prova! 😫
    • Resumo de coisas que você deve dar atenção 🔥
  • Devo “enrollar” numa bronca dessa? ✌
  • Referências 📚
EC-Council CASE .NET - Certified Application Security Engineer - Review
🇬🇧 🇺🇸 If you need a bootleg version in English, click here to read it through Google Translator.

Contexto de carreira  

Aqui é mais um relato de momento de carreira e por que decidi me aventurar nesta certificação, mesmo hoje não sendo muito fã das certificações da EC-Council (isso é um papo pra outro momento).

Até 2011 toda minha carreira foi direcionada para infraestrutura em geral, como redes, sistemas operacionais e serviços neles implementados em ambientes heterogêneos com Linux (de todos os sabores) e Windows. A partir de 2011 caí de gaiato na área de segurança, e comecei a reforçar mais ainda meus conhecimentos que eram muito básicos de programação, que se resumia a scripts de batch e um pouco de Powershell para Windows, Shell Script para Linux e Python para fazer scripts universais e ajudar no desenvolvimento de exploits durante meus períodos mais imersos em segurança ofensiva.

Em 2021, mesmo ainda como liderança exclusiva em segurança ofensiva, comecei a trabalhar de forma mais próxima às iniciativas de criação de programas de desenvolvimento seguro, atuando inicialmente mais como um consultor de processos e tecnologias necessárias, e consequemente na formatação dos perfis dos profissionais a serem contratados, condução das entrevistas e direcionamento das contratações para o RH. Até aí tudo legal, tudo confortável, até que eu migro efetivamente para o time de Segurança de Applicações (AppSec) como líder do time que eu ajudei a contruir. A responsabilidade e cobrança sobre o tema acabou aumentando.

Como tech lead do time, me senti na obrigação de aprimorar meus conhecimentos, mesmo sabendo que já tinha uma bagagem considerável desde 2015 do tema de forma macro quando comecei a lidar direta e indiretamente iniciativas de transformação digital e início de implementação de agilidade e segurança em esteiras de software.

Então decidi seguir por dois caminhos paralelos iniciais, primeiro me enveredar para a certificação CSSLP (Certified Secure Software Lifecycle Professional) da ISC2 para organizar melhor todo o conhecimento que eu já tinha com uma boa base do que a academia fala sobre desenvolvimento seguro como prática; e segundo me dediquei ao desenvolvimento, mas não ficando dentro de uma possível zona de conforto como o Python, decidi que era hora que aprender outra tecnologia, outro framework amplamente utilizado em meu empregador, foi aí que decidi me aventurar com Microsoft .NET. Grande parte da culpa de ter mais um aspirante a desenvolvedor cabaço na área é do Pedro Ferreira (Linkedin|Github), que é um dev experiente em .NET que levamos para time durante meu período como líder. Culpem ele pelo advento de um profissional com conteúdos de pessíma qualidade de qualquer coisa correlata que vier daqui pra frente. 😂

No futuro acho que vale um post para a certificação CSSLP (Certified Secure Software Lifecycle Professional). Não tem muito segredo, mas nunca é tarde para compartilhar. Stay tunned!

Para estudos do .NET, foquei muito no desenvolvimento web com ASP.NET com padrão MVC a partir da versão 6. Estudei pelas plataformas do balta.io e desenvolvedor.io (o que mais indico) , além do uso de uma infinidade de materiais disponíveis em blogs e YouTube.

A partir do momento que me senti um pouco mais confiante do meu conhecimento sobre o framework e a tecnologia, decidi que poderia encarar o curso e a prova do EC-Council CASE .NET - Certified Application Security Engineer.

CASE (Certified Application Security Engineer) ℹ️  

A família CASE (Certified Application Security Engineer) possui dois treinamentos, das tecnologias .NET e Java, que podem ser adquiridos da seguinte forma:

  • Diretamente pela EC-Council Store. Mas é necessario submeter um formulário de elegibilidade para comprovação de experiência;
  • Um representante de vendas oficial da EC-Council, que foi por onde fui atendido com belos descontos. Caso você tenha interesse entre em contato comigo que te direciono para o representante que me atendeu;
  • Ou por representantes locais no Brasil como a AcadiTI e a Strong Security, que podem oferecer ofertas em R$ com parcelamentos.

Valores e o que está incluso  

  • Preço médio: US$ 880 (Mas fale com um representante para conseguir descontos! 😉)
    • US$ 880 = US$ 330 E-courseWare + US$ 100 Non-Refundable Eligibility Application Fee + US$ 450 Exam Voucher
  • O que está incluso:
    • Material online pelo EC-Council Learning, com vídeos de cada módulo e laboratórios, e livro online que nada mais é do que as apresentações mostradas nos vídeos. Infelizmente “nenhum material pode ser baixado”.
    • Prova de certificação.
  • Prazo para estudo e prova:
    • 1 ano

Pra quem é indicado  

Para qualquer profissional engenheiro de software ou de segurança de aplicações que queria se aprofundar nas práticas de proteção e resiliência de suas soluções.

Critério de eligibilidade para o exame  

Para ser elegível a candidatar-se ao Exame CASE, o candidato resumidamente deve atender um dos critérios abaixo:

  1. Concluir o treinamento oficial do EC-Council CASE por meio de um parceiro credenciado do EC-Council (Centro de treinamento credenciado/iWeek/iLearn) (todos os candidatos devem pagar a taxa de inscrição de USD 100, a menos que sua taxa de treinamento já inclua isso) ;
  2. Ser um profissional certificado ECSP (.NET/Java) com certificação não expirada;
  3. Ter 2 anos de experiência comprovada em InfoSec e desenvolvimento de software ;
  4. Possuir alguma certificação de indústria relacionadas como GSSP .NET/Java.
 
Caso atenda os items 3 e 4 citados acima e queira fazer direto a prova, é necessário pagar a taxa e analise de elibilidade de US$100 e aguardar a resposta para garantir a certificação após passar com sucesso pela prova.

Sobre o exame  

  • Número de questões: 50
  • Duração: 2 horas
  • Formato: Múltipla escolha
  • Nota de aprovação: 70%

A exame é realizado com um proctor, que te monitorará durante o período de teste com o uso do LogMeIn. Logo no início o proctor já perguntar se prefere a interação sempre via chat ou por voz, o que fica a seu critério.

Mais informações sobre o agendamento, teste de equipamento, interação com o proctor e início do teste pode ser acessado pelo clicando na imagem abaixo.

Conteúdo teórico bom e atemporal, mas tecnologias antigas abordadas impactam diretamente no aprendizado 😮‍💨  

Como mencionei no início deste artigo, minha maior dificuldade foi a necessidade de adentrar em conteúdo de versões mais antigas do ASP.NET. Se você já é um profissional experimentado em todas as fases do framework .NET, essa jornada será extremamente fácil pra ti.

A partir do ASP.NET Core 6, a plataforma trouxe mudanças que simplificaram muito a vida de quem desenvolve com ela. No entanto, para estudantes como eu que estão começando, ser obrigado a aprender conceitos e práticas de versões antigas pode gerar uma série de dificuldades. O que levou a ter que buscar algumas referências externas para melhor assimilação, e em alguns momentos até decorar padrões de configuração, para ajudar nas eliminações durante as respostas de múltipla escolha.

Durante o curso, você será imerso em um contexto de tudo em servidor com uso do IIS e nada em containers, onde vecê será forçado a estudar configurações de segurança em IIS. Portanto, dê total atenção ao capítulo 10. Secure Deployment and Maintainance.

Nas versões antigas do ASP.NET Core, o Startup.cs era o coração do projeto. Ali ficavam a configuração dos serviços e o pipeline de middlewares. Com o ASP.NET Core 6, tudo isso foi centralizado no Program.cs. A mudança trouxe simplicidade, mas criou um problema para quem está aprendendo: entender por que alguns materiais ainda falam de Startup.cs enquanto outros já seguem o modelo novo.

E pra ajudar, ainda é exigido conhecimento do modelo Web Forms, o controle de validação de formulários era amplamente baseado em componentes específicos como <asp:RequiredFieldValidator>, <asp:RangeValidator>, <asp:CompareValidator>, <asp:RegularExpressionValidator> e <asp:CustomValidator>. Tudo extremamente acoplado e difícil de gerenciar. Atualmente, a validação é baseada em Data Annotations e Model Binding, permitindo que regras sejam definidas diretamente nos modelos de dados, centralizando a lógica e reduzindo o acoplamento ao front-end. Além disso, frameworks como o jQuery Validation complementam a experiência, fornecendo validação no lado do cliente sem a necessidade de controles adicionais.

Mais informações  

CASE Brochure CASE .NET Blueprint v1

Ementa do curso  

  • Need and benefits of application security
  • Most common application-level attacks
  • Common reasons behind the existence of application-level vulnerabilities
  • Components of comprehensive application security
  • The need and advantages of integrating security in software development life cycle (SDLC)
  • Functional vs Security Activities in SDLC
  • Microsoft Security Development Lifecycle (SDL)
  • Software Security Reference Standards, Models and Frameworks

  • Importance of Gathering Security Requirements
  • Security Requirement Engineering (SRE) and its phases
  • Abuse Cases and Abuse case modeling
  • Security Use Cases and Security Use Case Modeling
  • Abuser and Security Stories
  • Security Quality Requirements Engineering (SQUARE) model
  • Operationally Critical Threat, Asset and Vulnerability Evaluation (OCTAVE) model

  • Importance of secure application design
  • Secure design principles
  • Threat Modeling
  • Threat Modeling Process
  • STRIDE and DREAD model
  • Secure Application Architecture Design

  • Importance of robust input validation
  • Secure Input Validation Techniques in web forms, ASP.NET Core, and MVC
  • Defensive coding techniques against SQL Injection attacks
  • Defensive coding techniques against XSS attacks
  • Defensive coding techniques against Parameter Tampering attacks
  • Defensive coding techniques against Directory Traversing attacks
  • Defensive coding techniques against Open Redirect vulnerabilities

  • Authentication and Authorization
  • Authentication and Authorization in Web Forms
  • Authentication and Authorization in ASP.NET Core
  • Authentication and Authorization in MVC
  • Authentication and Authorization Defensive Techniques in Web Forms
  • Authentication and Authorization Defensive Techniques in ASP.NET Core
  • Authentication and Authorization Defensive Techniques in MVC

  • Cryptography in .NET
  • Symmetric Encryption
  • Defensive coding practices in symmetric encryption
  • Asymmetric encryption
  • Defensive coding practices using asymmetric encryption
  • Hashing
  • Digital Signatures
  • Digital Certificates
  • ASP.NET Core specific secure cryptography practices

  • Session Management Concepts
  • Session Management Techniques
  • Defensive Coding Practices against Session Hijacking Attacks
  • Defensive Coding Practices against Session Replay and Session Fixation Attacks
  • How to prevent sessions from cross-site scripting, client-side scripts and CSRF attacks
  • How to prevent session attacks on ViewState
  • ASP.NET Core specific secure session management techniques

  • Introduction to Error and and Exception Handling
  • The need of secure exception handling
  • Defensive coding practices against information disclosure
  • Defensive coding practices against improper error handling
  • Secure error handling practices in ASP.NET Core
  • Secure Auditing and Logging Best Practices

  • Introduction to Static Application Security Testing (SAST)
  • Manual Secure Code Review Techniques for most common vulnerabilities
  • Dynamic Application Security Testing
  • DAST using automated application vulnerability scanning tools
  • DAST using proxy-based security testing tools

  • Importance of secure deployment
  • Security practices at host level
  • Security practices at network level
  • Security practices at application level
  • Security practices at IIS level
  • Security practices at .NET level
  • Security practices at SQL Server level
  • Security maintenance and monitoring activities

Meu jeito de estudar  

Sou muito pragmático nos meus estudos, em resumo, me organizando conforme o conteúdo disponível e qualquer outro externo que seja necessário. No caso do CASE .NET, segui o seguinte esquema:

  1. Assisti todos os vídeos e todos os labs;
  2. Fiz a primeira leitura de todos os slides de todos os capítulos disponíveis tomando notas de tudo aquilo que precisaria buscar alguma referência externa;
  3. Não fiz nenhum laboratório, pois basicamente é um copia e cola do que é explicado nos slides. Desnecessário se você possui algum dominio do ASP.NET, além estarem disponíveis os vídeos de cada um deles para assistir;
  4. Agendei a prova para criar o clima de cobrança em mim 😨…kkk. Duas semanas para a prova a partir daqui acredito que seja suficiente se você estiver focado;
  5. Li novamente todos os slides de forma mais atenciosa e concentrada, dando atenção maior para os capítulo que de alguma forma eu tinha menos domínio sobre o conteúdo principalmente por causa do legado.

Precisei de poucas de referências externas, apenas para entender melhor configurações que fala muito brevemente no conteúdo. Para a prova, tudo o que está disponível no curso é o suficiente.

Se você gosta de controlar seus avanços, você pode fazer como eu anotando no caderno para ter o controle visual. Pode ver que anoto inclusive a quantidade de páginas em cada capítulo, me ajudando a dividir melhor a carga de estudo no dia ou período.

Sugestão de roteiro de leitura 💎  

Nas duas fases de leitura que menciono acima, gostaria de compartilhar uma sugestão de sequência:

  • Capítulo 1 - O capítulo inicial é basicamente um resumo de todo o curso, te derá um panorama do que estará por vir;
  • Capítulo 9 - Este capítulo abordará principalmente o SAST. Esqueça as ferramentas absoletas mencionadas, o mais legal aqui serão as dezenas de exemplos de códigos vulneráveis. Entendendo cada um deles você estará safo na prova quando necessitar entender a vulnerabilidade apresentada;
  • Capítulo 10 - Esse cara pra mim foi o mais tenso por aborda o deployment em IIS. Infelizmente foi um capítulo que precisei memorizar muitos padrões de configurações . 🥺
  • Demais capítulos - Daqui em diante você pode seguir sequencialmente do capítulo 2 ao 8, pois você já terá absorvido uma grande parte do conteúdo técnico exigido da prova. Dê grande atenção redobrada aos capítulos 2 e 3, que são mais teóricos e chatos.

Santa Madre de Díos, o legado ataca na prova! 😫  

Pois é, a prova não perdoa. Certamente eu “cairia do penhasco” se não estivesse dado atenção ao legado de configurações do IIS e webforms.

Pude observar alguns erros de ortográficos e até gramaticais em uma ou duas perguntas, além de opções de respostas mal formatadas, deixando dúvidas no momento de responder.

As 2 horas disponíveis são mais que suficientes, respondi as 50 perguntas em pouco menos de 40 minutos, revisando poucas respostas ao final. Enfim, passeiiii!!!!! Badge da certificação aqui! Mais uma pra conta.

Resumo de coisas que você deve dar atenção 🔥  

  • Threat Modeling
    • STRIDE
    • DREAD
  • Práticas de segurança dentro do SDL
  • SAMM
  • Abuse Case e seus relacionamentos
  • Security Case e seus relacionamentos
  • Camadas de proteção, como WAF e Firewall
  • Vulnerabilidades clássicas, como SQLi, Path Traversal, XSS (Input e Output encoding)
  • Controles no WebForm
  • Controles de sessão
  • Error handling
  • Algoritmos e cifras seguras de criptografia simétrica e assimétrica
  • Controles de segurança no IIS

Devo “enrollar” numa bronca dessa? ✌  

Se você tem interesse em aprofundar nos controles de segurança em .NET, sugiro entrar nesse barco. Umas das coisas mais legais do curso, apesar da pouca abordagem a estrutura MVC, é poder estabelecer melhor os checklists de segurança para compartilhar com os desenvolvedores e na criação de conteúdos de boas práticas de desenvolvimento, principalmente os controles defensivos específicos para .NET.

Referências 📚  

  • https://www.eccouncil.org/train-certify/certified-application-security-engineer-case-net/
  • https://www.eccouncil.org/train-certify/certified-application-security-engineer-case-java/
  • https://cert.eccouncil.org/
  • https://desenvolvedor.io/
  • https://balta.io/

👾

 2024, Gostoso Demais!
Hackeando aplicativos e suas APIs em versões modernas do Android com Burp Suite e Zed Attack Proxy 
On this page:
  • Contexto de carreira
  • CASE (Certified Application Security Engineer) ℹ️
    • Valores e o que está incluso
    • Pra quem é indicado
    • Critério de eligibilidade para o exame
    • Sobre o exame
  • Conteúdo teórico bom e atemporal, mas tecnologias antigas abordadas impactam diretamente no aprendizado 😮‍💨
    • Mais informações
    • Ementa do curso
  • Meu jeito de estudar
    • Sugestão de roteiro de leitura 💎
  • Santa Madre de Díos, o legado ataca na prova! 😫
    • Resumo de coisas que você deve dar atenção 🔥
  • Devo “enrollar” numa bronca dessa? ✌
  • Referências 📚
comments powered by Disqus
👾

Eternal student.

     
Copyright © 2024 Tiago Tavares.
debugging the life
Code copied to clipboard