Security PS's Cyber Apprentice Program is designed to provide a pathway for individuals to obtain a cybersecurity penetration testing job at Security PS and its partners in the Kansas City area. This resource helps candidates acquire key skills to qualify for the program. Our program requires students to be able to build web applications, be familiar with using Linux, and have some foundational understanding of networking, HTTP, and security concepts. This resource is intended to help individuals self-study these topics so they can qualify for the apprenticeship program. Of the tracks below, our top priority for students is software development. Your goal is to be able to build a web application that includes the following features:
- Login process with multiple steps. For example, Username + Password and one of the following:
- TOTP Token (like Google/Microsoft Authenticator)
- Hardware Tokens (Like a Yubikey)
- Email or SMS based one-time tokens
- Forgot password process that allows users to recover their account if they forget the credentials or are locked out
- Registration or user invitation process that allows users to register for a new accounts or invites them to set up an account
- User Administration including creating, deleting, and modifying users as well as assigning and managing roles, resetting passwords and their secondary login factor
- Features that require that require different levels of role-based or claims-based authorization controls
- "My Profile" feature that allows a user update his or her own personal information, password, and secondary login factor
The application must also satisfy the following technical requirements
- Stores data in a database (SQL or NoSQL). Examples include SQLite, Microsoft SQL Server, MySql, PostgreSQL, and MongoDB
- Project hosted on GitHub, GitLab, or other public repository including instructions for cloning and running the web application locally
- No secrets, encryption keys, or passwords stored in that repository*
You can be creative in choosing the purpose for your application. If you need ideas, students in the past have built an HR portal, sports management application, online store, digital wallet, or peer-to-peer payment system. As you work through each learning track, document and demonstrate what you have learned through GitHub repositories and write ups. The Software Development Track below provides resources to learn to write such an application in Microsoft's ASP.NET Core, MVC framework or Node.js the React Framework. There are many other high quality languages and frameworks out there.
When applying for Security PS's Cyber Apprentice Program, Security PS will use the application you build and the artifacts you record as part of the learning process as part of the interview process. You can apply as a high school student, college student, or professional. If you are interested in participating in our program and you live in the Kansas City, Lawrence, Topeka, or surrounding areas, please visit our website and use the Contact Us form to request more information.
There are many web development languages, frameworks, platforms, and libraries. ASP.NET Core and Node.js are just two; however we have found them quite popular at Kansas City Area companies. The following tutorials are a great starting point for beginning your software development journey.
Note: I will gradually replace the .NET Core 3 content with .NET 5 as I identify good tutorials.
These tutorials focus on a foundational understanding of C#, ASP.NET Core, MVC, WebApi, Entity Framework, and ASP.NET Identity.
- Microsoft Learn
- Intro to Visual Studio
- C# 101
- C# Advanced
- Nuget 101
- .NET Core 101
- ASP.NET Core 101
- Entity Framework Core 101
- FreeCodeCamp: C# Tutorial - Full Course for Beginners
- FreeCodeCamp: ASP.NET 5
- The following playlist contains older videos covering ASP.NET Core 2.1. However, it has the best explanation of using ASP.NET Identity for login, authorization, roles, and more. Here's a subset of videos to get started, but look through any videos related to ASP.NET Identity, Registration, Login, Roles, UserManager, SignInManager, and more. They will not 100% match up with the latest version of ASP.NET or MVC, but they will be pretty similar.
- ASP NET Core Identity tutorial from scratch
- Register new user using asp net core identity
- ASP NET Core Identity UserManager and SignInManager
- ASP NET core identity password complexity
- Show or hide login and logout links based on login status in asp net core
- Implementing login functionality in asp net core
- Authorization in ASP NET Core
- Extend IdentityUser in ASP NET Core
- Creating roles in asp net core
- Get list of roles in asp net core
- Edit role in asp net core
- Add or remove users from role in asp net core
- ASP NET Core role based authorization
- Show or hide navigation menu based on user role in asp net core *
- Bootstrap Tutorial For Beginners by kudvenkat
- WebApi Tutorial for Beginners by kudvenkat
- .NET Core 3.1VC REST API - Full Course by Les Jackson
- Design Patterns Tutorial for Beginners
- FreeCodeCamp: Responisve Web Design
- FreeCodeCamp: JavaScript Algorithms and Data Structures
- FreeCodeCamp: Front End Development Libraries
- FreeCodeCamp: APIs and Microservices
- FreeCodeCamp: Information Security
Consider learning to use Git and GitHub early on in the programming track so you can place your code in your own personal repository. You can then show it off to future employers.
Learn Linux by installing it in a virtual machine such as Virtual Box or Hyper-V, and then try to use it. These tutorials can help, but using it is the best way to learn Linux. If you are unsure which distribution to choose, start with either Ubuntu or Kali Linux.
- Linux Journey
- TryHackMe: Linux Fundamentals
- Try Their Free Course: Linux Fundamentals
- Try Their Free Course: Linux Modules
- Geek's Lessons: Linux Command Line Full course: Beginners to Experts. Bash Command Line Tutorials
- Linux for Ethical Hackers (Kali Linux Tutorial)
- edureka!: Linux Administration Tutorial
- Khan Academy AP Computer Science Principles
- Digital Information
- The Internet
- Online Data Security
- Try Hack Me: Introductory Networking
- The Tangled Web: Chapter 3 HTTP
- OdeToCode: A Software Developer's Guide to HTTP
- HTTP Crash Course (Just the first 17 minutes)2.
While earning certifications may not be your goal, these provide a foundational knowledge of networking and security concepts.
- Professor Messer A+ (Focus on Operating Systems)