How do i learn hacking

Alot of people ask “How do i learn hacking?”, “Where do i start?”, “How do i become a hacker”… and so on. I answered the question a million times. Now we all can just give them this link to my blog. ^^ First of all i want to thank MadHaTTrr. He talked to me about this topic in IRC and we discussed it abit. This is my opinion about everything. Others might think about it in a different way. Eat it or just throw it away.

What is hacking?

Hacking is a hobby. There are many ways of hacking. Some break security systems, some reverse code and some write homebrew things. In my opinion everything has todo with hacking. If you want to become a “hacker”. You have to get some knowledge in computer science and love to play around with it. That’s basicly everything a hacker needs ;).

What do i have to learn?

This really depends on what you want to achieve. For example “I want to learn to break into systems with tools out there and i don’t want to know a programming language”. For me you are no hacker then but then you just need to learn metasploit and co. ;)
There are some main topics in my opinion that are important.

  • Using a computer (Linux, configuration and so on)
  • Networking (Protocols and how does everything work)
  • Software (Developing and Reversing)
  • Hardware (How does your cpu work and so on. Not my best topic but i got some knowledge here)

Using a computer

Most people, who read my blog, have this knowledge. If you don’t i give you the advise to install Linux and play around with it. Configure some apache servers or something like that. Just play around till you feel comfortable with it. Compile some programms and so on. If you are able to compile your linux kernel and use it (maybe with an optimized configuration for your pc). This topic should be done for you. You don’t need to know how to compile a kernel. Just feeling comfortable with linux should proof you know how to use your computer ;).

The other topics can be learned parallel. There is no need to focus on one topic.

Networking

In my opinion everyone needs to know how to setup a network. Learn how to calculate the subnet mask and co. This should be easy just read something about it. Google helps alot here ;).
Learn how everything works. Examples are ARP Protocol, TCP/IP Protocol and how WLAN works. With this knowledge you can have alot of fun. You should be able to MitM attack a router and pc with this. With this setup sniffing should be possible. This is enough knowledge here in my opinion but depending on your needs you can lern more. Google topics or interesting tools

  • pcap (for devs, if you want or know software development, this is interesting for you)
  • arpspoof (dsniff package)
  • fragrouter (-B1 was it if i remember right to do forwarding so the network doesn’t break if you hook in there)
  • dsniff tools etc.

All tools you need here are on the net and knowing a network can be quite funny on a LAN Party. Guys never really never ever login private pages on a lan party or something like this. Public networks are public for a network hacker ;).

Software

This is my favorite. I work as software engineer and i love this topic. For Reversing this blog has a tutorial series, which starts here. Before lerning reversing you have to learn software development. I recommend every so called “hacker” to have at least a basic C knowledge. People always ask what language do i have to learn. The question is obsolete. If you know C, which is a functional language, very well and want to learn functional programming in VB. The only thing that differs is the syntax. I read very often there are so many differnces and just a hand of people know assembler. This is just plain bullshit. I know more than a hand of people that reverse code (which will be assembler). ;) Other rumor i hear often from wannabe hackers. Are that you use absolute adresses while developing assembler and the compiler creates relative adresses. That’s why nearly noone knows assembler. That means knowing assembler needs basic addition and subtraction. Yeah a assembler developer can’t do that -.-. I recommend to learn this languages in this order:

  • C (functional programming)
  • C++ (Object oriented programming)
  • Assembler (Low level programming)

If you don’t want to learn reversing C/C++ should be enough for you to know.

Starting with C
What do i develope? First of all buy a book (there a millions out there) and read it. Don’t copy paste the examples. After the book you know basic software development. Congratulations! If you don’t know what todo now. I will help you. I started developing software when i was pretty young. Around 11-12 years old. I developed software todo my math homework. For example a calculator which knows the Gaussian elimination. Developing software, which helps you at your work or day is always a good starting point. If you don’t have such examples start with a basic game. TicTacToe or something more complex chess. If you get bored of such things try to write AI for it. You can always ask me on twitter here. I developed this and this, any idea what i can develope next? I always got ideas :D. My father, who is software engineer too, gave me a todo. I will never forget it took me ages to make this work (without looking an algorithm at the internet). I developed it myself.
A calculator which gets a formula like this:
12+32*2-(12+32)*2/(12+(113-13)*3)…
and gives the result back. With all common rules/precedence. Multiply and division has a higher precedence than addition/subtraction. And of course brackets serves first ;).
If you got it right extend your example with not and compare. If this works you can say you know how to develope software.
Before or after this you can learn C++ with the propose to learn OOP. Again a book and read/learn. Most people buy direct a C/C++ book which is fair enough.

Assembler
The masterpiece ^^, i know noone who really developes software with it. Except he is forced to. Knowing this language gives you the following advantages:

  • Basic knowledge for reversing
  • Code optimizing
  • Everyone, who knows assembler. Can imagine what the CPU does.

Hardware

Buzz words here are for example: “von neumann architecture”. You should know how a cpu works and how to read/write a circuit by a binary table or formula. This is the basic, which i know. If you want to go deeper in this topic. Microcontroller and/or FPGAs should be your topic. Learning this topic can be exspensive. Reversing a hardware curcuit like the gameboy or something older should be a good start. With a voltage and continuity tester you can check what is connected to each other. No matter how many layers the board has. Drawing a circuit diagramm of a gameboy or thing of your choice should be a nice start. Even if it doesn’t explain much. Doing it can be quite fun (hardware is really not my main topic ^^). If you want to learn more here. I give you the advice to buy a dev board and play around with it. I recommend you to learn the Software part next or better before this topic. Going deep into hardware engineering needs software.

Conclusion

There is no way to give you a numbered list what todo/learn to be a hacker. Hacker just means that you know computer science and want to do experiments with this knowledge. If i had to start from the beginning i would do it this way.

  1. Install Linux and play around with it (with a book about my distro)
  2. Setup my network in linux so i got internet :D
  3. Learn C/C++ with a book and all it’s examples
  4. Develope the code todos i gave you and while i am frustrated in failing ^^. Learn how to use the networking tools i gave you.
  5. Go to a lan party or hotspot and play around with the networking tools (don’t do bad things, if you sniff a password be happy, you made it. Don’t use it for bad things! You want to be a hacker not a cracker)
  6. Play around with some hardware and develope software

Now some years should be gone and you should have the knowledge to go alone from here on.

I hope this helps some people to make the right decisions. How to start.

Unknown

Phasellus facilisis convallis metus, ut imperdiet augue auctor nec. Duis at velit id augue lobortis porta. Sed varius, enim accumsan aliquam tincidunt, tortor urna vulputate quam, eget finibus urna est in augue.

No comments:

Post a Comment