Malwareanalyse in C#

Vor zwei Tagen wurde auf Rebirth anscheinend die “LEAKED BINARY” von “n0ise Reverse-Socks Bin + Panel” gepostet. Der TS schrieb weiterhin, dass diese Binary infected wäre, aber nicht von Ihm oder K!llu. Zudem wäre diese Binary nur unpacked, dass man sie sich selbst decompilen kann.

Also hab ich mir die Binary geladen und durch den Reflector gedumpt. Als ich mir dann den Source in Visual Studio anschaute, fiel mir auf, dass überhauptnichts bezüglich “Reverse Socks” gemacht wird. Es gibt in dieser Binary folgende Klassen:

  • c000002.cs -> Die Main-Klasse mit StubInformationen
  • c000003.cs -> Ein RunPE Modul (nicht sehr sauber, aber ok ^^)
  • c000004.cs -> Eine Klasse zum Auslesen der Stub (bzw einer Ressource, die leider verloren ist)
  • c000005.cs -> Ein (versuchter Ansatz) eines Verschlüsselungsalgos

Also hab ich weiter die c000002.cs bearbeitet, analysiert und kommentiert. Und irgendwann ergab sich ein Bild, welches eigentlich eine ganz coole Idee ist:

Weiterlesen

14 people like this post.

MW2 Bot in C# - Teil 5

In diesem Teil werden wir einen Nametag-Hack schreiben. Dieser zeigt einfach die ganze Zeit (auch durch Wände) den Namen von Gegnern über deren Köpfen an. Das ist jetzt nicht soooo spektakulär, dennoch ist es gut zum Verständnis von (später folgenden) komplexeren Aktionen.

Um es erst einmal in Pseudocode auszudrücken; Im Grunde müssen wir folgende Schritte machen:

  1. Gehe jeden Spieler-Eintrag in dem Array durch
  2. Wende die WorldToScreen Funktion auf die Position an um die 3D Koordinaten in ein 2D System zu bekommen
  3. Zeichne den Namen des Spielers an der WorldToScreen Position

Klingt relativ simple, oder?

Ich habe hierzu eine Klasse MW2Player, welche die Container von Entity und Clientinfo aus den vorherigen Teilen beinhaltet. Zudem gibt es ein Member “Vector2 vPosOnScreenLast”, welche jeweils geupdated wird:

Weiterlesen

5 people like this post.

MW2 Bot in C# - Teil 4

Willkommen zum (richtigen) vierten Teil der Tutorialserie! Hier wird es sich endlich um Delegates (Funktionszeiger) drehen, mit denen wir eine Font registrieren werden und Text zeichnen! Dabei wird auch auf die Hürde eingegangen, das manche native Funktionen nicht von C# aufgerufen werden können.

Im letzten Teil haben wir die MemoryHelper Klasse behandelt, welche auch die Funktion “GetFunctionFromAddress<T>” enthält. Anhand dieser Funktion werden wir sofort mit dem ersten Funktionszeiger anfangen, welcher eine Font (Schriftart) der Engine registriert und uns das Handle zurückliefert. Der native C++-Code sieht dazu so aus:

typedef void* (*GetFontType_)(char* FontName, int Unknown1);

Diese Funktion erwartet also einen FontName, sowie unbekannter zweiter Parameter als Integer. Zudem wird ein Handle, hier in Form eines void-Zeigers zurückgeliefert. Ein Void-Zeiger ist einfach ein Zeiger ohne einen bestimmten Datentyp wie Int oder Char.

Weiterlesen

3 people like this post.

Neue Domain

Der Blog ist ab sofort unter der Domain easysurfer.me zu erreichen!

Greez Easy

2 people like this post.

Ein paar Socks5 Experimente

Wow, mein dritter Post an einem Tag… Aber was soll man bei diesem Wetter anderes machen? -.-

Immer wieder lese ich in diversen Foren Sachen wie:

"Reverse-Socks5-Proxy-*HOT*-*HOT*-*HOT*".
Allgemeine Informationen:
Mit dem Unique Reverse Socks Packet kannst du dir absofort deine eigenen
(Vic)Socks5 erstellen.
Dieser Proxy Server ist etwas Besonderes, weil er anstatt über UPNP
seine Verbindung über eine Reverse Connection herstellt.
Der große Nachteil an UPNP ist, dass das Opfer hinter keinem Router bzw.
hinter einem Router sitzen muss, der UPNP unterstützt.
Das ist jedoch so gut wie nie der Fall und deswegen klappt die Socks5
Funktion von vielen Bots nicht richtig.
Mit meiner Methode habt ihr eine fast 100%tige Chance, dass euer Opfer zu
einem (Vic)Socks5 Server wird.

Dann wird als nächtes behauptet man würde so etwas NIEMALS unter 300€ finden!
Doch, es gibt etwas unter 300€. Ich werde sowas demnächst für 0 € releasen, weil ich echt nicht verstehe warum die so einen Wirbel darum machen. Denn das Prenzip daher ist wirklich einfach:

Um es nochmal in Worte zu fassen:

1. Unser Victim (ich mag den Begriff nicht, aber nun gut) connected zu einem Server, in dem Fall mir. Ich hab den entsprechenden Port in dem Router weitergeleitet und somit kommt eine Verbindung zu Stande.
2. Nun fängt der Server an, ein Socks5 Server zu hosten. Er wartet einfach auf einkommende Socks5 Verbindungen und nimmt diese an. Die Verbindung zwischen Victem und Server besteht natürlich immernoch ;-)
3. Ein Socks5-Programm wie Proxyfier connectet nun auf meinen Socks5 Server, in dem Fall 127.0.0.1 auf einen zuvor festgelegten Port. Das Socks5 Programm nimmt die Verbindung an, leitet die Daten an das Vic weiter, welches die gewünschten Bytes abruft. Nun werden diese Daten zurück an den SocksServer geschickt von von dortaus wieder an Proxyfier.

Also habe ich mich an dieses RCF gehalten und so erst einen Socks5 Client (bzw eine Connection DURCH einen Socks5 Server) und schließlich einen Multithread-Server geschrieben. Den Source gibt es noch nicht zu sehen, da noch vieles unsauber und unfertig ist ;-)

Und dann irgendwann kommt der Moment wenn Endorphine den Körper durchströmen:

 

So Far ;-)

Easysurfer

7 people like this post.

MW2 Bot in C# - Teil 3

In diesem Teil möchte ich auf das Auslesen von Strukturen aus dem Speicher und meiner Art von Management dieser Klassen eingehen. Am Ende wird noch die Klasse MemoryHelper angeschnitten, welche uns einiges an Abeit ersparen wird :-)

Bisher haben wir eine Klasse, die Clientinfo Klasse, angeschaut. Diese können wir jetzt direkt verwenden und darauf zugreifen. Doch was ist, wenn wir eine zusätzliche Variable für Clientinfo brauchen oder sogar ein Referenz auf eine andere Klasse? Hier ein Beispiel wie es dann aussehen könnte…

public class Gamemanager
{
   ClientInfo[] arClientinfos;
   // Jetzt fällt auf, wir würden auch noch gerne die Namen in einem einzelnen Array haben
   String[] arNames;
   // Und jetzt wollen wir noch jeder ClientInfo-Klasse eine ID zuordnen:
   Int[] ClientinfoIDs;
}

Das Chaos wäre nach min. 2 weiteren dieser Sachen komplett. Daher hab ich mich entschlossen das ganze über OOP und sog. Container-Klassen zu lösen. Ich weiß nicht ob das einem Design-Pattern entspricht, aber ich vermute mal stark :D

Weiterlesen

4 people like this post.

MW2 Bot in C# - Was will er eigentlich?

In den letzen Tagen hab ich des öfteren die Frage bekommen: “Was kann denn dieser Bot alles?”, “Was bringt das?” etc. Daher möchte ich hier, vor dem 4. Teil meiner Serie, eine kleine Vorschau geben was Euch noch erwartet und welche Features der Bot haben wird. Zudem möchte ich erwähnen dass ich nur wirklich Spass mit meinem Bot habe, wenn ich damit andere “Hacker” (wie sie sich nennen -.-) mal zeigen kann was ihr 1337-public-shitbozz kann ;-)

Natürlich sollte am Anfang zu erwähnen sein, dass man nicht einfach so, ohne zuvor Grundlagen zu vermitteln, einen Bot coden kann. Und diese Grundlagen werden euch noch bis min. dem 6. Teil der Serie erwarten.

Aber um einen kleinen Ausblick zu geben was der Bot später können wird:

  • Ein Wallhack / ESP, welcher einzelne Bones anzeigt. Des weiteren für jeden Bone eine Überprüfung ob dieser sichtbar ist oder nicht.
  • Ein Nametag-Hack (zeigt die Spielernamen über den Köpfen an).
  • Ein Aimbot, welcher auf jeden einzelnen Knochen Zielen kann.
  • Ein Quickscopebot! (wolltet ihr nicht schon immer mal über 200m einem Cheater in den Kopf Quickscopen?). Quickscopen = Mit einem Sniper reinzoomen bis der Streufaktor 0 erreicht, schießen und wieder rauszoomen.
  • Ein Triggerbot = Sobald ein Gegner unter dem Fadenkreuz (des Snipers) ist wird automatisch geschossen

Natürlich können noch ein paar Fun-Features wie ein 360° Quickscope Bot etc. dazukommen, aber das sollte erstmal das grobe sein.

Und hier noch ein Bild vom aktuellen Stand. Leider kann ich kein Video machen, da dieses, zumindest für den Quickscope Bot, zu krass lagged.



Weiterhin viel Spass beim lesen ;-)

Easy

5 people like this post.

Balsamiq Mockups - “Crack” erstellen

Hier mal ein bisschen was aus meinen bisherigen RE Erfahrungen. In dem folgenden Post werde ich zeigen, wie man die Flash-Desktop-Anwendung “Balsamiq Mockups” “cracken” kann, dass sie vollständig aktiviert ist und man keine 7-Tage Testversion mehr hat.

Weiterlesen

11 people like this post.

MW2 Bot in C# - Teil 2

In Teil 2 beschäftigen wir uns mit dem erstellen von Strukturen und Klassen, welche später mit diesen Informationen aus dem Speicher geholt werden.

Die Hauptschwierigkeit bei dem Erstellen von Strukturen liegt darin, dass sie genauestens beschrieben werden müssen. Wir müssen explizit sagen wo was hingehört, dass wir auch die richtigen Werte in den richtigen Variablen haben ;-) Sprachen wie C++ haben dieses Problem übrigens nicht, da wird einfach sequenziell vorgegangen und das passt dann jeweils auch.

Ich werde hier eine der vielen umgeschriebenen Klassen werde ich hier vorstellen, da sie alle “Schwierigkeiten” ders expliziten Klassenlayouts hervorhebt. Für alle Klassen und Offsets die ich verwende gehen die Credits an das UC-Forum, bzw. genauer diesen Thread.

Weiterlesen

5 people like this post.

Einen MMORPG-Bot bauen

Vor ein paar Wochen schrieb ich im Urlaub ein 18-Seiten Paper über das nachbauen eines Clients für ein MMO. Dieses Paper werde ich Zeitgleich auch in der B2H Libary publizieren, aber hier gibts ein paar mehr Infos dazu ;-)

In dem Artikel wird, wie schon erwähnt, ein Client für ein Online-Rollenspiel analysiert und später “nach gebaut”. Da ich den Betreibern keinen Schaden zufügen will, passiert das alles ohne konkrete Source-Snippets von meiner Seite! Mit dem Wissen das in dem Artikel (hoffentlich) vermittelt wird, ist dies aber auch nicht nötig.
Weiterlesen

4 people like this post.