The Hacker's toolkit

The Hacker's toolkit



Even armed with knowledge, resourcefulness, and just the right amount of stubborn perseverance, the hacker still needs a certain set of physical tools to conduct an attack. However, hacking does not have to be an expensive profession or hobby. Most of the software tools that a hacker needs can be obtained freely because they are open-source products. Nor does a hacker need thousands of dollars in high-powered computing equipment - for most attacks, a simple laptop or desktop computer with a reasonable amount of memory, storage, and processor speed will suffice. Over the decades, hackers have become notorious for accomplishing a great deal on relatively low budgets. Although each individual will need to decide for themselves what combination of hardware and software they need for their particular goals, this chapter will serve as a guide to help understand what different options are available and preferred in the hacking community.


Operating Systems & Distributions


An operating system (OS) is the intermediary between a computer’s hardware and software. An OS typically manages the file system, peripheral communication, and user accounts of a computer system, among other responsibilities. There are several brands of operating systems, both commercial and open source, that can be installed on any given computer platform. Microsoft Windows is the most commonly known and installed commercial OS for “PC” style systems. Apple has its own OS that comes installed on its computer and mobile systems. Google’s open source Android OS is rapidly gaining popularity. The Linux operating system, named for and developed by Linus Torvalds - a legendary figure in hacker culture - is an open-source offshoot of the UNIX (Apple’s OS is also based on UNIX) operating system. Linux gained popularity among hackers and hard-core computer enthusiasts over the years for its flexibility and portability. Various distributions of Linux have evolved for different purposes through constant tinkering by its users. Distributions are typically distinguished from each other by their size, user interface, hardware drivers and the software tools that come pre-installed. Some popular Linux distributions, like Red Hat and Ubuntu, are for general use. Others have been developed for specific tasks and platforms. The operating system on a hacker’s “attack” platform is the heart of his or her toolkit. Kali Linux Formerly known as Backtrack, Kali is a popular open source Linux operating system for hackers. Kali (the most recent distributions of Kali Linux can be found at www.kali.org/downloads) can be installed on a dedicated machine, or run from a virtual machine within another operating system. Over the years Kali has evolved to contain a large array of the most useful vulnerability assessment and exploitation programs. It is one of the first tools that a beginning hacker should obtain. Kali not only provides practice using a Linux platform, but also contains everything a hacker needs to perform some of the most basic lower-level attacks in order to gain valuable experience. A Screenshot of Kali Linux With a Menu of Tools Forensic Distributions the Linux OS is also available in several free distributions that are intended to be used for forensic computer analysis. These distributions contain tools that allow security professionals to look for traces of a computer attack on a victim machine. Hackers also use these distributions when they are practicing attacks so that they can learn how to keep from being detected.


Virtual Machines


Virtual machines are programs that emulate the behavior of certain hardware platforms within the confines of an existing operating system. This allows a user to install several operating systems on one piece of hardware, treating each one as if it were a separate machine. Maintaining virtual machines not only gives the hacker the ability to run various different hacking tools, but also provides the opportunity to practice hacking skills in a consequence-free “sandbox”. A common technique for practicing attacks is to install an operating system that is equivalent to a potential target within a virtual machine, and to practice attacking that system’s known vulnerabilities, and even probing for more. It is fairly easy to obtain free versions of old, defunct operating systems - like some of the older Windows releases - along with a list of the vulnerabilities of that particular version. Having an OS installed on a virtual machine that has not been patched with its latest security updates gives the hacker a perfect way to practice attacks without the worry of damaging a target system or running afoul of the law.


Programming Languages 


Computers are the servants of mankind, but they don’t know what to do without clear instructions. Since the binary language of machines is very difficult for human programmers to efficiently conceptualize, we developed programming languages that are closer to human language, which can then be translated for the machine to understand. Computer languages have evolved from simple line-by-line scripts, to more modular structured languages, to the advanced object-oriented languages that are used to develop software today. Scripted languages, however, still play a major part in computer and network operations. Since programs are written by people, they are of course subject to error. These errors are not only unintended mistakes in the actual coding, but oversights in the planning of the program itself. These errors are what hackers look for when attempting to gain unauthorized access to their target systems. It is therefore fundamental for hackers to obtain the compilers and interpreters necessary to become fluent in a few important programming languages, and at least minimally familiar with several others. Most of these programming tools are open-source and freely available in one form or another.



Object-Oriented Languages 



Object-oriented languages are high-level computer programming languages that are compiled upon completion into executable machine code. Programmers use some sort of text editing program to develop their code. They also need a compiler that is appropriate to the computer platform on which the executable program will be run. Some software development tools also contain debugging functions that allow the programmer to discover syntax and other errors before the program is compiled. Object-oriented languages are centered around the idea that different components in a computer program can be treated as objects with certain properties. The properties can be manipulated by procedures known as methods, and objects can be placed into various classes. Learning object-oriented programming is a vital part of the learning process for an aspiring hacker. A great deal of software, both online and off-line, is developed using object-oriented languages like C++ and Java. Understanding the vulnerabilities in programs that are written in these languages, and subsequently exploiting them, becomes possible when a hacker is familiar with the languages. In addition, hackers often find themselves needing to write their own software to automate attacks or to help them gain control or transfer data once they have access to a system. Interpreted Languages Object-oriented languages are highly structured and modularized. A single statement in the code of an object-oriented language cannot be run on its own without the context of the rest of the program. This is why object-oriented languages must use a compiler to translate the program into machine code before it can be understood by the computer. Although this is useful for larger, more complex programs, it can be overkill and unnecessarily time-consuming for shorter programming tasks. An interpreted language, conversely, is executed (for the most part) on a line-by-line basis by the computer, allowing for quick corrections and more intuitive debugging. One of the most popular interpreted languages is Python. A free, open-source project, Python has gained worldwide popularity for its simplicity, flexibility, and portability. Hackers often use Python to help them automate certain tasks that are often performed on the command line. Python, like most open-source software, comes in multiple distributions depending on the intended application. These different distributions contain various sets of prewritten modules, or packages, that can be pieced together in a Python script. Other interpreted languages that are important to the hacker include web scripting languages such as HTML, JavaScript, Perl, PHP, and Ruby. These languages are used to develop web applications. It is vulnerabilities within web applications, in part, that allow hackers to gain access to target websites.

Database Query Languages


A common goal of hackers is to gain access to private or confidential data. Servers store high volumes of data in organized structures known as databases. Databases have their own language that is used within the code of other programming languages when accessing the data. If a web application, for example, needs to access or change the profile information of one of its users it will need to send a command to the database that is written in that database’s appropriate language. These commands are known as queries. One of the most common database languages used for online applications Is the Structured Query Language, or SQL. Exploiting vulnerabilities in SQL has, over the years, been one of the most common methods that hackers have used to access websites and the data contained within them. As programmers have become wise to the vulnerabilities in SQL, they have made great efforts to correct those vulnerabilities, so some of the more simple attacks are less common. Understanding SQL and other database query languages is another essential tool for the hacker. An SQL server can be set up on a hacker’s test machine in order to practice various methods of attack.

Comments