Forum: PC-Programmierung sinnvolle Kenntnisse um Kali Linux richtig nutzen zu können


von pascal (Gast)


Lesenswert?

Hi,

da ich mich nun dazu entschlossen habe, mich mit den Tools in Kali Linux 
und Hacking in meiner Freizeit zu beschäftigen, wollte ich mal fragen, 
ob jemand hier weiß, welche Kenntnisse sinnvoll wären, um die in Kali 
enthaltenen Tools richtig nutzen zu könnten.
Ich würde mir nämlich gerne dessen bewusst sein, was ich tue, und 
vielleicht auch selbst etwas programmieren, statt fertige Skripts ohne 
Verständnis der Funktionsweise zu nutzen.

Außerdem weise ich darauf hin, dass ich keine illegalen Dinge vorhabe, 
sondern lediglich aus Spaß und Interesse die Sicherheit von PCs, OS's 
etc. testen möchte (natürlich nur indem ich z.B. innerhalb meines 
eigenen WLAN-Netzes meine eigenen Geräte zu hacken versuche)

Also Tipps zu Themenbereichen, in denen Kenntnisse wichtig wären, wären 
von mir sehr erwünscht.
Was das Programmieren angeht ist für mich kein Problem, ich beherrsche 
alle gängigen Programmiersprachen (bspw. C, Python, Assembler (x86), 
Pascal, ..)

interessiert bin ich an fast allem - womit könnte man beginnen bzw. in 
welche Bereiche könnte man das Hacking unterteilen?

Danke im Voraus
Pascal

von Donni D. (Gast)


Lesenswert?

Überleg dir was du machen willst, schau dir Tutorials etc an. Einfach 
mal eben so dein PC hacken wird aber definitiv nichts, außer du 
installierst vorsätzlich angreifbare Software.

von Horst (Gast)


Lesenswert?

pascal schrieb:
> interessiert bin ich an fast allem - womit könnte man beginnen

Grundlagen.

Wenn Du Dir ein Werkzeug nimmst und überlegst, was Du damit machen 
kannst, hast Du an der falschen Seite angefangen.

Nehmen wir mal einen Portscanner. Was bringt es Dir zu wissen, wenn bei 
einem Rechner Port 123 offen ist?
Wenn Du aber weisst, daß ein bestimmter NTP-Server in der Version x.y 
eine Schwachstelle hat, nimmst Du einen Portscanner und kannst Deine 
Rechner nach einem offenen Port 123 und siehst nach, welcher Dienst in 
welcher Version da läuft.
Zum Testen kannst Du Dir also einen Rechner nehmen, den anfälligen 
NTP-Server installieren und sehen, welcher Scanner Dir welche Ergebnisse 
bringt und was Du damit erreichen kannst.

Eine ganze Werkzeugkiste brauchst Du erst, wenn Du das passende Werkzeug 
für eine Aufgabe aussuchen kannst.

von Dienstverweigerer (Gast)


Lesenswert?

Horst schrieb:

> Nehmen wir mal einen Portscanner. Was bringt es Dir zu wissen, wenn bei
> einem Rechner Port 123 offen ist?

Dann steht der Rechner schon mal im Verdacht, demnächst als Amplifier an 
einer UDP Reflection Attack teilzunehmen.

von Pandur S. (jetztnicht)


Lesenswert?

Tja, wenn man kein Script einfach so laufen lassen will, hat man das 
wahnsinnige Glueck den Code auch anschauen zu duerfen. Den kann man 
lesen und lernen. Allenfalls besorgst du dir erst noch ein Tutorial zu 
dieser Script sprache

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> mich mit den Tools in Kali Linux und Hacking [..]

Ein paar grundlegende Kenntnisse in Zahnheilkunde wären nicht schlecht, 
falls Du Dir damit rein zufällig an meinem WLAN zu schaffen machst.

von Olaf (Gast)


Lesenswert?

> Ich würde mir nämlich gerne dessen bewusst sein, was ich tue, und
> vielleicht auch selbst etwas programmieren, statt fertige Skripts ohne
> Verständnis der Funktionsweise zu nutzen.

Wenn ich deine Level richtig einschaetze dann brauchst du erstmal:

UNIX System V.4: Begriffe, Konzepte, Kommandos, Schnittstellen (Springer 
Compass)  Gulbins/Obermayr.

Olaf

von Eric B. (beric)


Lesenswert?

pascal schrieb:
> (natürlich nur indem ich z.B. innerhalb meines
> eigenen WLAN-Netzes meine eigenen Geräte zu hacken versuche)

Dann fang schon mal an die 127.0.0.1 zu hacken! :D

von pascal (Gast)


Lesenswert?

Eric B. schrieb:
> Dann fang schon mal an die 127.0.0.1 zu hacken! :D

#i hacked 127.0.0.1

Aber mal im Ernst wer weiß schon nicht was 127.0.0.1 für eine IP ist?

Olaf schrieb:
> UNIX System V.4: Begriffe, Konzepte, Kommandos, Schnittstellen (Springer
> Compass)  Gulbins/Obermayr.

Hört sich gut an. Danke für den Tipp!

von Sheeva P. (sheevaplug)


Lesenswert?

pascal schrieb:
> Was das Programmieren angeht ist für mich kein Problem, ich beherrsche
> alle gängigen Programmiersprachen (bspw. C, Python, Assembler (x86),
> Pascal, ..)

"Ich beherrsche alle gängigen Programmiersprachen" sind große Worte. ;-)

> interessiert bin ich an fast allem - womit könnte man beginnen bzw. in
> welche Bereiche könnte man das Hacking unterteilen?

Naja, das ist ein ziemlich weites Feld. Zu den Klassikern gehört 
natürlich zunächst das "Social Hacking", also einen Anwender dahin zu 
tricksen, daß er Deine Schadsoftware installiert und aufruft. Schon das 
ist eine hohe Kunst, die bei E-Mails und Telefonanrufen anfängt, über 
"zufällig verlorene" USB-Sticks oder andere Medien geht, und bei 
gezielten Angriffen auf einzelne Personen wie einsame Sekretärinnen 
nicht endet.

Ein anderer Klassiker ist das Ausnutzen von Sicherheitslücken in beim 
Opfer genutzter Software. Auch hier gibt es das ganze Spektrum, von 
einfachen Pufferüberläufen wie Code Red oder SQL Slammer bis zu 
logischen Angriffen wie Shellshock oder Heartbleed. Einige solcher 
Angriffsmuster lassen sich heute durch moderne Technologien wie ASLR 
oder proaktive Firewalls verhindern, andere leider (noch?) nicht.

Noch ein Klassiker ist das Füttern von Software mit Zufallsdaten, womit 
deren Eingabevalidierung überprüft werden kann. Auf die Weise wurden die 
aktuellen Sicherheitslücken Meltdown und Spectre entdeckt, OWASP ist da 
ebenfalls eine sehr interessante Quelle.

Wenn Du anfangen willst, solltest Du zuerst lernen, wie ein 
Betriebssystem intern funktioniert, und einfache Mechanismen wie deren 
Dateisystempuffer, Copy-On-Write, Speicherverwaltung und die 
Verarbeitung von Netzwerkpaketen erklären können. Danach solltest Du Dir 
ein paar Exploits anschauen, um zu verstehen, wie und warum sie 
funktionieren.

Ansonsten: viel Spaß!

von pascal (Gast)


Lesenswert?

Sheeva P. schrieb:
> Ansonsten: viel Spaß!

Danke! Dann habe ich ja schonmal was, womit ich anfangen kann.

Sheeva P. schrieb:
> Ich beherrsche alle gängigen Programmiersprachen" sind große Worte. ;-)

Das kommt natürlich darauf an, was man als gängige Programmiersprache 
definiert.

von Moe (Gast)


Lesenswert?

pascal schrieb:
> Sheeva P. schrieb:
>> Ich beherrsche alle gängigen Programmiersprachen" sind große Worte. ;-)
>
> Das kommt natürlich darauf an, was man als gängige Programmiersprache
> definiert.

Es ging da eher um das Wort "berherrsche", denn zu C wuerde ich auch 
autohell zaehlen in der du offensichtlich noch nicht warst.

Zu deinem Vorhaben: Eigentlich brauchst du saemtliche 
Computergrundkenntnisse (wobei die fuer viele schon recht erweitert 
sind). Hier nur mal eine kleine Liste, was mir so ganz spontan 
einfaellt:

- Auf einer Shell solltest du dich zu Hause fuehlen, um bei 
Fehlermeldungen ueberhaupt eine Diagnose starten zu koennen (strace, 
ptrace, tcpdump (oder wireshark fuer bunt), /proc, ...)

- Netzwerkprotokolle (handshake, mtu, die drei gebraeuchlichsten alla 
TCP,UDP,ICMP)

- Wenn du dich mit WLAN-cracking beschaeftigen willst, dann solltest du 
dir auch die IEEE802 spezifikation ansehen (fuer die diversen 
paket-typen alla auth/deauth/assoc)

- Hashing-algorithmen fuer password-cracking, Funktionsweise von salts, 
rainbowtables, etc.

- Umgebungsvariablen (LD_PRELOAD, LD_DEBUG, ...)

- Fuer Hardware-hacking solltest du dir die diversen Schnittstellen 
anschauen (seriell, i2c, spi, ...)

- HTTP-header und requests (wie werden POST/GET/REQUEST/HEADER requests 
abgeschickt)

- Verstaendnis von syscalls (z.B. stdlib und Konsorten)

- Zertifikate (was ist eine root-ca, was heisst signieren, welche 
Vertrauensstufen, pubkey/privkey)

- DNS (glue-records, mx, c-names, dnssec, ...)

- Dateicontainer/formate (z.B. als Stichwort zip-bombs, oder Payloads in 
Officedokumenten, Dateiheader, Verwendung eines Hexeditors)


Ein Teil davon klingt banal anderes braucht einige Zeit zum einarbeiten. 
Mit kali kannst du alles genannte (und noch mehr) machen. Wenn die 
Grundlagen sitzen, dann kannst du auch mal mit metasploit, aircrack, 
medusa, nmap (+scripts) etc. spielen.

Das schoene ist, wenn man mal genuegend Grundlagen gesammelt hat, 
ergeben die vorher gesammelten Puzzleteile ploetzliche alle Sinn. Ich 
bin immer noch weit davon entfernt eigene Exploits zu schreiben (das 
hoechste der Gefuehle war mal eine Funktion per LD_PRELOAD zu 
ueberschreiben, sodass ein schlecht konfiguriertes sudo ausgebelt werden 
konnte - die Funktion hat dann eine Shell geforkt, normalerweise laesst 
sudo aber keine Umgebungsvariablen zu, das war also eine 
Fehlkonfiguration).

Viele PoC (proof of concept) gibt es auch als einzelne kleine tools, 
ohne gleich metasploit anwerfen zu muessen. Ein Kernel der fuer dirtycow 
verwundbar ist, laesst sich damit z.B. wunderbar testen und da der 
Programmcode sehr uebersichtlich ist, auch gut nachvollziehen, was dort 
passiert.

von ~Mercedes~ (Gast)


Lesenswert?

Du mußt Dich mit Docker beschäftigen.
Docker ist die Virtualisierung, ja das
Dateisystem der Zukunft.

Bald wird jedes Programm in einem Container
laufen, die praktisch von einem Bootsystem
gestartet werden.
Da die Programme ja untereinander kommunizieren
müssen, sei es auf dem selben Rechner, einem
befreundeten Cluster oder auch über das, was dem
heutigen Internet folgen soll, sind genau diese
Schnittstellen die Spielwiese unserer Zukunft. ;--D

mfg

von Sheeva P. (sheevaplug)


Lesenswert?

~Mercedes~ schrieb:
> Du mußt Dich mit Docker beschäftigen.

Aber frühestens nach den Basics.

> Docker ist die Virtualisierung, ja das
> Dateisystem der Zukunft.

Docker ist gerade keine Virtualisierung -- und auch kein Dateisystem.

von Bernd Wiebus sein Geist (Gast)


Lesenswert?

Sheeva P. schrieb:
>> Docker ist die Virtualisierung, ja das
>> Dateisystem der Zukunft.
>
> Docker ist gerade keine Virtualisierung -- und auch kein Dateisystem.

Redet Ihr von verschiedenen Dockern?

Die Luxuslimousine von: https://de.wikipedia.org/wiki/Docker_(Software)

und Du von dem, was mir Synaptic an Info ausspuckt:

"Docker ist eine Andockanwendung (»WindowMaker dock app«), die als
Systemablage für beliebige Arbeitsumgebungen fungiert. Dies erlaubt es
Ihnen, eine Systemablage zu haben, ohne dass das Panel von KDE/GNOME
läuft. Docker wurde entworfen, um mit Openbox 2 zu arbeiten, aber es
sollte problemlos in beliebigen Fenstermanagern laufen."

von Nop (Gast)


Lesenswert?

pascal schrieb:

> interessiert bin ich an fast allem - womit könnte man beginnen bzw. in
> welche Bereiche könnte man das Hacking unterteilen?

Bevor Du Lücken remote angehst, könntest Du sie ja erstmal lokal 
angehen. Denn oftmals besteht der remote-Angriff darin, auf dem 
Zielrechner Code zur Ausführung zu bringen, indem man eine Lücke 
ausnutzt, die auf dem remote-Rechner eine lokale ist.

Ein grundlegender Klassiker ist dabei natürlich der buffer overflow, den 
Du als C-Programmierer ja schon erlebt haben wirst. Ein paar Links dazu:

https://lthieu.wordpress.com/2012/11/10/exploit-stack-based-buffer-overflow-using-nop-sled-technique/
https://dhavalkapil.com/blogs/Buffer-Overflow-Exploit/
http://www.securiteam.com/securityreviews/5OP0B006UQ.html
http://insecure.org/stf/smashstack.html

von ~Mercedes~ (Gast)


Lesenswert?

Nop meinte:

> Ein grundlegender Klassiker ist dabei natürlich der buffer overflow, den
> Du als C-Programmierer ja schon erlebt haben wirst.

Lerne Shellcode assemblieren, das ist Code,
der keine Nullbytes enthalten darf, da er in die Eingabemaske
des Programmes eigegeben wird und den Stack der Anwendung
manipuliert und / oder ein gemeinen Sprung in eine Library
ermöglicht die Dich dann zum "ROOT" macht.

Das ist wahre Zauberei, das erzeugt Gänsehaut auf dem
Rücken. ;-P

mfg

von Pascal (Gast)


Lesenswert?

~Mercedes~ schrieb:
> Lerne Shellcode assemblieren

Das hört sich mächtig spannend an. Werde ich versuchen!

Nop schrieb:
> Ein grundlegender Klassiker ist dabei natürlich der buffer overflow, den
> Du als C-Programmierer ja schon erlebt haben wirst.

Danke für die Links!

Moe schrieb:
> Es ging da eher um das Wort "berherrsche"

Ok, dann nenne ich es mal "Ich kann damit soweit umgehen, dass ich den 
Source-Code der meisten Software, den ich bisher gelesen haben, auf 
Anhieb verstand.

@ Moe / Sheeva Plug
Danke für die vielen Infos!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.