ITS Blog

IT Security blog – about up to date topics on IT security

Nachdem ich in den vergangen Tagen einige Artikel über DLL hijaking unter Windows gelesen habe, sind mir ein paar alte Kniffe aus meiner Zeit in der Testadministration wieder eingefallen.

Wer schon mal in C/C++ Programme geschrieben hat, der hat im allgemeinen auch schon mal von Libraries gehört. Libraries sind Bündel von ausführbarem Code, die man nutzen kann um sich das Leben zu erleichtern. So gibt es zum Beispiel eine Library die sich mit der Strings behandelt werden.

Damit aber nun nicht jedes Programme alle Libraries beinhalten muss, gibt es einen Mechanismus der die benötigten Libraries zur Laufzeit nach lädt. Der Ort an dem die Libraries gesucht werden steht hierbei in der Environment Variable “LD_LIBRARY_PATH”. Um Sicherheitsprobleme zu vermeiden empfiehlt es sich das lokale Directory “.” NICHT mit in die Liste auf zu nehmen. Neben LD_LIBRARY_PATH gibt es noch eine weitere Variable mit der man das Laden von Libraries beeinflussen kann: LD_PRELOAD.

LD_PRELOAD gibt an welche Libraries zu aller erst geladen werden sollen. Beim Laden von Libraries gilt wer zu erst kommt der malt zu erst. Ein kleines Beispiel soll das ganze verdeutlichen:

test.c:
#include <stdio.h>
#include <string.h>

int main( int argc, char **argv)
{

 int test;
 char *myst = "Mein kleiner Test";
 printf("%s\n",myst);
 printf("%d\n",strlen(myst));
 return 0;

}

Dieses kleine Programm gibt einen kleinen Text aus und die Länge:

~/test $ ./test
Mein kleiner Test
17

Als nächstes schreiben wir uns eine kleine Library, welche die strlen Funktion beinhaltet:

#include <stddef.h>

size_t strlen(const char *s)
{
 return 42;
}

nun erstellen wir hieraus eine Library:

gcc -shared -Wl,-soname,your_soname -o mystrlen.so mystrlen.c

und laden diese vor der Ausführung:

nidsche@cserver ~/test $ LD_PRELOAD=./mystrlen.so ./test
Mein kleiner Test
42

Wir haben nun erfolgreich die strlen Funktion durch eigenen Code ersetzt. Ist das “s” Bit für ein executable gesetzt, verhindert der dynamische Lader die Auswertung der LD_PRELOAD variable.

As I have read an article about DLL hijacking in Windows some days ago, I remembered some nice old tricks from my time when I was an administrator of test environments.

Who ever wrote C/C++ programs, has most likely heard also about libraries. Libraries are small bundles of executable code which can make your life easier. There is for example a library which handles strings.

To avoid that each program has all libraries inside, there is a mechanism to load the libraries as needed. The place where the libraries are located is handled by LD_LIBRARY_PATH variable. To avoid security risks it is highly recommended NOT to include the local directory (“.”) inside the variable. Beside LD_LIBRARY_PATH there is another variable to influence the loading of libraries: LD_PRELOAD

LD_PRELOAD allows to load a library in the very first beginning of the execution. After the library is loaded, function calls refer to the first occurrence of  name in the libraries. Lets have an easy example:

test.c:

#include <stdio.h>
#include <string.h>

int main( int argc, char **argv)
{

 int test;
 char *myst = "My   little  Test";
 printf("%s\n",myst);
 printf("%d\n",strlen(myst));
 return 0;

}

This program prints a small text and the length of it:

~/test $ ./test

My   little  Test
17

Next we write a small code which contains the strlen function:

#include <stddef.h>

size_t strlen(const char *s)
{
 return 42;
}

we generate a library out of it:

gcc -shared -Wl,-soname,your_soname -o mystrlen.so mystrlen.c

and load it before execution:

nidsche@cserver ~/test $ LD_PRELOAD=./mystrlen.so ./test
My   little  Test
42

We replaced successfully the strlen funtion with our own code. BTW: If the “s” Bit is set for an executable LD_PRELOAD is not evaluated.

Vor einiger Zeit habe ich angekündigt, das wie eine Webseite hacken. Hierzu sind jedoch noch ein paar Vorbereitungen nötig. Zu diesem Zeitpunkt solltet ihr bereits VirtualBox installiert haben, um dort die Webseiten in einer virtuellen Maschine laufen lassen zu können.

Was nunnoch fehlt sind die Images unserer Test Webseite:

Bitte downloadet die Images und installiert diese entweder in der virtuellen Umgebung, oder brennt diese auf CD um sie auf einem weiteren System laufen zu lassen.

Zu eurem eigenen Komfort, empfehle ich euch Firefox zum hacken zu nutzen.

Zusätzlich solltet ihr die folgenden Addons installiert haben:

  • HackBar
  • Live HTTP headers
  • Firebug

Diese Addon werden euch das Leben sehr viel einfacher machen.

Following up the announcement, that we a going to hack a website, there are further preparation needed. By now you should have installed VirtualBox to be able to run the Website in a virtual environment.

What is missing are the images of our Test site:

Please download the Images and either install them in your virtual environment or burn them on a CD to run them on a spare system.

For your own comfort I recommend to have Firefox installed on the machine you use to hack the website.

Additionally you should have installed the following Addons:

  • HackBar
  • Live HTTP headers
  • Firebug

These addons will make our life lot more easier.

Vor einigen Tagen habe ich über ein Problem mit Apple Geräten berichtet. In der Zwischenzeit hat Apple ein Update für einige Geräte veröffentlicht:

Für:

  • iOS 4.0.2 für iPhone ab der zweiten Generation (3G, 3GS, 4)
  • iOS 4.0.2 für iPod Touch ab der zweiten Generation
  • iOS 3.2.2 für iPad

sind Updates verfügbar. Für andere, ältere Versionen gibt es noch immer kein Update.

Aktualisiert bitte eure Geräte.

Für weitere Informationen siehe BSI

Some days ago I wrote about a problem with Apple devices. Meantime Apple published an update for some of the devices:

For

  • iOS 4.0.2 for iPhone starting with second generation (3G, 3GS, 4)
  • iOS 4.0.2 for iPod Touch starting with second generation
  • iOS 3.2.2 for iPad

updates are available. For other (older) versions there is still no update available.

Please update your devices.

For more information (in German) see BSI

No comments

Liebe Leser,

vielleicht habt ihr euch schon gewundert, dass ich nach meiner Ankündigung zum Thema “Wir hacken eine Website” nichts mehr geschrieben habe. Der Grund hierfür ist recht einfach: Ich bin derzeit krank.

Wenn alles klappt werde ich Mitte oder Ende der Woche wieder posten.

Dear reader,

maybe you wondered that I did not post since my announcement on “Hacking a website”. The reason, for this is very simple: I am currently sick.

Hopefully I will be able to publish mid till end of the week.

stay tuned.

In den nächsten Wochen möchte ich zusammen mit euch eine Webseite hacken, um euch einen tieferen Einblick in den Bereich Websicherheit zu geben.

Ich werde euch zeigen, wie Hacker versuchen Code auf euren Webseiten auszuführen und welche typischen Probleme entstehen können, wenn ein Programmierer Code für eine hochgradig dynamische Seite erstellt. In diesem Zusammenhang werden wir uns unteranderem Cross Site Scripting” anschauen.

Ist dies nicht illegal?

Prinzipiell schon, aber in unserem Fall werden wir eine Webseite hacken, die auf euren eigenen Rechnern läuft.

Daher werde ich euch in meinem ersten Artikel eine Web Applikation vorstellen, die sehr verwundbar ist. Ihr könnte diese Applikation als eine Art Diskimage aus dem Internet herunterladen. Sie ist legal und steht zur freien Nutzung zur Verfügung. Seid euch aber bitte im klaren darüber, das die Applikation nicht auf einem Rechner laufen darf, der über das Internet zugänglich ist. Die Applikation ist so verwundbar, das es für einen Angreifer ein leichtes wäre vollen Zugang zu eurem Computer zu bekommen.

Diese Applikation wurde zu Schulungszwecken entwickelt, um Entwicklern beizubringen, wie Hacker denken und wie einfach es für einen Angreifer sein kann böses zu tun.

Um dich selbst vorzubereiten, empfehle ich das ihr euch schon mal Virtual Box, eine freie Virtualisierungssoftware installiert. Virtual Box kann ISO Images (Dateien, die eine CD/DVD beinhalten) booten. Es läuft unter Windows, Linux, OS X oder Solaris.

Alternativ könnt ihr das Image auch als CD/DVD brennen und von dort booten. Denkt aber dran das ihr noch einen Rechner braucht mit dem ihr angreift.

In the next weeks I would like to hack a website together with you in order to have a deep look into the web security area.

It will be shown how hackers are trying to execute code on a website and which  typical problems can occur in case a programmer writes code for a highly dynamical website. Additionally cross site scripting will be explained on real life example.

Isn’t it illegal?

Well, in general it would be. But in our case we will hack  a website on our own machine.

Therefore I will introduce you in the first article to an Web Application which is vulnerable. This application can be downloaded as some kind of an disk image from the Internet. It is legal and free to use. But please be aware to not put this application to a computer which can be accessible through the Internet. The application is so vulnerable that an attacker on the Internet could easily get full access to your computer.

This application has been developed for training purpose in order to teach developers how a hacker is thinking and how easy it can be for an attacker to do harmful things.

To prepare yourself in advance, I recommend to install Virtual Box which is a free to use virtualization system, which can boot ISO images (a file representing the content of a CD/DVD) and is able to  run on Windows, Linux, OS X or Solaris.

As an alternative you can burn the images to an CD/DVD and boot them up on a spare system.