How are hackers able to find such complicated exploits?

910 views

How are hackers able to find such complicated exploits?

In: Technology

44 Answers

Anonymous 0 Comments

It all boils down to understanding how a system works very deeply. And then a dash of creativity to find a weakpoint in that.

Do you have a specific exploit in mind?

Anonymous 0 Comments

As with most other achievements: loads of experience, a lot of hard work and a bit of luck. Did you have anything specific in mind?

Anonymous 0 Comments

As one who has subbed to this group merely out of curiosity, I think this is a great question. Aside from trying out commonly known weaknesses, how do they find zero day exploits in new releases of operating systems and programs?

Anonymous 0 Comments

Some of it, to be fair, is through word of mouth. With tech being such a broad field and vulnerabilities being discovered left and right, us tech professionals need as much help compiling all of that information into digestible chunks, which is why some of us listen to security podcasts or read The Register daily. Hackers have that same level of information – it really comes down to whether or not we can protect against it. Some risks we have to accept in order to keep the business going, and not everyone is up to date on the latest and greatest patches – there’s a number of data acquisitions that go back to bad patch management. Doesn’t take a genius to be informed and to keep that information in their back pocket for later.

Anonymous 0 Comments

In addition to what others have said, there are a lot of hacking tools these days and vulnerabilities are generally published once found. Hackers can look at old vulnerabilities to get ideas for new ones. For example, a buffer overflow in one area of the code might imply there are similar vulnerabilities elsewhere. The tools, like fuzzing tools, make them easier to find.

Anonymous 0 Comments

Since no one has really given you a technical hacking response yet, [here is one example of a vulnerability that can be found called a stack overflow error. ](https://www.rapid7.com/blog/post/2019/02/19/stack-based-buffer-overflow-attacks-what-you-need-to-know/) The linked article goes into the actual depth required to understand this type of vulnerability and how to exploit it so I recommend reading it, but I’ll do my best to give you a *very* high-level explanation.

For computer programs to work, they need to allocate chunks of memory in the computer to store variables. The code that allocates this memory can do so in a bunch of different ways. For example, in the C coding language, you can call a function named “malloc” or “realloc” to get some chunk of memory. The “malloc” or “memory allocation” method in C is used to dynamically allocate a single large block of memory with a specified size. When you call that function, the function returns a “pointer”, which is a variable that essentially tells you where in the overall memory your little chunk lives.

Here’s the thing though (and this is where my explanation becomes so high level it’s essentially incorrect), once I know where a chunk of memory exists, I can kind of figure out a way to make the computer program read memory outside of that chunk. Say a program allocated blocks 40-45 of a 100 block stack. If I can put some variables in to blocks 50-60 and get that program to use those blocks of memory instead, I can tell the computer to do something entirely different. For example, maybe block 45 pointed to a function the computer was supposed to execute. If I have it point to block fifty, I can have it point to a different function to run. How do you figure out what to do to get it to point to block 50? There are a lot of different ways and the example I linked above explains some of those ways.

Again, I’m oversimplifying here, but this is the gist. I did this in grad school and had the new program be a rootkit, which is essentially a program that installs itself into the operating system and then hides itself so that it can look at different files without being seen.

This at least used to be a more common vulnerability, but it’s only one type of vulnerability among many. As others have mentioned, most are actually social hacks. For countless examples of this, look up Rachel Tobac of SocialProof Security on YouTube and elsewhere. I grew up with her and her husband (who is a more technical security researcher) and she has a bunch of good examples on this front.

Anonymous 0 Comments

You don’t learn how to hack. Instead, you learn everything you can learn about how computers, networks, security software, etc. works, and then you’ll know ways in which those systems can break.

Anonymous 0 Comments

Typically they don’t. There are teams of researchers who have multiple engineering degrees whose only job it is to find previously undisclosed vulnerabilities. They are paid what is called a ‘bug bounty’. These are programmers and engineers with intimate familiarity with how software works, how operating systems manage low level memory operations, and how all the corresponding protocols work. The image of a lone basement dwelling hacker able to outsmart teams of engineers is inaccurate. And no, Abby Shuto couldn’t just access a database after typing a few buttons.

What is more likely to happen is that a patch is released by a manufacturer. When that happens the time to exploit kit is only a few days. That is because when the manufacturer releases the patch, the flaw becomes obvious, they are essentially releasing directions on how to exploit their flaw. Exploit kits (something legitimately used by spy groups and law enforcement agencies) are not difficult to come by and their operation, while confusing to a normal user, are far easier to use than attempting to find a previously undisclosed flaw.

Anonymous 0 Comments

Mostly vulnerability testing and fuzzing to find bugs as well as just looking at public bug reports, then investigate and understand the bugs to see if it’s exploitable.

Basically, lots of code is tested to make sure that things that “make sense” work. It’s fairly common for people to fail to test the edge cases and error cases, so a common attack methods is automate data entry, generate files to give the program, etc, and just keep doing it over an over, but each time trying something a little different. Fuzzing for example is where you just randomly insert errors into the data you give the program, see if it handles it. Websites are commonly vulnerable to SQL injection, so you can try putting quotes and semicolons in fields and see if it breaks anything.

If something breaks, then you investigate why, often you’re looking for things like “XYZ crashed because abc is not valid code”, then you look at the test and see that abc is actually part of the data entry, so it might imply that if it was code it would run, so you enter code there and see if it works.

Anonymous 0 Comments

It’s just about having a very deep and intuitive knowledge of the system that you’re trying to exploit. If you understand how something works at a very low level, then you also understand how to break it, and break it in the way that you want it to break.