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

Ubuntu MiTM Router

Σε συνέχεια άρθρου που φιλοξενούμε στο τεύχος 020 του deltaHacker, δείχνουμε τώρα πώς φτιάχνουμε έναν Ubuntu Server router με το mitmproxy εγκατεστημένο και το transparent proxying ενεργοποιημένο. Ένα τέτοιο setup είναι ικανό για δυναμικό decryption των συνδέσεων HTTPS, όλων των μηχανημάτων που χρησιμοποιούν τον router.

Ως προαπαιτούμενο για τη συνέχεια θεωρούμε το σχετικό άρθρο στο deltaHacker 020, στο οποίο εξηγούμε αναλυτικά πώς επιτυγχάνεται το HTTPS decryption σε επίπεδο proxy κι ακολούθως κάνουμε και μια σχετική επίδειξη, με τη βοήθεια του εργαλείου mitmproxy. Στην εν λόγω επίδειξη, ο proxy είναι δηλωμένος χειροκίνητα (explicitly) στον web browser ενός μόνο θύματος.

Στο άρθρο που τώρα διαβάζετε πηγαίνουμε ένα βήμα παραπέρα και δείχνουμε πώς πραγματοποιείται το HTTPS decryption --πάντα από το mitmproxy-- χωρίς η διεύθυνση και το port του proxy να έχουν δηλωθεί σε κάποιον browser. Η αποκρυπτογράφηση του HTTPS γίνεται σιωπηρά στον router του τοπικού δικτύου κι αφορά σε όλα τα μηχανήματα πίσω του, αρκεί βέβαια στα guest OSes ή/και στους web browsers αυτών να 'ναι εγκατεστημένο το root CA του mitmproxy. Κάτι παρόμοιο είναι πολύ πιθανό να συμβαίνει σε χώρους εργασίας, βιβλιοθήκες, εργαστήρια κι αλλού. Στην αγορά μάλιστα κυκλοφορούν εμπορικές συσκευές με δυνατότητες HTTPS decryption (βλ., π.χ., τους proxies της Blue Coat). Η αποκρυπτογράφηση του HTTPS traffic συνήθως δικαιολογείται με αναφορές σε ζητήματα ασφαλείας, όπως, π.χ., ανίχνευση κακόβουλου λογισμικού στο επίπεδο του router/gateway, εντοπισμός ευαίσθητων εγγράφων που δεν επιτρέπεται να βγουν εκτός εταιρείας κ.ο.κ.

Όποιος κι αν είναι ο πραγματικός λόγος, το ηθικό δίδαγμα παραμένει το ίδιο: Σε ορισμένες περιπτώσεις *δεν* δικαιούμαστε να έχουμε τυφλή εμπιστοσύνη στις συνδέσεις HTTPS. Σκεφτείτε μάλιστα ότι ο διαχειριστής ενός *οποιουδήποτε* LAN είναι σε θέση να λειτουργεί έναν router με δυνατότητες HTTPS decryption, χωρίς να ξοδέψει ούτε ένα ευρώ. Δείτε στη συνέχεια πώς.

Το εργαστήριο
Στο υπόλοιπο του άρθρου εργαζόμαστε στο πλαίσιο ενός εικονικού δικτύου, αποτελούμενου από VirtualBox VMs. Στον ρόλο του router για το δίκτυο είναι ένα Ubuntu Server VM, το οποίο επιπρόσθετα παρέχει υπηρεσίες DHCP σε άλλες εικονικές μηχανές. Την ίδια στιγμή έχει ρυθμισμένο το λεγόμενο transparent proxying, ούτως ώστε το HTTP/HTTPS traffic από τα VMs να διέρχεται μέσα από το mitmproxy. Ακολουθούν τα βασικά χαρακτηριστικά του VM μας.

Base Memory:		384MB
Processors:			2
Video Memory:		9ΜΒ
Storage:			32GB, VDI, dynamically allocated
Audio:				Disabled
Network Adapter 1:	Bridged Adapter
Network Adapter 2:	Host-only Adapter
============================================================
Guest OS:			Ubuntu Server 12.04.2 32bit
Host OS:			Windows 7 Premium 64bit

Ο bridged adapter είναι αυτός που βλέπει τον φυσικό router του αληθινού δικτύου, μέσα στο οποίο βρίσκεται το εικονικό. Ουσιαστικά, είναι το WAN interface του router μας. Τον δε host-only adapter βλέπουν τα VMs που βγαίνουν στον έξω κόσμο, μέσω του εικονικού router. Είναι, δηλαδή, το LAN interface του router μας.

Η απλή τοπολογία του απλού εργαστηρίου μας :)

Αν δουλέψετε κι εσείς σε εικονικό περιβάλλον, κατά τον ορισμό των δύο network adapters σας προτείνουμε να κάνετε ένα κλικ στην επιλογή Advanced του καθενός, και να ορίσετε από ένα διαφορετικό Adapter Type. Στον Ubuntu Server, αμφότερες οι κάρτες δικτύου θα φαίνονται να προέρχονται από τον ίδιο κατασκευαστή (Intel), οπότε είναι καλή ιδέα να αναγνωρίζονται ως διαφορετικά μοντέλα. Έτσι, στις περιπτώσεις που χρειάζεται θα είναι πολύ εύκολο να ξεχωρίζετε τον bridged από τον host-only adapter.

Και οι δύο network adapters του VM, για το guest OS θα προέρχονται από τον ίδιο κατασκευαστή (Intel). Ορίζοντας διαφορετικό Adapter Type για τον καθένα, ουσιαστικά λέμε στο VirtualBox ότι πρόκειται για δύο διαφορετικά μοντέλα. Έτσι, μέσα από το guest OS θα είναι εύκολο να βλέπουμε ποιος είναι ποιος -- εν προκειμένω ποιος είναι ο bridged και ποιος ο host-only.

Εγκατάσταση Ubuntu Server
Ένα ISO image της εκδοχής 32bit του Ubuntu Server 12.04.2 μπορείτε να κατεβάσετε από αυτή τη σελίδα. Εμείς, π.χ., πήραμε αυτό το torrent και κατεβάσαμε το ISO μας. Με το αρχείο ISO αντιστοιχισμένο στην κατάλληλη συσκευή της εικονικής μηχανής, ξεκινάμε την εγκατάσταση. Η διαδικασία είναι τυπική, χωρίς εκπλήξεις. Λίγα μόνο σημεία αξίζουν της προσοχής μας. Δείτε τα screenshots που ακολουθούν και διαβάστε τις αντίστοιχες περιγραφές.




Μετά την ολοκλήρωση της εγκατάστασης επανεκκινούμε το VM και κάνουμε για πρώτη φορά login στο λειτουργικό. Πριν οτιδήποτε άλλο, αξίζει να το ενημερώσουμε με τα πλέον πρόσφατα security updates ή/και bug fixes:

sub0@mitmrouter:~$ sudo apt-get update

(Θα ζητηθεί το password του χρήστη -- εν προκειμένω του sub0.)

sub0@mitmrouter:~$ sudo apt-get dist-upgrade

Αφού γίνει κι αυτό επανεκκινούμε το VM, διότι μόλις ενημερώθηκε *και* ο πυρήνας.

Το Ubuntu Server ως router
Αν δώσουμε την εντολή ifconfig -a, ρυθμισμένο θα δούμε ένα μόνο Ethernet interface. Ουσιαστικά, πρόκειται για τον virtual adapter που είναι bridged με τον αληθινό adapter του host computer. Όπως βλέπετε, για εμάς το εν λόγω interface είναι το eth1:

sub0@mitmrouter:~$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:da:97:05  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth1      Link encap:Ethernet  HWaddr 08:00:27:17:94:80  
          inet addr:10.20.30.102  Bcast:10.20.30.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe17:9480/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:365 errors:0 dropped:0 overruns:0 frame:0
          TX packets:190 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:39786 (39.7 KB)  TX bytes:25654 (25.6 KB)
...

Πρέπει τώρα να ρυθμίσουμε και το interface eth0, δηλαδή τον host-only virtual adapter. Για τη δική μας εγκατάσταση του VirtualBox, ο εν λόγω adapter πρέπει να πάρει IP από το δίκτυο 192.168.99.0/24. Δείτε τι ισχύει με το δικό σας VirtualBox, ακολουθώντας τη διαδρομή File --> Preferences --> Network. (Επιλέξτε τον host-only adapter και κάντε κλικ πάνω στο εικονίδιο με το κατσαβίδι.)

Με δικαιώματα υπερχρήστη ανοίγουμε το αρχείο /etc/network/interfaces, π.χ., με τη βοήθεια του nano:

sub0@mitmrouter:~$ sudo nano /etc/network/interfaces 

Παρατηρούμε ότι περιλαμβάνει το ακόλουθο τμήμα:

# The primary network interface
auto eth1
iface eth1 inet dhcp

Όπως γίνεται φανερό, πρόκειται για τον bridged adapter (eth1). Ο installer του Ubuntu Server τον ρύθμισε έτσι ώστε να παίρνει δυναμικά διεύθυνση IP. Δεν έχουμε κανένα θέμα μ' αυτό. Κάτω από το συγκεκριμένο τμήμα αφήνουμε μια κενή γραμμή και προσθέτουμε άλλο ένα:

auto eth0
iface eth0 inet static
	address		192.168.99.1
	netmask		255.255.255.0
	network		192.168.99.0
	broadcast	192.168.99.255

Προφανώς, για τον host-only adapter (eth0) θέλουμε στατική διεύθυνση κι εμείς ορίσαμε την 192.168.99.1. Αυτή θα είναι και η διεύθυνση IP του router, για όλα τα VMs πίσω από το Ubuntu VM. Περιττό να πούμε ότι για τα address, netmask και broadcast, θα κάνετε τις κατάλληλες τροποποιήσεις ώστε οι διευθύνσεις να είναι ταιριαστές στο δικό σας δίκτυο.

Αποθηκεύουμε τις αλλαγές με [CTRL+O] κι [Enter]. Εγκαταλείπουμε το nano με [CTRL+X] κι επανεκκινούμε το υποσύστημα δικτύωσης ως εξής:

sub0@mitmrouter:~$ sudo /etc/init.d/networking restart

Τώρα, επειδή θέλουμε το Ubuntu VM να συμπεριφέρεται ως router, είναι απαραίτητο να ενεργοποιήσουμε το λεγόμενο IP forwarding μεταξύ των network interfaces. Με δικαιώματα root ανοίγουμε το αρχείο /etc/sysctl.conf

sub0@mitmrouter:~$ sudo nano /etc/sysctl.conf 

εντοπίζουμε το τμήμα

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

και κάνουμε αυτό που λέει το σχόλιο, δηλαδή αφαιρούμε το # από τη γραμμή από κάτω, ώστε να είναι έτσι:

net.ipv4.ip_forward=1

Πλέον το IP forwarding θα ενεργοποιείται αυτόματα, κάθε φορά που θα εκκινεί το λειτουργικό. Αποθηκεύουμε την αλλαγή, εγκαταλείπουμε το nano και μόνο γι' αυτή τη φορά ενεργοποιούμε χειροκίνητα το IP forwarding, ώστε ν' αποφύγουμε το reboot:

sub0@mitmrouter:~$ sudo su
root@mitmrouter:/home/sub0# echo "1" > /proc/sys/net/ipv4/ip_forward 
root@mitmrouter:/home/sub0# exit

Μένει να ενεργοποιήσουμε και το NAT (Network Address Translation), αφού όλα τα μηχανήματα πίσω από τον router θα βγαίνουν στον έξω κόσμο με το δημόσιο IP του τελευταίου (μ' άλλα λόγια, με το IP που αντιστοιχεί στον bridged adapter ή ακριβέστερα στο WAN interface). Για το παράδειγμά μας, ο bridged adapter είναι το eth1 interface και το IP του είναι 10.20.30.102. Πληκτρολογήστε ifconfig για να δείτε τι ισχύει στη δική σας περίπτωση. Το NAT ενεργοποιείται μέσω του iptables, πληκτρολογώντας κάτι τέτοιο:

sub0@mitmrouter:~$ sudo iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 10.20.30.102

Επειδή το Ubuntu είναι ρυθμισμένο ώστε να ζητά δυναμικά IP για το eth1, η διεύθυνση 10.20.30.102 είναι πιθανό ν' αλλάξει. Λίγο αργότερα θα δούμε τι μπορούμε να κάνουμε ώστε, στην περίπτωση που το IP του eth1 πράγματι αλλάξει, να μη χρειαστεί να ορίσουμε νέο κανόνα για το iptables.

Στο λειτουργικό σύστημα ενός μηχανήματος πίσω από τον Ubuntu-based router, έχουμε ρυθμίσει χειροκίνητα τα της δικτύωσης (1) και βγαίνουμε κανονικά στον έξω κόσμο (2). Ο router λειτουργεί όπως πρέπει ωστόσο του λείπει ένας DHCP server, προκειμένου η ρύθμιση της δικτύωσης των clients να γίνεται *και* αυτόματα.

Εγκατάσταση DHCP server
Όπως είναι ρυθμισμένο μέχρι στιγμής το Ubuntu λειτουργεί ως router, για όλα τα VMs πίσω από το LAN interface. Του λείπει όμως κάτι που έχει ακόμη κι ο πιο φθηνός ADSL router: ένας DHCP server, ώστε να μοιράζει αυτόματα διευθύνσεις IP στους πελάτες. Ας του δώσουμε έναν:

sub0@mitmrouter:~$ sudo apt-get install isc-dhcp-server

Μετονομάζουμε το υπόδειγμα του αρχείου ρυθμίσεων που μόλις εγκαταστάθηκε

sub0@mitmrouter:~$ sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.ORIG

και στη θέση του δημιουργούμε ένα άλλο, με το ίδιο όνομα:

sub0@mitmrouter:~$ sudo nano /etc/dhcp/dhcpd.conf

Παρατηρήστε ότι όχι μόνο το δημιουργήσαμε, αλλά ταυτόχρονα το ανοίξαμε με το nano και τώρα φροντίζουμε ώστε να έχει τα ακόλουθα περιεχόμενα:

ddns-update-style none;

option domain-name "parabing.com";
option domain-name-servers 10.20.30.1;

default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

subnet 192.168.99.0 netmask 255.255.255.0 {
        range 192.168.99.100 192.168.99.200;
        option routers 192.168.99.1;
        }

Βεβαίως, στην περίπτωσή σας οφείλετε να κάνετε αλλαγές για το domain name, τους domain name servers (αν είναι πάνω από ένας χωρίζονται μεταξύ τους με κόμματα), το subnet, το range και φυσικά το IP του router (θα είναι ίδιο με το IP του LAN interface). Αφού αποθηκεύσουμε τις αλλαγές επανεκκινούμε τον DHCP server (μετά την εγκατάστασή του ενεργοποιήθηκε αυτομάτως) ως εξής:

sub0@mitmrouter:~$ sudo restart isc-dhcp-server

Αυτό ήταν. Πλέον, όλα τα VMs πίσω από το Ubuntu Server VM μπορούν και παίρνουν δυναμικά τα IP τους, ξέρουν τη διεύθυνση του router, ενημερώνονται για τον διαθέσιμο DNS server και φυσικά βγαίνουν στο Internet.

Εγκατάσταση κι εκτέλεση του mitmproxy
Ξεκινάμε με την εγκατάσταση ορισμένων βασικών πακέτων:

sub0@mitmrouter:~$ sudo apt-get install python-dev python-pip python-lxml gcc

Συνεχίζουμε με την εγκατάσταση του ίδιου του mitmproxy:

sub0@mitmrouter:~$ pip install mitmproxy

Μετά την ολοκλήρωση της διαδικασίας μπορούμε να τρέξουμε το mitmproxy σε transparent mode, ως εξής:

sub0@mitmrouter:~$ mitmproxy -T --host

(Γενικά, είναι καλή ιδέα να το τρέχουμε μέσα σ' ένα δικό του screen session, το οποίο και θα είναι detached.)

Transparent proxying
Θα παρατηρήσετε ότι δεν συμβαίνουν και πολλά, στο πρακτικά άδειο παράθυρο του mitmproxy. Λογικό, αφού δεν έχουμε ενεργοποιήσει ακόμα το transparent proxying. Αυτό αλλάζει εύκολα, με δύο πολύ απλούς κανόνες για το iptables:

sub0@mitmrouter:~$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sub0@mitmrouter:~$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080

Συγχαρητήρια! Πλέον, το HTTP/HTTPS traffic όλων των VMs πίσω από τον Ubuntu-based router, περνάει μέσα από το mitmproxy.

Η ώρα των δοκιμών
Τα πιστοποιητικά που φτιάχνει και χρησιμοποιεί το mitmproxy, εξ ορισμού βρίσκονται στον κατάλογο ονόματι ~/.mitmproxy. Εγκαταστήστε ένα κατάλληλο πιστοποιητικό στον web browser ή στο guest OS ενός VM πίσω από τον router. Για παράδειγμα, σε ένα VM με guest OS τα Windows 7, εγκαταστήστε το mitmproxy-ca-cert.p12 στο λειτουργικό, ώστε να το χρησιμοποιεί ο Internet Explorer. Αν προτιμάτε την περιήγηση από Firefox, ανεξαρτήτως λειτουργικού προσθέστε στον Firefox το πιστοποιητικό mitmproxy-ca-cert.pem.

Εγκαθιστούμε το πιστοποιητικό του mitmproxy στα Windows 7, ώστε να το χρησιμοποιεί *αδιαμαρτύρητα* ο Internet Explorer. Παρατηρήστε ότι, σε περιπτώσεις όπως αυτή που τώρα εξετάζουμε, βολεύει να μην κρύβουμε τις καταλήξεις αρχείων στα Windows (1). Το αρχείο που θέλουμε λοιπόν είναι το mitmproxy-ca-cert.p12 (2) και με (διπλό) κλικ πάνω του ενεργοποιείται ο οδηγός εισαγωγής πιστοποιητικού. Η διαδικασία είναι απλή, αλλά χρειάζεται λίγη προσοχή ώστε το πιστοποιητικό να ενταχθεί στο σύνολο των έμπιστων root CAs (3). Στον υπολογιστή που χρησιμοποιείτε στο γραφείο, η συγκεκριμένη διαδικασία είναι πιθανό να έχει ήδη γίνει πριν από εσάς, για 'σας. Περιττό τέλος να σημειώσουμε ότι από το λογαριασμό σας πιθανώς δεν θα επιτρέπεται η διαγραφή πιστοποιητικών.

Ακολούθως, περιηγηθείτε σε sites που υποστηρίζουν HTTPS. Δοκιμάστε να κάνετε login. Στο παράθυρο του mitmproxy, εκεί που φαίνονται οι λεγόμενες ροές (flows), έχετε το νου σας για POST requests. Μετακινούμενοι με τα βελάκια του δρομέα, πηγαίνετε πάνω από εκείνα που αφορούν σε logins και πατήστε [Enter]. Δεν χρειάζεται να σας πούμε για το τι μπορείτε να περιμένετε :)

Όση ώρα το mitmproxy τρέχει, πατήστε τον συνδυασμό πλήκτρων [SHIFT+?] για χρήσιμα keyboard shortcuts που αφορούν στις δυνατότητές του. Θα δείτε, π.χ., ότι τις ροές έχετε τη δυνατότητα να τις αποθηκεύετε σε αρχείο, το οποίο αργότερα θα ανοίγετε είτε με το ίδιο το mitmproxy (παράμετρος -r) είτε με το εργαλείο mitmdump (ξανά παράμετρος -r). Φυσικά, το αρχείο ή τα αρχεία με τις ροές μπορείτε να τα μεταφέρετε σε άλλον υπολογιστή και να τα εξετάζετε εκεί, με την ησυχία σας, όποτε σας βολεύει.

Τέλος, να πούμε αντί για το mitmproxy μπορείτε, εναλλακτικά, να χρησιμοποιείτε το mitmdump. Για παράδειγμα, σε ένα screen τρέξτε το πρόγραμμα κάπως έτσι:

sub0@mitmrouter:~$ mitmdump -T --host -w FLOWS

Αργότερα, το αρχείο FLOWS θα το ανοίξετε μέσα από το mitmproxy ως εξής:

sub0@mitmrouter:~$ mitmdump -r FLOWS

Χρήστης υπολογιστή πίσω από τον router με το mitmproxy επιχειρεί να συνδεθεί στο λογαριασμό του στο LinkedIn -- εννοείται μέσω του ασφαλούς HTTPS. Κάτι όμως δεν πληκτρολόγησε σωστά, και τώρα το σύστημα του εμφανίζει CAPTCHA. Όπως και να 'χει, στο επίπεδο του router το username και το password έχουν καταγραφεί. Δεν είναι τα μόνα στοιχεία που καταγράφονται, περιττό να σημειώσουμε.

Αυτοματοποίηση
Προηγουμένως ενεργοποιήσαμε το NAT για το WAN interface, όμως η αλλαγή αυτή δεν είναι μόνιμη: Μετά από reboot δεν θα ισχύει και θα πρέπει να δώσουμε ξανά τον αντίστοιχο κανόνα για το iptables. Το ίδιο ισχύει και για τους κανόνες που αφορούν στον transparent proxying. Ένας τρόπος προκειμένου να ισχύουν οι τρεις αυτοί κανόνες κατά την εκκίνηση του Ubuntu, είναι να τους προσθέσουμε στο αρχείο /etc/rc.local:

sub0@mitmrouter:~$ sudo nano /etc/rc.local

Πριν από την τελευταία γραμμή (exit 0), βάζουμε τις ακόλουθες τέσσερις:

WAN_IP_ADDR=`ifconfig eth1 | awk '/dr:/{gsub(/.*:/,"",$2);print$2}'`

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to $WAN_IP_ADDR
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080

Η πρώτη αποδίδει στη μεταβλητή WAN_IP_ADDR τη διεύθυνση IP που έχει το WAN interface, ενώ οι τρεις άλλες ενεργοποιούν τους απαραίτητους κανόνες για το iptables.

Αποθηκεύουμε τις αλλαγές και είμαστε έτοιμοι. Και μιας κι ασχοληθήκαμε αρκετά με το θέμα του Ubuntu σε ρόλο router, σας προτείνουμε να κάνετε το VM ασφαλέστερο επιτρέποντας, ενδεχομένως, την πρόσβαση σε συγκεκριμένες υπηρεσίες, όπως, π.χ., το SSH. Για οδηγό σ' αυτή σας την προσπάθεια μπορείτε να έχετε το άρθρο περί iptables, που δημοσιεύουμε στο τεύχος 014 του deltaHacker. Ίσως η ενασχόληση με το iptables να σας φαίνεται τώρα κάπως άσχετη με το κύριο θέμα του παρόντος άρθρου, σας υποσχόμαστε όμως ότι μόνο να κερδίσετε θα έχετε, αν τελικά βρείτε το κουράγιο κι ασχοληθείτε ;)

Μοιράσου το:

Google DiGG ReddIt LinkedIn Microsoft Live del.icio.us StumbleUpon RSS PDF Print

3 Responses to “Ubuntu MiTM Router”

  1. h.n.y | 09/06/2013 at 00:16

    Ωραίο άρθρο...πολύ πρακτικό θα ταίριαζε πολύ να γινόταν ένα ωραίο deltacast.

  2. lysp | 09/06/2013 at 16:20

    Καλησπέρα, διαβάζω τα άρθρα που βγαίνουν καθώς και το περιοδικό ειδικά τώρα με την διαθεσιμότητα της ηλεκτρονικής έκδοσης και χαίρομαι που υπάρχουν προσπάθειες τέτοιου είδους με σφραγίδα Ελληνικής προέλευσης.

    Προφανώς και το άρθρο δεν είναι "επιθετικής" φύσεως, μάλλον ενημερωτικής, καθώς το να μπορέσει κάποιος να στήσει router & proxy πόσω μάλλον και DHCP server για να διαμοιράσει leases με το route του mitmproxy θα έχουν κοκκινήσει όλα τα συστήματα ασφαλείας που τρέχει η εκάστοτε εταιρία/οργανισμός (ελπίζουμε τέλος πάντων). Για να μην μπούμε στην δυσκολία της διαδικασίας διαμοιρασμού ενός root certificate στα υποψήφια θύματα.

    Το DPI (deep packet inspection) και συγκεκριμένα το ζήτημα της παρακολούθησης SSL κίνησης μέσω τεχνικών MiTM δεν είναι κάτι καινούργιο και προσφέρεται από όλες λίγο πολύ τις Enterprise-grade λύσεις gateway/firewall. Το "πρόβλημα" όπως αναφέρεται, σχετικά με την ύπαρξη ενός root certificate στον υπολογιστή του "θύματος", λύνεται επειδή το ίδιο certificate χρησιμοποιείται και για τις κανονικές HTTPS συνδέσεις εντός του δικτύου άρα πολύ συχνά συμπεριλαμβάνεται στις pre-configured images που γίνονται deploy.

    Το ζήτημα τελικά όμως είναι πως το SSL/TLS δεν είναι insecure εκ φύσεως. Αυτό που δημιουργεί πρόβλημα στην αρχιτεκτονική του HTTPS είναι πως αφήνεται στην κρίση και την εμπιστοσύνη του χρήστη ποια certificate δέχεται να έχει εγκατεστημένα στον υπολογιστή του και όλοι ξέρουμε πως πάντα ο χρήστης είναι ο αδύναμος κρίκος.

    • subZraw | 09/06/2013 at 16:58

      Γεια χαρά -- κι ευχαριστούμε για τα καλά λόγια!

      Ο όρος "MiTM" στον τίτλο του άρθρου δεν έχει να κάνει με το στήσιμο κάποιου rogue router εντός ενός εταιρικού LAN. Πουθενά δεν λέμε κάτι τέτοιο.

      Απλά, αυτό που προσπαθούμε να αποδείξουμε είναι ότι σε ορισμένες περιπτώσεις δεν δικαιούμαστε να εμπιστευόμαστε τυφλά το HTTPS.

      Όχι επειδή δεν είναι ασφαλές, αλλά επειδή υπό προϋποθέσεις είναι δυνατόν να αποκρυπτογραφείται --πάντα σύμφωνα με τις προβλεπόμενες μεθόδους-- από κάποιον υπολογιστή πέραν εκείνου που επισκεπτόμαστε.

      Αν θυμάμαι καλά, κάτι παρόμοιο συνέβαινε με τη mobile εκδοχή του Opera browser. Σ' αυτή την περίπτωση, η δικαιολογία είχε να κάνει με το caching και τη βελτίωση της εμπειρίας χρήσης :)

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Google Site-Search

Πρόσφατα

  • Tabber

Σχόλια

Άρθρα

Θέματα

Αρχείο