Nach dem Header kommt dann das eigentlich Bild, welches dann im Footer mit einem
EOF(“FF D9″) abschließt. Ab dieser Stelle wird nicht mehr weiter geparst und die Datei ist zumindest für das Bildbetrachtungsprogramm vorbei.Man könnte also Unmengen an Daten in einem Bild verstecken. Das ist die Idee. Ich setzte die neusten Blockbuster einfach hinter das EOF und share dann eben 8GB große mkv.jpg Dateien - not?
den man übrigens nicht einfach an einer belieben Stelle einfügen kann, bzw. man kann es schon, zerstört dann aber mit aller Wahrscheinlichkeit das Bild. Das kann für einen eventuellen Upload über ein PHP-Script ein Strich durch die Rechnung sein. Wenn das Bild bei Upload eine exif_imagetype() Überprüfung zu bestehen hat, muss man es gar nicht versuchen den PHP-Code in die nähe des Header oder an andere kritische Stelle zu setzen. Anscheinend gibt es diese Funktion schon seit PHP 4.3 und wird wohl gerne zusätzlich zu einer MIME Prüfung benutzt(ich denke?)
Um solche Probleme zu umgehen sollte man den Code einfach direkt an die richtige Stelle implementieren. Es gibt ganz nette Tools die einem die Arbeit mit dem HEXeditor abnehmen. Beispielsweise haben edjpgcom.exe oder Irfanviewer genau diese Comment Edit Funktion die man braucht.
Ich hab nun schon ein paar Versuche hinter mir, in denen ich wirklich _viel_ HEX Code von Bildern verglichen habe. Trotz der Mühe habe ich keine Implementierung gefunden die jedesmal funktioniert. Auch hab ich schon gewissen Dokumente gewälzt die zwar Aufschlussreich waren, aber nicht in dem Maße wie ich es gern hätte. Dazu muss man wissen dass ich es überhaupt nicht mag irgendwelche Tools zu benutzen von denen ich nicht genau weiß was sie tun und wie sie es tun. Wenn da jemand eine gute Quelle hat, bitte einfach mal weiterreichen.
Diesen Source habe ich also mit edjpgcom.exe in die nyan.jpg injiziert, dann über mein PHP Upload Script hoch geladen per
index.php?WERT=pictures/nyan.jpg
inkludiert
Zuerst hatte ich den absoluten Pfad zu der injizierten Datei angegeben - nicht besonders elegant. Also fragte ich mal den PHP begeisterten 24dschumpstriet. Er konnte mir schließlich mit der $_SERVER['PHP_SELF'] Funktion den Horizont erweitern.Vielen Danke dafür.
]]>
CCiTT hat sich nun endgültig verabschiedet und mir den Blog überlassen. Es wird sich nicht viel verändern, die Thematik “computer|hacking|more” wird die selbe sein, auch ähnelt mein Schreibstil exakt dem vom CCiTT xD. Mysteriös. Das Einzige was sich geändert hat, ist das Design (wer es nicht bemerkt ist blind xD).
In nächster Zeit kommt dann noch eine Domain hinzu. Diese werde ich dann über Twitter verkünden und die Jungs aus der Blogroll bitten sie zu übernehmen. Das wars erstmal ;)
Greetz
loewenherz
]]>
Vor kurzem hab ich mir ein Android Tablet zugelegt(Archos 101). Da mir aber das Guest WLAN für das Tablet nicht ausreicht war ich gezwungen ein Zertifikat in das Tablet zu importieren.
Ich habe ich schon diverse mobile Geräte gehabt und es gab _immer_ irgendwelche Probleme mit irgendwelchen Zertifikaten, so auch diesmal. Aber ich fange von vorne an.
Als erstes habe ich mir mein Authentifizierungszertifikat exportiert. Das funktioniert unter Windows 7 ganz einfach. Dazu öffnete ich einfach die Management Console (MMC.exe) und fügte mir das SnapIn Zertifikate hinzu.
Das Zertifikat habe hab ich mit meinem public Key exportiert. Zum Schluß hatte ich ein .pfx Zertifikat. Nun schnappte ich mir also mein Android Tablet und suchte nach einer Möglichkeit Zertifikate zu installieren.
Diese Möglichkeit war auch schnell gefunden. Unter dem Menüpunkt Standort & Sicherheit gibt es einen Unterpunkt Anmeldeinformationsspeicher. Dort gab es wieder rum einen Auswahlpunkt Von SD-Karte installieren. Hm, ok. Also habe ich das Zertifikat in das Root meiner SD gelegt und versucht es so zu installieren. Das Tablet sagte dann aber “Ne alter, da ist gar kein Zertifikat”
Hm ok, was jetzt? Bei meinem Nokiahandy war es ähnlich, man konnte Zertifikate nur “per Browser” installieren. Ein Versuch ist es wert dachte ich mir. Also hab ich das Zertifikat auf meine Dropbox geladen und bin mit dem Browser auf den Link gesurft. Bäm, funktioniert. Ich werde nach dem Passwort gefragt - eingegeben und zack - Passwort falsch. Nochmal eingegeben - Passwort falsch. Häää?
Ok, vielleicht hab ich beim Zertifikatexport ein Fehler bei der Passworteingabe gemacht, also wiederholte ich die Exportprozedur, lad das Zertifikat wieder auf die Dropbox, surfte wieder auf den Link und gab das Passwort erneut ein. Bäm - Passwort falsch? wtf? Was jetzt? - googlen.
Nach rund 15 Minuten fand ich einen Thread bei google.com in der genau dieses Problem beschrieben wird. Dort wird behauptet das Android Pre Froyo, also >2.2, chained .p12 Zertifikate nicht unterstützt. Ich hab zwar 2.2.1, also Froyo, nahm mir aber trotzdem diesen Artikel zu Herzen. Da .pfx auch PKCS#12(.p12) ist hab ich die Datei einfach mal umbennant und mir eben noch OpenSSL runtergeladen.
Dann habe diese Anleitung Schritt für Schritt befolgt.
1. openssl pkcs12 -in <chained>.p12 -out tempcert.pem -nodes
2. Edit the tempcert.pem file and delete everything except the private key and the first certificate.
3. openssl pkcs12 -export -out <unchained>.p12 -in tempcert.pem
4. Enter a password that you will use when importing the certificate in your Android phone.
5. Copy the <unchained>.p12 to the root of your SD-card.
6. Import it and win.Regarding step 2:
Your tempcert.pem file will contain different sections, so after you deletet two sections will remain:
<maybe some bag attributes - can keep those>
—-BEGIN RSA PRIVATE KEY—-
<private key - do not delete>
—-END RSA PRIVATE KEY—-
<maybe some bag attributes - can keep those>
—-BEGIN CERTIFICATE—-
<first certificate for the private key - do not delete>
—-END CERTIFICATE—-
<delete everything from here>
Es scheiterte wieder am Importieren über die SD-Karte. Also wieder rauf auf die Dropbox und per Browser den Link aufgerufen. Bäm, diesmal hat das Passwort funktioniert und ich konnte mich endlich am RADIUS Server authentifizieren. pwning
]]>Beispielhaft erstelle ich mir eine Batchdatei mit dem Inhalt
shutdown -f -s -t 0
welche dann später per SMS ausgeführt wird. Outlook bietet die Möglichkeit diverse Regel für bestimmte Situationen fest zu legen. Ich lege also einfach eine Regel fest welche bei dem Eintreffen einer bestimmten eMail die Batchdatei ausführt.
Im Ribbonmenü unter der Karteikarte Start klicken ich unter Regel den Menüpunkt Regel und Benachrichtigungen verwalten. Mit einem Klick auf Neue Regel öffnet sich der Regel Assistent. Hier wähle ich den Unterpunkt Regel auf von mir empfangene Nachrichten anwenden und klicken auf Weiter. Nun kann ich auswählen welche Kriterien erfühlt werden müssen damit die Regel angewandt wird. Ich wähle in diesem Beispiel den Punkt mit bestimmtem Wörtern im Betreff und füge das Wort Shutdown zu der Liste hinzu. Die Liste schließe ich wieder mit OK und führe den Assistenten mit einem Klick auf Weiter fort.
Nun kann ich auswählen was passieren soll wenn alle Kriterien erfüllt sind. Hier wähle ich Anwendung starten aus und füge meine Batchdatei als Anwendung hinzu. Nun noch den Button Fertig stellen drücken. Das war auch schon der größte Teil der Arbeit.
Wenn jetzt eine Mail an meine Adresse mit dem Betreff Shutdown gesendet wird, startet automatisiert die Batchdatei und fährt Windows herunter. Kewl :)
Ich hab die ganze Prozedur mal schnell auf Video aufgenommen. Viel Spaß ;)
]]>
Also habe ich mir ein kleinen Account auf meinem Proxyserver angelegt und via plink ein Socks erstellt.
Jetzt störte mich aber das ständig sichtbare CMD.exe Fenster.
Es müsste ja auch möglich sein so ein CMD.exe Fenster im Hintergrund zu halten, praktisch unsichtbar zu machen.
Schluß endlich hab ich dann eine GPO(gpedit.msc / Benutzerkonfiguration / Skripte / Anmelden) erstellt welche folgendes VB Script ausführt:
'Funktion: Sucht nach dem Prozess plink.exe, wenn vorhanden wird er beendet. Im nächsten Schritt wird ein Proxy in die Windows Interneteinstellungen eingetragen und ssh.bat aufgerufen. 'sucht nach plink.exe und beendet den Prozess Option Explicit Dim objWMIService, objProcess, colProcess Dim strComputer, strProcessKill Dim wshshell strComputer = "." strProcessKill = "'plink.exe'" Set objWMIService = GetObject("winmgmts:"&"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = " & strProcessKill ) For Each objProcess in colProcess objProcess.Terminate() Next 'Soll der Proxy nur für ein Protokol genutzt werden, muss der Wert mit dem Protokollname und einem = Zeichen eingetragen werden. z.B.: http=192.168.100:8080 'jede weitere Proxy Protokoll Zuweisung kann einfach hinter die letzte Zuweisung gehängt werden. Dabei wird ein Semikolon als Trennzeichen benutzt. z.B.: http=192.168.100:8080;http=192.168.100:7070 'soll für alle Protokolle der selbe Proxy benutzt werden reicht es nur die Adresse/IP des Proxy einzutragen. z.B.: 192.168.100:8080 'Die einzige Ausnahame Dabei sind socks-Protokolle. Hier muss immer der Protollname(socks) vor die Adresse/IP des Proxy eingesetzt werden. z.B.:socks=192.168.100.100:9090 Set WshShell = WScript.CreateObject("WScript.SHell") 'Proxy Enable 1=True 0=False wshshell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", 1, "REG_DWORD" 'FQGN+Port oder IP+Port eintragen. Je nach dem auch das Protokoll. wshshell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer","socks=localhost:7331" 'Proxyeinstellungen für lokale Adresse(n) umgehen. wshshell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride","10.10.10.1" 'Batch Datei für die Parameterübergabe für plink starten (0=Hide Window | True(Boolean)=Script wird erst weiter ausgeführt wenn das Programm, in diesem Fall plink.exe, geschlossen wird WshShell.Run "ssh.bat",0,True
Anschließend habe ich eine ssh.bat erstellt, in der nur plink + Parameter zu automatischen Konnektierung ausgeführt werden. Beide Dateien + die plink.exe habe ich dann in den Ordner C:\Windows\System32\GroupPolicy\User\Scripts\Logon kopiert und fertig war meine invisiblePlink GPO.
Dank dieser GPO muss ich mich jetzt nicht mehr um das Verbinden zum SSH Server kümmern, sondern kann gleich mein IRC Client starten und los trollen. Ein kleines Problem habe ich aber noch, sobald der Rechner in den Ruhezustand geht, bricht die Verbindung logischerweise ab, und ich muss das Script einmal per Hand starten. Ich müsste also ein Funktion bauen, welche mir, sagen wir mal alle 5 Minuten, check ob die Verbindung noch steht. Ideen?
Bin gerade dran mir mit Hilfe des Plink.exe Sources eine modded Plink.exe zu gestallten. Zwischenzeitlich muss ein uneleganter Loop herhalten.
Option Explicit Dim objWMIService, objProcess, colProcess Dim strComputer, strProcessKill Dim wshshell strComputer = "." strProcessKill = "'plink.exe'" Set objWMIService = GetObject("winmgmts:"&"{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = " & strProcessKill ) For Each objProcess in colProcess objProcess.Terminate() Next Do while colProcess.Count = 0 Set WshShell = WScript.CreateObject("WScript.SHell") WshShell.Run "tunnel.bat",0,True loop]]>
Beachtet auch die neue Seite “Röhre”
Viel Spaß beim schauen :)
]]>Eigentlich ist so eine Windows 7 Installation doch recht simple. Man legt die DVD ein, beantwortet die eine oder andere Frage und schon hat man sich ein frisches System gebacken.
Was aber wenn man die DVD nicht findet, oder der Rechner gar kein passendes Laufwerk hat. Neben der Installation über den USB Stick gibt es noch eine elegante Alternative.
Die Grundlage dafür bildet PXE(Preboot Execution Environment) Jeder modere Rechner hat die Möglichkeit über PXE zu booten.
Der Rechner wird also gestartet und PXE sucht nach einem DHCP Server. Der DHCP versorgt den Rechner dann nicht nur mit einer IP sondern auch mit einer Datei die den Bootcode enthält. Diese Datei wird mittels TFTP(Trivial File Transfer Protocol) an den Client gereicht.
Die Vorbereitung
Neben einem Rechner mit Windows 7 brauchen wir noch 2 kostenlose Tools. Das wäre einmal WAIK und einmal TFTPD. TFTPD ist ein DHCP und ein TFTP Server zugleich – also genau das was wir brauchen.
Nun bereiten wir unser System vor. Wir brauchen ein Verzeichnis aus dem später die Dateien zum booten geladen werden, z.b. C:\PXE. Hier werden noch Unterverzeichnisse erstellt. Einmal „boot“ und einmal „sources“ Zusätzlich sollte der Rechner eine fester IP bekommen.
Der nächte Schritt ist die Installation von WAIK, sobald abgeschlossen öffnen wir die „Eingabeaufforderung für Bereitstellungstools“(im Startmenü zu finden) und tippen
copype x64 c:\work
bzw
copype x86 c:\work wenn ein 32bittiges System deployet werden soll. Dieses Script erstellt ein WinPE im Ordner \work. Windows PE(Pre Environment) ist ein kleines Windows welches für die eigentlich Windows 7 Installation geladen wird. In dem Ordner \work befindet sich eine datei names winpe.wim. Wim Dateien sind Container. Aus diesem Container extrahieren wir uns die Dateien die wir brauchen. Dazu wird die Wim Datei eingehängt.
Imagex /mountrw c:\work\winpe.wim 1 c:\work\mount
Jetzt kopieren wir uns alle Dateien aus dem Verzeichnis c:\work\mount\Windows\boot nach Windows c:\PXE\Boot. Mehr brauchen wir nicht aus dem Container, also hängen wir ihn wieder aus:
Imagex /unmount c:\work\mount
Zusätzlich brauchen wir noch zwei Dateien aus dem Installationsverzeichnis von WAIK. Das wäre einmal BCD und einmal Boot.sdi. Diese kopieren wir nach c:\PXE\boot. Nun wechseln wir in den Ordner c:\PXE\Boot und kopieren die Dateien wdsnbd.com bootmgr.exe und pxeboot.n12 nach c:\PXE. Abschließend werden die Dateien in wdsnbp.0 und pxeboot.com umbenannt. Die Datei bootmgr.exe bleibt unberührt. Schlussendlich kopieren wir noch den Container winpe.wim von c:\work\ nach c:\PXE\sources und nennen ihn in Boot.wim um.
Der Server
Jetzt ist es an der Zeit unseren DHCP und TFTP Server zu konfigurieren. Die Einstellungen können aus den folgenden Screenshots abgelesen werden. Dabei ist noch zusagen das solch ein Experiment auf keinen Fall in einem Produktivnetz stattfinden sollte. Ein zweiter DHCP Server kann für großen Ärger bei der IP Verteilung innerhalb des LANs sorgen.
Jetzt wird es knifflig
Jetzt sollte man einen Rechner im Netz schon per PXE booten lassen können. Man landet im Windows PE und kann sich dort austoben. Wir wollen aber das richtige Windows. Statt per DVD stellen wir die Setupdateien über eine Windowsfreigabe bereit. Das wird etwas kniffliger als es sich anhört. Da auf dem zu installierendem PC zum Zeitpunkt des Setups noch kein Benutzerkonto existiert hat man im Prinzip zwei Möglichkeiten. Entweder man gibt dem Setup die Zugangsdaten für die Freigabe mit, welche dann aber im Klartext übergeben werden oder man öffnet die Freigabe für jeden. Beide Möglichkeiten sind nicht besonders sicher oder elegant, doch es gibt einen Trick.
Als erstes erstellen wir einen neuen Ordner. c:\PXE\Setup. Als nächstes erstellen wir ein neues Windows 7 Benutzerkonto mit dem Namen WinDeployment. Meiner Meinung nach hat ein Benutzer in der Gruppe Benutzer immer noch zu viel Rechte für unsere Zwecke. Daher öffnen wir die Eingabeaufforderung (als Administrator) und löschen das eben erstellt Konto aus der Gruppe Benutzer. Dazu tippen wir
net localgroup Benutzer /delete WinDeployment
Nun starten wir den Rechner einmal neu um alles zu aktualisieren. Ist Windows wieder gestartet kopieren wir den Inhalt von der Installations DVD nach c:\PXE\Setup und öffnen dann den Freigabetab von c:\PXE\Setup und geben dem User WinDeployment die benötigten Rechte.
Nun hat der User die Rechte auf die Freigabe zu zugreifen, aber er braucht auch noch die grundlegenden Rechte um auf das Dateisystem zuzugreifen, das machen wir über den Tab Sicherheit der Ordereigenschaften. Zusätzlich kann man noch das vererben der Rechte über den Erweitert-Button aktivieren.
Wunderbar ;) Nun booten wir unser Windows PE erneut und können über die Eingabeaufforderung unsere neu angelete Freigabe verbinden.
net use i: \\192.168.100.2\Setup /u:WinDeployment DasPasswort
Nun einfach das Setup starten i:\setup.exe
Wenn man den Setupstart automatisieren will hat man dazu die Möglichkeit über die Datei startnet.cmd im Container Boot.wim.
]]>Natürlich frisst so eine GUI Ressourcen und bietet einen weiteren Angriffspunkt für Hacker. Aus diesem Grund sollte man bei Web und/oder Datenbankserver unbedingt darauf verzichten und weiterhin nur mit der klassischen CLI arbeiten.
In diesem Beispiel zeige ich euch wie ihr Gnome auf einen Server mit Debian-Minimalinstallation installiert.
Der Desktop wird dann über einen NX-Server geshared. Bei einem Server mit wenig Ressourcen sollte man statt Gnome eher Fluxbox o.ä. präferieren.
Wir erstellen eine User, “remoteuser” und setzen ein Passwort
useradd remoteuser passwd remoteuser
Nun installieren wir die Software die später unseren Desktop “malen” soll, den X-Server
apt-get install x-window-system apt-get install gnome-core gdm synaptic
cd /usr/lib/
3.2 In dieses Verzeichnis laden wir nun je nach OS folgende Pakete
-> http://www.nomachine.com/select-package.php?os=linux&id=1
32-bit Linux:
wget http://64.34.161.181/download/3.4.0/Linux/nxclient_3.4.0-7_i386.deb wget http://64.34.161.181/download/3.4.0/Linux/nxnode_3.4.0-13_i386.deb wget http://64.34.161.181/download/3.5.0/Linux/FE/nxserver_3.5.0-4_i386.deb
64-bit Linux:
wget http://64.34.161.181/download/3.4.0/Linux/nxclient_3.4.0-7_x86_64.deb wget http://64.34.161.181/download/3.4.0/Linux/nxnode_3.4.0-13_x86_64.deb wget http://64.34.161.181/download/3.5.0/Linux/FE/nxserver_3.5.0-4_amd64.deb
eventuell nochmal
apt-get -f install
Falls die Links Down sind, einfach auf http://www.nomachine.com die aktuellen Downloadlinks besorgen.
32-bit Linux:
dpkg -i nxclient_3.4.0-5_i386.deb dpkg -i nxnode_3.4.0-11_i386.deb dpkg -i nxserver_3.5.0-4_i386.deb
64-bit Linux:
dpkg -i nxclient_3.4.0-5_x86_64.deb dpkg -i nxnode_3.4.0-11_x86_64.deb dpkg -i nxserver_3.5.0-4_amd64.deb
>>> ggf. kann man sich zuvor auf http://www.nomachine.com erkundigen, ob neue Pakete verfügbar sind. <<<
Zum Schluß downloaden wir den NXClienten von http://www.nomachine.com und installieren diesen.
Windows: http://64.34.161.181/download/3.4.0/Windows/nxclient-3.4.0-7.exe
Man kann sich prinzipell mit jedem User einloggen, außer mit root. Das wird sinnvollerweise von NX verboten.
]]>Da bei dieser Lizenzierung die FCS Management Console sowie der Microsoft Operation Manager nicht mit inbegriffen ist, ist eine zentrale Konfiguration und Verwaltung selbstverständlich nicht möglich. Das hat zur Folge das jeder Client per Hand konfiguriert werden muss. Auch die praktische Alert- und Notification-Infrastruktur, sowie das Reporting fällt weg. Genauere Informationen zu diesem Lizenzmodel lassen sich im Partnerportal von Microsoft finden.
Um den Client standalone installieren zu können, muss die clientsetup.exe aus dem vorher entpackten Installationsverzeichnis mit dem Parameter /NOMOM gestartet werden. Dazu geht man in die Eingabeaufforderung und navigiert zu dem Forefront Ordner.
Je nachdem ob ein x86 oder x64 Windows benutzt wird, sieht der Pfad etwas anders aus.
Für x64 Systeme:
/client/x64/clientsetup.exe /NOMOM
Für x86 Systeme:
/client/clientsetup.exe /NOMOM
Nach der automatischen ablaufenden Installation erscheint ein Ausrufezeichen mit orangenem Hintergrund in der Taskleiste.
Ein Klick auf dieses Zeichen verrät, dass Forefront gerne ein Update hätte. Damit die Updates in Zukunft automatisiert bezogen werden können, muss der Windows Updatedienst aktiviert werden. (Die Standardkonfiguration des Windows Update Services reicht nicht aus)
Ist der Dienst eingerichtet und alle Updates installiert, wird das Symbol Grün und der FCS ist aktiv und up-to-date.
Wenn man FCS erstmal testen möchte, kann man sich die Trialversion herunterladen und diese auf dem selben Weg installieren.
Wir installieren den Role Service CGI auf unserem IIS, dazu gehen wir in den Servermanager und wählen den IIS aus. Danach noch auf Add Role und in dem darauf folgendem Dialog wählen wir CGI aus.
Nun laden wir noch die “Non-thread-safe” PHP Binaries und installieren sie. Danach öffnen wir in die php.ini, welche sich in dem Installationsverzeichniss, befindet und überprüfen ob folgende Einstellungen korrekt gesetzt sind:
fastcgi.impersonate = 1 fastcgi.logging = 0 cgi.fix_pathinfo=1 cgi.force_redirect = 0
Nun noch schnell den IIS Manager geöffnet und ein Handler für PHP mappen. Dazu klicken wir auf Handler Mappings und dann rechts in der Actions Sidebar auf Add Modul Mapping.
Folgenden Einstellungen werden dann eingetragen:
Request path: *.php
Module: FastCgiModule
Executable: C:\[Pfad zu PHP Installation]\php-cgi.exe
Name: PHP_via_FastCGI
Zusätzlich sollte man noch folgende Einstlellungen unter “Request Restrictions” anwenden:
Das war es auch schon, nun kann der IIS PHP interpretieren.
Wen der IIS eine index.php als Standart Index behandeln soll, ist noch folgende Einstellung über die Konsole nötig
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/defaultDocument /+"files.[value='index.php']" /commit:apphost]]>