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_spaceSchnittstelle 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.confdie Folgendes enthält:
kernel.randomize_va_space = 0
sollte dies dauerhaft deaktivieren.
brk()?
Die /proc/sys/kernel/randomize_va_spaceSchnittstelle 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 setarchund seiner -ROption ( 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 exitdie Muschel, wenn Sie fertig sind.
Übrigens kann auf i386 ulimit -s unlimitedASLR "deaktivieren".
BEARBEITEN (Apr 2016): Die ulimit -s unlimitedwurde behoben und CVE-2016-3672 zugewiesen .
uname -mkönnte man auch archeine Binärdatei verwenden, die im Wesentlichen dasselbe tut.
archist 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 execstackmöchten
$ gcc -fno-stack-protector -z execstack -o <my_program> my_code.c