How to be A Hacker
I'd say I have, at the most, intermediate web development and networking skills, beginner C++ programming skills, and close to no graphic design abilities. No one would consider me an amazing hacker by any means. But I keep seeing the same question being asked:
"How do I hack?"
It's asked directly often enough and sometimes it's disguised as "how do I hack <insertnoun>" or "how do I <insertverb> with <insertnoun>" and other various forms. So, I've decided to answer the question in an expanded version of the same answer many experienced people have given thousands of times over. Hopefully, I'll put it to rest and maybe inspire/reinspire others.
To understand how to be hacker, you should first understand how the word came to be in the first place. It predates computers. It referred to anyone who would "hack" something into pieces, understand how it works, then put it back together, sometimes with different or extended functionality. These were the kids that took apart their VCR just to see how the film reading mechanism worked. Or the guy that can make a robot out of a remote control and a hamburger. Maybe not a hamburger but you get my point.
The next thing you should understand is why, when people ask, "how do I hack," I equate it to asking, "how do I think?" What most people don't realize is that they do quite a bit of hacking on a daily basis. It's really as simple as a trip to McDonald's. What you might look at as a simple task is actually a complex series of series of events which uses multiple skills to reach the end goal of the legendary Big Mac:
1. You would never make it out of your seat if you didn't know how to use your legs.
2. You would never make it out of your house if you didn't know how to operate a door.
3. You would never make it down the street if you didn't know how to operate a vehicle.
4. You would never receive your Big Mac if you didn't have some knowledge of the English language (cause this is !ND!A).
You see, hacking is actually an ancient technique. The Spanish have called it "solución de problemas" which has been translated into English after decades of research to mean "problem solving." It's a technique that was once used by all people since the first man made spear from stone and clothes from wool which has been lost to the fast-paced and easy lifestyle people have become accustomed to in recent years.
For a moment, forget about how everything could be within your grasp at the touch of a button nowadays and all the other distractions of everday life. Remember when you were a kid and you could take the most mundane things and make them enjoyable? A stone wasn't just a stone, it was a grenade. A stick was a sword and your Tryannosaurus toy was a dragon that had to fight Megatron for control of the Pillow Empire. Remember when you put together that 200 piece puzzle that took you the better part of an hour to complete and the feeling of accomplishment afterwards that made you feel like you could do anything as long as you put your mind to it? Or even when your parents bought their new TV and VCR and you were the only one in the house that knew what all the buttons did on the remote controls? Not because you were smarter than them but because you simply took the time to look at them and try to understand what each button could possibly do and maybe press a few (maybe that does make you smarter than them...).
That's hacking. That's problem solving. It doesn't really have anything to do with executing shellcode and SQL injections. It has everything to do with using what you have and what you know to reach a goal. And, in my opinion, human beings in general are the best hackers on this planet.
I want to give you a couple of exercises and I recommend a grabbing a pen and paper or opening notepad. They might seem stupid but here's what I want you all to try to do:
Think of an object. Any object. It doesn't even necessarily have to be tangible. It could be a website or even a concept or a person (the more abstract it is, the more fun it is, in my opinion). Now try to understand it. Think about every aspect of it. Write it down. Take note of the color, shape, size, what it's intended use is, possible use is, everything. Don't inhibit your thinking, either. Even if it sounds "stupid" in your mind or possibly in the mind of anyone else, write it down because it doesn't matter. The stupidity of it is only an opinion. A chair is only a chair because you know it as a chair. It could just as well be a shelf or a part of a larger mechanism used to iron your clothes. The amazing thing is you're all right.
Think of two random objects. They could be related or completely unrelated. Now take one object (doesn't really matter which) and either a) try to think of a way to turn it into object 2 and vice-versa or b) try to think of a way to make it enhance what object 2 already does or give object 2 additional functionality...and vice-versa. The reason I made this the second exercise is because I wanted you to use what you learned from exercise one (if anything) to help you with this exercise. Understand both objects before you put them together. You may or may not be able to figure out way for both objects to work together, however don't become discouraged. This can actually be a very fun (and potentially lucrative) process and just because you couldn't find a way doesn't mean there is no way. You just couldn't find it. Yet.
Just to help you all out with both exercises, what I do almost every time (but don't limit myself to) is use the Five/Six W's method. Simply ask who, what, where, when, how, and why:
Who made <insertanything>?
What does <insertanything> do?
Where is <insertanything> used?
When was <insertanything> made?
How does <insertanything> make <insertanything> do <insertanything>?
Why did <insertanything> make <insertanything>?
Just a vague example.
To me, being a hacker is truly being a human. I honestly just love learning new things and it really doesn't matter what "genre" it's classified under. There is nothing more powerful than knowledge. Nothing. NOTHING. I cannot possibly emphasize this idea any further. You can have the largest army, "best" security, and most learned advisors, but if someone knows how to defeat all of that in any way, you have already lost.
I've struggled with trying to give this tutorial (rant) some semblance of structure but I'd like to leave you all with what is possibly my favorite quote of all time. It's a popular proverb from Lao Tzu:
"Give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime."
What I really want is for people to stop waiting for others to hand them fish. It's time for you all to learn how to fish for yourselves. Others won't always be there to give you the answers/fish nor is it ultimately beneficial for either of you to continue this type of relationship. Hopefully, with this tutorial, I've taught you how to fish or, at the very least, taught you how to cast your line. You live in an amazing time. All the information in the world is at your fingertips via google and every other search engine on the internet. Everything that took our predecessors their entire lives to research and learn could be in your mind within a few hours. Stop taking it for granted and just think. You're a human being. It's perfectly fine to ask questions and it's even fine to receive handouts. But once you forget the answer or lose whatever handout was given you, how are you going to get it back? If you don't want to think and are content with just consuming what those that do think have provided you, then (in my opinion) you should have been born a dog.
To me, this is what it means to be a hacker