Senior Security Consultant/Penetration Tester | CEO
NX = No-Execute
DEP = Data Execution Prevention
Als Software Entwickler versucht man zu schauen, dass der Stack nicht executable ist. Doch was heißt das den jetzt? Wenn ein Angreifer einen Exploit ausnutzt und der Stack executable ist, dann kann der Angreifer Payloads auf dem Stack ablegen und diese werden ausgeführt. Wenn der Stack nicht executable ist, funktioniert das nicht.
Wenn man versucht NX zu umgehen, sollte man zuerst mal ein GDB mit Erweiterungen wie Checksec nutzen um zu schauen, ob bestimmte Flags an oder aus sind.
Es gibt zwei Wege, wie man diese Situation umgehen kann:
1. Eine rop-Chain bauen. Versucht dem Speicher wieder das X (R=Read, W=Write, X=Execute) zurückzugeben.
2. Return to LibC Angriff. Man braucht dabei die Base Adresse und die vom System Call. Man nimmt die Base Adresse und das Offset, wo es drinnen liegt. Dann braucht man den System Call und Return. Am Schluss braucht man noch "/bin/sh". Man nimmt danach die Base Adresse mit dem Offset zu "/bin/sh".
NX/DEP schützt an sich wenig und ist ein eher einfaches Thema, welches im Mentor gut erklärt wird.