PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unauffindbar backdoor auf EP datei



mx1238
18.03.2018, 12:59
Hallo , erste , meine deutsch nicht so gut ist , zweite mein IT Kenntnisse sehr einfach ist (ich lerne selbst..), .

so , bin ich seit zwei tage die versuche diese Übung (https://haiderm.com/fully-undetectable-backdooring-pe-file/)zu machen aber ohne Erfolg.... .

Meine Rechner ist ein x64 Bit , mein Host ist ein Linux und in VirtualBox have ein windows 7 .

Mit Lord PE , have ich add eine neu Abschnitt mit der Name "hello" gegeben , und habe 1000 Hex auf Virtual size und Raw size angehaftet , wie auf die Beispiel stehe ...
dann , mit HxD Hex Editor habe 1000 Hex gegeben .
dann mit OllyDbg , wenn versuche sie zu öffnen bekomme dieser Warnung : Unable to start file.....

ich habe diese Probleme gelöst, mein Fehler war wie ich diesen Hexen mit HxD Editor angehaftet habe.....(sorry, aber das ist meine zweite mal der ich mit EP Datei arbeite..) .
Jetzt mein Probleme ist mit Hijack Execution Flow , der Author sagt "We copy the starting address of .hello section 0047E000" , aber wie ich auf dem Bild sehe , der .hello section , Anfang mit 004002C8 , kann jemand sage wo diese zahl kommt.....


kann Bitte jemand mir Hilfe um diese Probleme zu Lösung , danke !

mx1238
22.03.2018, 17:10
so , ich möchte glaube das er Fehler mit der Nummer gemacht hat ...... , In meine PEHeaders habe das (https://www.flickr.com/photos/140878160@N06/40063535215/in/dateposted-public/) , aber wenn ich drück auf PE header bekommen das (https://www.flickr.com/photos/140878160@N06/26084847007/in/dateposted-public/), dann mache ich was er sagt , und bekomme das (https://www.flickr.com/photos/140878160@N06/39147480790/in/dateposted-public/).ich denke das ich falsch add habe , aber ich weiss nicht wo.... , so , ich habe geschafft !, ich weiss wo die Nummer 0047E000 kommt.. sie kommt von der VirtualAdresse von "hello" , er hat nach die 004 die Fünf Ziffer von seiner VirtualAdresse gegeben....ich machen weiter...

gORDon_vdLg
22.03.2018, 18:23
4002a8 ist die Adresse im PE Header wo der Name ".hello" als Text steht. Dies ist nicht die Startadresse der Section. In LordPE siehst du in der Section Table unter VOffset den Wert 0007E000, das addierst du zur ImageBase 00400000 (Sieht man in LordPE im 1. Fenster). Addiert ergibt das 0047E000 und dies ist die virtuelle Startadresse deiner Section wie du sie im Ollydbg findest (STRG+G) wo du den Shellcode einfügen musst.

mx1238
22.03.2018, 18:59
Erste viele Dank für deine Antwortet ! , in meine LordPE ich habe keine 0047E000 sonder 63000 (https://www.flickr.com/photos/140878160@N06/27087240008/in/dateposted-public/) , beim 1, Fenster ich sehe keine 00400000 .. sorry... jetzt habe ich ganz oben auf meine Fenster die 00400000 gesehen...... , hast du Lust um mir zu Hilfe ?....ich bin ganz neu mit diesen Sachen ....

gORDon_vdLg
22.03.2018, 19:13
https://free-hack.com/attachment.php?attachmentid=446&d=1521745649
Hier einmal ein Beispiel wo die ImageBase zu sehen ist. Diese Adresse kann bei dir eine andere sein, nimm den Wert der bei dir steht. 63000 kommt bei dir dadruch zu stande weil die letzte Section (.rsrc) vor deiner (.hello) das VOffset 58000 hat und als VSize AA78. AA78 wird aufgerundet zu B000 (Sections sind im Speicher immer ein vielfaches von 0x1000), wenn du 0x58000 + 0xB000 rechnest ergibt sich 0x63000 womit deine neue Section sich im Speicher direkt hinter der letzten alten Section befindet.

mx1238
22.03.2018, 19:48
Jetzt bin hier (https://www.flickr.com/photos/140878160@N06/39149393260/in/dateposted-public/) , wie bekomme das Fenster wo ich die Hex Nummer einfügen soll ? wie auf dem Fenster Added shellcode at the start of .hello section . Mit Msfvenom habe keine Hex (x83\...) Nummer bekommen sonder, fce8820000006089e531c0648...... Vielleicht habe ich bekomme weil ich ein Rechner x64 Bits habe ??

gORDon_vdLg
22.03.2018, 20:32
Das ist richtig, auf dem Bild siehst du PUSHAD / PUSHFD welches du selbst einfügen musst, danach ab dem CLD siehst du auf der linken Seite FC E8 820000... genau das was du gepostet hast. Nur die ersten beiden Instruktionen sind anders weil die selbst eingefügt werden. Nachdem du den Shellcode eingefügt hast musst du das in umgekehrter Reihenfolge wieder einfügen, das ist das was in dem Artikel beschrieben wird:


PUSHAD
PUSHFD
Shellcode....
POPFD
POPAD
Restore Execution Flow...

mx1238
23.03.2018, 13:39
hallo , Entschuldigung warum ich dir frage noch...., so meine Probleme , so , ich habe PUSHAD / PUSHFD mit Assemble Eingefügen ...., habe gleich mit CLD gemacht , aber auf der linken Seite ich sehe (https://www.flickr.com/photos/140878160@N06/40076986125/in/dateposted-public/) 00463002 FC......

gORDon_vdLg
23.03.2018, 14:30
Das sollst du da ja auch selbst eintragen.

mx1238
23.03.2018, 14:51
Wenn ich in Assemble schreibe CLD E8 820000 , sagst; Unknown Identifier , sorryyyyyyy , ich habe Falsch verstandet mit AB dem CLD , Vielleicht ist nach CLD ?..... , sorry ist AB...:redface: . Beim Dritte Spaltung Rechte Maus + Binary + Edit , dann habe meine Codec von Msfvenom Eingefügen ...

Was meinst mit....Restore Execution Flow ? , er meist das ich Ausführung Wiederstellen werde , aber was meinst mit das ??

Bei Speichen habe auch Probleme ...wenn ich gebe Rechte Maus + copy to executable , bekomme nur Selection , nicht All Changes .Deshalb kann nur Speichen eine Adresse......ich habe eine Lösung gefunden:confused: , ich habe mit dem Maus alles auswählen , dann wenn das andere Fenster geöffnet hat , habe alles dort ....

Aber als ich wieder Öffnet der 7zFMAddedSectionHijacked.exe Datei , kann nicht finde , At the end of the shellcode we see an opcode CALL EBP which terminates the execution of the program after shellcode is executed

gORDon_vdLg
24.03.2018, 12:33
Was meinst mit....Restore Execution Flow ? , er meist das ich Ausführung Wiederstellen werde , aber was meinst mit das ??

Du hast am Einstiegspunkt des Programms einen Jump zu deinem Shellcode eingefügt, dieser Jump ist fünf Byte lang. Die Instruktionen welche dadruch überschrieben werden müssen am Ende des Shellcodes wieder eingefügt werden und dann ein Jump zurück hinter den Jump am Einstiegspunkt damit das Programm weiter laufen kann.


Ob das Call EBP da ist weiß ich nicht, poste mal den Shellcode.

mx1238
24.03.2018, 12:44
Sorry die ich nicht Frühe die Bilder nicht geschickt , aber die zweite Seite habe nicht gesehen..... , Erste (https://www.flickr.com/photos/140878160@N06/40276566364/in/dateposted-public/) Bild , wo ich meine Codec Anfang , Zweite (https://www.flickr.com/photos/140878160@N06/40985701441/in/dateposted-public/) Bild , wo meine Codec Ende...

gORDon_vdLg
24.03.2018, 13:18
4630F7 CALL DWORD PTR DS:[EBX]
Hier ist ein CALL EBX, vielleicht hat er sich verschrieben, setze darauf mal einen Breakpoint, lass dann das Programm laufen und gucke was in EBX steht.

Und vertausche bitte mal das POPFD mit dem POPAD, das hat der im Tutorial falsch geschrieben, ich auch weil ich Copy/Paste benutzt habe ;) Aber das muss immer in umgekehrter Reihenfolge wie PUSHAD und PUSHFD passieren. PUSHAD kopiert alle Register auf den Stack und POPAD kopiert sie zurück. PUSHFD/POPFD macht das gleiche mit den Flags. Ich habe das mal in meinem alten Post korrigiert.

mx1238
24.03.2018, 14:00
so , ich have alles neue gemacht , ich have wie ich glaube dir Verstand habe.... , Dieses mal habe Anfang (https://www.flickr.com/photos/140878160@N06/40945105602/in/dateposted-public/) nur PUSHFD gegeben und an Ende (https://www.flickr.com/photos/140878160@N06/26116199297/in/dateposted-public/) nur POPFD , und wie das Bild zeigt , habe die CALL EBP bekommen , aber wenn versuche sie zu Speichen , Rechte Maus + copy to executable , bekomme nur Selection...., so habe gemacht wie Früher , ich habe mit dem Maus alles auswählen , dann wenn das andere Fenster geöffnet (https://www.flickr.com/photos/140878160@N06/40277794804/in/dateposted-public/)hat , habe es gespeicher ....

gORDon_vdLg
24.03.2018, 16:17
Du brauchst schon PUSHAD und PUSHFD, wichtig ist nur dass dann am Ende POPFD und PUSHAD in umgekehrter Reihenfolge steht.

Du hast diese zwei Möglichkeiten:

Entweder:
PUSHAD
PUSHFD
shellcode...
POPFD
POPAD

Oder so rum:
PUSHFD
PUSHAD
shellcode...
POPAD
POPFD

Weißt du was PUSH und POP machen?

mx1238
24.03.2018, 19:22
Weißt du was PUSH und POP machen?

Eine Stack ist wie einer Schichtenweise Sandwich , mit PUSH wird eine neue "Brot" Scheibe gelegt , und mit POP entfernt dieser Scheibe....

Meine einzige Stack Erfahrung habe mit dem Buch Penetration Testing: A Hands-On Introduction to Hacking von georgia Weidman gehabt...

Ich weiss warum du mir fragst....:) , hast du Recht , ich weiss das ich vielllll Lerne soll... ,Es gibt Menschen das Erste Anfang mit Theorie und dann mit Praxis , ich brauche Praxis um Theorie zu Lernen , aber am Besten Theorie und Praxis Gleichzeit ......


Zurück zu meine Probleme.... ich habe bemerke (https://www.flickr.com/photos/140878160@N06/27133592048/in/dateposted-public/) wenn ich der Codec von Msfvenom nicht umkehren , bekomme CALL EBP.....
Das Probleme ist das mit beiden bekomme keine DEC INC .......

ich habe bemerke das du x64dbg benutzt , meine Rechner ist ein x64 Bits , meine Host ein Linux wo ein Windows 7 64 Bits in VirtualBox installiert habe , ich arbeite mit Ollydbg die nur für 32 Bits ist , vielleicht kann der Grund sein , warum ich diese Ergebnis bekomme ?

mx1238
26.03.2018, 17:57
Kann jemand hilf mit diese Codec... , das Codec kommt vom Buch Penetration Testing: A Hands-On Introduction to Hacking von Georgia Weidman sie hast geschrieben so:


void overflowed() {
printf("%s\n", "Execution Hijacked");
}
void function1(char *str){
char buffer[5];
strcpy(buffer, str);
}
void main(int argc, char *argv[])
{
function1(argv[1]);
printf("%s\n", "Executed normally");
}

ich habe keine Ahnung über C , aber wie ich in Forums gelesen habe , man soll bei main eine int .

Sie hat so geschrieben : void main(int argc, char *argv[])

aber soll so : int main(int argc, char *argv[])

aber wenn schreibe so , bekomme auch Fehler....

Hemelinger
26.03.2018, 20:29
Wenn ich in Assemble schreibe CLD E8 820000 , sagst; Unknown Identifier , sorryyyyyyy , ich habe Falsch verstandet mit AB dem CLD , Vielleicht ist nach CLD ?..... , sorry ist AB...:redface: . Beim Dritte Spaltung Rechte Maus + Binary + Edit , dann habe meine Codec von Msfvenom Eingefügen ...

Was meinst mit....Restore Execution Flow ? , er meist das ich Ausführung Wiederstellen werde , aber was meinst mit das ??

Bei Speichen habe auch Probleme ...wenn ich gebe Rechte Maus + copy to executable , bekomme nur Selection , nicht All Changes .Deshalb kann nur Speichen eine Adresse......ich habe eine Lösung gefunden:confused: , ich habe mit dem Maus alles auswählen , dann wenn das andere Fenster geöffnet hat , habe alles dort ....

Aber als ich wieder Öffnet der 7zFMAddedSectionHijacked.exe Datei , kann nicht finde , At the end of the shellcode we see an opcode CALL EBP which terminates the execution of the program after shellcode is executed

Are you using a translator or something? Maybe you should try to post english if you are familiar with it. Most of the people here understand english better than auto translated text.

mx1238
28.03.2018, 15:43
Danke für deine Antwort! , ich benutze keine Translator...., mein Englisch ist noch schlimmer als meine deutsch... versuche wieder meine frage zu stellen .....
Entschuldigung warum habe nicht früher antwortet , aber ich soll arbeite....

ich habe das Code wie vom Buch (https://picload.org/image/daiicgoi/buch.png), und ich habe es so compile , gcc -g -fno-stack-protector -z execstack -o overflowtest overflowtest.c ,
mit , file overflowtest bekomme das:

overflowtest: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=b7a7b04fac85afb46312b97a86fe040bddff288f, not stripped



ich versuche diese Übung mit GDB zu machen , wenn ich schreibe break 14 , break 10 , break 11 , bekomme ein Hex die nur Drei Ziffer (https://img2.picload.org/image/daiilwiw/ziffer.png) , dann wenn schreibe run AAAA und x/16xw $esp , bekomme das (https://picload.org/image/daiicala/aaaa.png).....
Auch anstatt (https://stackoverflow.com/questions/12225171/difference-between-int-main-and-int-mainvoid) schreib void main(int argc, char *argv[]) , schreibe int main(int argc, char *argv[]) , bekomme das gleiche....

mx1238
28.03.2018, 18:53
Danke für deine Antwort! , ich benutze keine Translator...., mein Englisch ist noch schlimmer als meine deutsch... versuche wieder meine frage zu stellen .....
Entschuldigung warum habe nicht früher antwortet , aber ich soll arbeite....

ich habe das Code wie vom Buch (https://picload.org/image/daiicgoi/buch.png), und ich habe es so compile , gcc -g -fno-stack-protector -z execstack -o overflowtest overflowtest.c ,
mit , file overflowtest bekomme das:

overflowtest: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=b7a7b04fac85afb46312b97a86fe040bddff288f, not stripped



ich versuche eines Übung die auf dieses Buch (https://nostarch.com/pentesting)mit GDB zu machen , wenn ich schreibe break 14 , break 10 , break 11 , bekomme ein Hex die nur Drei Ziffer (https://img2.picload.org/image/daiilwiw/ziffer.png) , dann wenn schreibe run AAAA und x/16xw $esp , bekomme das (https://picload.org/image/daiicala/aaaa.png).....
Auch anstatt (https://stackoverflow.com/questions/12225171/difference-between-int-main-and-int-mainvoid) schreib void main(int argc, char *argv[]) , schreibe int main(int argc, char *argv[]) , bekomme das gleiche....

So, wie ich Verstehe , meine Probleme bekomme weil GDB für x86_64 Bits gedacht ist... und ich x64 habe.....
weil die Ausgabe für 32 Bits gedacht ist , habe dieses Probleme (https://picload.org/image/daiipodi/rsp.png) , aber wie hier (https://stackoverflow.com/questions/32262705/ubuntu-gdb-cant-access-memory-at-address-when-tryint-to-view-memory-at-esp) steht , anstatt esp ich soll rsp schreibe ....

Danke für eure hilfe

novedad
29.03.2018, 15:36
Kannst du mal den Code ordentlich formatieren? Es versteht eh schon kein Mensch was du hier willst, und so gleich gar nicht

mx1238
30.03.2018, 15:52
Kannst du mal den Code ordentlich formatieren?

Ja , meine Probleme war , das ich ein x64 Prozessor habe , und die GDB die auf meine Rechner installiert habe, ist für x86_64 Prozessor .... , aber ich habe die Lösung gefunden , wie ich sagte...

Ich weiss das Anfang auf meine Thema habe über anderes gefragt (https://haiderm.com/fully-undetectable-backdooring-pe-file/) , aber als mir Kenntnisse über Stack fehlt , versuche mehr über Stack lerne....

mx1238
01.04.2018, 14:19
Kann Bitte jemand Erklärt mit einfache Worten meine frage.....

so , ich habe dieses Programme (https://picload.org/image/dapdgppa/1.png) , die Nummer 1 , 2 , 3 die auf das Programme stehen sind die Break (https://picload.org/image/dapdripl/2.png) Punkten .Dann Start mit Debugger GDB , dann run AAAA und schreibe (https://picload.org/image/dapddldw/4.png)x/16xw $esp , und jetzt meine frage.....

was bedeuten was Hinten meine Memory Addresses sind ,

Diesen sind meine Memory Addresses von meine Vier A:

0xbf9bd650:
0xbf9bd660:
0xbf9bd670:
0xbf9bd660:

Aber was sind die Hinten kommen?


0xb76e6ff4 ......
0xb770a7b0 .............
0x08048470 ...........
0x00000002 ........

kann sein das diesen Hex von function1(argv[1]); kommen.....?



So, ich selbe Antworte meine fragen...https://free-hack.com/images/smilies/smile.png


Alle Erste Vier Ganz links , sind meine Memory Addresses , sie sind einziger und sie werden benutze durch CPU oder Geräten um Daten zu Verfolgen ..... .


Aber was sind die Hinten kommen? , Sie sind die Assoziativspeicher (https://de.wikipedia.org/wiki/Assoziativspeicher)

So , wo stehe meine function1(argv[1]); ?? , sie ist auf den Assoziativ speicher , sie wurden auf Hexe-Zählen gewechselt . Sie befinde sich auf den Memory Address (https://img2.picload.org/image/dapddldw/4.png) , 0xbffff500 , meine main Stack Frame ist , was Hinten von Memory Adress stehe , 0xb7ff07b0 0xbffff520 0xbffff578 .

Meine %esp ist 0xb7ff07b0 und meine %ebp ist 0xbffff578 , weil Stack start von niedriger nach Oben.....

aber eine Sache die ich nicht verstand ist , warum bekomme auf zweite Zeile .....soll nicht auf Erste Zeile sein ??


(gdb) x/16xw $esp
0xbffff4f0: 0xb7fccff4 0x08049ff4 0xbffff518 0x08048489
0xbffff500: 0xb7ff07b0 0xbffff520 0xbffff578 0xb7e84775
0xbffff510: 0x08048470 0x08048340 0xbffff578 0xb7e84775
0xbffff520: 0x00000002 0xbffff5a4 0xbffff5b0 0xb7fe0b40
(gdb) x/1xw $ebp
0xbffff508: 0xbffff578