Updates from my Projects
Hallo,
zuerst einmal eine kurze Erklärung wieso ich die letzten Tage nichts Neues
veröffentlicht habe. Die übliche Ausrede - ich wäre zu beschäftigt -
stimmt nur teilweise,
vielmehr wusste ich nicht über was ich schreiben soll...
Also, was gibt es so Neues ???
Wir haben in Österreich tatsächlich eine neue Regierung...
Wieder einmal...
Okay daran ist nicht wirklich etwas Neues.
Eher so eine - bald jährliche - politische Begleiterscheinung, die ausser viel
Steuergeldverschwendung wenig bringt.
Und wirklich "neu" ist sie eigentlich auch nicht...
Aber das ist natürlich nur meine persönliche Meinung, und ich möchte
euch auch eher verschonen mit Statements zu Politik oder Weltwirtschaftskrise.
Statt über die wirtschaftliche Lage zu jammern hab
ich ein Börsenspiel programmiert, wo man seine ganz persönliche Wirtschaftskrise kostenlos
simulieren kann :)
Das Spiel hat mir ca. 14000 Impressions in den ersten 2 Wochen gebracht.
Wer es testen, hacken oder kritisieren möchte kann sich gerne hier
registrieren:
boersenspiel.ath.cx
Ausserdem bin ich dazu gekommen meine Suchmaschine etwas neu zu
gestalten, nun ist es möglich eigene Webseiten hinzuzufügen.
Wichtig ist nur, dass man vollständige Meta Angaben hat (title, description, keywords).
Das Ranking wurde auch verändert, Sinn soll sein, dass der
Benutzer selbst
entscheiden kann welche Ergebnisse relevant sind und welche nicht.
Ziel ist es, wie auch bei anderen Suchmaschinen, möglichst gute
Ergebnisse zu bekommen.
Weniger wichtig ist mir, Millionen von Webseiten im Index zu haben.
Nach dem Motto: "Weniger ist mehr".
Deswegen habe ich die 30 GB DB (ca. eine halbe Million
Webseiten) aus dem Index gelöscht.
Wer sich die Suche anschauen möchte oder seine Seite eintragen will
kann das hier tun:
codejungle.org/search
Einige große Änderungen sind auch an meinem CMS geplant.
Das Datenbank Layout habe ich nochmal komplett neu gestaltet, in
weiterer Folge werde ich das CMS von Anfang an neu schreiben.
Es sollen nur die notwendigsten Funktionen
kopiert werden, Ziel soll sein das CMS so sauber wie möglich zu haben.
Es werden auch mehr Teile in oo neu geschrieben, bisher ist der DB
Abstractionslayer, der Sessionhandler und Thumbnailer in oo.
Fraglich ist noch ob ich Cake als Framework verwende oder nicht, die
Frage wird sich vermutlich aber auch am Wochenende beantworten.
Zeitplan: Die erste Beta Release ist Ende Dezember geplant.
Ausserdem wird das CMS nicht unter dem alten Namen weiterentwickelt
werden, neuer Code, neuer Name...
Hierfür werden noch Vorschläge angenommen, wer sich beteiligen möchte,
kann mir gerne eine Email schreiben, ich geb dann die aktuelle Dev. Version im
SVN frei.
Man in the Middle 2.0
Das Thema scheint sich langsam zu einem Dauerbrenner zu entwickeln... Da habe ich wohl bei vielen einen Nerv getroffen. Nachdem ich heute auf der IT-SecX an der FH St. Pölten einen Vortrag zum Thema "Man-In-The-Middle- Attacken und DNS Spoofing" gehalten habe, gibt's hier nochmal für alle, die vielleicht keine Zeit hatten, das Paper zum Nachlesen.
Viel Spass und wie immer freue ich mich natürlich über Kommentare, Fragen und Anregungen...
Einleitung
Sicherheit im IT Bereich ist immer noch ein vernachlässigtes Thema, bei Privatanwendern sowieso, aber auch bei Unternehmen werden die Gefahren oft unterschätzt. Das gängige Motto hier scheint „Mir wird schon nichts passieren“ zu sein. Und dann wundern sich die Leute wie sie Opfer eines Angriffs werden konnten...
„Not to know is bad – not to wish to know is worse!“
Immer wieder werde ich mit Vorwürfen konfrontiert, allein aufgrund der Kenntnis solcher Angriffstechniken ein „böser Hacker“ zu sein, oder mit der Veröffentlichung solcher Methoden den Kriminellen nur das Werkzeug in die Hand zu geben und alles nur noch schlimmer zu machen.
Dazu möchte ich hier kurz Stellung nehmen.
„Security by obscurity“ ist in der IT einer der schlechtesten Ansätze, die es gibt.
Unwissen ist extrem gefährlich. Unwissen sorgt letztendlich nur dafür, dass diejenigen, die solche Angriffe durchführen ein leichtes Spiel haben und mit keinerlei Gegenwehr rechnen müssen.
Nur wenn ich weiß was die Bedrohung ist und wie sie funktioniert kann ich wirksame Gegenmaßnahmen einleiten. Durch Wissen um die Bedrohung und Kenntnis der Methoden bin ich erst in der Lage mich entsprechend zu schützen.
Das ist der Grund, warum ich denke, dass man solche Themen nicht geheimhalten soll und darf.
Hinweis
Bevor ich jetzt zu den Techniken und konkreten Beispielen einer Man-In-The-Middle- Attacke übergehe noch ein kleiner Hinweis.
Für alle „neugierigen Spielkinder“ an dieser Stelle der Hinweis, dass es schon aus rechtlicher Sicht ratsam ist, die vorgestellten Techniken in einer Testumgebung auszuprobieren.
Ein Angriff im Life- Betrieb kann zu unerwünschten und unbeabsichtigten Nebenwirkungen führen. Fragen Sie dazu Ihren Admin oder einen IT-Sicherheitsexperten Ihres Vertrauens.
Was ist eine Man-In-The-Middle- Attacke?
Einfach gesagt, versteht man unter einer Man-In-The-Middle- Attacke, dass der Datentransfer zwischen zwei Kommunikationspartnern (transparent) über einen dritten – den Angreifer – läuft. Transparent meint hier, dass weder der Absender noch der Empfänger davon etwas merken. Die Kommunikationspartner sind also nicht direkt miteinander verbunden, sondern über einen unbemerkten Dritten, der ähnlich wie ein Gateway, die Anfragen weiterleitet.
Der Angreifer ist damit in der Lage unbemerkt jegliche Kommunikation mitzulesen und zu manipulieren.
Solch ein Angriff ist sowohl für den Sender als auch für den Empfänger extrem schwer zu erkennen. Sie sehen ihre gewohnten und erwarteten Inhalte, schließlich sind sie ja, wenn auch über einen Umweg, mit dem richtigen Adressaten verbunden.
Der Angriff im Detail
Ziel einer Man-In-The-Middle- Attacke ist, wie gesagt, sich unbemerkt in die Kommunikation einzuschalten um diese mitzulesen oder zu manipulieren.
Der Angreifer spielt dabei dem Sender vor der Empfänger zu sein und dem Empfänger der Sender zu sein.
Der Ablauf sieht immer in etwa gleich aus:
Das Opfer (nennen wir sie Heidi) sendet eine Anfrage an den Empfänger (etwa an Peter) die vom Man-In-The-Middle abgefangen wird. Der Angreifer kann die Anfrage von Heidi in Ruhe lesen und modifizieren. Als zweiten Schritt baut der Angreifer eine Verbindung mit dem eigentlichen Empfänger, Peter, auf und leitet die Anfrage an ihn weiter. Auf die Antwort von Peter hat der Man-In-The-Middle natürlich auf die selbe Art ebenfalls Zugriff.
Der schwierigste Teil des Angriffs ist dabei die Verbindung auf den eigenen Rechner umzuleiten. Hilfreich dabei sind Methoden wie ARP Spoofing und DNS Manipulation.
Es gibt verschiedene Techniken sich in der Art in die Verbindung zwischen zwei Rechnern einzuklinken. Die Durchführung ist dabei abhängig von verschiedenen Faktoren, wie z.B. den Netzwerken, der Verbindung, Verschlüsselung etc... Der Man-In-The-Middle kann auf verschiedenen Ebenen seinen Angriff ansetzen, direkt am Rechner des Opfers oder aber auf Netzwerkebene etc.
Grunsätzlich unterscheidet man zwei Arten von Angriffen: den physikalischen (mittels Kabelverbindung) und den logischen Zugriff.
Ausgewählte Beispielszenarios
Der Postbote, öffentliche WLAN Hotspots und andere Kriminelle
Zur Veranschaulichung des Themas ein Beispiel aus der „analogen Welt“:
Der Postbote ist der Man-In-The-Middle zwischen Sender und Empfänger. Er kann die Post des Empfängers lesen, seine eigenen Grüße auf der Postkarte von Tante Erna hinterlassen. Der Postbote hat physikalischen Zugang zur Kommunikation und kann sie auf diesem Weg manipulieren.
Bei Computerangriffen handelt es sich in der Regel nicht um einen physikalischen sondern um einen logischen Zugang zur Kommunikationsverbindung.
WLAN Hotspots oder Noch einfacher geht’s nicht
Eine klassische Variante wäre der Angriff über einen öffentlichen WLAN Hotspot. WLANs allgemein und öffentliche Hotspots im speziellen sind sehr beliebte Angriffspunkte. Bei kostenlosen Hotspots am Flughafen etc. ist es recht einfach. Der Angreifer spielt allen Usern im WLAN Netzwerk vor, der Router zu sein. Das heißt alle Anfragen gehen zuerst an den Angreifer, der sie bequem mitlesen etc. kann und leitet sie an den tatsächlichen Adressaten weiter. Gibt sich der Angreifer als Gateway aus kann er die Verbindungen auch ganz leicht manipulieren. Er kann also Verbindungen verweigern, abbrechen, etc...
Mittels DNS Spoofing ist es dem Angreifer möglich, einer Domain andere IP Adressen zuzuordnen. So kann beispielsweise das Opfer, dass eigentlich auf google.com zugreifen wollte auf eine beliebige andere Seite leiten.
Intranet, Firmennetzwerke und Spass mit Studenten
In diesem Beispiel hat der Chef Zugriff auf den Router, der das Intranet mit dem Internet verbindet. Er leitet alle Anfragen, die nach draußen gehen auf einen transparenten Proxy um. Jede Verbindung wird also mitgeloggt. Der Chef sieht genau von wo, wann auf welche Seiten zugegriffen wird. Die Opfer (in dem Fall die Mitarbeiter) können ganz normal surfen und bekommen davon in der Regel nichts mit.
Sollte der „böse Chef“ wenig begeistert von „YouPorn“ surfenden Mitarbeitern sein, ist es für ihn natürlich ein leichtes diese Anfragen zu unterbinden.
Es können auch unbemerkt Bilder, Wörter oder ganze Texte ausgetauscht und manipuliert werden.
Diese Möglichkeit hat natürlich nicht nur ein Firmenchef, das kann auch UPC z.B. und sie machen das auch, aber das ist eine andere Geschichte....
Dazu gab es ein interessantes Experiment an der Hochschule für Gestaltung in Stuttgart. Hier haben Studenten im Rahmen ihrer Diplomarbeit den gesamten Internettraffic ihrer Uni manipuliert. So wurde z.B. der Name des Politikers Al Gore mit Al Bundy ausgetauscht. Die Reaktion der Benutzer war überraschend, oder auch nicht, denn bis auf einen Fall hat niemand die Manipulationen bemerkt, auch wenn sie noch so offensichtlich waren. http://www.fitug.de/debate/0012/msg00249.html
Abschließend bleibt zu vermerken, dass keine Verbindung als „sicher“ anzusehen ist. Potentiell kann jede Verbindung mitgelesen und manipuliert werden. Daher ist prinzipiell immer davon auszugehen, dass jemand den Quatsch mitliest den man so von sich gibt.
Google Phishing oder Wo bitte geht’s nach Fidji?
Die meisten bisher üblichen Phishing Angriffe sind keine Man-In-The-Middle- Attacken. Sie sind noch einfacher gestrickt und verlassen sich ausschließlich auf das „Look and Feel“ Prinzip. Die Phisher leiten ihre Opfer direkt auf eine manipulierte Webseite auf ihrem eigenen Server. Sie spielen dem Opfer vor, der Adressat zu sein und interagieren direkt.
Die Zukunft des Phishing geht aber stark in Richtung Man-In-The-Middle- Attacke. Der Angreifer braucht keine lässtigen Emails verschicken, keine URL Manipulation und gefälschten Webseiten mehr, er fängt die Anfrage ab und leitet sie schließlich an den tatsächlichen Empfänger weiter.
Immer beliebter wird z.B. das google Phishing. Der Angreifer stellt nach außen ein Reisebüro dar, das über google vom Opfer gefunden wird. Das urlaubsbedürftige Opfer gibt seine Reisewünsche an den Angreifer, der sie an ein real existierendes Reisebüro weiterleitet. Das Opfer bekommt also reale Flugdaten etc. zurück. Nun geht das Opfer zur Buchung über und gibt dem Angreifer bereitwillig seine Kreditkartennummer und alles was man sonst noch so braucht.
Es wurden schon Fälle bekannt, in denen der Angreifer dem Opfer den ersehnten Urlaub nicht vorenthielt. Er leitete die Buchung an das tatsächliche Reisebüro weiter, die dem Opfer dann zwei Wochen später die Reiseunterlagen per Post zukommen ließen, inklusive einer zweiten Rechnung, denn mit dem, von der Kreditkarte abgebuchten, Geld liegt der Angreifer mittlerweile aus Fiji unter Palmen.
Auf diese Weise ist es möglich so gut wie alle Sicherheitsmechanismen, wie Passwörter, TAN, Challenge-Reponse verfahren etc., auszuhebeln. Das Opfer liefert sie schließlich ganz ohne Wissen „frei Haus“.
Theoretische Grundlagen
Was ist das Address Resolution Protocol?
Das ARP funktioniert ähnlich wie DNS, anstatt dem Domainnamen löst ARP aber die IP zu MAC Beziehung auf. ARP ist in der untersten Schicht der nicht physikalischen Gegend des OSI Models anzutreffen.
ARP Spoofing
Mit gefälschten ARP Paketen spiele ich den Rechnern im Netzwerk vor, das Gateway zu sein. Ich sende nun an alle Teilnehmer in dem Netzwerk die manipulierte ARP Nachricht. Damit fälsche ich die ARP Tabellen des Netzwerks und in der Folge senden die Teilnehmer ihre Anfragen an mich. Ich kann alle Verbindungen mitlesen und sie nach Lust und Laune manipulieren. Anschließend leite ich sie an den tatsächlichen Empfänger weiter. Eine abhörbare Verbindung ist zustande gekommen.
Das reine Abhören via Sniffing ist nur in ungeswitchten Netzwerken möglich, mittels ARP Spoofing ist das auch in geswitchten Netzwerken kein Problem.
Switch, Hub, Router
Ein Hub leitet die Antwort an alle Teilnehmer des Netzwerkes weiter. Ein Switch ist da schon etwas intelligenter, er merkt sich woher die Anfrage kam und sendet die Antwort nur an den Adressanten zurück.
Ein Router verbindet unterschiedliche Subnetze, dabei vergisst er die Macadresse.
Software- Beispiele
Fürs ARP Spoofing gibt es unter Linux ganz nette Software wie „Ettercap“ und „Dsniff“
Unter Windows wäre „Chain&Able“ eine Möglichkeit.
Folgen und unvorhergesehene Nebenwirkungen
Wie Eingangs schon kurz erwähnt, kann eine Man-In-The-Middle- Attacke unvorhergesehene Effekte haben und in den seltensten Fällen kann man am Beginn die volle Tragweite abschätzen. Was einem in jedem Fall klar sein muss ist, dass bei ARP Manipulation die DNS Einträge verändert und gespeichert werden. Sprich, wenn ich den Angriff beende und meinen Rechner abhänge, denken alle anderen im Netzwerk trotzdem ich bin das Gateway, was defacto bedeutet, dass das gesamte Netzwerk steht...
Prävention
Was ich an dieser Form des Angriffs besonders kritisch finde, ist, dass es offensichtlich von den Sicherheitsexperten nicht als kritisch wahrgenommen wird. Das erste Mal habe ich eine Man-In-The-Middle- Attacke vor 6-7 Jahren durchgeführt, möglich sind diese Angriffe schon viel länger. Das heißt, dass in der Zwischenzeit sich keiner die Mühe gemacht hat, diese Gefahrenquelle auszuschließen.
Im Gegenteil, es wurde nur noch schlimmer...
Das bringt mich nun zum letzten Punkt meines Vortrags – die Prävention.
Frei nach dem Motto „selbst ist der Mann (oder Frau)“ ist jeder herzlichst eingeladen gewisse vorbeugende Maßnahmen zu treffen.
-
Verschlüsselung des Netzwerkverkehrs bzw. Authentifizierung von Paketen, beispielsweise durch SSL oder ähnliches
-
Einsatz von Network Intrusion Detection / Intrusion Prevention Systemen
-
Überwachung des ARP-Caches (ARPWatch, XARP2)
-
Statisches Routing
Generell:
-
Keine Administrationsrechte auf Client PCs
-
Anwenderschulung / Benutzersensibilisierung / Sensibilisierung der Administratoren und IT-Verantwortlichen
-
Sichere / komplexe Kennwörter; obwohl dies bei Klartextübertragung der Kennwörter wenig nützt, „zwingt man die beteiligten Systeme jedoch zum verschlüsselten bzw. gehashten Kennwortaustausch, macht das allemal Sinn"
Code Me 2.0
Hallo,
hier mal wieder ein kleines Update aus meinem Leben...
Was gibt es Neues??
Naja eigentlich nicht viel... :(
Hab in letzter Zeit etwas mit eMail Servern gespielt, um genau
zu sein mit postfix, courier, mysql und horde.
Außerdem habe ich die Bilder in meinem Blog mit QR Codes ersetzt, wie unschwer zu erkennen ist.
Wer seinen eigenen Barcode erstellen möchte kann das auch gerne tun, zwei Typen stehen zur Verfügung,
Datamatrix und QR Codes.
Um einen QR Code zu erstellen rufe einfach folgende url auf:
http://www.codejungle.org/qr/qr_img.php?s=7&d=test
Du kannst mit dem "d" Parameter eine Information (z.B. deine URL) angeben und mit dem Parameter "s" kannst du die Größe verändern.
Für den Datamatrix Code verwende den Parameter "text":
http://www.codejungle.org/qr/index.php?text=test
Um die erstellten Codes wieder zu decodieren gibt es ne Reihe von Software für Handy und PCs...
beetag.com stellt einen Multireader zur Verfügung, deren Generator kann ich allerdings
nich weiterempfehlen. Beim Erstellen ist mir aufgefallen, dass sie meine Domain mit einem redirect (HTTP://R.BEETAGG.COM/?3HBM1) codiert haben :(
Naja, was soll man machen.
Noch mehr deprimiert es mich, dass ich 2 Programme über WAP runtergeladen habe (da ich kein Datenkabel hab) und sie a) nicht funktioniert haben und b) was ich noch viel schlimmer finde, ich habe dafür auch noch 9 Euro gezahlt.
In Wien scheint es derzeit auch die ersten Firmen zu geben die damit werben, beispielsweise verwendet das Naturhistorische Museum in seiner aktuellen Kampange einen QR Code.

Ich werde in naher Zukunft einige T-Shirts mit QR Codes drucken, wer auch welche haben will kann sich gerne bei mir melden...
Angeblich verwendet die Deutsche Bahn Aztec Codes für seine Digitalen Fahrscheine, ich
habe auch gehört das, wenn man den Code decodiert, dort Sachen wie
Start, Ziel, Klasse und der Preis gespeichert sind. Ich habe das noch nicht verifiziert und dies soll auch kein aufruf zum Bahnticket hacking sein. Mich würde es auch wundern wenn sie die Daten nicht zusätzlich verschlüsseln immerhin ist der AZTEC Code frei verfügbar, sprich man kann ihn leicht codieren und wieder decodieren.
Wenn jemand hier schon Erfahrung gemacht hat würde ich mich auch sehr über Infos freuen.
Sonst möchte ich dem Wort zum Sonntag nicht mehr viel hinzufügen außer, das Wochenende war mal wieder viel zu kurz.
LG
Andreas
Wie schreibe ich eine XML Schnittstelle
Ich möchte euch hier demonstrieren wie man eine XML Schnittstelle einfach und schnell
programmiert...
Wir haben auf der einen Seite einen Script, der eine XML Anfrage an den Server schickt
und auf der anderen Seite einen Script, der die Anfrage bearbeitet.
Angenommen wir wollen 3 Funktionalitäten über XML steuern können:
ADD, UPDATE und DELETE sprich Hinzufügen, Ändern und Löschen.
Als erstes zeige ich euch wie man ein XML erzeugt und an den Server sendet:
Code
<?
function createxml($array) {
$buf = '';
foreach($array as $key => $value)
{
if(is_array($value))
{
$buf .= "<".strtolower($key).">" . createxml($value) . "</".strtolower($key).">n";
}
else{
$buf .="<".strtolower($key)."><![CDATA[$value]]></".strtolower($key).">n";
}
return $buf;
}
$aPOST["content"]["id"] = "2";
$aPOST["content"]["author_id"] = "1";
$aPOST["content"]["header"] = "Wir schreiben eine XML Api";
$aPOST["content"]["content"] = "Ich möchte euch hier Demonstrieren wie man eine
XML Schnitstelle..";
$aPOST["content"]["date"] = date("Y-m-d H:i:s");
$url = 'http://www.codejungle.org/xml-api.php';
$POST["cmd"]="ADD";
$POST["apikey"]="kmlnjierg8795th2bughj3fg02jgkm0ggi";
$POST["data"]=createxml($aPOST);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $pwd);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$feedback = curl_exec($ch);
$ErrNum = curl_errno($ch);
$ErrMsg = curl_error($ch);
curl_close($ch);
echo $feedback;
?>
Wir erstellen hier mit Hilfe der createxml Funktion aus einem Array eine XML
Datei. Danach senden wir mit Hilfe von curl drei Parameter an die Datei xml-api.php,
cmd damit unser Script weiß, welche Funktion er aufrufen soll, in unserem Fall ADD,
den API Key um sicherzustellen, dass nicht jeder die Schnittstelle benutzen kann und
data die eigentliche XML Datei.
Nun müssen wir einen Script erstellen, der die Anfrage entgegennimmt und richtig
verarbeiten kann.
Code
<?
$allowed_api_keys=array("kmlnjierg8795th2bughj3fg02jgkm0ggi");
//check if api key is valid
if(in_array($_POST[apikey], $allowed_api_keys)){
switch($_POST[cmd]){
case ADD;
$xml = simplexml_load_string($_POST[data]);
foreach($xml as $name => $value){
echo "$name => $value";
}
break;
default:
echo "Please check your provided command";
break;
}
} else {
echo "Your API - Key is invalid";
}
?>
Diese Datei überprüft zuerst ob der gesendete API Key existiert,
wenn ja, überprüfen wir noch welche Funktion übergeben wurde (in unserem Fall ADD).
Hier laden wir die XML Datei mit Hilfe der simplexml_load_string Funktion ein und
geben sie anschließend aus.
Man kann nun eine Funktion schreiben, die die übergebenen XML Daten weiter verarbeitet.
Die meisten Probleme machen nach meiner Erfahrung Umlaute und Sonderzeichen,
sie führen oft zu parse errors. Dies kann man teilweise mit Hilfe des Tags
lösen, wobei der Tag selbst allerdings auch zu parse errors führen kann...
Auf Wunsch von einem guten Freund möchte ich auch noch auf XML-RPC und Soap hinweisen,
beide eignen sich ebenfalls zur Remote XML Verarbeitung.
Ich hoffe euch hat mein kleiner Exkurs gefallen und freue mich über eure Kommentare.
LG
Andreas
Shoutbox mit PHP und Ajax
Hallo,
nachdem mir heute etwas langweilig war und ich alles machen wollte, nur nicht das was ich sollte, hier ein kleiner Script der eine Shoutbox erzeugt.
Das Besondere ist, er kommt ohne Datenbank aus und benutzt ajax damit neu hinzugefügte Inhalte gleich angezeigt werden. Man kann ihn also auch als simplen Chatscript benutzen. Noch nicht implementiert sind Smilies, sollte sich aber mit str_replace recht einfach umsetzen lassen.
Source Code Downloaden | Demo
Code
<?php
# Shoutbox 1.0
# by Andreas Beder
# codejungle.org
# Licence GNU GPL 2
//config
$filename="content.txt";
// be sure the file have write permissions
$url="http://www.codejungle.org/shoutbox/";
//function
function get_content(){
global $filename;
$somecontent=file_get_contents($filename);
return $somecontent;
}
function add_content(){
global $filename;
if($_POST[submit] and $_POST[nick] and $_POST[content]){
//check content
//add content
$_SESSION["nick"]=$_POST[nick];
$somecontent=strip_tags($_POST[nick]).": ".strip_tags($_POST[content])."<br/>\n";
$handle = fopen($filename, 'a+');
fwrite($handle, $somecontent);
}
}
function output_form(){
echo '
<form action="" method="post">
Nick:';
if($_SESSION[nick]){echo $_SESSION[nick].'<input type="hidden" name="nick" value="'.$_SESSION[nick].'"><br>';} else { echo '<br>
<input name="nick" type="text" value="'.$_SESSION[nick].'"><br>'; }
echo'
Text:<br>
<textarea rows="5" cols="100" name="content"></textarea><br>
<input type="submit" name="submit" value="save">
</form>
';
}
if($_GET[content]=="true"){
echo get_content();
die();
}
?>
<html>
<head>
<title>shoutbox demo</title>
<script type="text/javascript" language="javascript">
var http_request = false;
function macheRequest(url) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
// zu dieser Zeile siehe weiter unten
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
return false;
}
http_request.onreadystatechange = alertInhalt;
http_request.open('GET', url, true);
http_request.send(null);
}
function alertInhalt() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
document.getElementById("shoutbox").innerHTML=http_request.responseText;
var objDiv = document.getElementById("shoutbox");
objDiv.scrollTop = objDiv.scrollHeight;
setTimeout('macheRequest("<?php echo $url; ?>?content=true")',2000);
} else {
alert('Bei dem Request ist ein Problem aufgetreten.');
}
}
}
</script>
</head>
<body onload="macheRequest('<?php echo $url; ?>?content=true');">
<? add_content(); ?>
<div style="border:1px solid #ccc; width:500px; height:300px; max-height:300px; overflow:auto;"
name="shoutbox" id="shoutbox">
</div>
<? output_form(); ?>
</body>
</html>
Beachte, dass die content.txt Schreibrechte für den Webserver haben sollte.
Unter *nix geht das folgendermaßen:
chmod 640 content.txt && chown nobody:nogroup content.txt
Ich hoffe euch hat mein Script gefallen, über Verbesserungsvorschläge freue ich mich natürlich auch.
LG
Andreas
Kleines Update aus meinem Leben 2.0
Hallo,
Nachdem ich in letzter Zeit viel zu tun hatte, dachte ich, es wird mal wieder
Zeit einen Beitrag zu schreiben.
Um dem Blog auch eine etwas persönlichere Note zu geben, behandelt dieser Artikel
diesmal keine technische Anleitung.
Es geht hier um meine aktuellen Projekte, etwas um mein Leben und was mir sonst noch so einfällt.
Gestern war ich auf der ISA 08 (Internet Summit), wo es hauptsächlich um
Web Accessibility ging. Wobei mir vorkam, dass die Anwesenden weniger
an einem barrierefreien Internet interessiert waren, als mehr an neuen Geschäftskontakten. Also mehr so was wie ein "Meet and Greet"... Aber das ist natürlich nur meine private Meinung.
Ansonsten war ich am letzten Wochenende in Berlin, was mir sehr gut getan hat.
Es war schön mal wieder Zeit mit der Familie zu verbringen und etwas von Berlin zu sehen. :)
Viel Zeit geht im Moment für Auftragsarbeiten drauf, weshalb meine OpenSource Projekte
wenig weiter entwickelt werden. Ich hoffe der Umstand wird sich bald wieder ändern.
Trotzdem möchte ich einen kleinen Überblick über meine Projekte geben:
1. CMS Bandits
2. b2b-portal
3. uploaded.ath.cx
4. webtools4larbin
5. Online Face Detection
1. CMS Bandits
Mein insgesamt aktivstes Projekt hat in letzter Zeit wenig neues erfahren.
Wie im Changelog geschrieben wurde das Menu überarbeitet, das Design auf Tableless
umgestellt und ist nun W3C konform. Außerdem gibt es einen noch nicht so ausgereiften
PDF Support.
Die nächsten Änderungen werden sein:
1. Template System
2. Admin - Verwaltungstool
3. Ein neuer Name
Bei Punkt 3 überlege ich schon seit längerem das Projekt unter
einem neuen Namen weiterzuentwickeln, habe aber noch keinen
passenen gefunden. Eventuell fällt dir ja einer ein, ich würde mich zumindest
über Vörschläge freuen ;)
Die nächste Release wird veraussichtlich zu Weihnachten veröffentlicht und
wird stark von der jetzigen Entwicklerversion abgeleitet sein.
2. b2b - portal
Ein sehr junges im konzeptuellen und experimentellen
Stadium befindliches Projekt das noch nicht veröffentlicht ist.
Das Ziel ist eine Mischung aus Firmendb und Community Portal.
Ähnlich wie Xing nur mit kostenlosen Community Funktionen, rein werbefinanziert.
Eine Alpharelease kann man sich hier anschauen:
http://www.codejungle.org/b2b
Wie gesagt handelt es sich um ein Projekt im Experimentierstadium,
d.h. die meisten geplanten Funktionen sind noch nicht verfügbar.
3. uploaded.ath.cx
Dieses Projekt wurde auch noch nicht der Öffentlichkeit vorgestellt, ist
aber soweit funktionsfähig.
Man kann über ein Webinterface bis zu 100 MB hochladen und bekommt anschließend eine
Adresse über die man die Daten wieder abrufen kann.
Es besteht auch die Möglichkeit via anonymen FTP auf die Daten zuzugreifen.
4. webtools4larbin
Dies ist ein sehr altes Projekt von mir (2006) was eigentlich nur aus
einer Release besteht. Ich habe über die Jahre immer wieder mit
Webcrawlern und Möglichkeiten zum effizienten indexieren experimentiert und werde vermutlich
in diesem Jahr noch eine überarbeitete Version des Indexers Online stellen.
5. Online Face Detection
Man kann derzeit Bilder hochladen wenn Gesichter erkannt werden, werden Sie rot Umramt und Angezeigt. Für die Zukunft ist auch Gesichtserkennung in Videos angedacht.
Ich hoffe euch hat dieser kleine Exkurs zu meinen Projekten gefallen.
Wie immer freue ich mich natürlich über Anregungen, Kritik und Kommentare.
Andreas
Transparente Proxys
- Was ist ein transparenter Proxy?
- Beispiel Implementierung
- Anwendungsbeispiele
- Spaß mit Proxys
Was ist ein transparenter Proxy?
Ein transparenter Proxy beschreibt im wesentlichen die Technik bestimmte
Anfragen an einen Proxy weiterzuleiten.
Der Benutzer bekommt von der Umleitung in der Regel nichts mit.
Beispiel Implementierung
In unserem Beispiel gehen wir mal davon aus, alle http Anfragen (also TCP Port 80)
an unseren Proxy weiterzugeben.
Dies machen wir mit Hilfe einer IP Tables Regel auf unserem Router:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Nun werden alle Anfragen auf den Proxy Port 3128 weitergeleitet.
Eventuell müsst Ihr noch das Input Device (im Beispiel eth1) wechseln.
Anwendunsbeispiele
Da es relativ viele Möglichkeiten gibt seinen Proxy zu konfigurieren, möchte ich hier
nur einen Überblick geben, wozu ich bisher Proxys installiert habe.
Der Cache
Der Klassiker ist sicher ein reiner Webseiten-Cache. Er dient dem Zweck Webseiten
zwischenzuspeichern und spart somit Bandbreite und verkürzt dazu noch die Ladezeit.
Der Anonyme
Der Proxy bewirkt, dass Verbindungsdaten anonymisiert werden.
Bei der Variante Tor hat man in der Regel bei jeder Anfrage eine andere IP die nach
außen sichtbar ist.
Die Rechtslage dazu ist derzeit unklar, da innerhalb der EU alle Verbindungsdaten gespeichert
werden müssen.
Auch die Zuverlässigkeit ist umstritten, da es vereinzelt Meldungen gibt,
wie man Tor Traffic beeinflussen kann.
Ein Nachteil ist außerdem, dass die Verbindungen unter anderem sehr langsam sind.
Der Filter Proxy
Er kann so konfiguriert werden, dass man Werbung, bestimmte Webseiten
oder einzelne Texte/Bilder filtert.
Vor einiger Zeit habe ich auch mal einen Proxy installiert, der alle Downloads zuerst durch den Virenscanner laufen ließ.
Andere Formen von Proxys
Web Proxy: Er dient der Zwischenspeicherung von Anfragen an den Webserver um diesen zu
entlasten.
MySQL- Proxy: Er verteilt die Anfragen an die Datenbank.
Natürlich kann man einen Proxy auch dazu verwenden um Mitarbeiter zu
überwachen und deren gesamten Webverlauf zu protokollieren.
Wie ihr seht, gibt es viele Einsatzgebiete, wo es Sinn macht einen Proxy einzusetzen,
sei es aus Performance- oder Sicherheitsgründen.
Es gibt selbstverständlich noch zahllose andere Anwendungsmöglichkeiten für einen Proxy,
diese hier aufzulisten würde wohl den Rahmen sprengen...
Dennoch hoffe ich, ihr konntet einen kurzen Einblick in die Materie erhalten.
Ich denke das Internet würde es heute nicht in der Form geben, würden nicht vereinzelt Proxys
die Inhalte zwischenspeichern und so uns einen schnellen Zugriff auf die gewünschten
Informationen gewährleisten.
Spaß mit Proxys
Spaß mit Proxys kann man haben, wenn man z.B. Bilder oder einzelne Texte ersetzt.
Die Erfahrung hat gezeigt, dass viele Anwender Manipulationen nicht mal bemerken, solange man es nicht allzu offensichtlich macht und einfach alle Bilder mit seinem Allerwertesten ersetzt.
Wer Fragen zur Konfiguration der vorgestellten Varianten hat, kann sie gerne stellen,
auch Kommentare sind herzlich Willkommen! ;)
LG
Andreas
Quellen:
http://de.wikipedia.org/wiki/Proxy_(Rechnernetz)
http://www.squid-cache.org
http://www.squid-handbuch.de/hb/
http://www.torproject.org
http://forge.mysql.com/wiki/MySQL_Proxy
DNS Spoofing und Man in the Middle Attacke
Die Angriffsformen sind gefährlich und können erheblichen Schaden anrichten, um ihnen effizient begegnen zu können ist es notwendig ihre Funktionsweise zu verstehen.
Anmerkung:
Alle vorgestellten Techniken sind ausschließlich zu edukativen Zwecken gedacht! Die Anwendung dieser Angriffe in öffentlichen Netzwerken ist ILLEGAL.
Bedenkt auch, dass in manchen Ländern schon das reine Beschaffen der Software strafbar ist (siehe sogenannter Hackerparagraph § 202c).
Was ist eine Man in the Middle Attacke (MitM) ?
Eine MitM Attacke bedeutet, dass man seinem Opfer vortäuscht, das eigentliche Ziel zu sein.
In der Praxis sendet der Angreifer dem Opfer gefälschte ARP Pakete indem er vorgibt, der Gatewayrechner zu sein. Ab diesem Zeitpunkt werden alle Anfragen vom Opfer an den Angreifer gesendet, man spricht auch von ARP Spoofing. Der Angreifer kann jetzt die Pakete weiterleiten und manipulieren. Natürlich ist es nun möglich alle in Klartext gesendeten Passwörter ohne große Mühe mitzulesen, sowie gefälschte Antworten an das Opfer zu senden.
Typisches Angriffsszenario
Der Angreifer führt eine MitM Attacke durch und leitet mit Hilfe von DNS Spoofing das Opfer auf eine gefälschte Webseite weiter. Diese entspricht rein optisch zumeist der eigentlichen Zielseite des Opfers. Hier hat der Angreifer jedoch die Möglichkeit die gefälschte Webseite so zu manipulieren, dass Passwörter und andere Eingaben gespeichert werden. Das Opfer bleibt in dem Glauben, dass alles in Ordnung ist und lediglich der Service vorübergehend nicht verfügbar ist oder das Passwort nicht mehr gültig sei...
Der Angriff
Ich persönlich empfehle Ettercap (0.6.b), da es Plattform unabhängig ist und eine Reihe von nützlichen Plugins mitliefert.
Wir editieren für unser DNS Spoofing zuerst die etter.dns Datei, die nach der Default- Installation im Verzeichnis /usr/local/share/ettercap zu finden ist.
78.41.112.52 *
Bei diesem Eintrag werden alle DNS Anfragen mit der IP 78.41.112.52 beantwortet.
Es ist natürlich auch möglich einzelne Hostnamen einzutragen:
78.41.112.52 microsoft.com
Nun können wir Ettercap starten, das Gateway mit der Entertaste auswählen, die a- Taste aktiviert das ARP Spoofing und das Plugin können wir mit p auswählen und aktivieren.
Bitte beachte, dass du als Angreifer nicht von der DNS Attacke betroffen bist, suche dir daher zum Testen und Überprüfen des Angriffs einen anderen Client Rechner in deinem lokalen Netzwerk.
Prävention
Eine gut gemachte MitM Attacke ist für den Laien nicht erkennbar und selbst für Leute, die sich damit auskennen, oft nicht leicht zu bemerken. Prävention ist daher eine wichtige Maßnahme.
Eine einfache Form der Prävention ist beispielsweise seine Daten zu verschlüsseln, was man bei sensiblen Daten prinzipiell immer machen sollte.
Der Chaos Computer Club hat allerdings schon bewiesen, dass auch verschlüsselte Webseiten mit SSL nicht unbedingt sicher sind.
Eine andere effektive Form der Prävention wäre z.B. statisches Routing, was allerdings bei größeren Netzwerken viel Administrationsaufwand bedeutet.
Desweiteren gibt es sogenante IDS (Intrusion Detection System) Systeme wie Snort, die solche Attacken erkennnen und gegebenenfalls darauf reagieren können.
[UPDATE]
Nachdem die Nachfrage nach Prävention hoch ist, möchte ich hier noch näher darauf eingehen.
Unter Windows gibt es das Tool Xarp2, welches Manipulation des ARP Caches erkennt. Man kann eine kostenlose Testversion hier herunterladen:
http://www.chrismc.de/development/xarp/index.html
Ein kostenloses Tool unter Linux wäre Arpwatch, das ebenfalls die Übersetzung Hardware zu IP Adresse überwacht und gegebenfalls den Administrator informiert:
http://www-nrg.ee.lbl.gov/ Download
Ich habe auch von dem Lösungsansatz gehört, dass jeder User in einem eigenen VLAN ist.
Ein Warnhinweis in eigener Sache:
Ich habe solche Attacken mit Erfolg in vielen Netzwerken getestet, dabei war mir die gesamte Tragweite oft nicht klar. Zum Beispiel bin ich nach einer erfolgreichen MitM- Attacke auf über 400 Rechner drauf gekommen, dass im Nachbarzimmer atomarer Abfall gelagert wurde... Ich gehe zwar davon aus, dass dieser gesondert gesichert ist, dennoch waren mir am Beginn des Angriffes die eventuellen Folgen nicht bewusst.
Ich bitte daher nochmals solche Angriffe nur im lokalen Netzwerk zu testen und es auch dabei zu belassen.
Ich hoffe euch hat der Beitrag gefallen und ich würde mich sehr über Feedback freuen.
Wer noch mehr Erfahren möchte kann hier weiterlesen.
Liebe Grüße
Andreas
Quellen:
http://de.wikipedia.org/wiki/Man-In-The-Middle-Angriff
http://ettercap.sourceforge.net/
http://www.monkey.org/~dugsong/dsniff/
[«] « prev 1 2 3 next » [»]
