CompTIA PenTest+
1 Threats, Attacks, and Vulnerabilities
1-1 Common Threat Actors
1-2 Threat Intelligence Sources
1-3 Threat Actors and Motives
1-4 Threat Actor Tactics, Techniques, and Procedures (TTPs)
1-5 Vulnerability Types
1-6 Exploit Types
1-7 Attack Types
1-8 Threat Detection and Monitoring
1-9 Threat Hunting
1-10 Incident Response
2 Architecture and Design
2-1 Security Controls
2-2 Network Architecture
2-3 Cloud and Virtualization
2-4 Web Application Security
2-5 Wireless Security
2-6 Mobile Security
2-7 IoT Security
2-8 Industrial Control Systems (ICS) Security
2-9 Physical Security
2-10 Secure Software Development
3 Tools and Code
3-1 Penetration Testing Tools
3-2 Exploitation Tools
3-3 Post-Exploitation Tools
3-4 Reporting Tools
3-5 Scripting and Automation
3-6 Programming Languages
3-7 Code Analysis
3-8 Open Source Intelligence (OSINT) Tools
4 Planning and Scoping
4-1 Penetration Testing Methodologies
4-2 Legal and Compliance Considerations
4-3 Scope Definition
4-4 Risk Assessment
4-5 Threat Modeling
4-6 Information Gathering
4-7 Asset Identification
4-8 Data Classification
4-9 Business Impact Analysis
4-10 Penetration Testing Objectives
5 Information Gathering and Vulnerability Identification
5-1 Passive Reconnaissance
5-2 Active Reconnaissance
5-3 Vulnerability Scanning
5-4 Network Mapping
5-5 Service Identification
5-6 Web Application Scanning
5-7 Wireless Network Scanning
5-8 Social Engineering Techniques
5-9 OSINT Techniques
5-10 Vulnerability Databases
6 Attacks and Exploits
6-1 Exploit Development
6-2 Buffer Overflows
6-3 SQL Injection
6-4 Cross-Site Scripting (XSS)
6-5 Cross-Site Request Forgery (CSRF)
6-6 Command Injection
6-7 Privilege Escalation
6-8 Lateral Movement
6-9 Evasion Techniques
6-10 Exploit Delivery Methods
7 Penetration Testing Process
7-1 Pre-Engagement Activities
7-2 Reconnaissance
7-3 Scanning and Enumeration
7-4 Exploitation
7-5 Post-Exploitation
7-6 Reporting
7-7 Remediation
7-8 Retesting
7-9 Documentation and Evidence Collection
7-10 Communication and Coordination
8 Reporting and Communication
8-1 Report Structure
8-2 Executive Summary
8-3 Technical Findings
8-4 Risk Assessment
8-5 Remediation Recommendations
8-6 Legal and Compliance Considerations
8-7 Presentation Skills
8-8 Communication with Stakeholders
8-9 Documentation Standards
8-10 Continuous Improvement
9 Security and Compliance
9-1 Regulatory Requirements
9-2 Industry Standards
9-3 Compliance Audits
9-4 Data Protection
9-5 Privacy Laws
9-6 Incident Response Planning
9-7 Disaster Recovery Planning
9-8 Business Continuity Planning
9-9 Risk Management
9-10 Security Awareness Training
Secure Software Development

Secure Software Development

Key Concepts

1. Secure Development Lifecycle (SDLC)

The Secure Development Lifecycle (SDLC) integrates security practices into the software development process. This includes activities like requirements analysis, design, coding, testing, and deployment, with a focus on security at each stage.

Example: During the design phase of an SDLC, security requirements are specified, such as implementing encryption for sensitive data and using secure coding practices to prevent common vulnerabilities.

2. Threat Modeling

Threat modeling is the process of identifying potential threats to a system and designing defenses to mitigate those threats. This involves understanding the attack surface, identifying assets, and prioritizing risks.

Example: A threat model for an e-commerce site might identify customer data as a critical asset and prioritize defenses against SQL injection and cross-site scripting (XSS) attacks to protect that data.

3. Secure Coding Practices

Secure coding practices are guidelines and techniques that help developers write code that is resistant to common vulnerabilities. These practices include input validation, error handling, and secure authentication and authorization mechanisms.

Example: When developing a web application, a developer might use parameterized queries to prevent SQL injection attacks and implement proper input validation to ensure that user inputs are safe.

4. Static and Dynamic Code Analysis

Static code analysis involves examining the source code of an application for vulnerabilities without executing it. Dynamic code analysis, on the other hand, involves testing the application while it is running to identify security issues.

Example: A static code analysis tool might detect hard-coded credentials in the source code, while a dynamic analysis tool might identify a buffer overflow vulnerability by simulating an attack on the running application.

5. Secure Deployment and Configuration

Secure deployment and configuration involve ensuring that software is deployed in a secure environment and configured according to best practices. This includes setting up firewalls, applying security patches, and configuring access controls.

Example: When deploying a web application, the deployment team might ensure that the server is configured with the latest security patches, uses HTTPS for secure communication, and restricts access to sensitive directories.

Examples and Analogies

Consider a secure building as an analogy for secure software development. The blueprint and construction process (SDLC) ensure that the building is designed and built with security in mind. Threat modeling is like identifying potential weak points in the building's design. Secure coding practices are like using high-quality materials and construction techniques to build the building. Static and dynamic code analysis are like inspections during construction and after the building is operational to ensure it meets safety standards. Secure deployment and configuration are like setting up security systems, such as alarms and surveillance cameras, to protect the building once it is operational.

By understanding and implementing these key concepts, software developers can create applications that are more secure and resistant to attacks.