Hackerboard WikiHaboBlog

[HaBo]

 
(In)security allgemein Sicherheit, Anonymität im Netz. Schutz und Maßnahmen. Prävention und Konzepte. Sicherheitsarchitekturen allgemein und auf der Netzwerkebene.

Whitepaper verstehen ^^''

Diskussion: Whitepaper verstehen ^^'' im Forum (In)security allgemein, in der Kategorie Security Area; Hi, mir ist letztens dieses whitepaper unter die finger gekommen, http://www.harmonysecurity.com/blog/...injection.html nun ist hier aber ein verständnissproblem wie der code ...

Antwort
Alt 08.04.09, 21:31   #1 (permalink)
 
Registriert seit: 10.01.08
Schurke Leistung: Facit NTK
Likes: 0
Standard Whitepaper verstehen ^^''


Hi,

mir ist letztens dieses whitepaper unter die finger gekommen, http://www.harmonysecurity.com/blog/...injection.html

nun ist hier aber ein verständnissproblem wie der code überhaupt eingeschleußt wird, also von source her befindet sich der loader ja in der DLL

Code:
DLLEXPORT DWORD WINAPI ReflectiveLoader( VOID )
{
nun aber wie wird denn wenn der eigentliche loader in der dll selbst ist die dll in das programm überhaupt geladen? es geht ja darum das es sehr schwer erkennbar sein soll, aber was ist dann mit der methode es überhaupt reinzurkiegen ? ist die dann leicht erkennbar?
Schurke ist offline   Mit Zitat antworten
Alt 09.04.09, 13:43   #2 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard RE: Whitepaper verstehen ^^''

Zitat:
Original von Schurke
nun aber wie wird denn wenn der eigentliche loader in der dll selbst ist die dll in das programm überhaupt geladen? es geht ja darum das es sehr schwer erkennbar sein soll, aber was ist dann mit der methode es überhaupt reinzurkiegen ? ist die dann leicht erkennbar?
So wie ich das verstehe, geht es darum, dass es später schwer erkennbar sein soll, dass eine DLL eingschleust wurde. Das Einschleusen selbst hängt von dem Zielprozess ab und muss dessen Schwachstellen dafür nutzen, also kann man hier nicht generell sagen, wie leicht das Einschleusen selbst zu erkennen ist.
Lesco ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 11.04.09, 14:53   #3 (permalink)
Themenstarter
 
Registriert seit: 10.01.08
Schurke Leistung: Facit NTK
Likes: 0
Standard

Wie schleußt man eigentlich diesen typ ein? Alle methoden die mir bis jetzt vor die nase gekommen sind haben darauf aufgebaut das DllMain aufgerufen wurde, hier ist es ja ne extra funktion. Geht sowas ohne den zielprozess in der exe zu patchen? ( vll während er läuft oO ? )

edit-- ruft man hier vll mit variable einfach die funktion aus dll main 1x auf? Aber dann wärs ja nicht Exported oder?
Schurke ist offline   Mit Zitat antworten
Alt 11.04.09, 15:33   #4 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von Schurke Geht sowas ohne den zielprozess in der exe zu patchen? ( vll während er läuft oO ? )
Das soll nach meinem Verständnis durch Ausnutzen einer Schwachstelle(z.B. Stackoverflow) geschehen.
Lesco ist offline   Mit Zitat antworten
Alt 11.04.09, 15:39   #5 (permalink)
Themenstarter
 
Registriert seit: 10.01.08
Schurke Leistung: Facit NTK
Likes: 0
Standard

Danke werd mir mal durchlesen was man darunter versteht ^.^

--edit: ist der stack overflow eigentlich eine genutzte methode in heutigen programmen? Wie findet ihr herraus wie groß ein feld allokiert wird?

Ist die STL stack overflow sicher?

kurios...

wenn ich den quellcode so ändere das es ein run in einer shared section gibt..

Code:
#pragma data_seg("SHARED")
	BOOL Run = 0;
#pragma data_seg()         
#pragma comment(linker, "/section:SHARED,RWS")
( ReflectiveLoader.c )

geht alles soweit, wenn ich jetzt aber in DLL Main schreibe:

Code:
	if ( Run == FALSE ){
		ReflectiveLoader();
		Run = TRUE;
	}
( ReflectiveLoader.c )

dann geht nichts mehr. error, "'BOOL': Ungültige Verwendung dieses Typs als Ausdruck"

ich weiß diese art der verwenden ist ziemlich dämlich, aber ist ja nur zu testzwecken oO
Schurke ist offline   Mit Zitat antworten
Alt 11.04.09, 16:40   #6 (permalink)
 
Benutzerbild von Eydeet
 
Registriert seit: 14.04.06
Eydeet Leistung: Facit NTK
Likes: 4
Standard

Zitat:
ist der stack overflow eigentlich eine genutzte methode in heutigen programmen?
Ein Stack Overflow sollte in keinem Programm auftreten können. Wenn er doch auftreten kann, dann ist das ein Programmierfehler, also verstehe ich deine Frage nicht so ganz...
Stack Overflows nutzen sollte eigentlich kein Programmierer, eher Stack Overflows verhindern.

Zitat:
Wie findet ihr herraus wie groß ein feld allokiert wird?
Das gibt man in der Regel der beim allokieren an. Unter C wäre der Befehl zum Beispiel malloc(32*sizeof(int)). So würde man dynamisch einen Buffer anlegen, in dem 32 Integers gespeichert werden können.
Man findet also normalerweise nicht irgendwie heraus, wie groß ein Buffer ist, man muss es sich merken.

Zitat:
Ist die STL stack overflow sicher?
Das kann dir keiner zu 100% garantieren, aber du kannst davon ausgehen.
Viele Menschen überprüfen ihre Programme auf solche Fehler und noch viel mehr verwenden die STL, also sollte ein Fehler dort schnell auffallen.

Zu deinem Code: BOOL wird AFAIK in der windows.h definiert. Hast du die vor der Verwendung von BOOL eingebunden? Ohne deinen kompletten Code zu sehen kann ich dir da kaum weiterhelfen.
Eydeet ist offline   Mit Zitat antworten
Alt 11.04.09, 16:53   #7 (permalink)
Member of Honour
 
Benutzerbild von xrayn
 
Registriert seit: 05.03.08
xrayn Leistung: Pentium IIIxrayn Leistung: Pentium IIIxrayn Leistung: Pentium IIIxrayn Leistung: Pentium IIIxrayn Leistung: Pentium III
Likes: 185
Standard

Es heißt BOOLEAN.
xrayn ist offline   Mit Zitat antworten
Alt 11.04.09, 16:59   #8 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von xrayn
Es heißt BOOLEAN.
http://doc.ddart.net/msdn/header/include/windef.h.html
Zitat:
typedef int BOOL;
BOOLEAN gibts jedoch auch, ist aber als byte definiert. Die meisten API-Funktionen nutzen jedoch BOOL.
Lesco ist offline   Mit Zitat antworten
Alt 14.04.09, 02:20   #9 (permalink)
Themenstarter
 
Registriert seit: 10.01.08
Schurke Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Das gibt man in der Regel der beim allokieren an. Unter C wäre der Befehl zum Beispiel malloc(32*sizeof(int)). So würde man dynamisch einen Buffer anlegen, in dem 32 Integers gespeichert werden können.
Man findet also normalerweise nicht irgendwie heraus, wie groß ein Buffer ist, man muss es sich merken.
ich meinte das jetzt eher aus der sicht dessen der diese schwachstellen sucht, aber wie macht man das bei statischen variabeln? Das man bei malloc nach der verlinkung auf diese Funktion suchen könnte wäre für mich ja logisch, aber wie man das sonst bei normalen variabeln machen soll die eben nicht im heap sind ist mir schleierhaft.

( langsam wird offtopic.. aber das ist so interessant <3, kennt ihr was zu lesen dazu ? )
Schurke ist offline   Mit Zitat antworten
Alt 14.04.09, 12:29   #10 (permalink)
Senior Member
 
Benutzerbild von sw33tlull4by
 
Registriert seit: 12.06.07
sw33tlull4by Leistung: Facit NTK
Likes: 0
Standard

Such im Netz mal nach dem "The Shellcoders Handbook".
Habs selbst noch nicht gelesen wurde mir aber von vielen Leuten empfohlen.

Als weiteres Stichwort kannst du auch mal nach sg Fuzzern suchen.

Bei Variablen die nicht auf dem Heap liegen macht man das folgendermassen:
man schaut sich an wo auf dem Stack sie liegen, und hofft das man mittels einer Methode auf diese Variable schreibend zugreifen darf und deine Eingabe nicht ueberprueft wird.
Anschliessend schiebst du soviel Muell in die Variable bis du zur gespeicherten Ruecksprungadresse gelangst.
Diese ueberschreibst du dann mit bestimmten werden, zB der adresse wo dein Programm liegt.
Wenn das Programm sich dann beenden will, springt es nicht an den Punkt von wo aus es aufgerufen wurde sondern fuehrt deinen Code das.
BTWas was ich gerade genannt habe ist der Stack Overflow.

mfg
sw33t
__________________
Nur die Schwachen klammern sich an die Moral.

Kill my daemons and my angels will follow them.
sw33tlull4by ist offline   Mit Zitat antworten
Alt 16.04.09, 21:22   #11 (permalink)
Themenstarter
 
Registriert seit: 10.01.08
Schurke Leistung: Facit NTK
Likes: 0
Standard

soweit hatte ich es auch verstanden, was bei mir verwirrung auslöst war die tastsache, wie finde ich die exakte anzahl an zeichen herraus die ich reinwerfen muss bevor ich zur speicherzelle der rücksprungadresse gelange, sprich: wie finde ich die puffergröße herraus?
Schurke ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Security Area » (In)security allgemein » Whitepaper verstehen ^^''
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Alte Whitepaper etc. AcoQ (In)security allgemein 3 23.02.08 01:39
Registry verstehen Hirnbreaker (In)security allgemein 3 28.08.05 08:48
Will Zip Verschlüsselung verstehen augures Cryptography & Encryption 0 17.06.05 10:37
AACS Whitepaper ? silenced Cryptography & Encryption 0 15.04.05 16:21
Wer hilft mir Linux zu verstehen & ... HighTower Linux/UNIX 4 08.08.04 10:00


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61