Book Image

Mastering Metasploit - Fourth Edition

By : Nipun Jaswal
Book Image

Mastering Metasploit - Fourth Edition

By: Nipun Jaswal

Overview of this book

Updated for the latest version of Metasploit, this book will prepare you to face everyday cyberattacks by simulating real-world scenarios. Complete with step-by-step explanations of essential concepts and practical examples, Mastering Metasploit will help you gain insights into programming Metasploit modules and carrying out exploitation, as well as building and porting various kinds of exploits in Metasploit. Giving you the ability to perform tests on different services, including databases, IoT, and mobile, this Metasploit book will help you get to grips with real-world, sophisticated scenarios where performing penetration tests is a challenge. You'll then learn a variety of methods and techniques to evade security controls deployed at a target's endpoint. As you advance, you’ll script automated attacks using CORTANA and Armitage to aid penetration testing by developing virtual bots and discover how you can add custom functionalities in Armitage. Following real-world case studies, this book will take you on a journey through client-side attacks using Metasploit and various scripts built on the Metasploit 5.0 framework. By the end of the book, you’ll have developed the skills you need to work confidently with efficient exploitation techniques
Table of Contents (17 chapters)
1
Section 1 – Preparation and Development
6
Section 2 – The Attack Phase
10
Section 3 – Post-Exploitation and Evasion

Exploiting a stack overflow vulnerability with Metasploit

A stack is a memory region where all of the return addresses, function parameters, and local variables of the function are stored. It grows downward in memory (from a higher address space to a lower address space) as new function calls are made. A simple example of how the stack is utilized by a program is as follows:

void somefunction(int x, int y)
{
    int a;
    int b;
}
void main()
{
    somefunction(5, 10);
    printf("Program Ends");
}

In the preceding code, we can see that the very first line of the program makes a function call to somefunction with two integer parameters, which are 5 and 10. Internally, this means that before making a jump to somefunction, our EIP register points to the address of somefunction in the memory. What happens next is that control is passed onto somefunction and after its execution completes, the...