While every cybersecurity professional would benefit by being competent in a programming language, there’s no doubt that some cyber jobs require programming skills more than others. Cybersecurity is a broad field and there are a lot of different types of professions you can apply to that may or may not require an advanced level of programming knowledge.
For example, as a software engineer in cyber, you’re going to need to be proficient in probably more than one language (including but not limited to Python, C, C++, and Java). However, if you’re a network specialist or a cybersecurity consultant, you probably won’t need to know a lot of programming. There really is a wide range of skills needed, depending on the area of cyber you choose. One such profession that a lot of people ask about in particular is penetration testing, and how much programming that being a penetration tester requires.
So, do penetration testers need to know programming? Most penetration testing positions will require some amount of programming ability, both in scripting languages such as Perl, and in standard programming languages such as Java. Aspiring penetration testers would benefit from learning basic programming skills, especially related to high-demand languages such as Python.
Ready to Start Your Cybersecurity Career?
If you're serious about starting your cybersecurity career, enroll in my FREE 5-part series "Strategies for New Cyber Careers". These strategies can help you determine your best path forward. I'll also send you my weekly cyber career newsletter with resources that every cyber professional needs to know.
Penetration Testing and Programming
A lot of people aspire to become a penetration tester, however the idea of learning programming is often a stumbling block. Let’s take a look at the role of penetration testing for a moment and see what skills you need, including those that relate to programming.
Based on a search of current penetration testing job openings, here’s what employers are looking for in qualified pen testers:
Entry Level Penetration Testing Jobs
- Experience with at least one (1) common programming or scripting languages such as Perl, Python, Ruby, Java, PHP, etc.
- Fundamental understanding of scripting languages to include the following – Python, Powershell, Ruby, Perl
- Fundamental understanding of “coding languages” – C++, C#, PHP, AJAX, HTML, etc.
- Experience with a scripting language (e.g. Perl, python, PHP, ruby) and a programming language (e.g. JAVA, Objective C)
- Development experience using Python, Ruby, Perl, C, or C++
Senior Level Penetration Testing Jobs
- Ability to write custom exploit code
- Experience in interpreted and scripting languages (BASH, PowerShell, Python, Perl, etc.).
- Experience in compiled languages (C, C++, Go, Java, etc.)
- Knowledge of programming languages and ability to write scripts for penetration testing
While not all penetration testing positions mention knowledge of programming or scripting languages as a priority, these exceptions are few and far between. If you want the best chance at employment in this field, you should dedicate yourself to learning at least one of each type of language: scripting and programming.
Now you’re probably wondering why you need programming to be a pen tester—after all, you’re not a software engineer. That’s an excellent question and in order to answer it, let’s look at the root cause of the problem—hackers themselves.
Do I Need to know Programming to Become a Hacker?
Learning how to hack is a great way to become a better penetration tester and a better cybersecurity analyst. If learning the concepts of hacking is of interest to you, then you’ll need to learn the skills that hackers need.
So, do hackers need to know programming? Knowledge of programming is not a requirement to participate in hacking, however it is a useful skill that can make a hacker more effective and efficient. Programming is just one skill that can assist a hacker, however a hacker can be successful without having knowledge of programming languages.
Depending on what kind of hacker you envision becoming (you’re an ethical hacker of course), it is possible to crack a system without ever writing a single string of code. However, without programming skill you are severely limiting your hacking opportunities in the long run.
According to Ubuntu Pit, ethical hackers use multiple programming languages and cyber tools to crack into an organization’s infrastructure or expose the weaknesses in particular software. Ubuntu Pit provides a very useful and thorough list of the programming languages most commonly used by hackers.
Let’s take a look at one of these examples – SQL
A Programming Example for Hackers – SQL Injection
Ever heard of an SQL (Structured Query Language) injection?
Imperva, an organization dedicated to providing companies with cybersecurity features, describes an SQLI, or SQL Injection as “a common attack vector that uses malicious SQL code for backend database manipulation to access information that was not intended to be displayed. This information may include any number of items, including sensitive company data, user lists or private customer details.”
In other words, from a business point of view, SQL is a very useful business tool and a SQL Injection is a very serious threat. For a cyber professional, knowing how to recognize and prevent an SQLI attack can prove to be a pivotal skill, which of course would require knowledge of that programming language.
Python Programming for Hackers
Then there’s Python. Python is one of the best if not the best scripting language for a cyber professional to learn. Not only is its syntax generally intuitive for beginners, but it’s a valuable resource for ethical hackers.
Python can be used to design all kinds of hacking tools. If you need to crack a password, Python can produce that code. Cyber professionals are constantly using Python to design new cyber tools and Python has several ready-to-use libraries that make cyber software development easier.
A few of these libraries include:
- Scapy – an invaluable resource for packet sniffing
- Cryptography – for obvious reasons, this library would be of interest to cyber pros
- Python n-map – assists in using and manipulating n-map port scanner
Basically, Python is a go-to resource for cyber professionals and it’s only growing in demand. If you’re torn about what scripting language best fits your needs, if you’re looking for a good all-purpose language Python might be the best choice for you.
All ethical hackers who have a clear understanding of programming and scripting languages are better equipped to combat cyber threats in our technology-dependent world. If you’re serious about pursuing a career in cyber as a pen tester, you need to be familiar with programming and scripting languages.
What employers look for in a pen tester is someone who can test their infrastructure for weaknesses maybe not just in one arena, but several. A pen tester should, essentially, be able to think and act like a hacker. Your intent is obviously not malicious, but in order to prevent an attack you need to be able to understand it, and a knowledge of coding will give you that skill.