PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hab ne frage zu VB.net /Crypter



Dr. XMas
02.09.2009, 17:50
Hab in einem anderen Thread gelesen das man auch mit vb.net einen Crypter machen kann zwar dauert das um die 30 Taage meinten die aber Zeit habe ich könnte mir villeicht jemand ne Seite oda irgendein TuT Zeigen/geben/machen .Also was ich machen will ist : einen FUD Crypter machen.
Danke schonmal im Vorraus (nur an die die sinnvoll Antworten^^)

krusty
02.09.2009, 17:53
runtime wird schon mal schwer in vb.net.
einen scanntime crayprter zu schreiben ist nicht schwer, schau dir ein paar vb6 tutorials an (die gibts wie sand am meer) ;D das kannste leicht in vb.net umsetzen, problem wird das Fixxen des PE headers in vb.net (naja kp ob er schwer ist, ich kanns auf jeden fall nicht).

DK007
02.09.2009, 17:54
Dauert nicht um die 30 Tage.
Wenn du gut bist und auch logisch denken kannst, haste es in einer woche.

Dr. XMas
02.09.2009, 17:55
Ok danke für den Typ

blackberry
02.09.2009, 18:07
Hier ist die Theorie:
http://free-hack.com/showthread.php?t=38507

Wenn du kein C kannst:
Es geht um die Theorie - die Umsetzung sollte verständlich genug erklärt sein, sodass man sie auch ohne C-Kenntnisse verstehen kann.

Wenn du kein ASM kannst:
Die Theorie kostet dich vielleicht 3-4 Tage (wenn du die angegebenen Quellen auch durcharbeitest) und ASM ist schnell gelernt (sagen wir mal 1 Woche, oder 2).

Dann hast du immernoch mehr als 1 Woche um deinen Crypter zu schreiben.
Wenn dir das zuviel Arbeit ist: beschwer dich nicht wenn deine gedroppten Trojaner nachher erkannt werden: Scantime Crypter ist der Idioten-Weg.

Dr. XMas
02.09.2009, 18:18
Ok ich habe ja Zeit dann lese ich mir mal "kurz" alles durch und fange dann an mit dem Crypter schreiben
Danke^^

inmate
02.09.2009, 18:21
Hab in einem anderen Thread gelesen das man auch mit vb.net einen Crypter machen kann zwar dauert das um die 30 Taage meinten die

Wer auch immer das geschrieben hat hat kein plan von programmieren.
Ich meine entweder man kann etwas coden oder man kann es nicht.Warum sollte man 30 Tage für nen Crypter brauchen? Wenn mans kann dauerts ~3 Stunden mit FUD machen.Wenn man die Sprache nicht kannst wird es nicht möglich sein.

Und in vb.net nen Runtime Crypter zu schreiben soll (meines Wissens nach) nicht möglich sein (was ich nicht glaube) oder seeeehr schwer sein.

Dr. XMas
02.09.2009, 18:24
Mit welchen Prog kann man denn am besten/leichtesten einen FUD Crypter schreiben .
Hoffe mal auf ne antwort^^

inmate
02.09.2009, 18:27
Also das was du machst ist schon falsch ^^.Suche die eine Programmiersprache aus und lerne sie.Man kann nicht von heute auf morgen nen Crypter schreiben.Und mit einem Programm geht das schonmal garnicht du meinst Sprache/Compiler.


~inmate

DK007
02.09.2009, 18:27
Wahrscheinlich C++.
Aber ich bevorzuge immernoch VB, da es dort für mich einfacher ist.

inmate
02.09.2009, 18:30
Also es sollte in VB eigentlich am leichtesten sein ^^.

Dr. XMas
02.09.2009, 18:31
Also ihr meint ich soll eine Sprache lernen
Gut lernen
Sehr gut lernen
Dann erst versuchen einen Crypter zu schreiben
Und ihr meint das C++ das beste dafür währ
@inmate
du bietest ja einen FUD Crypter wie lange hast du dafür gebraucht und mit welchen Prog hast du den geschrieben
und bietest du den für umsonst oda mit money^^

DizzY_D
02.09.2009, 18:59
.Warum sollte man 30 Tage für nen Crypter brauchen? Wenn mans kann dauerts ~3 Stunden mit FUD machen.

Da merkt man wieder, wie der "Durchschnits-VB-Coder" vorgeht. 3 Stunden für einen Crypter? Das geht natürlich, aber nur mit haufenweise C&P. Und da hat man auch wieder den Unterschied zwischen "mal eben was zusammen pasten, damit ich meinen Trojaner FUD machen kann" und wirklich verstehen, wie was funktioniert.
Wenn du es so gut drauf hast, erklär doch mal grob, wie RunPE funktioniert.

blackberry
02.09.2009, 19:02
Wenn mans kann dauerts ~3 Stunden mit FUD machen.Wenn man die Sprache nicht kannst wird es nicht möglich sein.

Also mit der Methode, die ich im Tutorial gezeigt habe braucht man zwar sicher mehr (letztendlich müsste man ja alle Sections verschlüsseln), aber dem Prinzip deiner Aussage kann ich nur zustimmen!


Und in vb.net nen Runtime Crypter zu schreiben soll (meines Wissens nach) nicht möglich sein (was ich nicht glaube) oder seeeehr schwer sein.

Und wie macht man einen RunTime Crypter?
Ich würde die von mir gezeigte Methode zwar als RunTime Whatever bezeichnen, aber da ASM dabei ist zählt das wohl nicht, oder?

Also nochmal zum Mitschreiben und mit einer anderen Methode:
Du importierst folgende WinAPI Funktionen (wie das geht müsstest du ja wissen):
aus kernel32.dll:
CreateProcessA
VirtualAllocEx
WriteProcessMemory
GetThreadContext
SetThreadContext
ResumeThread
aus ntdll.dll:
NtUnmapViewOfSection
(genauere Informationen zu den API's findest du wie immer auf MSDN)

Du lädtst deine zu injezierende Datei in den Speicher (damit wir damit arbeiten können) [ob die Datei direkt von der Festplatte kommt, oder in deinem Programm als Ressource, oder "EOF Data" {oder wie auch immer ihr das nennt} dranhängt ist völlig egal].

Du erstellst einen neuen Prozess (wichtig! - wir injezieren nicht in bereits vorhandene Prozesse, damit der Windows-Loader die Imports unserer zu injezierenden Datei abarbeitet) mit CreateProcessA.
Wichtig ist hierbei, dass der Prozess mit dem CREATE_SUSPENDED-Flag erstellt wird, damit die Imports unbearbeitet bleiben und der Prozess allgemein noch nicht loslegt.
Auch zu beachten ist, dass Windows (zumindest seit Vista) eine sogenannte "Data Execution Prevention" verwendet, bei der Systemprogramme im Speicher auf ihre Integrität überprüft werden. Ein Injezieren in solche Systemprogramme (z.B. mspaint.exe, calc.exe, cmd.exe, ...) ist nicht möglich.

Danach lesen wir die ImageBase (siehe mein Tutorial für eine nähere Erläuterung des PE Formats) ein und unmappen diese mit NtUnmapViewOfSection.
NtUnmapViewOfSection bekommt zwei Parameter: (1) die ProzessID von dem neu erstellen Prozess (2) die ImageBase.
Damit schaffen wir Platz für unseren Code.

Nun rufen wir VirtualAllocEx auf um an der ImageBase des Prozesses insgesammt SizeOfImage (wie gesagt - siehe mein Tutorial) Bytes zu reservieren.
Es sollte das PAGE_EXECUTE_READWRITE-Flag übergeben werden, da wir sowohl den Code dorthin schreiben, wie auch ausführen wollen!

Jetzt benutzen wir WriteProcessMemory um den IMAGE_DOS_HEADER, den DOS-Stub und den PE-Header (die Größe in Bytes ist in SizeOfHeaders enthalten - siehe PE File Format) von der ImageBase aus in den Speicher zu schreiben.
Diese müssen da sein, damit der Windows Loader die Import Tabelle (die Adresse zu diesem befindet sich im PE Header...) finden kann um die Imports aufzulösen.

Nun loopen wir durch die Sections (auch dafür findet sich Beispielcode in meinem Tutorial) und schreiben die Sections mit WriteProcessMemory an die durch deren IMAGE_SECTION_HEADER angegebenen Positionen.

Alles fertig?
Noch nicht ganz!
Mit GetThreadContext holen wir uns den aktuellen Thread Context (dieser enthält in erster Linie die Register) [der Thread ist hierbei der Haupt-Thread der von CreateProcessA erstellt wurde und in der PROCESS_INFORMATION-Struktur enthalten ist] und setzen den Wert des eax-Registers im Context auf den "echten" EntryPoint.
Dieser berechnet sich wie folgt:
EchterEntryPoint = EntryPoint + ImageBase

Wie gesagt: fast fertig!
Mit SetThreadContext setzen wir nun den neuen Context (nicht vergessen - wir haben EAX verändert, aber noch nicht zurückgeschrieben) des Threads.

Der Letzte Schritt:
Wir rufen ResumeThread mit dem Thread-Handle auf um den Thread in gang zu setzen.

An dieser Stelle haben wir erfolgreich eine Code-Injection mit VB praktiziert.

-------------------------

Und wieder gillt: wenn man die Sprache kann ist es möglich (eine kleine Abwandlung von dem was du vorhin gesagt hast).
[
Off-Topic:
Und auch hier sieht man, dass Tutorials einem nie die Sprache beibringen, sondern nur einen winzigen Teil davon.
Zumindest die, die VB nur aus Tutorials "gelernt" (meinen gelernt zu haben ist wohl der bessere Ausdruck) haben, werden sich jetzt sicher fragen: wovon redet der Typ gerade.
Ein Buch hilft eben schon :)
]

So - ich hoffe die Erklärung war gut genug (nein, ich werden keinen Beispielcode geben - es gibt MSDN - da findet ihr die Informationen über die API's und die Strukturen - und wenn ihr VB könnt, könnt ihr die Strukturen auch nachbilden - ich weiß das es geht, weil ich vor vielen Jahren auch mal in VB programmiert habe...).


mfG. BlackBerry

EDIT:


Also ihr meint ich soll eine Sprache lernen
Gut lernen
Sehr gut lernen
Dann erst versuchen einen Crypter zu schreiben
Und ihr meint das C++ das beste dafür währ

C(++) ist für das Crypter schreiben nicht essentiell notwenig.
Ich kann nunmal C/C++ und es gab dauernt Fragen wie man das in C/C++ macht - also habe ich dafür ein Tutorial geschrieben.

Das was ich im Tutorial mit C++ mache, kann man auch mit VB machen (da es im Grunde nur arbeiten mit einem Dateiformat ist).
Wichtig für dieses Verfahren ist jedoch das Verständnis von ASM - also wenn du es so machen willst musst du ASM lernen, aber nicht zwingend C(++).

Wenn du es wie oben beschrieben machen willst kannst du dass zu 100% in VB, jedoch musst du VB auch wirklich können.