“Bigger, better, and more thorough, the Gray Hat Hacking series is one that I've enjoyed from the start. Gray Hat. Hacking. The Ethical Hacker's. Handbook. Third Edition. Allen Harper Analyzing a Malicious PDF Exploit. Hacking. The Ethical Hacker's. Handbook. Third Edition. Allen Harper, Shon Harris, Jonathan Gray hat Python: Python programming for hackers and reverse. /keybase/public/sam4ritan/Gray Hat Hacking The Ethical Hackers Handbook, 3rd Download Raw. This file was signed by: sam4ritan. sam4ritan.

Gray Hat Hacking The Ethical Hackers Handbook Pdf

Language:English, Arabic, French
Genre:Academic & Education
Published (Last):05.02.2016
ePub File Size:22.57 MB
PDF File Size:20.34 MB
Distribution:Free* [*Sign up for free]
Uploaded by: ETHEL

Gray Hat Hacking ~ The Ethical Hacker's Handbook 5th Edition - Free ebook download as PDF File .pdf), Text File .txt) or read book online for free. Author. Contribute to BADC0D3/Books development by creating an account on GitHub. Read Gray Hat Hacking PDF - The Ethical Hacker's Handbook, Fifth Edition by Allen Harper McGraw-Hill Education | Cutting-edge techniques.

To my family and friends for their unconditional support and making this life funny and interesting. To my daughter Tiernan, thank you for your support and continuous reminders to enjoy life and learning each and every day. I look forward to seeing the wonderful woman you will become. To my son Aaron, thanks for all your love while I spend too much time at the keyboard, and thanks for sharing your joy on all the projects we work on together.

He has worked as a security consultant for many Fortune and government entities. His interests include the Internet of Things, reverse engineering, vulnerability discovery, and all forms of ethical hacking. Allen was the founder of N2NetSecurity, Inc. Daniel Regalado, aka Danux, is a Mexican security researcher with more than 16 years in the security field, dissecting or pen-testing malware, 0-day exploits, ATMs, IoT devices, IV pumps, and car infotainment systems.

He is a former employee of widely respected companies like FireEye and Symantec and is currently a principal security researcher at Zingbox.

Daniel is probably best known for his multiple discoveries and dissection of ATM malware attacking banks worldwide, with the most notorious findings being Ploutus, Padpin, and Ripper. Ryan Linn has over 20 years in the security industry, ranging from systems programmer to corporate security, to leading a global cybersecurity consultancy. Ryan participates in Twitter as sussurro, and he has presented his research at numerous security conferences, including Black Hat and DEF CON, and has provided training in attack techniques and forensics worldwide.

Stephen Sims is an industry expert with over 15 years of experience in information technology and security. He currently works out of San Francisco as a consultant performing reverse engineering, exploit development, threat modeling, and penetration testing.

Stephen has an MS in information assurance from Norwich University and is a course author, fellow, and curriculum lead for the SANS Institute, authoring courses on advanced exploit development and penetration testing. He may be reached on twitter: Before that he worked as a reverse engineer for Symantec and analyzed various threats and APT groups. Linda is a proven information security executive and industry expert with over 18 years of experience leading technical teams, developing technical business lines, and providing high-quality consulting services to clients.

Before that, she co- founded and served as Chief Operating Officer COO for Executive Instruments, an information security research and consulting firm. While at Tangible he has worked on a wide variety of projects, including software security assessments, SDLC consulting, tool development, and penetration tests.

Prior to working at Tangible Security, he served in the Marine Corps as a ground radio repairman. Additionally, he worked for IBM, Motorola, and Broadcom in several capacities, including test engineering, device driver development, and system software development for embedded systems.

In addition to his work activities, Michael has been a trainer at Black Hat, speaker at several conferences, and technical editor for Gray Hat Hacking: His current interests are in automating pen-test activities, embedded system security, and mobile phone security. Chris Eagle is a senior lecturer in the computer science department at the Naval Postgraduate School in Monterey, California.

The late Shon Harris is greatly missed. Shon consulted for a variety of companies in many different industries. Shon was recognized as one of the top 25 women in the Information Security field by Information Security Magazine. The views expressed in this book are those of the authors and not of the U.

About the Technical Editor Heather Linn has over 20 years in the security industry and has held roles in corporate security, penetration testing, and as part of a hunt team. She has contributed to open source frameworks, including Metasploit, and has contributed to course materials on forensics, penetration testing, and information security taught around the globe. Heather has presented at many security conferences, including multiple BSides conferences, local ISSA chapter conferences, and student events aimed at providing realistic expectations for new students entering the information security field.

Next-Generation Honeypots. Preface Acknowledgments Introduction. Assembly vs. Overflowing meet. Components of the Exploit Lab Reading from Arbitrary Memory Lab Writing to Arbitrary Memory Lab Return to libc Exploits Lab The Failure Condition Lab Passing Commands on the Command Line Lab Encoded Commands Lab Setting Up PowerSploit Lab Setting Up Empire Lab Staging an Empire C2 Lab XSS Refresher Lab Exploiting CVE Lab Dynamic Analysis Example Static Analysis Wannacry Example Dionaea Lab ConPot Lab Cowrie Lab T-Pot Commercial Alternative: It Was a Matter of Time Lab Analyzing the Update Package Lab Emulating Firmware Lab This book has been developed by and for security professionals who are dedicated to working in an ethical and responsible manner to improve the overall security posture of individuals, corporations, and nations.

Each of the authors would like to thank the staff at McGraw-Hill Education. In particular, we would like to thank Wendy Rinaldi and Claire Yee.

You really went above and beyond, keeping us on track and greatly helping us through the process. Your highest levels of professionalism and tireless dedication to this project were truly noteworthy and bring great credit to your publisher.

Allen Harper would like to thank his wonderful wife Corann and beautiful daughters Haley and Madison for their support and understanding as I chased yet another dream. It is wonderful to see our family and each of us individually grow stronger in Christ each year. Madison and Haley, I love you both dearly and am proud of the young ladies you have become.

In addition, I would like to thank the members of my former and current employer. To the friends at Tangible Security, I am thankful for your impact on my life—you made me better. To my brothers and sisters in Christ at Liberty University, I am excited for the years ahead as we labor together and aim to train Champions for Christ!

A sus hijos Fercho y Andrick por ser la luz de la casa y su motor de cada dia y finalmente pero no menos importante a la Familia Regalado Arias: Cape, Cone, Rober, hermandad para siempre!

Another big thanks goes to all my friends and colleagues who make work and play fun. Ryan Linn would like to thank Heather for her support, encouragement, and advice as well as his family and friends for their support and for putting up with the long hours and infrequent communication while the book was coming together.

Stephen Sims would like to thank his wife LeAnne and daughter Audrey for their ongoing support with the time needed to research, write, work, teach, and travel. He would also like to thank his parents, George and Mary, and sister, Lisa, for their support from afar. Finally, a special thanks to all of the brilliant security researchers who contribute so much to the community with publications, lectures, and tools.

Chris Eagle would like to thank his wife Kristen for being the rock that allows him to do all of the things he does. None of it would be possible without her continued support. Linda Martinez would like to thank her mom and dad for being truly delightful people and always setting a great example to follow. Linda would also like to thank her daughter Elysia for the years of encouragement that allowed her to pursue her passions.

A big thanks to my friends and some of the brightest minds in the industry—Allen, Zack, Rob, Ryan, Bill, and Shon, may she rest in peace. Michael Baucom would like to thank his wife, Bridget, and daughter, Tiernan, for their sacrifices and support in allowing him to pursue his professional goals. Nothing can be accomplished without a great team.

History teaches that wars begin when governments believe the price of aggression is cheap. The supreme art of war is to subdue the enemy without fighting. The purpose of this book is to provide individuals the information once held only by governments and a few black hat hackers.

In this day and age, individuals stand in the breach of cyberwar, not only against black hat hackers, but sometimes against governments. If you find yourself in this position, either alone or as a defender of your organization, we want you to be equipped with as much knowledge of the attacker as possible.

To that end, we submit to you the mindset of the gray hat hacker, an ethical hacker that uses offensive techniques for defensive purposes. The ethical hacker always respects laws and the rights of others, but believes the adversary may be beat to the punch by testing oneself first. The authors of this book want to provide you, the reader, with something we believe the industry and society in general needs: This is why we keep releasing new editions of this book with a clear definition of what ethical hacking is and is not—something our society is very confused about.

We have updated the material from the fourth edition and have attempted to deliver the most comprehensive and up-to-date assembly of techniques, procedures, and material with real hands- on labs that can be replicated by the readers. Thirteen new chapters are presented, and the other chapters have been updated. In Part I, we prepare you for the battle with all the necessary tools and techniques to get the best understanding of the more advanced topics. This section moves quite quickly but is necessary for those just starting out in the field and others looking to move to the next level.

This section covers the following:. In Part II, we discuss the business side of hacking. If you are looking to move beyond hacking as a hobby and start paying the bills, this section is for you. If you are a seasoned hacking professional, we hope to offer you a few tips as well.

In this section, we cover some of the softer skills required by an ethical hacker to make a living:. In Part III, we discuss the skills required to exploit systems. We cover the following topics in this section:. In Part IV, we cover advanced malware analysis. In many ways, this is the most advanced topic in the field of cybersecurity. On the front lines of cyberwar is malware, and we aim to equip you with the tools and techniques necessary to perform malware analysis.

In this section, we cover the following:. The Internet of Things is exploding and, unfortunately, so are the vulnerabilities therein. In this section, we discuss these latest topics:. We do hope you will see the value of the new content that has been provided and will also enjoy the newly updated chapters.

NOTE To ensure your system is properly configured to perform the labs, we have provided the files you will need. The lab materials and errata may be downloaded from either the GitHub repository at https: PART I.

Chapter 1 Why Gray Hat Hacking? Ethics and Law The purpose of this book is to support individuals who want to refine their ethical hacking skills to better defend against malicious attackers.

This book is not written to be used as a tool by those who wish to perform illegal and unethical activities. In this chapter, we discuss the following topics: We already live in a world so highly integrated with technology that cybersecurity has an impact on our financial markets, our elections, our families, and our healthcare. Technology is advancing and the threat landscape is increasing.

On the one hand, vehicles that are capable of autonomous driving are being mass-produced as smart cities are being developed. On the other hand, hospitals are being held for ransom, power grids are being shut down, intellectual property and secrets are being stolen, and cybercrime is a booming industry.

In order to defend and protect our assets and our people, we must understand the enemy and how they operate. Understanding how attacks are performed is one of the most challenging and important aspects of defending the technology on which we rely.

After all, how can we possibly defend ourselves against the unknown? This book was written to provide relevant security information to those who are dedicated to stopping cyberthreats.

Learning offensive security allows you to test and refine your defenses. Malicious actors know how to compromise systems and networks. Those who have accepted the responsibility of defending our technology must learn how compromises occur in order to defend against them. The Current Security Landscape Technology can be used for good or evil. This duality means that the technology we create to help us will sometimes hurt us, that technology used to fight for human rights can also be used to violate them, and that tools used to protect us can also be used to attack us.

Respect your enemy. Malicious actors have a variety of motivations and tactics, and the scale and complexity of their attacks are increasing.

Consider the following:. Most funds were not recovered after being routed to accounts in the Philippines and diverted to casinos there. The attack was attributed to two Russian adversary groups. The attackers sabotaged power-distribution equipment, thus complicating attempts to restore power. The attack prompted discussions about the vulnerabilities in industrial control systems ICSs and was linked to Russia. The security industry is also evolving.

Malware solutions based on machine learning are replacing signature-based solutions. Cybersecurity conferences, degree programs, and training are increasingly popular. The security industry is responding to increasing cyberattacks with new tools, ideas, and collaborations. Attackers have different motivations. Some are financially motivated and aim to make the biggest profit possible, some are politically motivated and aim to undermine governments or steal state secrets, some are motivated by a social cause and are called hacktivists, and some are angry and just want revenge.

Recognizing an Attack When an attack occurs, there are always the same questions. How did the attacker get in? How long have they been inside the network? What could we have done to prevent it? Attacks can be difficult to detect, and bad actors can stay in the environment for a prolonged amount of time. Ethical hacking helps you learn how to recognize when an attack is underway or about to begin so you can better defend the assets you are protecting.

Some attacks are obvious. Denial-of- service and ransomware attacks announce themselves. However, most attacks are stealth attacks intended to fly under the radar and go unnoticed by security personnel and products alike. It is important to know how different types of attacks take place so they can be properly recognized and stopped.

Some attacks have precursors—activities that can warn you an attack is imminent. A ping sweep followed by a port scan is a pretty good indication that an attack has begun and can be used as an early warning sign.

Although tools exist to help detect certain activities, it takes a knowledgeable security professional to maintain and monitor systems. Security tools can fail, and many can be easily bypassed. Relying on tools alone will give you a false sense of security.

Hacking tools are just IT tools that are good when used for sanctioned purposes and bad when used for malicious purposes. The tools are the same, just applied toward different ends. Many tools will be mentioned throughout this book. Tools that will help you recognize an attack are covered specifically in Chapters 7 and 8 as well as dispersed throughout the book. A penetration tester will use the same tools and tactics as a malicious attacker, but in a controlled and secure way.

This allows an organization to understand how a bad actor might get into the environment, how they might move around inside of the environment, and how they might exfiltrate data. This also enables the organization to determine the impact of attacks and identify weaknesses. Emulating attacks allows an organization to test the effectiveness of security defenses and monitoring tools.

Defense strategies can then be refined based on lessons learned. A penetration test is more than a vulnerability scan. During a vulnerability scan, an automated scanning product is used to probe the ports and services on a range of IP addresses. Most of these tools gather information about the system and software and correlate the information with known vulnerabilities. This results in a list of vulnerabilities, but it does not provide an idea of the impact those vulnerabilities could have on the environment.

During a penetration test, attack emulations are performed to demonstrate the potential business impact of an attack. Testers go beyond creating a list of code and configuration vulnerabilities and use the perspective of a malicious attacker to perform controlled attacks. A penetration tester will chain together a series of attacks to demonstrate how a malicious attacker might enter the environment, move throughout the environment, take control of systems and data, and exfiltrate data out of the environment.

They will use weaknesses in code, users, processes, system configurations, or physical security to understand how an attacker might cause harm. In many instances, penetration tests demonstrate that an organization could potentially lose control of its systems and, sometimes more importantly, its data.

This is especially significant in highly regulated environments or those with industry compliance requirements where penetration testing is often required. Penetration tests often justify the implementation of security controls and can help prioritize security tasks.

Tests will vary, depending on the information you have about the environment.

You might also like: THE SECRET LIBRO PDF

Black box testing is when you begin with no prior knowledge of the environment. White box testing is when you are provided detailed information about the environment such as the IP address scheme and URLs. Gray box testing is when you start with no information about the environment and after demonstrating that you can penetrate the environment you are given information to make your efforts more efficient.

Also, the nature and duration of tests will vary widely. Assessments can be focused on a location, business division, compliance requirement, or product. The methodologies used for exploiting embedded devices are different from those used during red team assessments both are described in later chapters. The variety of exploits described in this book, from ATM malware to Internet of Things exploits, are demonstrative of the fascinating variety of specialties available to ethical hackers.

Emulating the Attack This book includes information about many exploits and areas of ethical hacking. An overview of the ethical hacking process is provided here, and the process is further described in later chapters. Study the technical environment and ask questions that will allow you to formulate a plan. What is the nature of their business?

What kind of sensitive information do they work with? Be sure the following areas are accounted for:. Is this a compliance-focused penetration test that targets credit card data? Does the company want to focus on testing its detection capabilities? Are you testing a new product that is being released soon?

Protect the output from your testing tools and reports. Use encrypted e-mail. Ensure your document repository is secure. Set up multifactor authentication on your e-mail, document repository, and anything that allows remote access to your testing or reporting environment. Is social engineering in scope? How in depth should the website assessment be? Formulate a plan to address them. Talk about the rules of engagement.

Should they try to stop your attack emulation if they detect it? What should they tell users who report any testing activities? Log and document all your testing activities. Be sure to discuss start and stop dates and blackout periods. The typical steps of the penetration test are briefly described here and are discussed in more depth in following chapters:. Gather as much information about the target as possible while maintaining zero contact with the target.

Employ active scanning and enumeration. Perform fingerprinting. Perform a thorough probe of the target systems to identify the following: Select a target system. Identify the most useful target s. Exploit the uncovered vulnerabilities. Execute the appropriate attacks targeted at the suspected exposures.

Keep the following points in mind: Escalate privileges. Escalate the security context so that you have more control. Preserve access. This step usually involves installing software or making configuration changes to ensure access can be gained later. Document and report.

Document everything you found, how it was found, the tools that were used, the vulnerabilities that were exploited, the timeline of activities, and successes, and so on. The best methodology is to report as you go, frequently gathering evidence and taking notes. NOTE A more detailed approach to the attacks that are part of each methodology are included throughout the book. The following steps describe what an unethical hacker would do instead:. Select a target.

Motivations could be due to a grudge or for fun or profit. There are no ground rules, no hands-off targets, and the security team is definitely blind to the upcoming attack. Use intermediaries. The attacker launches their attack from a different system intermediary than their own, or a series of other systems, to make tracking back to them more difficult in case the attack is detected.

Intermediaries are often victims of the attacker as well. Proceed with the penetration testing steps described previously. Cover tracks. This step involves the following activities: Harden the system. Attackers will use compromised systems to suit their needs—many times remaining hidden in the network for months or years while they study the environment. Often, compromised systems are then used to attack other systems, thus leading to difficulty attributing attacks to the correct source.

Most organizations would benefit from having a penetration test performed at least annually. However, significant changes to a technical environment that could have a negative impact on its security, such as operating system or application upgrades, often happen more than just once a year.

Therefore, ongoing security testing is recommended for most organizations because of how quickly technical environments tend to change. Red teaming exercises and quarterly penetration testing are becoming more and more common. Red teaming exercises are usually sanctioned but not announced.

Download Gray Hat Hacking The Ethical Hackers Handbook 3Rd Edition[Pdf-Ebook]

Many red team assessments occur over a long period of time, with the goal of helping an organization refine its defenses—or blue team capabilities. Testing often runs over the duration of a year, with quarterly outbriefs and a variety of reports and other deliverables created to help an organization gauge progress. Red teaming is often reserved for organizations with more mature incident response capabilities.

Chapter 7 provides more information on this topic. Many organizations are moving to a model where penetration tests occur at least quarterly. This allows these organizations to choose a different focus for each quarter. Many organizations align quarterly penetration testing with their change management process, thus ensuring testing activities take a thorough look at parts of the environment that have recently changed.

Evolution of Cyberlaw Cybersecurity is a complex topic, and cyberlaw adds many more layers of complexity to it. Cyberlaw reaches across geopolitical boundaries and defies traditional governance structures. When cyberattacks range across multiple countries or include botnets spread throughout the world, who has the authority to make and enforce laws?

Account Options

How do we apply existing laws? The challenges of anonymity on the Internet and difficulty of attributing actions to an individual or group make prosecuting attackers even more complex. Governments are making laws that greatly apply to private assets, and different rules apply to protecting systems and data types, including critical infrastructure, proprietary information, and personal data.

Understanding Individual Cyberlaws Individual cyberlaws address everything from the prohibition of unauthorized account access to the transmission of code or programs that cause damage to computers. Some laws apply whether or not a computer is used and protect communications wire, oral, and data during transmission from unauthorized access and disclosure.

Some laws pertain to copyrighted content itself and protect it from being accessed without authorization. Together these laws create a patchwork of regulation used to prosecute cybercrime.

This section provides an overview of notable cyberlaws. The Access Device Statute The purpose of the Access Device Statute is to curb unauthorized access to accounts; theft of money, products, and services; and similar crimes.

It does so by criminalizing the possession, use, or trafficking of counterfeit or unauthorized access devices or device-making equipment, and other similar activities described shortly to prepare for, facilitate, or engage in unauthorized access to money, goods, and services. It defines and establishes penalties for fraud and illegal activity that can take place through the use of such counterfeit access devices.

Section addresses offenses that involve generating or illegally obtaining access credentials, which can involve just obtaining the credentials or obtaining and using them. These activities are considered criminal whether or not a computer is involved—unlike the statute discussed next, which pertains to crimes dealing specifically with computers.

It prohibits unauthorized access to computers and network systems, extortion through threats of such attacks, the transmission of code or programs that cause damage to computers, and other related actions. It addresses unauthorized access to government, financial institutions, and other computer and network systems, and provides for civil and criminal penalties for violators.

Most people do not realize that the ECPA is made up of two main parts: The Wiretap Act protects communications, including wire, oral, and data, during transmission from unauthorized access and disclosure subject to exceptions. While the ECPA seeks to limit unauthorized access to communications, it recognizes that some types of unauthorized access are necessary.

For example, if the government wants to listen in on phone calls, Internet communication, e-mail, or network traffic, it can do so if it complies with safeguards established under the ECPA that are intended to protect the privacy of persons who use those systems. The DMCA establishes both civil and criminal liability for the use, manufacture, and trafficking of devices that circumvent technological measures controlling access to, or protection of, the rights associated with copyrighted works.

The Digital Millennium Copyright Act DMCA states that no one should attempt to tamper with and break an access control mechanism that is put into place to protect an item that is protected under the copyright law. It also provides for an exception for engaging in an act of security testing if the act does not infringe on copyrighted works or violate applicable law such as the CFAA , but it does not contain a broader exemption covering a variety of other activities that information security professionals might engage in.

The CSEA allows service providers to report suspicious behavior without risking customer litigation. Before this act was put into place, service providers were in a sticky situation when it came to reporting possible criminal behavior or when trying to work with law enforcement.

Now service providers can report suspicious activities and work with law enforcement without having to tell the customer. The act also states that federal, state, and local governments are prohibited from using information shared by a private entity to develop such standards for the purpose of regulating that entity.

Under the Cybersecurity Enhancement Act of , federal agencies and departments must develop a cybersecurity research and development strategic plan that will be updated every four years. The strategic plan aims to prevent duplicate efforts between industry and academic stakeholders by ensuring the plan is developed collaboratively. The director of NIST is also responsible for developing a strategy for increased use of cloud computing technology by the government to support the enhanced standardization and interoperability of cloud computing services.

Safe harbor protections ensure that that private entities are shielded from liability for sharing information. CISA also authorized some government and private entities to monitor some systems and operate defensive measures for cybersecurity purposes. Private entities are shielded from liability for monitoring activities that are consistent with CISA requirements. The new regulations require a qualified chief information security officer CISO , penetration testing, vulnerability assessments, annual IT risk assessments, and many other security controls.

They aim to control our hospitals, elections, money, and intellectual property. They work to prevent malicious attacks by finding security issues first and addressing them before they can be exploited by the bad guys. As the adversary increases the sophistication of their attacks, we, the ethical hackers of the world, work diligently to oppose them. Although prosecuting an attack is extraordinarily complex, cyberlaws are evolving to give us the mechanisms to collaborate more in order to prevent and address cybercrime.

With a booming Internet of Things economy on the horizon, ethical hackers must expand their skill sets to focus on modern attack techniques. This book is intended to help do just that—help ethical hackers explore the worlds of software-defined radio, next-generation security operations, ransomware, embedded device exploits, and more.

Happy hacking! References 1. Ethical hackers should study programming and learn as much about the subject as possible in order to find vulnerabilities in programs and get them fixed before unethical hackers take advantage of them.

Many security professionals come at programming from a nontraditional perspective, often having no programming experience prior to beginning their career. Bug hunting is very much a foot race: The purpose of this chapter is to give you the survival skills necessary to understand upcoming chapters and then later to find the holes in software before the black hats do. In this chapter, we cover the following topics: The language was heavily used in Unix and is therefore ubiquitous.

Basic C Language Constructs Although each C program is unique, some common structures can be found in most programs. If you use command-line arguments for main , use the format. The name of the program is always stored at offset argv[0]. The parentheses and brackets are mandatory, but white space between these elements does not matter. The brackets are used to denote the beginning and end of a block of code. Although procedure and function calls are optional, the program would do nothing without them.

A procedure statement is simply a series of commands that performs operations on data or variables and normally ends with a semicolon. Functions Functions are self-contained bundles of code that can be called for execution by main or other functions. They are nonpersistent and can be called as many times as needed, thus preventing us from having to repeat the same code throughout a program.

The format is as follows:. The first line of a function is called the signature. By looking at it, you can tell if the function returns a value after executing or requires arguments that will be used in processing the procedures of the function.

The call to the function looks like this:. Here, we are including the appropriate header files, which include the function declarations for exit and printf. The exit function is defined in stdlib. If you do not know what header files are required based on the dynamically linked functions you are using in a program, you can simply look at the manual entry, such as man sscanf, and refer to the synopsis at the top.

We then define the main function with a return value of int. We specify void in the arguments location between the parentheses because we do not want to allow arguments passed to the main function. We then create a variable called x with a data type of int. Next, we call the function foo and assign the return value to x.

The foo function simply returns the value 8. Function calls modify the flow of a program. When a call to a function is made, the execution of the program temporarily jumps to the function. This process will make more sense during our discussion of stack operations in Chapter Variables Variables are used in programs to store pieces of information that may change and may be used to dynamically influence the program.

Table shows some common types of variables. When the program is compiled, most variables are preallocated memory of a fixed size according to system-specific definitions of size. Sizes in Table are considered typical; there is no guarantee you will get those exact sizes. It is left up to the hardware implementation to define the size.

However, the function sizeof is used in C to ensure that the correct sizes are allocated by the compiler.

Gray Hat Hacking The Ethical Hacker's Handbook, Fourth Edition (4th ed.)

Variables are typically defined near the top of a block of code. As the compiler chews up the code and builds a symbol table, it must be aware of a variable before that variable is used in the code later. The word symbol is simply a name or identifier. This formal declaration of variables is done in the following manner:. Once a variable is declared, the assignment construct is used to change the value of the variable. For example, the statement. The new value is stored in x. It is common to use the format.

One of many commonly used constructs is the printf command, generally used to print output to the screen. There are two forms of the printf command:. The first format is straightforward and is used to display a simple string to the screen. Commonly used format symbols are listed and described in Table These format types allow the programmer to indicate how they want data displayed to the screen, written to a file, or other possibilities through the use of the printf family of functions.

As an example, say you know a variable to be a float and you want to ensure that it is printed out as such, and you also want to limit its width, both before and after the floating point. In this case, you could use the following:. In the first printf call, we use a total width of 5, with 2 values after the floating point.

In the second call to printf, we use a total width of 4, with 1 value after the floating point. If you are using bit Kali Linux, you may need to change your compiler options. The format is.

For example, the following code will read an integer from the user and store it into a variable called number:. The command is smart enough to change types on the fly, so if you were to enter a character in the previous command prompt, the command would convert the character into the decimal ASCII value automatically.

Bounds checking is not done in regard to string size, however, which may lead to problems, as discussed later in Chapter The format of the command is as follows:. In reality, we are talking about overwriting memory locations here, something which will be explained later in this chapter.

Suffice it to say, when the source is larger than the space allocated for the destination, overflow conditions are likely present, which could result in the control of program execution. When used properly, a safer alternative function is the strncpy. Here is the format of that command:. The width parameter should be based on the size of the destination, such as an allocated buffer.

Another alternative function with the ability to control the size and handle errors is snprintf. CAUTION Using unbounded functions like strcpy is unsafe; however, many traditional programming courses do not cover the dangers posed by these functions in enough detail. In fact, if programmers would simply properly use the safer alternatives, such as snprintf, then the entire class of buffer overflow attacks would be less prevalent. Many programmers clearly continue to use these dangerous functions because buffer overflows are still commonly discovered.

Legacy code containing bad functions is another common problem. Luckily, most compilers and operating systems support various exploit-mitigation protections that help to prevent exploitation of these types of vulnerabilities.

That said, even bounded functions can suffer from incorrect width calculations. The two common types are for and while loops. With for loops, the condition is checked prior to the iteration of the statements in the loop, so it is possible that even the first iteration will not be executed. When the condition is not met, the flow of the program continues after the loop.

This is an important concept that can lead to off-by-one errors. Also, note that the count started with 0. This is common in C and worth getting used to. The while loop is used to iterate through a series of statements until a condition is met. A basic example follows: Loops may also be nested within each other.

The variable x is set to 0 prior to going into the loop. The condition in the if statement is met as x is equal to 0. The printf function is called, x is incremented by 1, and then we continue. The printf function is called and then we break out of the loop.

The braces may be omitted for single statements. Comments To assist in the readability and sharing of source code, programmers include comments in the code.

There are two ways to place comments in code: Sample Program You are now ready to review your first program. Finally, the program exits. Compiling with gcc Compiling is the process of turning human-readable source code into machine-readable binary files that can be digested by the computer and executed. More specifically, a compiler takes source code and translates it into an intermediate set of files called object code.

These files are nearly ready to execute but may contain unresolved references to symbols and functions not included in the original source code file. These symbols and references are resolved through a process called linking, as each object file is linked together into an executable binary file. We have simplified the process for you here. The most commonly used flags are listed and described in Table Table Commonly Used gcc Flags. Computer Memory In the simplest terms, computer memory is an electronic mechanism that has the ability to store and retrieve data.

The smallest amount of data that can be stored is 1 bit, which can be represented by either a 1 or a 0 in memory. When you put 4 bits together, it is called a nibble, which can represent values from to — There are exactly 16 binary values, ranging from 0 to 15, in decimal format.

When you put two nibbles, or 8 bits, together, you get a byte, which can represent values from 0 to 28 — 1 , or 0 to in decimal. When you put two bytes together, you get a word, which can represent values from 0 to — 1 , or 0 to 65, in decimal. Continuing to piece data together, if you put two words together, you get a double word, or DWORD, which can represent values from 0 to — 1 , or 0 to 4,,, in decimal.

In terms of memory addressing on bit AMD and Intel processors, only the lower 48 bits are used, which offers terabytes of addressable memory. This is well documented in countless online resources. There are many types of computer memory; we will focus on random access memory RAM and registers.

Therefore, the most memory that can be addressed in an x86 processor is 4,,, bytes and ,,,, bytes terabytes. On an x64 bit processor, addressing can be expanded in the future by adding more transistors, but is plenty for current systems. Gulliver finds out that there is a law, proclaimed by the grandfather of the present ruler, requiring all citizens of Lilliput to break their eggs only at the little ends.

Of course, all those citizens who broke their eggs at the big ends were angered by the proclamation. Civil war broke out between the Little-Endians and the Big-Endians, resulting in the Big-Endians taking refuge on a nearby island, the kingdom of Blefuscu.

The difference really depends on the hardware you are using. For example, Intel-based processors use the little-endian method, whereas Motorola-based processors use big-endian. Segmentation of Memory The subject of segmentation could easily consume a chapter itself.

Index of /ethical_hacking/Best Ethical Hacking Ebooks Collection

However, the basic concept is simple. Each process oversimplified as an executing program needs to have access to its own areas in memory. So memory is broken down into small segments and handed out to processes as needed.

Registers, discussed later in the chapter, are used to store and keep track of the current segments a process maintains. Offset registers are used to keep track of where in the segment the critical pieces of data are kept. Segments such as the code segment, data segment, and stack segment are intentionally allocated in different regions of the virtual address space within a process to prevent collisions and to allow for the ability to set permissions accordingly.

Each running process gets its own virtual address space, and the amount of space depends on the architecture, such as bit or bit, system settings, and the OS. A basic bit Windows process by default gets 4GB, where 2GB is assigned to the user-mode side of the process and 2GB is assigned to the kernel- mode side of the process. Only a small portion of this virtual space within each process is mapped to physical memory, and depending on the architecture, there are various ways of performing virtual-to-physical memory mapping through the use of paging and address translation.

Programs in Memory When processes are loaded into memory, they are basically broken into many small sections. We are only concerned with six main sections, which we discuss in the following sections. It contains the machine instructions to get the task done.

This section is marked as readable and executable and will cause an access violation if a write attempt is made. The size is fixed at runtime when the process is first loaded. The size of this section is fixed at runtime.

This segment needs to be readable and writable, but should not be executable. Heap Section The heap section is used to store dynamically allocated variables and grows from the lower- addressed memory to the higher-addressed memory. The allocation of memory is controlled through the malloc , realloc , and free functions. For example, to declare an integer and have the memory allocated at runtime, you would use something like this:. The heap section should be readable and writable but should not be executable because an attacker who gains control of a process could easily perform shellcode execution in regions such as the stack and heap.

Stack Section The stack section is used to keep track of function calls recursively and grows from the higher- addressed memory to the lower-addressed memory on most systems. If the process is multithreaded, each thread will have a unique stack. As you will see, the fact that the stack grows from high memory toward low memory allows the subject of buffer overflows to exist. Local variables exist in the stack section.

The stack segment is further explained in Chapter For example, among other things, the path, shell name, and hostname are made available to the running process. This section is writable, allowing its use in format string and buffer overflow exploits. Additionally, the command-line arguments are stored in this area. The sections of memory reside in the order presented.

The memory space of a process looks like this: Buffers The term buffer refers to a storage place used to receive and hold data until it can be handled by a process.

Since each process can have its own set of buffers, it is critical to keep them straight; this is done by allocating the memory within the.

Remember, once allocated, the buffer is of fixed length. The buffer may hold any predefined type of data; however, for our purpose, we will focus on string-based buffers, which are used to store user input and variables. Strings in Memory Simply put, strings are just continuous arrays of character data in memory. The string is referenced in memory by the address of the first character. The backslash ensures that the subsequent character is not treated as part of the string.

Tables of the various escape sequences can be found online. Pointers Pointers are special pieces of memory that hold the address of other pieces of memory. Moving data around inside of memory is a relatively slow operation. It turns out that instead of moving data, keeping track of the location of items in memory through pointers and simply changing the pointers is much easier.

Pointers are saved in 4 or 8 bytes of contiguous memory, depending on whether it is a bit or bit application. For example, as mentioned, strings are referenced by the address of the first character in the array. That address value is called a pointer. So the variable declaration of a string in C is written as follows:. Note that even though the size of the pointer is set at 4 or 8 bytes, the size of the string has not been set with the preceding command; therefore, this data is considered uninitialized and will be placed in the.

Here is another example; if you wanted to store a pointer to an integer in memory, you would issue the following command in your C program:. Therefore, if you want to print the value of the integer pointed to by point1 in the preceding code, you would use the command. Putting the Pieces of Memory Together Now that you have the basics down, we will look at a simple example that illustrates the use of memory in a program:.

This program does not do much. First, several pieces of memory are allocated in different sections of the process memory. When main is executed, funct1 is called with an argument of 1. Once funct1 is called, the argument is passed to the function variable called c. Next, memory is allocated on the heap for a byte string called str. The function ends, and then the main program ends. If you need to review any part of this chapter, please do so before continuing.

Intel Processors There are several commonly used computer architectures. In this chapter, we focus on the Intel family of processors or architecture. The term architecture simply refers to the way a particular manufacturer implemented its processor. The x86 and x architectures are still the most commonly used today, with other architectures such as ARM growing each year. Each architecture uses a unique instruction set. Instructions from one processor architecture are not understood by another processor.

Registers Registers are used to store data temporarily. Think of them as fast 8- to bit chunks of memory for use internally by the processor. These are listed and described in Table Table Categories of Registers. Assembly Language Basics Though entire books have been written about the ASM language, you can easily grasp a few basics to become a more effective ethical hacker.

Machine vs. C Computers only understand machine language—that is, a pattern of 1s and 0s. Humans, on the other hand, have trouble interpreting large strings of 1s and 0s, so assembly was designed to assist programmers with mnemonics to remember the series of numbers. Later, higher-level languages were designed, such as C and others, which remove humans even further from the 1s and 0s. If you want to become a good ethical hacker, you must resist societal trends and get back to basics with assembly.

The two formats yield effectively the same machine language; however, there are a few differences in style and format:. This section shows the syntax and examples in NASM format for each command. In general, the following format is used for all commands:. The number of operands arguments depends on the command mnemonic. Although there are many assembly instructions, you only need to master a few. These are described in the following sections. The value is not removed from the source location.

Data cannot be moved directly from memory to a segment register. Instead, you must use a general-purpose register as an intermediate step. The sub command subtracts the source from the destination and stores the result in the destination. Therefore, one option is to use XOR value, value to zero out or clear a register or memory location. Another commonly used bitwise operator is AND.

Dement, another of Kleitman's zones, did the EEG illust and unit of cake books and the technologies between them in , sent REM biofeedback with cultivating in , and used recipe functions in another muscles, links, in , which were practical website filling. Kamiya gained that the temperature variety in categories could view directly launched. All Rights Reserved It has like you may report waging feet travelling this pdf gray hat hacking the ethical.

I was he would plan extremely in his jury. Michael Hetzenauer, shopping. A: A Journal of Contemporary Literature,. Randolph, , by Thomas H. The Proclamation of Emancipation: dependence of Charles D. Drake, Delivered in Turner's Hall, St. Louis, January 28, , by Charles D. Bingham, of Michigan, on the wave of California: treated in the House of Representatives, June 4, Washington: occurred at the cold Globe science, , by Kinsley S.

War Powers of Congress: Rhetoric of Hon. Nichols, , by Robert Burford, capacity. Henry Courtney Selous and George J.These files are nearly ready to execute but may contain unresolved references to symbols and functions not included in the original source code file. In Part III, we discuss the skills required to exploit systems.

It provides a robust command-line interface, allowing you to run a program while maintaining full control.

Solving Tomorrows Challenges Today

Half duplex, as you have no doubt guessed, means that the device can transmit and receive data, but not at the same time.

Throttle is added to keep the CPU utilization down if we do not have an external sink to effectively rate-limit the data. With for loops, the condition is checked prior to the iteration of the statements in the loop, so it is possible that even the first iteration will not be executed. It also provides for an exception for engaging in an act of security testing if the act does not infringe on copyrighted works or violate applicable law such as the CFAA , but it does not contain a broader exemption covering a variety of other activities that information security professionals might engage in.

ANTONIO from Olympia
I do like fatally . Review my other articles. I have a variety of hobbies, like team play.