1. Home
  2. /
  3. Security
  4. /
  5. IT Security
  6. /
  7. C/C++
  8. /
  9. Security testing C and...

Security testing C and C++ applications

Für Unternehmen

Seminar als Inhouse-Seminar buchen

Eine der Kernkompetenzen von PROTRANET sind effiziente Inhouse Schulungen. Wählen Sie aus bestehenden Konzepten mit bewährten Inhalten (Inhouse Standard) oder lassen Sie sich maßgeschneiderte Inhalte zu Ihrem individuellen Bedarf (Inhouse Individuell) zusammenstellen. Wir beraten Sie gerne.

Ab
2250,00 € (2,677,50 € inkl. 19% MwSt.)

Preis auf Anfrage

Inhouse Standard
  • Langjährig erprobte und bewährte Inhalte
  • Topaktuelle Methodenvielfalt
  • Schnelle und unkomplizierte Umsetzung
  • Praxiserfahrene Trainer aus Ihrer Branche
  • Hochprofessionelles Seminarmanagement
Mehr erfahren
Inhouse Individuell
  • Maßgeschneidert für Ihr Unternehmen
  • Hohe Transferleistung durch Bearbeitung interner Projekte und Beispiele
  • Praxiserfahrene Trainer aus Ihrer Branche
  • Hochprofessionelles Seminarmanagement
Mehr erfahren

Schulungsinhalt

Cyber security basics

  • What is security?
  • Threat and risk
  • Cyber security threat types – the CIA triad
  • Cyber security threat types – the STRIDE model
  • Consequences of insecure software

Memory management vulnerabilities

Assembly basics and calling conventions
  • x64 assembly essentials
  • Registers and addressing
  • Most common instructions
  • Calling conventions on x64
    • Calling convention – what it is all about
    • Calling convention on x64
    • The stack frame
    • Stacked function calls
Buffer overflow
  • Memory management and security
  • Vulnerabilities in the real world
  • Buffer security issues
  • Buffer overflow on the stack
    • Buffer overflow on the stack – stack smashing
    • Exploitation – Hijacking the control flow
    • Lab – Buffer overflow 101, code reuse
    • Exploitation – Arbitrary code execution
    • Injecting shellcode
    • Lab – Code injection, exploitation with shellcode
  • Pointer manipulation
    • Modification of jump tables
    • Overwriting function pointers
Best practices and some typical mistakes
  • Unsafe functions
  • Dealing with unsafe functions
  • Lab – Fixing buffer overflow
  • What’s the problem with asctime()?
  • Lab – The problem with asctime()
  • Using std::string in C++
  • Unterminated strings
  • readlink() and string termination
  • Manipulating C-style strings in C++
  • Malicious string termination
  • Lab – String termination confusion
  • String length calculation mistakes
  • Off-by-one errors
  • Allocating nothing
  • Testing for typical mistakes

Memory management hardening

Runtime protections
  • Runtime instrumentation
  • Address Space Layout Randomization (ASLR)
    • ASLR on various platforms
    • Lab – Effects of ASLR
    • Circumventing ASLR – NOP sleds
    • Circumventing ASLR – memory leakage
  • Non-executable memory areas
    • The NX bit
    • Write XOR Execute (W^X)
    • NX on various platforms
    • Lab – Effects of NX
    • NX circumvention – Code reuse attacks
      • Return-to-libc / arc injection
    • Return Oriented Programming (ROP)
      • Protection against ROP

Security testing

  • Security testing vs functional testing
  • Manual and automated methods
  • Black box, white box, and hybrid testing
Security testing methodology
  • Security testing – goals and methodologies
  • Overview of security testing processes
  • Identifying and rating assets
    • Preparation and scoping
    • Identifying assets
    • Identifying the attack surface
    • Assigning security requirements
    • Lab – Identifying and rating assets
  • Threat modeling
    • SDL threat modeling
    • Mapping STRIDE to DFD
    • DFD example
    • Attack trees
    • Attack tree example
    • Lab – Crafting an attack tree
    • Misuse cases
    • Misuse case examples
    • Risk analysis
    • Lab – Risk analysis
  • Accomplishing the tests
  • Reporting, recommendations, and review

Common software security weaknesses

Security features
  • Authentication
  • Password management
    • Inbound password management
    • Storing account passwords
    • Password in transit
    • Lab – Is just hashing passwords enough?
    • Dictionary attacks and brute forcing
    • Salting
    • Adaptive hash functions for password storage
    • Password policy
    • NIST authenticator requirements for memorized secrets
      • Case study – The Ashley Madison data breach
      • The ultimate crack
      • Exploitation and the lessons learned
    • Password database migration
    • Testing for password management issues
    • Using password cracking tools
    • Lab – Password audit with John the Ripper

Common software security weaknesses

Input validation
  • Input validation principles
  • What to validate – the attack surface
  • Where to validate – defense in depth
  • When to validate – validation vs transformations
  • Validation with regex
  • Injection
    • Injection principles
    • Injection attacks
    • Code injection
    • OS command injection
    • Lab – Command injection
    • OS command injection best practices
    • Avoiding command injection with the right APIs
    • Lab – Command injection best practices
      • Case study – Shellshock
    • Lab – Shellshock
    • Testing for command injection
  • Integer handling problems
    • Representing signed numbers
    • Integer visualization
    • Integer promotion
    • Integer overflow
    • Lab – Integer overflow
    • Signed / unsigned confusion
    • Case study – The Stockholm Stock Exchange
    • Lab – Signed / unsigned confusion
    • Integer truncation
    • Lab – Integer truncation
    • Case study – WannaCry
    • Best practices
      • Precondition testing
      • Postcondition testing
      • Best practices in C
      • Best practices in C++
      • Lab – Integer handling best practices in C++
    • Testing for numeric problems
  • Files and streams
    • Path traversal
    • Lab – Path traversal
    • Path traversal best practices
    • Lab – Path canonicalization
    • Testing for path traversal

Security testing

Security testing techniques and tools
  • Code analysis
    • Static Application Security Testing (SAST)
    • Lab – Using static analysis tools
  • Dynamic analysis
    • Security testing at runtime
    • Penetration testing
    • Stress testing
    • Dynamic Application Security Testing (DAST)
    • Fuzzing
    • Fuzzing techniques
    • Fuzzing – Observing the process
    • American Fuzzy Lop (AFL)

Wrap up

  • Secure coding principles
  • Principles of robust programming by Matt Bishop
  • Secure design principles of Saltzer and Schroeder
And now what?
  • Software security sources and further reading
  • C and C++ resources
  • Security testing resources

Zielgruppe

C/C++ developers and testers

Seminarziele

  • Getting familiar with essential cyber security concepts
  • Understanding security testing methodology and approaches
  • Correctly implementing various security features
  • Identify vulnerabilities and their consequences
  • Learn the security best practices in C and C++
  • Input validation approaches and principles
  • Getting familiar with security testing techniques and tools

Vorkenntnisse

Seminardauer

3 Tage

Preis

Präsenzseminar/FLEXINAR®:

2250,00 € (2,677,50 € inkl. 19% MwSt.)

LIVEINAR®:

2250,00 € (2,677,50 € inkl. 19% MwSt.)

Individual Training: Preis auf Anfrage
Inhouse Training: Preis auf Anfrage

Seminarnummer

S-1430





      Ihr Berater

      Martin Heubeck
      Group Leader Sales

      Beratungszentrale und Buchungshotline:

      Kataloge

      Formate

      Dieses Seminar können Sie als Präsenzseminar, online als LIVEINAR® oder im flexiblen Mix als FLEXINAR® buchen. MEHR ERFAHREN

      Anmeldung

      Ab
      2250,00 € (2,677,50 € inkl. 19% MwSt.)



        Unverbindliche Anfrage

        Preis auf Anfrage

        Inhouse Standard
        • Langjährig erprobte und bewährte Inhalte
        • Topaktuelle Methodenvielfalt
        • Schnelle und unkomplizierte Umsetzung
        • Praxiserfahrene Trainer aus Ihrer Branche
        • Hochprofessionelles Seminarmanagement
        Mehr erfahren
        Inhouse Individuell
        • Maßgeschneidert für Ihr Unternehmen
        • Hohe Transferleistung durch Bearbeitung interner Projekte und Beispiele
        • Praxiserfahrene Trainer aus Ihrer Branche
        • Hochprofessionelles Seminarmanagement
        Mehr erfahren



          WIR BERATEN SIE GERNE

          Haben Sie noch Fragen?

          Informationen zu unseren Seminarbewertungen

          Woher kommen die Seminarbewertungen?

          Die Seminarteilnehmer bewerten unsere Veranstaltungen durch einen Bewertungsbogen. Dieser wird in unserem Qualitätsmanagement digitalisiert und ausgewertet. Die Ergebnisse werden Ihnen bei unseren Seminaren in Form eines Sternebewertungssystems angezeigt.

          Wie ergibt sich die Gesamtnote?

          Folgende Fragen werden in unseren Bewertungsbögen von unseren Teilnehmern mit einer Note von 1-6 bewertet. Daraus ergibt sich der Gesamt-Durchschnitt.

          • Der Dozent ist fachlich kompetent?
          • Der Dozent vermittelt den Lehrinhalt verständlich?
          • Der Dozent strukturiert die Vorträge gut?
          • Der Dozent geht intensiv auf die Fragen ein?
          • Der Dozent gestaltet den Kurs interessant?
          • Die Schulungsunterlagen sind gut verständlich?
          • Die Schulungsunterlagen sind gut strukturiert?
          • Die Schulungsunterlagen sind hilfreich bei meiner beruflichen Tätigkeit?
          • Der Kurs (Inhalte) war mir vorher bekannt?
          • Die Kursdauer ist an die Kursinhalte angepasst?
          • Das Arbeitstempo war zu schnell / zu langsam?
          • Es war ausreichend Zeit für praktische Übungen ?
          • Der Kurs (Inhalte) sollte weninger / mehr praktische Arbeiten beinhalten?
          • Der Kurs (Inhalte) erfüllte insgesamt meine Erwartungen ?
          • Die neuen Kenntnisse werden mir am Arbeitsplatz weiterhelfen?
          • Hat es Ihnen bei uns im Haus gefallen?

          Wenn Sie Fragen zu unseren Bewertungen haben, können Sie gerne Frau Italia Brillante unter unserer kostenlosen Telefonnummer 0800 3400311 (Freecall) anrufen oder eine E-Mail an italia.brillante@protranet.de senden.

          Italia Brillante,
          Trainingskoordination
          ist Mo – Fr 8:00 – 17:00 Uhr für Sie da.