Skip to content

Latest commit

 

History

History
258 lines (184 loc) · 15.9 KB

what-is-penetration-testing.md

File metadata and controls

258 lines (184 loc) · 15.9 KB

Table of Contents

What Is Penetration Testing?

We can figure out the vulnerabilities of a computer system, a web application or a network through penetration testing.

A penetration test will tell whether the existing defensive measures employed on the system are strong enough to prevent any security breaches. Penetration test reports also suggest countermeasures which can be taken to reduce the risk of the system being hacked.

Causes of Vulnerability

Design and Development Errors:

There can be flaws in the design of hardware and software. These bugs can put your business-critical data at risk of exposure.

Poor System Configuration:

This is another cause of vulnerability. If the system is poorly configured, then it can introduce loopholes through which attackers can enter into the system & steal the information.

Human errors:

Human factors like improper disposal of documents, leaving the documents unattended, coding errors, insider threats, sharing passwords over phishing sites, etc. can lead to security breaches.

Connectivity:

If the system is connected to an unsecured network (open connections) then it comes within the reach of hackers.

Complexity:

The security vulnerability rises in proportion to the complexity of a system. The more features a system has, the more are the chances of the system being attacked.

Password:

Passwords are used to prevent unauthorized access. They should be strong enough that no one can guess your password. Passwords should not be shared with anyone at any cost and passwords should be changed periodically. In spite of these instructions, at times people reveal their passwords to others, write them down somewhere and keep easy passwords that can be guessed.

User Input:

You must have heard of SQL injection, buffer overflows, etc. The data received electronically through these methods can be used to attack the receiving system.

Management:

Security is hard & expensive to manage. Sometimes organizations lack behind in proper risk management and hence vulnerability gets induced in the system. Lack of training to staff: This leads to human errors and other vulnerabilities.

Communication:

Channels like mobile networks, internet, telephone opens up security theft scope.

Penetration Testing Tools and Companies

Automated tools can be used to identify some standard vulnerabilities present in an application. Pentest tools scan code to check if there is a malicious code present which can lead to a potential security breach.

Pentest tools can verify security loopholes present in the system by examining data encryption techniques and figuring out hard-coded values like usernames and passwords.

Criteria for selecting the best penetration tool:

  • It should be easy to deploy, configure and use.
  • It should scan your system easily.
  • It should categorize vulnerabilities based on severity that need an immediate fix.
  • It should be able to automate the verification of vulnerabilities.
  • It should re-verify the exploits found previously.
  • It should generate detailed vulnerability reports and logs.
  • Once you know what tests you need to perform you can either train your internal test resources or hire expert consultants to do the penetration task for you.

Recommended Penetration Testing Tools

#1) Acunetix

Acunetix WVS offers security professionals and software engineers alike a range of stunning features in an easy, straight-forward, and very robust package.

#2) Intruder

#3) Astra Pentest

Recommended Penetration Testing Company

#1) Software Secured

Other Free Tools:

  • Nmap
  • Nessus
  • Metasploit
  • Wireshark
  • OpenSSL

Commercial Services:

  • Pure Hacking
  • Torrid Networks
  • SecPoint
  • Veracode

Why Penetration Testing?

You must have heard of the WannaCry ransomware attack that started in May 2017. It locked more than 2 lakh computers around the world and demanded ransom payments qfrom the Bitcoin cryptocurrency. This attack has affected many big organizations around the globe.

With such massive & dangerous cyber-attacks happening these days, it has become unavoidable to do penetration testing at regular intervals to protect the information systems against security breaches.

Penetration Testing is mainly required for:

  • Financial or critical data must be secured while transferring it between different systems or over the network.
  • Many clients are asking for pen testing as part of the software release cycle.
  • To secure user data.
  • To find security vulnerabilities in an application.
  • To discover loopholes in the system.
  • To assess the business impact of successful attacks.
  • To meet the information security compliance in the organization.
  • To implement an effective security strategy within the organization.
  • Any organization needs to identify security issues present in the internal network and computers. Using this information, organizations can plan a defense against any hacking attempt. User privacy and data security are the biggest concerns nowadays.

Imagine if any hacker manages to get user details of a social networking site like Facebook. The organization could face legal issues due to a small loophole left in a software system. Hence, big organizations are looking for PCI (Payment Card Industry) compliance certifications before doing any business with third-party clients.

What Should Be Tested?

  • Software (Operating systems, services, applications)
  • Hardware
  • Network
  • Processes
  • End-user behavior

Penetration Testing Types

  • #1) Social Engineering Test: In this test, attempts are being made to make a person reveal sensitive information like passwords, business-critical data, etc. These tests are mostly done through phone or internet and it targets certain helpdesks, employees & processes.

Human errors are the main causes of security vulnerability. Security standards and policies should be followed by all staff members to avoid social engineering penetration attempts. Examples of these standards include not to mention any sensitive information in email or phone communication. Security audits can be conducted to identify and correct process flaws.

  • #2) Web Application Test: Using software methods, one can verify if the application is exposed to security vulnerabilities. It checks the security vulnerability of web apps and software programs positioned in the target environment.

  • #3) Physical Penetration Test: Strong physical security methods are applied to protect sensitive data. This is generally used in military and government facilities. All physical network devices and access points are tested for the possibility of any security breach. This test is not very relevant to the scope of software testing.

  • #4) Network Services Test: This is one of the most commonly performed penetration tests where the openings in the network are identified by which entry is being made in the systems on the network to check what kind of vulnerabilities are there. This can be done locally or remotely.

-`#5) Client-side Test: It aims to search and exploit vulnerabilities in client-side software programs.

  • #6) Remote dial-up war dial: It searches for modems in the environment and tries to log in to the systems connected through these modems by password guessing or brute-forcing.

  • #7) Wireless Security Test: It discovers open, unauthorized and less secure hotspots or Wi-Fi networks and connects through them.

The above 7 categories we have seen are one way of categorizing the types of pen tests.

We can also organize the types of penetration testing into three parts as seen below:

penetration-testing

Let’s discuss these testing approaches one by one:

Black Box Penetration Testing:

  • In this approach, the tester assesses the target system, network or process without the knowledge of its details. They just have a very high level of inputs like URL or company name using which they penetrate the target environment. No code is being examined in this method.

White Box Penetration Testing:

  • In this approach, the tester is equipped with complete details about the target environment – Systems, network, OS, IP address, source code, schema, etc. It examines the code and finds out design & development errors. It is a simulation of an internal security attack.

Grey Box Penetration Testing:

  • In this approach, the tester has limited details about the target environment. It is a simulation of external security attacks.

different

Pen Testing Techniques

Manual Penetration Test

  • Using automated penetration testing tools.
  • Combination of both manual and automated processes.
  • The third process is more common to identify all kinds of vulnerabilities.

Manual Penetration Test:

It’s difficult to find all vulnerabilities using automated tools. There are some vulnerabilities that can only be identified by manual scan. Penetration testers can perform better attacks on applications based on their skills and knowledge of the system being penetrated.

Methods like social engineering can be done by humans. Manual checks include design, business logic as well as code verification.

Penetration Test Process:

Let’s discuss the actual process followed by test agencies or penetration testers. Identifying vulnerabilities present in the system is the first important step in this process. Corrective action is taken on this vulnerability and the same penetration tests are repeated until the system is negative to all those tests.

1) Data Collection:

  • Various methods including Google search are used to get target system data. One can also use the web page source code analysis technique to get more info about the system, software and plugin versions.

There are many free tools and services available in the market which can give you information like database or table names, DB versions, software versions, the hardware used and various third-party plugins used in the target system.

2) Vulnerability Assessment:

  • Based on the data collected in the first step, one can find the security weakness in the target system. This helps penetration testers to launch attacks using identified entry points in the system.

3) Actual Exploit:

  • This is a crucial step. It requires special skills and techniques to launch an attack on the target system. Experienced penetration testers can use their skills to launch an attack on the system.

4) Result in analysis and report preparation:

  • After completion of penetration tests, detailed reports are prepared for taking corrective actions. All identified vulnerabilities and recommended corrective methods are listed in these reports. You can customize the vulnerability report format (HTML, XML, MS Word or PDF) as per your organization’s needs.

Check if the web application is able to identify spam attacks on contact forms used on the website. Proxy server – Check if network traffic is monitored by proxy appliances. The proxy server makes it difficult for hackers to get internal details of the network, thereby protecting the system from external attacks. Spam email filters – Verify if incoming and outgoing email traffic is filtered and unsolicited emails are blocked. Many email clients come with inbuilt spam filters that need to be configured as per your needs. These configuration rules can be applied to email headers, subject or body. Firewall – Make sure that the entire network or computer is protected by firewalls. A Firewall can be software or hardware that blocks unauthorized access to a system. Firewalls can prevent sending data outside the network without your permission. Try to exploit all servers, desktop systems, printers, and network devices. Verify that all usernames and passwords are encrypted and transferred over secure connections like https. Verify information stored in website cookies. It should not be in a readable format. Verify previously found vulnerabilities to see if the fix is working. Verify if there is no open port on the network. Verify all telephone devices. Verify WiFi network security. Verify all HTTP methods. PUT and Delete methods should not be enabled on a web server. Verify if the password meets the required standards. The password should be at least 8 characters long containing at least one number and one special character. Username should not be “admin” or “administrator”. The application login page should be locked upon a few unsuccessful login attempts. Error messages should be generic and should not mention specific error details like “Invalid username” or “Invalid password”. Verify if special characters, HTML tags, and scripts are handled properly as an input value. Internal system details should not be revealed in any of the error or alert messages. Custom error messages should be displayed to end-users in case of a web page crash. Verify the use of registry entries. Sensitive information should not be kept in the registry. All files must be scanned before uploading them to the server. Sensitive data should not be passed on to URLs while communicating with different internal modules of the web application. There should not be any hardcoded username or password in the system. Verify all input fields with long input strings with and without spaces. Verify if the reset password functionality is secure. Verify application for SQL Injection. Verify the application for Cross-Site Scripting. Important input validation should be done on the server-side instead of JavaScript checks on the client-side. Critical resources in the system should be available to authorized persons and services only. All access logs should be maintained with proper access permissions. Verify user session ends upon log off. Verify that directory browsing is disabled on the server. Verify that all applications and database versions are up to date. Verify URL manipulation to check if a web application is not showing any unwanted information. Verify memory leak and buffer overflow. Verify if incoming network traffic is scanned to find Trojan attacks. Verify if the system is safe from Brute Force Attacks – a trial and error method to find sensitive information like passwords. Verify if the system or network is secured from DoS (denial-of-service) attacks. Hackers can target a network or a single computer with continuous requests due to which resources on the target system get overloaded resulting in the denial of service for legit requests. Verify the application for HTML script injection attacks. Verify against COM & ActiveX attacks. Verify against spoofing attacks. Spoofing can be of multiple types – IP address spoofing, Email ID spoofing, ARP spoofing, Referrer spoofing, Caller ID spoofing, Poisoning of file-sharing networks, GPS spoofing. Check for an uncontrolled format string attack – a security attack that can cause the application to crash or execute the harmful script on it. Verify the XML injection attack – used to alter the intended logic of the application. Verify against canonicalization attacks. Verify if the error page is displaying any information that can be helpful for a hacker to enter into the system. Verify if any critical data like the password is stored in secret files on the system. Verify if the application is returning more data than is required.