Ich verwende Ubuntu 12.04 32-Bit jetzt für einige Experimente. Ich muss ASLR deaktivieren. Wie kann ich das tun? und danach, was soll ich tun, um ASLR wieder zu aktivieren?
Ich verwende Ubuntu 12.04 32-Bit jetzt für einige Experimente. Ich muss ASLR deaktivieren. Wie kann ich das tun? und danach, was soll ich tun, um ASLR wieder zu aktivieren?
Antworten:
Laut einem Artikel Wie effektiv ist ASLR auf Linux-Systemen? können Sie ASLR unter Linux über die /proc/sys/kernel/randomize_va_space
Schnittstelle konfigurieren.
Folgende Werte werden unterstützt:
- 0 - Keine Randomisierung. Alles ist statisch.
- 1 - Konservative Randomisierung. Shared Libraries, Stack,
mmap()
VDSO und Heap werden zufällig ausgewählt.- 2 - Vollständige Randomisierung. Zusätzlich zu den im vorherigen Punkt aufgelisteten Elementen wird der durchgeführte Speicher
brk()
ebenfalls zufällig ausgewählt.
Um es zu deaktivieren, führen Sie es aus
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
und um es wieder zu aktivieren, führen Sie aus
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
Dies wird einen Neustart nicht überleben, daher müssen Sie dies in konfigurieren sysctl
. Fügen Sie eine Datei hinzu, /etc/sysctl.d/01-disable-aslr.conf
die Folgendes enthält:
kernel.randomize_va_space = 0
sollte dies dauerhaft deaktivieren.
brk()
?
Die /proc/sys/kernel/randomize_va_space
Schnittstelle steuert ASLR systemweit.
Wenn Sie keine systemweite Änderung wünschen, deaktivieren Sie ASLR mithilfe der Funktion " ADDR_NO_RANDOMIZE
Persönlichkeit" vorübergehend. Sie können dieses Persönlichkeits-Flag mit setarch
und seiner -R
Option ( Manpage ) vor einem Befehl steuern.
Ich finde es sehr praktisch, eine komplett neue Shell zu öffnen:
setarch `uname -m` -R /bin/bash
Dadurch wird eine neue Bash-Shell mit deaktiviertem ASLR geöffnet, einschließlich aller untergeordneten Prozesse (Programme, die von dieser Shell ausgeführt werden).
Nur exit
die Muschel, wenn Sie fertig sind.
Übrigens kann auf i386 ulimit -s unlimited
ASLR "deaktivieren".
BEARBEITEN (Apr 2016): Die ulimit -s unlimited
wurde behoben und CVE-2016-3672 zugewiesen .
uname -m
könnte man auch arch
eine Binärdatei verwenden, die im Wesentlichen dasselbe tut.
arch
ist nicht als Busybox-Applet verfügbar
Die dauerhafteren Möglichkeiten zum Deaktivieren von ASLR sollten aus offensichtlichen Gründen in einer VM beibehalten werden.
Um die Fähigkeit zum Überschreiben von Stack-Frame-Rücksprungadressen usw. zu testen, müssen Sie ohne Stack-Canaries kompilieren -fno-stack-protector
, während Sie Code auf dem Stack ausführen können, mit dem Sie kompilieren -z execstack
möchten
$ gcc -fno-stack-protector -z execstack -o <my_program> my_code.c