Hostinjections

yurij

Lt. Commander
Registriert
Jan. 2008
Beiträge
1.064
Wer kennt einen eleganten weg um Hostinjections in die windows "hosts" Datei durchzuführen? Und dann dann wieder zu entfernen?

Mein Programm schreibt aktuell die hosts datei direkt per Filesystem. Aber das funktioniert dank UAC eher schlecht als recht.

Gibt es einen cmd befehl dafür?

End bevor jemand auf abwegige Gedanken kommt. Nein ich programmiere kein Virus, das brauche ich für mein MobileWebserver.
 
Viele Wege führen nach Rom. Aber ersteinmal, warum ist es notwendig, das die hosts Datei automatisiert geändert werden muss? Ist es ein Programm, dass du schreibst oder setzt ein Programm voraus, dass der Eintrag vorhanden ist, damit du es auch nutzen kannst? Wahrscheinlich gibt es bessere Wege dein eigentliches Problem zu lösen. Also, was ist das eigentliche Problem, dass du lösen möchtest? Gib mal mehr Informationen an, statt nur die eine für dich scheinbare Lösungsvariante zu nennen. Vielleicht läßt sich das eigentliche Problem anders und vorallem sicher lösen, sodaß der Umweg über die Manipulation der host Datei nicht notwendig ist. Diese Datei sollte wirklich nur von einem Admin geändert werden. Jeder Versuch durch Änderung über ein Programm, führt zum Verlust des Vertrauens in das Programm beim Anwender.
 
Zuletzt bearbeitet:
OK, hier ist das Programm was ich nutze und veröffentlicht habe:
https://www.computerbase.de/forum/t...-und-mysql-auf-usb-stick.703520/#post-7424333

Das Programm konfigueriert in wenigen minuten und steuert das Gespann aus Apache/PHP/MySQL, und zwar so dass man es einfach auf USB stick kopieren und mitnehmen kann. Man kann dort beliebige Anzahl von virtuellen Seiten verwalten.

Nun die Idee ist, dass ich eine Produktive Seite aus dem Internet samt Datenbanken auf den MobilenWebserver lade und es von dort einfach ohne weitere Anpassungen benutzen kann. Diese Seiten sind meist CMS Systeme mit fest konfigurierten Site- und Datenbankhostnamen.

Damit ich diese Seiten transparent auf dem Mobilen Webserver verwenden kann, muss ich verwendete Hostnamen im Windows umlenken, deswegen brauche ich auch diese "Hostinjections". Wenn man den MobilenWebserver abschaltet werden die Injections wieder entfernt.

Das Programm ist in .hta JavaScript geschrieben. Ich verwende ActiveX Objekte und teilweise WMI für Dateizugriffe und Prozessteuerung.

Das Problem mit "Security Descriptors" kenne ich da ich auch noch C++/C# Programmierer bin.
In C++/C# kann ich die SecurityDiscreptoren einfach in die EXE einbinden. Der Benutzer wird dann immer noch genötigt UAC Dialog wegzuklicken. Dies kann ich nur durch ein Sicherheitszertifikat umgehen, dafür hat aber Kleinentwickler wie ich natürlich kein nötiges Taschengeld.

Bei .hta habe ich keine Ahnung wie ich den Sicherheitsdescriptor einbinden oder während der Laufzeit anfordern kann.

Ich überlege langsam ein in C++ geschriebenes "Loader" zu programmieren, welcher den SecurityDescriptor eingebettet hat, und nichts anderes macht als die .hta dann mit Admin rechten zu laden.

Ich dachte vielleicht gibt es einen eleganderen Weg...
 
Sorry yurij,

leider kann ich dir da nicht weiter helfen. Falls du noch Interesse hast, warum ich da nicht helfen kann, dann lies ruhig weiter, wenn nicht ist es auch nicht schlimm...

Das Konzept des MobileWebservers klingt sehr verführerisch. Das eigentliche Problem jedoch ist in meinen Augen nicht der MobileWebserver sondern vielmehr die CM Systeme die du damit transportieren möchtest. Aber da später mehr dazu.

Aus meiner Sicht ist es wirklich sehr riskant einen so tiefen Eingriff in die Sicherheitsmechanismen des Zielsystems zu machen. Wie XunnD bereits treffend bemerkte:
Wenn man das einfach umgehen könnte, wäre das wohl eine Sicherheitslücke!
Wenn ich es mir recht überlege, würde ich an deiner Stelle Abstand nehmen von diesem "Feature", denn was ist, wenn die hta Anwendung abstürzt? Dann wird doch sicherlich eine ungültige host Datei hinterlassen. Das Vertrauen deiner Kunden/Anwender in das Produkt würde sicher sinken, wenn sie erfahren, das dein Tool so massiv die Sicherheitsmechanismen des Betriebssystems untergräbt. Solltest du eine elegante Lösung des Problems finden, dann wirst du bei jedem Sicherheitspatch von Microsoft schwitzen müssen, da unter Umständen deine Anwendung nicht mehr funktioniert. Jeder Weg die Namensauflösung eines Windows zu beeinflußen, würde Antispam-Software oder Virenscanner anschlagen lassen, weil es eine typische Vorgehensweise für Hijacker ist. Der Scanner hat wenig Schuld daran, der beobachtet und prüft nur. Er wird dein Programm nicht von üblicher Malware unterscheiden können. Ebenso öffnest du auch unbewußt eine Lücke für die Trittbrettfahrer. Diese müssen dann nur noch rausfinden, wie das Programm/der Code gezielt für deren Zwecke genutzt werden kann. Bei Opensource dürfte es sich da nur um Stunden handeln. Sobald jedoch diese Malware auftaucht, wird MS mit einem Patch reagieren, der auch deine Anwendung blockieren wird.

Nun zu den CM Systemen: Sicher ist es ein Graus, wenn man so ein "Biest" konfigurieren muss. Deswegen wahrscheinlich auch deine Idee vom MobileWebserver. Aber warum lässt sich das ganze so schwer konfigurieren, gibt es keine zentrale Komponente, die für die Konfiguration des Systems verantwortlich ist? Wurden Server/Datenbanken in den PHP Scripten hardcodiert? Wäre es vielleicht besser, die CM Systeme zu refaktorieren, statt mit den Krankheiten weiter zu leben? Sicher steckt da viel Arbeit drin. Aber auch ich muss in meinem Job ständig Design-Fehler in meiner Arbeit der letzten 10 Jahre korrigieren. Je härter ich gegen diese Jugendsünden vorgehe und das Design überarbeitete um so leichter ist es die neuen Codes zu warten/erweitern. Das Testen gestaltet sich leichter, Fehler treten seltener auf, Entwicklungszeiten werden stetig kürzer. Die Software wird flexibler.

Also überlege es dir nochmal sehr genau ob du lieber an den Symptomen kämpfst oder das ursächliche bereinigst.

Ansonsten wünsche ich dir viel Erfolg.
Rossibaer
 
Zuletzt bearbeitet:
Kann deinen Bemerkungen ganz zustimmen, mein Fall sieht etwas anders aus.

HostInjections brauche ich primär um Sitenkopien blitzschnell einzurichten und zu testen. Hier sind Sicherheitsaspekte erstmal irrelevant. So kann ich z.B. eine Joomla Seite und die Datenbank lokal kopieren und im handumdrehen läuft alles wie auf dem Live-Server (nur für Entwicklungs und Testzwecke). Die Alpha Version kann das bereits sehr gut. Einfach USB Stick rein, als Admin starten, und schon läuft alles wie am schnürrchen, herrlich.... ;)

Und meine Erfahrung zeigt, dass die Kunen es bevorzugen wenn etwas "einfach läuft", als wenn man dennen sagt "Tut muir leid, das kann/darf ich nicht machen, ich habe zu meinem Programm zu wenig vertrauen, es könnte ja noch eine Sicherheitslücke werden...". Irgendwo muss man als Entwickler in eigene Programme vertrauen, und die besonders kritischen Stellen (wie Hostinjections) einfach gut überlegt und solide programmieren.

Das hat übrigens dem Microsoft am Anfang Erfolgt gebracht. Obwohl Windows95 und Co. alles andere als sicher waren (in vergleich zu anderen Betriebsystemen), haben Sie die Kunden gewonnen weil "es einfach funktionierte".

Die nächste Ausbaustufe wird sein, dass der MobileServer auch in der Lage sein wird mit wenigen klicks alle Komponente auch als Dienste einzurichten. So kann ich dann den MobileWebserver im handumdrehen zum produktiven Intranetserver befördern. Hier sind Hostinjections nicht mehr undebingt notwendigm. Das Thema Sicherheit ist bei Intranetseiten auch nicht so kritisch, wie bei Internetseiten. Der MobileWebserver soll nur die erste Grobarbeit machen. Das Finetuning erledigt man dann selbst.

Über die Sicherheitsaspekte im allgemeinen bin ich bewusst. Um die muss man sich kümmern auch wenn der Server manuell eingerichtet wird. Ich will mit dem MobileWebserver das ganze nur möglichst weit und komfortabel automatisieren, so dass am Ende nur noch wenige eingriffe nötig sind.

Für produktive Internetseiten ist der MobileWebserver eigentlich nicht gedacht. Macht auch wenig Sinn. Es könnte höchstens auf Windows Root servern eingesetzt werden, und mit diesen habe ich bis jetzt nie zu tun gehabt.

MobileWebserver an sich ist keine Sicherheitslücke. Es ist kein Dienst, nur ein Steuerungs und Konfigurationsprogramm. Wenn man den produktiven (Intranet)server fertig konfiguriert hat, braucht man das ControlPanel vom MobileWebserver nicht mehr zu benutzen. Eine Sicherheitslücke wäre ein falsch konfigurierter Webserver, und auch das will ich mit MobileWebserver in Zukunft vermeiden.
 
Zuletzt bearbeitet:
Im Allgemeinen kann ich nichts negatives an deinen Beweggründen erkennen. Und ich möchte auch nicht auf meinen Standpunkt beharren, jedoch gibt mir etwas zu denken. Und das möchte ich dir auch gern mitteilen:

Und meine Erfahrung zeigt, dass die Kunen es bevorzugen wenn etwas "einfach läuft", als wenn man dennen sagt "Tut muir leid, das kann/darf ich nicht machen, ich habe zu meinem Programm zu wenig vertrauen, es könnte ja noch eine Sicherheitslücke werden...". Irgendwo muss man als Entwickler in eigene Programme vertrauen, und die besonders kritischen Stellen (wie Hostinjections) einfach gut überlegt und solide programmieren.

Das ist soweit wahr, dass es viele Kunden gibt, die schnell mal etwas ausprobieren wollen und es funktioniert sofort. Jedoch nimmt das Sicherheitsbewußtsein gerade bei Firmen stetig zu. Viele Umgebungen in denen ich arbeite, sind so restriktiv eingerichtet, das ich es oft sehr schwer habe diverse Updates etc. einzuspielen oder schlicht in der Umgebung zu arbeiten. Aber warum das ganze im Intranet? Ganz einfach, die meisten Angriffe/Attacken kommen nicht von Extern sondern vielmehr aus dem eigenen Intranet, sei es der Thomas Mustermann in der Abteilung Marketing der versucht trotz restriktiver Firewall/Netzfilter auf seine Lieblingspornoseite zu kommen, obwohl diese gesperrt ist oder Lise Sonnenschein aus der Buchhaltung, die mal eben schnell das geheime Kochrezept von Oma Sonnental zu drucken versucht. Nur dumm das in dem Worddocument auf dem USB Stick auch ein Virus/Wurm mit schwimmt, den Lise neulich unbewußt vom privaten PC mitbrachte. Wohl gemerkt erfolgt das tagtäglich in fast jedem Unternehmen, unabhängig von den Sicherheitsvorkehrungen, die getroffen wurden. Im Falle von Thomas macht die Not erfinderisch und Lise's Unwissenheit zählt sowieso zu den Top Risiken.

Desweiteren übernimmst du als Entwickler einer Software auch zugleich sehr viel Verantwortung. Nicht jeder Kunde hat die Zeit oder das Interesse deine Software auf Herz und Nieren zu prüfen. Dennoch erwartet er, dass sich deine Software möglichst nahtlos in seine Umgebung einfügt. Ebenso erwartet er dass deine Software nicht nur funktioniert sondern auch die Umgebung in der es eingesetzt wird entsprechend respektiert und eben nicht eine Sicherheitslücke öffnet. Der aktive Eingriff in die DNS Auflösung ist eine Sicherheitslücke und sollte nur von Administratoren in der Opto-Mechanischen-Kopplung ausgeführt werden!

Ich verstehe schon das es sehr angenehm ist, wenn man einfach diese Anwendung startet und schon läufts. Ich verstehe auch, dass es nur ein Hilfsmittel ist, um deine tägliche Arbeit zu erleichtern.

Alles in allem ist deine Anwendung recht interessant. Also viel Erfolg weiterhin und happy coding...
Rossibaer
 
Zurück
Oben