📞
Contrxl
External Links
Theoretical Learning
Theoretical Learning
  • 🏡Home
  • 📰News & Information
  • Systems Administration
    • ⌨️Cisco
      • Networking Basics
        • Communication in a Connected World
        • Network Components, Types and Connections
        • Wireless and Mobile Networks
        • Home Networking Technologies
        • Communication Protocols
        • Network Media
        • The Access Layer
        • The Internet Protocol
        • IPv4 and Network Segmentation
    • 🎓Learning Links
    • 💻Microsoft
      • AZ-900
        • 1. Cloud Concepts
          • 1.1 Describe Cloud Computing
            • 1.1.1 Introduction - Cloud Computing
            • 1.1.2 What is Cloud Computing?
            • 1.1.3 The Shared Responsibility Model
            • 1.1.4 Define Cloud Models
            • 1.1.5 Define the Consumption based Model
            • 1.1.6 Summary - Cloud Computing
          • 1.2 Describe the Benefits of Cloud Services
            • 1.2.1 Introduction - Cloud Services
            • 1.2.2 Benefits of High Availability and Scalability
            • 1.2.3 Benefits of Reliability and Predictability
            • 1.2.4 Benefits of Security and Governance
            • 1.2.5 Manageability in the Cloud
            • 1.2.6 Summary - Cloud Services
          • 1.3 Describe Cloud Service Types
            • 1.3.1 Introduction - Cloud Service Types
            • 1.3.2 Describe Infrastructure as a Service
            • 1.3.3 Describe Platform as a Service
            • 1.3.4 Describe Software as a Service
            • 1.3.5 Summary - Cloud Service Types
        • 2. Architecture
          • 2.1 Core Architectural Components
            • 2.1.1 Introduction - Core Architectural Components
            • 2.1.2 What is Microsoft Azure
            • 2.1.3 Get Started with Azure Accounts
            • 2.1.4 Explore the Learn Sandbox
            • 2.1.5 Describe Azure Physical Infrastructure
            • 2.1.6 Describe Azure Management Infrastructure
            • 2.1.7 Create an Azure Resource
            • 2.1.8 Summary
          • 2.2 Compute and Networking
            • 2.2.1 Introduction - Compute and Networking
            • 2.2.2 Describe Azure VMs
            • 2.2.3 Create an Azure VM
            • 2.2.4 Describe Azure Virtual Desktop
            • 2.2.5 Describe Azure Containers
            • 2.2.6 Describe Azure Functions
            • 2.2.7 Describe Application Hosting Options
            • 2.2.8 Describe Azure Virtual Networking
            • 2.2.9 Configure Network Access
            • 2.2.10 Describe Azure VPNs
            • 2.2.11 Describe Azure ExpressRoute
            • 2.2.12 Describe Azure DNS
            • 2.2.13 Summary - Compute and Networking
          • 2.3 Azure Storage Services
            • 2.3.1 Introduction - Storage Services
            • 2.3.2 Describe Azure Storage Accounts
            • 2.3.3 Describe Azure Storage Redundancy
            • 2.3.4 Describe Azure Storage Services
            • 2.3.5 Create a Storage Blob
            • 2.3.6 Identify Azure Data Migration Options
            • 2.3.7 Identify Azure File Movement Options
            • 2.3.8 Summary - Storage Services
        • 3. Management and Governance
          • 3.1 Cost Management
            • 3.1.1 Introduction - Cost Management
            • 3.1.2 Describe Factors that can Affect Costs in Azure
            • 3.1.3 Compare Pricing and TCO Calculators
            • 3.1.4 Estimate Workload Costs
            • 3.1.5 Compare Workload Costs with TCO
            • 3.1.6 Describe the Microsoft Cost Management Tool
            • 3.1.7 Describe the Purpose of Tags
            • 3.1.8 Summary - Cost Management
          • 3.2 Governance and Compliance
            • 3.2.1 Introduction - Compliance and Governance
            • 3.2.2 Describe the Purpose of Microsoft Purview
            • 3.2.3 Describe the Purpose of Azure Policy
            • 3.2.4 Describe the Purpose of Resource Locks
            • 3.2.5 Configure a Resource Lock
            • 3.2.6 Describe the Purpose of the Service Trust Portal
            • 3.2.7 Summary - Compliance and Governance
          • 3.3 Tools for Managing Azure Resources
            • 3.3.1 Introduction - Tools for Managing Azure Resources
            • 3.3.2 Describe Tools for Interacting with Azure
            • 3.3.3 Describe the Purpose of Azure Arc
            • 3.3.4 Describe ARM and Azure ARM Templates
            • 3.3.5 Summary - Tools for Managing Azure Resources
          • 3.4 Monitoring Tools
            • 3.4.1 Introduction - Monitoring Tools
            • 3.4.2 Describe the Purpose of Azure Advisor
            • 3.4.3 Describe Azure Service Health
            • 3.4.4 Describe Azure Monitor
    • 📘Microsoft Portal Links
  • Cybersecurity
    • ❓Anonymity Tools
    • 💡OSINT
      • IP & Domain OSINT
      • Email & Username OSINT
      • Vulnerability OSINT
    • 📚Projects
      • ‼️A Simulation Study of DDoS
  • 🦈Hacking
    • ☁️Cloud Attack Vectors
      • Credential Harvesting
      • Privilege Escalation
      • Account Takeover
      • Metadata Service Attacks
      • Misconfigured Cloud Assets
      • Resource Exhaustion and DoS
      • Cloud Malware Injection Attacks
      • Side-Channel Attacks
    • Maintaining Persistence
      • Reverse and Bind Shells
      • Command and Control (C2) Utilities
      • Scheduled Jobs, Tasks and Custom Daemons
    • 💻Network-Based Vulnerabilities
      • Windows Name Resolution and SMB
      • DNS Cache Poisoning
      • SNMP
      • SMTP
      • FTP
      • Pass-the-Hash
      • Kerberos and LDAP-Based Attacks
      • On-Path
      • Route Manipulation
      • DoS and DDoS
      • NAC Bypass
      • VLAN Hopping
      • DHCP Starvation/Rogue DHCP Server
    • Pivoting
      • Post-Exploitation Scanning
      • Legitimate Utilities and LotL
      • Privilege Escalation
    • Specialised System Vulnerabilities
      • Mobile Devices
      • Internet of Things Devices
      • Virtual Machines
      • Containerised Workloads
    • ⚒️Tools
      • Burp Suite
        • Repeater
        • Intruder
        • Other Modules
      • GoPhish
      • Hydra
      • John the Ripper
      • Metasploit
        • Exploitation
        • Meterpreter
      • NMAP
      • Wireshark
    • 🖥️TryHackMe
      • Complete Beginner
        • 1. Complete Beginner Intro
        • 2. Linux Fundamentals
        • 3. Introductory Networking
        • 3.1 Network Exploitation Basics
        • 4. OWASP Top 10 Exploits
        • 5. Upload Vulnerabilities
        • 5.1 An Example Methodology
        • 6. Cryptography - Hashing
        • 7. Cryptography - Encryption
        • 8. Active Directory Basics
        • 9. What the Shell?
        • 10. Linux Privesc
        • 11. More Linux Privesc
      • Jr Penetration Tester
        • Walking an Application
        • Content Discovery
        • Subdomain Enumeration
        • Authentication Bypass
        • IDOR
        • File Inclusion
        • SSRF
        • XSS (Cross-site Scripting)
        • Command Injection
        • SQL Injection
        • Passive Reconnaissance
        • Active Reconnaissance
        • Protocols and Servers
        • Protocol and Server Attacks
        • Vulnerabilities
        • Exploiting Vulnerabilities
        • Linux Privilege Escalation
        • Windows Privilege Escalation
      • CompTIA Pentest+
        • Planning and Scoping
          • Pentesting Fundamentals
          • Red Team Engagements
          • Governance and Regulation
        • Tools and Code Analysis
          • Metasploit: Introduction
          • Wireshark: The Basics
          • Burp Suite: The Basics
          • Hydra
          • Python Basics
        • Attacks and Exploits
          • Phishing
          • Windows Local Persistence
          • Breaching Active Directory
          • Lateral Movement & Pivoting
    • Web Application Vulnerabilities
      • The HTTP Protocol
      • Business Logic Flaws
      • Injection-Based Vulnerabilities
      • Authentication-Based Vulnerabilities
      • Authorisation-Based Vulnerabilities
      • Cross-Site Scripting (XSS)
      • Cross-Site Request Forgery (CSRF/XSRF) and Server-Side Request Forgery (SSRF)
      • Clickjacking
      • Security Misconfigurations
      • File Inclusion Vulnerabilities
      • Insecure Coding Practices
    • Wireless Vulnerabilities
      • Rogue Access Point/Evil Twin
      • Disassociation/Deauthentication
      • Preferred Network List Attack
      • Wireless Signal Jamming
      • War Driving
      • Initialization Vector (IV) and Insecure Wireless Protocol
      • KARMA
      • Fragmentation Attacks
      • Credential Harvesting
      • Bluejacking and Bluesnarfing
      • RFID Attacks
Powered by GitBook
On this page
  • Introduction
  • Installation
  • Basic Usage
  • Unshadowing
  • Single Crack Mode
  • Custom Rulesets
  • Cracking Password Protected ZIP Files
  • Cracking Password Protected RAR Archives
  • Cracking SSH Keys
  1. Hacking
  2. Tools

John the Ripper

Hash cracking tool.

Last updated 1 year ago

Introduction

John is one of the most well known hash cracking tools, it has a fast cracking speed and a wide range of compatible hash types.

Hashes are a way to take data of any length and output it as data of a fixed length. There are many popular hashing algorithms like MD4, MD5, SHA1 and NTLM. If we took the string "polo" and ran it through a MD5 hash algorithm, we would get the output b53759f3ce692de7aff1b5779d3964da. This is a standard 32 character MD5 hash. If we took the string "polomints" and ran it through a MD5 hash algorithm we would get 584b6e4f4586e136bc280f27f9c64f3b. Also, a 32 character MD5 hash, even though "polomints" is a longer string.

Hashes are secure because they cannot be reversed using purely the output given. This is based on the complicated mathematical problem of . This problem means that the algorithm used to hash the value is "NP", and that can be calculated reasonably, however, to un-hash the value we would use "P", which is intractable to solve and therefore cannot be computed in reasonable time.

Although the algorithm is irreversible, John uses a dictionary of known hashes and their outputs to see if any match.

Installation

Parrot OS & Kali Linux come with Jumbo John installed by default. This can be confirmed by typing "john" into a terminal and verifying the output reads "John the Ripper 1.9.0-jumbo-1" or something similar. If not, installation is done using "sudo apt install john".

Blackarch may not have it by default, the command pacman -Qe | grep "john" can be used to check, output should read "john 1.9.0.jumbo1-5" or similar. If it is not installed, pacman -S john should do it.

To install from source, follow the below steps:

  1. Run git clone https://github.com/openwall/john -b bleeding-jumbo john to clone the Jumbo John repo.

  2. Use cd john/src to move into the source code directory.

  3. Use ./configure to check dependencies and options that have been configured.

  4. Use make -s clean && make -sj4 to build a binary and then change to the above run directory using cd ../run.

  5. Test using ./john --test.

Basic Usage

The very basic syntax to use john is:

john [options] [file path]

"john" invokes John the Ripper and [file path] is the location of the file containing the hash you are trying to crack.

John can try to crack a file without being given the type of hash, this isn't always reliable but can be done simply using:

john --wordlist=[wordlist path] [file path]
john --format=[format] --wordlist=[wordlist path] [file path]

Sometimes, when telling john to use formats you may need to prefix it with raw- to tell john it is a standard hash type. To check if you need the prefix, you can use john --list=formats to check manually or search using john --list=formats | grep -iF "md5".

Unshadowing

For John to understand the hashes from /etc/shadow it needs to be combined with /etc/passwd. This can be done using the following syntax:

unshadow [passwd path] [shadow path]

Here, "passwd path" is a copy of the /etc/passwd file from the target machine, and "shadow path" is a copy of the /etc/shadow file from the target machine. This can either be done on the entire file or just on the relevant lines, an example of this in use would be:

unshadow local_passwd.txt local_shadow.txt > unshadow.txt

We can then use "unshadow.txt" with John as before to crack the hash. Format should not need to be specified but in some cases sha512crypt may need to be specified.

Single Crack Mode

Single crack mode tells John to only use the information provided in the username to work out possible passwords by "mangling" the numbers and letters in the username.

Word mangling is where John builds its own dictionary of possible passwords based on the information it is given. For example, with username "James", possible passwords could be "James1, JAmes, James!" and so on. The syntax for using this is more or less the same as previous:

john --single --format=[format] [file path]

The only thing to note here is that for John to work in single-crack mode, it needs to have the file format changed slightly, for example, to use single crack with username "polo" on the hash b53759f3ce692de7aff1b5779d3964da, we need to change the text to polo:b53759f3ce692de7aff1b5779d3964da for John to understand.

Custom Rulesets

John allows you to define your own set of rules, which it will use to dynamically create passwords. This is useful where you know more info about the password structure of your target. For instance, you may know that a password must contain a capital letter, a symbol and a number.

Cracking Password Protected ZIP Files

John can be used to crack password protection on ZIP files, first, the John suite must convert the ZIP to a format which it can understand. The basic syntax for this is:

zip2john [options] [zip file] > [output path]

We can then take the output of this and pass it to John as we normally would using any required options.

Cracking Password Protected RAR Archives

A similar method to the above can be used for cracking passwords on RAR files. The syntax for this is:

rar2john [rar file] > [output path]

Once again, the output of this can be fed to John as normal.

Cracking SSH Keys

John can also be used to crack id_rsa files used in SSH authentication. Again, we will need to convert the id_rsa file to a format which John can understand, this can be done using the following syntax:

ssh2john [id_rsa file] > [output path]

Once again, we feed this output to John as normal to crack the hash.

John won't always like this and may need a format to be specified, there are tools to identify hash types like or . Once a format has been identified, we can use this to tell john to use it with the following syntax:

Custom rules are defined in the john.conf file which is located in /etc/john/john.conf. Full details of creating custom rules can be read in the .

🦈
⚒️
P vs NP
Hashes.com
HashID
docs