Ergebnis 1 bis 10 von 14

Hybrid-Darstellung

  1. #1
    Eigener Benutzertitel Avatar von inmate
    Registriert seit
    23.12.2008
    Beiträge
    1.767

    Standard

    Zitat Zitat von Freeder Beitrag anzeigen
    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.


    iPott <3

  2. #2
    Der Jesus der Informatik
    Registriert seit
    01.12.2007
    Beiträge
    216

    Standard

    Zitat Zitat von inmate Beitrag anzeigen
    .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.






  3. #3
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Zitat Zitat von inmate Beitrag anzeigen
    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!

    Zitat Zitat von inmate Beitrag anzeigen
    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:

    Zitat Zitat von Freeder Beitrag anzeigen
    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.
    Geändert von blackberry (02.09.2009 um 19:09 Uhr)

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •