aslr und der Ablauf...

Ich probiere gerade den ASLR kennenzulernen.
Als erstes schalte ich ihn auf 1, wie in meinem Buch.


echo 1 > /proc/sys/kernel/randomize_va_space


Alles wurde mit nostackprotect kompiliert.

Laut nach meinem Buch, sollte ich irgendwann mal einen Wert wie z.B. 52 erreichen.
Ok, das Buch arbeitet mit Kernel 2.6.20 und ich arbeite mit 3.8.0 :)




aslr_ececl.c

PHP:
#include <stdio.h> 
#include <unistd.h> 
 
int main(int argc, char *argv[]) { 
   int stack_var; 
 
   // print an address from the current stack frame 
   printf("stack_var is at %p\n", &stack_var);  
 
   // start aslr_demo, to see how it's stack is arranged 
   execl("./aslr_demo", "aslr_demo", NULL); 
}


aslr_demo.c


PHP:
#include <stdio.h> 
 
int main(int argc, char *argv[]) { 
   char buffer[50]; 
 
   printf("buffer is at %p\n", &buffer); 
 
   if(argc > 1) 
      strcpy(buffer, argv[1]); 
 
   return 1; 
}




root@tomovic# gdb -q --batch -ex "p 0xbfadfc3c - 0xbf8d632e"
$1 = 2136334
root@tomovic# ./aslr_execl
stack_var is at 0xbff36adc
buffer is at 0xbfd0e67e
root@tomovic# gdb -q --batch -ex "p 0xbff36adc - 0xbfd0e67e"
$1 = 2262110
root@tomovic# ./aslr_execl
stack_var is at 0xbfad52cc
buffer is at 0xbfa1f11e
root@tomovic# gdb -q --batch -ex "p 0xbfad52cc - 0xbfa1f11e"
$1 = 745902





1.Frage:
Warum bekomme ich keine kleineren Werte wie z.B. 50?
2.Frage:
Nach welcher Strategrie setzt alsr die Adressbelegung?
3.Frage:
Wie hoch ist die Warscheinlichkeit, dass es noch eine feste Adresse gibt, die den ASLR austrickst?
 
Zuletzt bearbeitet:
hallo,
hat keine eine Idee oder Schimmer?
Mir reicht nur die Richtung, den Weg gehe ich dann selber :)
 
danke für die Antworten.
zu 1.
So wie ich das in meinem Buch verstanden habe, starte ich 2 Programme und der Speicher liegt nahe beieinander, siehe Quellcode. Somit sende ich viele NOP´s um in den Shellcode zuspringen.

zu 2.
das check ich mal, hoch interesant.

zu.3
Ok, Windows und das übliche :) Unter Linux wirklich garnichts mehr, das Statisch ist? Oder anderst gefragt, zu viel Prozent ist heutzutage der kernel randomizert ?
 
ähh, ok ich muss anderst fragen.Wenn ich...
proc/sys/kernel/randomize_va_space
... auf 2 setze. Dann sollte der Arbeitsspeicher vom dem Linux Betreibsystem komplett dynamisch verwaltet werden. Wie realistisch ist komplett in wirklichkeit gemeint? 100,000 % ? ODER gibts noch eine fixe Adresse?
Ich will nur den Prozentzahl wissen nach Bauchgefühlt.Sorry dass ich so dumm frage.
 
Zurück
Oben