• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

shellcode unter suse 11.2

hallo,
ich lese gerade ein Buch über Shellcode.Das Buch ist auf eine ältere Ubunto Live CD ausgelegt.
Mein anliegen ist, dass die Code Stücke über Suse 11.2 laufen sollen.

1.Frage:
ASLR ausschalten?!

Wenn ich unter im Terminal...
cat /proc/sys/kernel/randomize_va_space
...eingebe, dann bekomme ich die 1 als Antwort.

Durch...
echo 0 > /proc/sys/kernel/randomize_va_space
bekomme ich dann mit dem Cat Befehl die 0.
Ist das soweit richtig?

2.Frage:
Stack Smashing Protect ausschalten:
An gcc folgendes -fno-stack-protector anhängen.
Reicht das für ssp?
Wie kann ich das an den Systemstart anhängen?

3.Frage:
NX ausschalten:
An gcc folgendes -execstack anhängen.
Reicht das für NX?
Wie kann ich das an den Systemstart anhängen?

4.Frage:
Ist der Pfad: "bin/sh" für eine shellcode auch so unter suse linux benutzbar?
 

spoensche

Moderator
Teammitglied
tomycat2012 schrieb:
hallo,
ich lese gerade ein Buch über Shellcode.Das Buch ist auf eine ältere Ubunto Live CD ausgelegt.
Mein anliegen ist, dass die Code Stücke über Suse 11.2 laufen sollen.

1.Frage:
ASLR ausschalten?!

Wenn ich unter im Terminal...
cat /proc/sys/kernel/randomize_va_space
...eingebe, dann bekomme ich die 1 als Antwort.

Durch...
echo 0 > /proc/sys/kernel/randomize_va_space
bekomme ich dann mit dem Cat Befehl die 0.
Ist das soweit richtig?

Wieso willst du das ausschalten? Weisst du was du da ausschalten willst? Ja, mit echo kannst du Kernelparameter setzen. Allerdings sollte man wissen, was man da macht.

tomycat2012 schrieb:
2.Frage:
Stack Smashing Protect ausschalten:
An gcc folgendes -fno-stack-protector anhängen.
Reicht das für ssp?
Wie kann ich das an den Systemstart anhängen?
[/qoute]

Du wilst Funktionen, die den Stack gegen Buffer Overflows, ausführen von Schadcode, der da nix verloren hat usw. abschalten?????? :schockiert:

GCC ist ein C- Compiler der nur aufgerufen wird, wenn du C- Sourcecode kompilieren willst. IMHO kannst du das nicht beim Systemstart anhängen.

Sorry, aber da du nicht wirklich weisst, was du da für Parameter ändern willst und welche Folgen das hat, solltest du die Finger von Kernelparametern lassen. Wenn du dich mal tiefer in Linux eingearbeitet hast, dann kannst du mal langsam und mit wesentlich weniger kritischen Parametern anfangen.

tomycat2012 schrieb:
3.Frage:
NX ausschalten:
An gcc folgendes -execstack anhängen.
Reicht das für NX?
Wie kann ich das an den Systemstart anhängen?

NX ist ein Hardwareflag, das nicht mal eben mit dem Aufruf von gcc und einem Parameter geändert werden kann.

tomycat2012 schrieb:
4.Frage:
Ist der Pfad: "bin/sh" für eine shellcode auch so unter suse linux benutzbar?

Es muss /bin/sh heissen und existiert so ziemlich auf jedem Linux, wo die Bash installiert ist.
 
OP
T

tomycat2012

Newbie
thx,
ich weis was der aslr macht, er erschwärt den Angreifer den Exploit, der ausgenützt werden soll.

zu nx aus schalten...

Aus einer pdf, was ich zufälligerweise gefunden habe.
Code:
NX Ausschalten:
>apt-get install prelink
>execstack –s datei
Es gibt noch andere Möglickeiten NX auszuschalten, um es beispielsweise bei jedem
Systemstart automatisch auszuschalten. Die Vorgehensweise dabei variiert aber von OS zu
OS, weshalb ich hier nur Schlagwörter dazu geben kann. Beispielsweise kann der Kernel mit
„noexec=off“ gestartet werden. Eine andere Möglichkeit ist der folgende Befehl:
>sysctl -w kernel.exec-shield=0
geht das auch unter suse, bevor ich etwas abschiesse
 
OP
T

tomycat2012

Newbie
hi,
es gibt Board, die mögen nicht, dass man solche pdf's reinstellt.Es freut mich, dass es bei linux club keine Probleme gibt. :)

ok, anderer Versuch:

Code:
#include <unistd.h>



int main() {

  char filename[] = "/bin/sh\x00";

  char **argv, **envp; // arrays that contain char pointers



  argv[0] = filename; // only argument is filename

  argv[1] = 0;  // null terminate the argument array



  envp[0] = 0; // null terminate the environment array



  execve(filename, argv, envp);

}

Mit Live Ubunto CD gestartet und mit dem user reader angemeldet gab ich folgendes ein:

gcc -o exec_shell exec_shell.c
ls -l exec_shell
ich bekam: -rwxr-xr-x 1 reader reader 6662
./exec_shell
ich bekam die Shell.

Mit meinem Suse:

tomycat@linux-m07o:~/hacking> gcc -z execstack -fno-stack-protector -o exec_shell exec_shell.c
tomycat@linux-m07o:~/hacking> ls -l exec_shell
-rwxr-xr-x 1 tomycat users 10043 26. Jan 14:04 exec_shell
tomycat@linux-m07o:~/hacking> ./exec_shell
Speicherzugriffsfehler
tomycat@linux-m07o:~/hacking>
tomycat@linux-m07o:~/hacking> cat /proc/sys/kernel/randomize_va_space
1

ok, 2ter Versuch mit Suse, diesmal mit root den randomize auf 0 gesetzt:
tomycat@linux-m07o:~/hacking> cat /proc/sys/kernel/randomize_va_space
0
tomycat@linux-m07o:~/hacking> gcc -z execstack -fno-stack-protector -o exec_shell exec_shell.c
tomycat@linux-m07o:~/hacking> ./exec_shell
Speicherzugriffsfehler
tomycat@linux-m07o:~/hacking>

PS: Suse nutzt /bin/sh.

Was kann ich jetzt daraus schliessen?
 

abgdf

Guru
Sieht für mich so aus, als will da jemand ohne jede Kenntnis von Shell oder C (das er versucht, einzusetzen) ins Hacking einsteigen.
@Mod: Ich denke, das sollten wir nicht unterstützen, es sei denn, so. ;)
 
OP
T

tomycat2012

Newbie
sowas habe ich erwartet,
Warum soll ich keine Kenntnisse in C haben? Woher willst du das wissen?
Blos weil ich in Sachen Hacking mich reinarbeite, bin ich doch nicht gleich Böse.
Es gibt auch Leute, die möchten sich schützen von hacking und lesen Bücker über Bufferoverflow.
Dann gibt auch noch Leute, die wollen einfach das Wissen haben, um zu wissen, wer ahung hat von Sicherheit oder nicht.
 

spoensche

Moderator
Teammitglied
tomycat2012 schrieb:
Blos weil ich in Sachen Hacking mich reinarbeite, bin ich doch nicht gleich Böse.
Es gibt auch Leute, die möchten sich schützen von hacking und lesen Bücker über Bufferoverflow.

Vollkommen richtig. Nur wenn man weiss, wie und mit welchen Methoden der Gegner vorgeht, kann man sich effektiv schützen.


PS:
Vor erfolgreichen Angriffen will man sich schützen. Hacking ist aber kein Angriff.
 

abgdf

Guru
tomycat2012 schrieb:
sowas habe ich erwartet,
Warum soll ich keine Kenntnisse in C haben? Woher willst du das wissen?
Dein Code oben sieht so aus. Einen C-Programmier darf "Speicherzugriffsfehler" nicht abschrecken. Der würde gdb anwerfen, den Fehler suchen und beheben. Ich kann das übrigens auch nicht. :D
tomycat2012 schrieb:
Blos weil ich in Sachen Hacking mich reinarbeite, bin ich doch nicht gleich Böse.
Es gibt auch Leute, die möchten sich schützen von hacking und lesen Bücker über Bufferoverflow.
Dann gibt auch noch Leute, die wollen einfach das Wissen haben, um zu wissen, wer ahung hat von Sicherheit oder nicht.
Stimmt, aber solches Wissen ist in falschen Händen nunmal nicht gut. Deshalb geben es die, die es möglicherweise haben, nicht an Unbekannte in Foren weiter. Man kann ja nicht wissen, ob die böse sind oder nicht.
 

RME

Advanced Hacker
Hallo,

So bekommst Du zumindest keinen "Segmentation fault" (auch mit Deinen Compiler Optionen):

Code:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

int main() {
  char filename[] = "/bin/sh";

  char **argv, **envp; // arrays that contain char pointers
  
  argv = (char**)malloc(sizeof(char*) * 100);
  envp = (char**)malloc(sizeof(char*) * 100);

  argv[0] = filename;  // only argument is filename

  argv[1] = '\0';      // null terminate the argument array

  envp[0] = '\0';      // null terminate the environment array

  execve(filename, argv, envp);
}

Gruss,
Roland
 
OP
T

tomycat2012

Newbie
abgdf schrieb:
tomycat2012 schrieb:
sowas habe ich erwartet,
Warum soll ich keine Kenntnisse in C haben? Woher willst du das wissen?
Dein Code oben sieht so aus. Einen C-Programmier darf "Speicherzugriffsfehler" nicht abschrecken. Der würde gdb anwerfen, den Fehler suchen und beheben. Ich kann das übrigens auch nicht. :D
Ich lass mich auch nicht abschrecken, ich kenne den gdb. Ich muss noch ein paar Packte nachinstalleren. In gdb bin ich noch nicht ganz Fit.
komisch ist nur, auf einer Seite weist du es nicht. Auf der anderen Seite sagt du mir wie man den Fehler findet. ;)

abgdf schrieb:
tomycat2012 schrieb:
Blos weil ich in Sachen Hacking mich reinarbeite, bin ich doch nicht gleich Böse.
Es gibt auch Leute, die möchten sich schützen von hacking und lesen Bücker über Bufferoverflow.
Dann gibt auch noch Leute, die wollen einfach das Wissen haben, um zu wissen, wer ahung hat von Sicherheit oder nicht.

Stimmt, aber solches Wissen ist in falschen Händen nunmal nicht gut. Deshalb geben es die, die es möglicherweise haben, nicht an Unbekannte in Foren weiter. Man kann ja nicht wissen, ob die böse sind oder nicht.

Du tust so, als willst du die Welt retten. Wenn jemand ein shellcode hat, der eine Shell aufmacht, der kann erstmal überhaupt nicht bösees tun. Wenn jamnad etwas im Internet hacken möchte, der kennt den gdb in und auswendig, dazu hat er eine Sammlung von Shellcode für die verschiedene Systeme. Mein Shellcode der nicht geht, der öffnet nur eine bash serverseitig. Dann muss der Angreifer noch wirklich viel Ahnung von C haben, sowie die Schnittstellen vom System, das er angreifen möchte.
 

spoensche

Moderator
Teammitglied
Die Funktion execve erwartet als 1. Parameter "char *filename". Dein Aufruf von execve müsste also:
Code:
execve(&filename, argv, envp);
lauten.

tomycat2010 schrieb:
Wenn jamnad etwas im Internet hacken möchte, der kennt den gdb in und auswendig, dazu hat er eine Sammlung von Shellcode für die verschiedene Systeme.

Was willst du mit einem Debugger bei einem DDoS Angriff? Die Leitung debuggen und in der Leitung eine Bash aufmachen???

tomycat2010 schrieb:
Mein Shellcode der nicht geht, der öffnet nur eine bash serverseitig. Dann muss der Angreifer noch wirklich viel Ahnung von C haben, sowie die Schnittstellen vom System, das er angreifen möchte.

Naja, dank aktiver Stackprotection und Serversoftware, die ihre Childprozesse per fork erzeugt und nicht mit execve, wird dir ein ganzes Sammelsorium von Shellcode und das beherschen der Programmiersprache C rein gar nix bringen.
 
Oben