RAT in C



  • Hallo zusammen,
    ich habe eine Frage an die erfahrenen C Leute.
    Problem
    Es existiert ein äußerst heterogenes Netzwerk, dass sich sowohl aus Windows Systemen, als auch aus Linux Systemen zusammensetzt. Das gesamte Netz wird derzeit äußerst wackelig von einem Windows Serv[url]er 2008 zusammengehalten. Aufgrund der Heterogenität soll, aber nun eine Sicherheit gebildet werden. Deshalb soll ein RTA geschrieben werden.
    Anforderungen
    Am wichtigsten Anforderungen sind:
    - Dateien im Dateisystem anzeigen, bearbeiten, löschen
    - Dateien hoch- und runterladen
    - Prozesse starten (Dateien ausführen), Prozesse beenden
    - (optional) Prozessanzeige
    Besonderheiten
    Wie in der Abbildung hoffentlich deutlich ist das Netz sehr heterogen. Teilweise sind die anderen Rechner hinter Routern, Firewalls oder Netzwerken vorhanden. Des weiteren gibt es keine Software wie z.B. Java oder gar .Net auf der man aufbauen könnte. Daraus ergibt sich, dass das Programm unabhängig von der Umgebung laufen muss. (Ich weiß, dass C Anwendungen nicht wie Java oder .Net auf jeder Maschine ausfühbar sind. Allerdings habe ich gelesen, dass es möglich ist mit entsprechenden Bibliotheken für Linux oder Windows zu kompilieren.) Außerdem muss es sich ohne Genehmigung durch Router und Firewalls durchschalten können, denn es ist unmöglich jeden Betreiber zu kontaktieren und die Ports alle freischalten zu lassen. In diesem Zusammenhang wäre evtl. auch eine Athentifizierungsmethode sinnvoll, um uneingeschränkten Zugriff zu ermöglichen.

    ⚠ ABBILDUNG
    http://img79.imageshack.us/img79/3388/szenariouz2.jpg

    Meine Frage ist nun: Ist dies in C zu realisieren? Wie lange bräuchte man um ein solches Projekt zu schreiben? Wie viele Personen wären nötig.

    Kurz zu mir: Ich selber habe ca. 6 Jahre Erfahrung mit dem .Net Framework. Ich beherrsche fließend C# und Visual Basic. Außerdem verfüge ich Kenntnisse in Java und C.



  • nimm das: http://www.tightvnc.com/
    gibts für linux und windoofs. macht alles, nur nicht dateien hoch/runterladen. aber dafür kannste ja FTP nehmen.
    oder 'logmein', aber ich weiss nicht, ob das auch unter linux geht.
    🙂



  • NETDeveloper schrieb:

    ... Ich beherrsche fließend C# und Visual Basic. Außerdem ...

    Ih! Und wer wischt das wieder weg?
    🙂



  • @~fricky: Vielen Dank für deinen Tipp. Ich weis, dass es jede Menge von RemoteControl Programmen gibt. LogMeIn und tightvnc sind sicherlich keine schlechten Programme, aber das Problem ist, dass es derzeit quasi unmöglich ist auf jeden Rechner zuzugreifen und dort einfach zu installieren. Es sind einfach zu viele Rechner und das ganze ist zu unübersichtlich. Es gibt auf keine einheitlichen Benutzerkonten, etc. Außerdem muss die Anwendung vollständig im Hintergrund laufen. Es gibt sogar Server im Netz, die es nicht zulassen, wenn die Prozessliste über x Einträge hinausgeht. (Schutz vor Überlastung) Allerdings möchte ich mich noch einmal mit diesen Betreibern in Verbindung setzen. Im Klartext habe ich nur eine Möglichkeit: Es gibt ein ServicePack-Updater Programm, dass eine ausfühbare-Datei kopieren kann und diese dann anschließend auf dem Rechner ausführt. Trotzdem vielen Dank!
    @ Big Brother: Was findest Du daran denn so: "Ih!" Wieso wegwischen?



  • NETDeveloper schrieb:

    LogMeIn und tightvnc sind sicherlich keine schlechten Programme, aber das Problem ist, dass es derzeit quasi unmöglich ist auf jeden Rechner zuzugreifen und dort einfach zu installieren.

    das verstehe ich nicht. was selbstgemachtes müsstest du doch auch irgendwie auf diesen rechnern zum laufen bringen.

    NETDeveloper schrieb:

    Es sind einfach zu viele Rechner und das ganze ist zu unübersichtlich. Es gibt auf keine einheitlichen Benutzerkonten, etc. Außerdem muss die Anwendung vollständig im Hintergrund laufen.

    dies meisten remote control programme laufen ja als dienst/dämon etc. ausserdem gibt's VNC im quelltext, d.h. du kannst eigene funktionalität dazustricken. das ist bestimmt einfacher, als alles komplett selbst zu coden.

    NETDeveloper schrieb:

    Im Klartext habe ich nur eine Möglichkeit: Es gibt ein ServicePack-Updater Programm, dass eine ausfühbare-Datei kopieren kann und diese dann anschließend auf dem Rechner ausführt.

    ach so. in dem fall könntest du ja teile von VNC und einem FTP-client nehmen, und was eigenen daraus bauen, dass du dann dem updater unterjubelst. dumm ist natürlich, dass du für die einzelnen systeme angepasste executables machen müsstest. oder haben alle vielleicht ein einheitliches laufzeitsystem, z.b. eine Java-VM? dann hättest du natürlich noch andere möglichkeiten...
    🙂



  • ~fricky schrieb:

    das verstehe ich nicht. was selbstgemachtes müsstest du doch auch irgendwie auf diesen rechnern zum laufen bringen.

    Wie gesagt läuft das über das Service Pack Updater Programm.

    ~fricky schrieb:

    dies meisten remote control programme laufen ja als dienst/dämon etc. ausserdem gibt's VNC im quelltext, d.h. du kannst eigene funktionalität dazustricken. das ist bestimmt einfacher, als alles komplett selbst zu coden.

    Natürlich schaue ich mich im Quelltext von VNCs um. Allerdings sind nicht alle Quelltexte super dokumentiert. Es dauert oft recht lange sich zurechtzufinden. Allerdings nutze ich die Quelle natürlich.

    ~fricky schrieb:

    ach so. in dem fall könntest du ja Teile von VNC und einem FTP-client nehmen, und was eigenen daraus bauen, dass du dann dem updater unterjubelst. dumm ist natürlich, dass du für die einzelnen systeme angepasste executables machen müsstest. oder haben alle vielleicht ein einheitliches laufzeitsystem, z.b. eine Java-VM? dann hättest du natürlich noch andere möglichkeiten...
    🙂

    s. erster Beitrag: total heterogen. Ich kann nicht auf Java, oder ähnliches setzen. Ich kann auch nichts groß installieren. Das wollen die Server Betreiber nicht.
    Kurz und bünding: max. 1 MB große einfache exe-Datei, die sich in den Autostart einträgt und völlig im Hintergrund läuft.

    Vielen Dank für Deine Antworten.

    Darum geht es eigentlich:
    [h]Meine Frage ist nun: Ist dies in C zu realisieren? Wie lange bräuchte man um ein solches Projekt zu schreiben? Wie viele Personen wären nötig.[/h]

    Mir ist klar, dass mir niemand einen kompletten Quellcode liefern wird. Es geht hier mehr darum, ob sowas wirklich real schaffbar ist.



  • NETDeveloper schrieb:

    Meine Frage ist nun: Ist dies in C zu realisieren?

    wahrscheinlich ist C sogar das beste dafür, von wegen kleinster gemeinsamer nenner und so.

    NETDeveloper schrieb:

    Wie lange bräuchte man um ein solches Projekt zu schreiben? Wie viele Personen wären nötig.

    kommt drauf an, wie fit du bist, wenn du's selbst machen willst. ich gehe mal von meinen fähigkeiten aus (windows-kenntnisse: mittelmässig, linux-kenntnisse: mehr schlecht als recht. ansonsten gute auffassungsgabe und programmierkenntnisse) also ich schätze mal grob: 1 monat, fulltime-job, falls deine beschreibung einigermassen passt.
    🙂



  • Vielen Dank für deine Einschätzung. Meine Beschreibung zu Beginn sollte sehr genau passen. Zu meinen Kenntnissen:
    Microsoft Produkte (insbesondere Windows) - excellent
    Linux - eher mäßig (UNIX Grundlagen vorhanden, aber auch nicht mehr)



  • NETDeveloper schrieb:

    @ Big Brother: Was findest Du daran denn so: "Ih!" Wieso wegwischen?

    Das war ein Scherz, der offensichtlich nicht angekommen ist.:p

    NETDeveloper schrieb:

    ... Außerdem muss es sich ohne Genehmigung durch Router und Firewalls durchschalten können ...

    Das dürfte schwierig sein, so schlechte Router/Firewalls gibt es nicht.



  • Im Prinzip wäre hier wohl ein p2p system möglich. Auf diese Weise müsste man um die Router/Firewalls rum kommen(Port 80). Wird alles verdammt viel Arbeit...



  • @ Blubbbb: Genau daran hatte ich auch schon gedacht und ich halte das ebenfalls für sehr schwer. Hast Du vielleicht eine Anregung, oder soetwas ähnliches? (Bitte nicht irgendein riesiges OpenSource Projekt. Das ist ein wenig allgemein und der Code ist oft schlecht auskommentiert und zu komlex, als auch allgemein nicht verwendbar.) Das wäre echt prima!!! Eine etwas genauere Ausführung wäre auch schon sehr hilfreich.


Anmelden zum Antworten