Tasks and Token (TNT)

Neugier ist der Ursprung allen Forschungsdrangs; und Ende 2005 hatte mich die Neugier ganz und gar gepackt. Kann man den Inhalt einer Listbox oder Listview irgendwie komplett in einem Rutsch an eine andere Stelle kopieren? Sind bestimmte Speicherbereiche eines Fensters immer an der gleichen Adresse zu finden? Welche Exportfunktionen befinden sich in einer DLL? Kann man irgendwie an deren Parameter kommen?? Warum werden Prozesse immer mit bestimmten Rechten gestartet, obwohl ich gar keine Zugriffsrechte direkt festlege? Welche Privilegien müssen aktiviert werden um sie zu benutzen und welche nicht? Wie sind in etwa fremde Programme aufgebaut und welche optischen und programmtechnischen Spielereien werden dort benutzt? Wofür sind einzelne Threads in fremden Programmen zuständig?

Fragen sind wie geschlossene Türen - und hinter jeder dieser Türen befinden sich neue Möglichkeiten und Ideen. Um Türen zu öffnen zu denen man den Schlüssel nicht hat, benötigt man Werkzeug - und aus diesem Gedanken heraus ist 'Tasks and Token' (TNT) entstanden, ein Proggi das mir helfen sollte, verschlossene Türen einen ganz kleinen Spalt weit zu öffnen um einen Blick zu riskieren. Einen Blick, bei dem ich dann doch wesentlich mehr gesehen habe, als ich mir am Anfang ausgemalt habe und der auch an einigen Stellen schon Früchte getragen hat...


Was kann TNT?

1.) Verschlossene Türen öffnen: TNT kann Zugriffsrechte auf Prozesse, Threads, den Access-Token und Prozessspeicher ändern oder sich selbst als Systemservice starten und sich so mehr Möglichkeiten verschaffen, Daten fremder Prozesse auszulesen und zu ändern...

2.) Daten lesen: TNT kann den Userspeicher fremder Prozesse und dessen Attribute auslesen und dort nach Daten suchen. Ausgelesene Daten können in die Zwischenablage kopiert werden. Außerdem können Heaps fremder Prozesse mit ihren Speicherblöcken gelistet und ausgelsesen werden. Eine Zuordnung von Handles zu bestimmten Speicherbereichen innerhalb fremder Prozesse kann mit TNT in vielen Fällen mit diesen Mitteln umgesetzt werden. TNT kann den Access-Token fremder Prozesse lesen und zeigt dessen Daten auswertbar an. Daten fremder Fenster, wie z.B. Fensterstile, Fenstergröße, Position, Klassenname und Fenstertext liest TNT aus. Fensterstile werden (soweit bekannt) ausgewertet und mit ihren Flagnamen angezeigt. Module werden nach Exportfunktionen gesucht und deren Adressen innerhalb des fremden Prozesses angezeigt. Moduldaten fremder Prozesse wie Einsprungsadresse, Ursprungsname bei der Kompilierung oder verschiedene Versionsinformationen kann man ebenfalls über TNT erhalten.

3.) Daten ändern: TNT kann einstellbare Daten des Tokens eines fremden Users ändern. Dazu gehört z.B. das Aktivieren oder Deaktivieren von Gruppen und Privilegien. Aber auch der Default-DACL eines Fremdprozesses - der die Rechte eines Kindprozesses bestimmt, wenn kein Security-Descriptor mitgegeben wurde (z.B. bei @Winexec(), RUN, Shell...) - kann geändert werden. TNT ist in der Lage, die Zugriffsrechte auf Speicherseiten in anderen Prozessen zu ändern und deren Inhalt neu zu setzen. Fensterstile, Fensterpositionen und Größen fremder Fenster können bei Bedarf geändert werden

4.) Beenden und anhalten: TNT kann Fremde Fenster schließen, Prozesse beenden und Threads anhalten, fortsetzen und beenden...

5.) Messages senden: TNT kann Messages an fremde Fenster senden und in vielen Fällen auch deren Rückmeldung einholen.

6.) DLLs Injizieren: TNT kann unter Windows2000/XP eigene DLLs in den Virtuellen Speicher eines Prozesses einschleusen und die enthaltenen Exportfunktionen direkt anspringen.

7.) TNT kann in fremden Prozessen Speicher für eigene Verwendung bereitstellen.






Impressum