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

Οπτικοποίηση επιθέσεων με το Kippo-Graph

Η χρήση των honeypots είναι σίγουρα ένα πολύ ενδιαφέρον πείραμα, το οποίο μάλιστα μπορείτε να πραγματοποιήσετε από την άνεση του ίδιου σας του σπιτιού. Είναι εξάλλου ιδιαίτερα βολικό όταν μπορείτε να επεξεργάζεστε και να οπτικοποιείτε τα πειραματικά δεδομένα με ευκολία. Στο άρθρο αυτό θα δούμε τη λειτουργία ενός προγράμματος που παίρνει όλα τα δεδομένα που καταγράφει το Kippo SSH honeypot και τα παρουσιάζει σε εύκολα κατανοητά αλλά και εξαιρετικά χρήσιμα γραφήματα.

Σημείωση: Θεωρούμε δεδομένη την παρουσία καθώς και την εύρυθμη λειτουργία του Kippo SSH Honeypot, με βάση όλα όσα περιγράφονται στο άρθρο που αρχίζει από τη σελίδα 78 του deltaHacker 006.

Λίγα λόγια για το Kippo-Graph
Το Kippo-Graph είναι ένα πρόγραμμα γραμμένο σε PHP, αποστολή του οποίου είναι να διαβάζει όλα τα στοιχεία της MySQL database του Kippo SSH Honeypot και να τα παρουσιάζει με κατανοητό τρόπο, μέσα από σχετικά διαγράμματα και πίνακες. Ας παρατηρηθεί ότι ο τομέας της οπτικοποίησης δικτυακών επιθέσεων τείνει να γίνει ένα ολοκληρωμένο αντικείμενο από μόνο του, οπότε ο τρόπος χρήσης του Kippo αποτέλεσε την έμπνευση για τη δημιουργία του Kippo-Graph. Ένα άλλο κίνητρο ήταν η όρεξη του γράφοντα και δημιουργού του Kippo-Graph για εκμάθηση διαφόρων εργαλείων προγραμματισμού — ικανή και αναγκαία συνθήκη για οποιαδήποτε εθελοντική προσπάθεια!

Καθώς γράφονται οι γραμμές αυτές η τρέχουσα έκδοση του Kippo-Graph είναι η 0.7, ενώ διορθώσεις και αναβαθμίσεις εμφανίζονται ανά τακτά χρονικά διαστήματα. Για τη λειτουργία του χρησιμοποιεί δύο Open Source βιβλιοθήκες: τη Libchart, για τη δημιουργία των διαγραμμάτων, καθώς και την QGoogleVisualizationAPI, για την ενσωμάτωση Google Maps. Χρησιμοποιεί επίσης και τη δωρεάν υπηρεσία εξαγωγής γεωγραφικών πληροφοριών του geoPlugin.com.

Στην παρούσα φάση το Kippo-Graph δημιουργεί συνολικά 24 διαφορετικά διαγράμματα και γραφήματα, με διάφορες πληροφορίες όπως:

– top 10 passwords που δοκιμάστηκαν
– top 10 usernames
– επιθέσεις ανά ημέρα
– επιτυχίες ανά ημέρα
– αριθμός συνδέσεων ανά IP
– βαθμός ανθρώπινης δραστηριότητας μέσα στο περιβάλλον του honeypot κ.ο.κ.

Αυτό είναι το πρώτο και βασικό κομμάτι του Kippo-Graph. Υπάρχουν άλλα δύο. Το δεύτερο είναι το component Kippo-Input, το οποίο παρουσιάζει πίνακες αποτελεσμάτων με εντολές που πληκτρολογήθηκαν μέσα στο honeypot, εμφανίζει όλα τα αρχεία που οι κακόβουλοι χρήστες κατέβασαν ενώ βρίσκονταν στο σύστημα, όλες τις εντολές apt-get, όλες τις passwd και άλλα σχετικά. Το τρίτο και τελευταίο κομμάτι είναι το component Kippo-Geo, το οποίο εμφανίζει γεωγραφικά δεδομένα για τους επιτιθέμενους, τα οποία και παρουσιάζει με χρήση πινάκων αλλά και χαρτών με τη βοήθεια της Google.

Προαπαιτούμενα και εγκατάσταση
Το Kippo-Graph μπορεί να εγκατασταθεί είτε στο μηχάνημα στο οποίο τρέχει το honeypot (προτείνεται) είτε σε οποιονδήποτε άλλον υπολογιστή, στον οποίο βέβαια θα πρέπει να μεταφέρετε κάθε φορά τη βάση δεδομένων του Kippo. Για τη συνέχεια θα εργαστούμε πάνω στο Ubuntu-based VM που στήσαμε στα πλαίσια του άρθρου πάνω στο Kippo, το οποίο δημοσιεύεται στο τεύχος 006 του deltaHacker.

Γενικά, για τη λειτουργία του Kippo-Graph σε περιβάλλον Linux απαιτούνται τουλάχιστον δύο πακέτα: Ένα για τη δυνατότητα της PHP να επεξεργάζεται εικόνες και ένα για την επικοινωνία της με βάσεις δεδομένων MySQL. Δουλεύοντας πάνω στο Kippo VM μας, ενσωματώνουμε τα δύο αυτά πακέτα στο σύστημα με τη βοήθεια της apt-get:

kippo@kippo:~$ sudo apt-get update
kippo@kippo:~$ sudo apt-get install -y php5-gd php5-mysql
kippo@kippo:~$ sudo /etc/init.d/apache2 restart

Σημείωση: Πιθανώς τα php5-gd και php5-mysql να είναι ήδη εγκατεστημένα στο Ubuntu Server, δεν βλάπτει όμως να δώσουμε τις παραπάνω εντολές. Σειρά τώρα έχουν η λήψη και η εγκατάσταση του Kippo-Graph. Ο δικτυακός τόπος του προγράμματος είναι στο BruteForce.gr. Από εκεί θα κατεβάσουμε την τελευταία έκδοση του Kippo-Graph. Το αρχείο θα είναι σε συμπιεσμένη μορφή και θα αποσυμπιέσουμε τα περιεχόμενά του στο DocumentRoot του web server μας:

kippo@kippo:~$ wget http://bruteforce.gr/wp-content/uploads/kippo-graph-0.7.tar
kippo@kippo:~$ sudo mv kippo-graph-0.7.tar /var/www/
kippo@kippo:~$ cd /var/www/
kippo@kippo:/var/www$ sudo tar xvf kippo-graph-0.7.tar --no-same-permissions
kippo@kippo:/var/www$ cd kippo-graph/
kippo@kippo:/var/www/kippo-graph$ sudo chmod 777 generated-graphs/

Τελικό και απαραίτητο βήμα είναι η επεξεργασία του αρχείου config.php, το οποίο βρίσκεται μέσα στον κατάλογο kippo-graph που μόλις δημιουργήθηκε. Στις γραμμές 12 έως 15 του αρχείου θα πρέπει να δώσετε τα σωστά στοιχεία σύνδεσης με τη βάση που θα χρησιμοποιεί το Kippo. Παράδειγμα:

define('DB_HOST', 'localhost');
define('DB_USER', 'kippo');
define('DB_PASS', 'honeypotpassword');
define('DB_NAME', 'kippo');

Για την επέμβαση στο config.php μπορείτε να χρησιμοποιήσετε τον text editor της επιλογής σας (vi, nano, κ.ά.). Αυτό ήταν. Το Kippo-Graph βρίσκεται πλέον στον κατάλογο /var/www/kippo-graph και για να το χρησιμοποιήσετε επισκεφτείτε μ’ έναν web browser τη διεύθυνση της μορφής http://IP-του-honeypot/kippo-graph.

Ας δούμε επομένως προς τι όλη αυτή η φασαρία :D (Σ.τ.Α. Αυτό ακούστηκε σαν “So let’s see what this brouhaha is all about”.) Ανοίγοντας για πρώτη φορά το Kippo-Graph, κάνουμε κλικ στο link που υπάρχει στην κεντρική σελίδα, αυτό με όνομα GENERATE_THE_KIPPO_GRAPHS(). Δημιουργούνται τότε τα βασικά διαγράμματα. Ας πάρουμε μια μικρή γεύση για το τι μπορείτε να δείτε. (Χρησιμοποιούμε τα δεδομένα ενός δικού μας honeypot το οποίο βρίσκεται Εκεί Έξω (TM) για μεγαλούτσικο χρονικό διάστημα.)




Πηγαίνοντας στη δεύτερη σελίδα, την Kippo-Input, βλέπουμε στοιχεία από τη δράση των κακόβουλων χρηστών *εντός* του συστήματος.



Η τρίτη σελίδα, η Kippo-Geo, εμφανίζει γεωγραφικές πληροφορίες για τους επιτιθέμενους.



Τέλος, στη σελίδα Gallery μπορούμε να δούμε το σύνολο των γραφημάτων συγκεντρωμένα. Φανταστείτε ότι, υπό κανονικές συνθήκες, για όλα τα παραπάνω θα έπρεπε να μελετήσετε το schema της βάσης δεδομένων του Kippo, να δημιουργήσετε τον κώδικα SQL και να τον γράψετε μέσα στην κονσόλα του MySQL server ή στην αντίστοιχη καρτέλα του PHPMyAdmin. Ακόμη και τότε, αυτό που θα παίρνατε ως επιστροφή θα ήταν απλά και μόνο κάποια αριθμητικά δεδομένα σε πίνακες SQL. Για γραφικά, γεωγραφικές πληροφορίες και παρακολούθηση της προέλευσης των επιθέσεων ούτε λόγος. Νομίζουμε, επομένως, πως η εγκατάσταση του Kippo-Graph άξιζε τον κόπο!

Κλείνοντας, αξίζει να αναφερθεί ότι το Kippo-Graph στηρίζεται στην κοινότητα που το χρησιμοποιεί. Το feedback, οι προτάσεις και οι διορθώσεις είναι πολύτιμες και πάντα ευπρόσδεκτες. Υπάρχουν εξάλλου ακόμη αρκετά πράγματα να γίνουν. Επομένως, μη διστάσετε να επικοινωνήσετε μαζί μας με μια επίσκεψη στο δικτυακό τόπο του Kippo-Graph, ώστε να καταθέσετε τις δικές σας προτάσεις ή έστω να πείτε ένα γεια!

14 Responses to “Οπτικοποίηση επιθέσεων με το Kippo-Graph”

  1. giwrg98 | 01/04/2012 at 17:49

    Όταν πάτησα generate kippo graph, μου έβγαλε:
    Error connecting to the database: Access denied for user ‘kippo’@’localhost’ (using password: YES)

    • giwrg98 | 01/04/2012 at 17:52

      Όταν όμως αλλάζω το config.php να κάνει log in με τον root μου εμφανίζει τη σελίδα αλλά καθόλου εικόνες…

  2. Ion | 01/04/2012 at 18:07

    Από τα παραπάνω αλλά και όσα έγραψες στην άλλη δημοσίευση είναι φως φανάρι ότι κάποιο πρόβλημα είχε η διαδικασία σωστής ρύθμισης της βάσης δεδομένων MySQL όπως περιγράφεται στο άρθρο. Θα πρότεινα να ξαναδοκιμάσεις απ’ την αρχή ακολουθώντας προσεκτικά τα βήματα. Για βοήθεια εδώ θα είμαστε.

  3. KeyFr3ak | 06/04/2012 at 11:08

    Που βρήκατε και αγοράσατς το flashaki τα μόνα που βρήκα ήταν μερικά στο Skroutz μεμκάτι εξωφρενικέσμτιμές 20-25 4gb

  4. giwrg98 | 20/04/2012 at 20:36

    Τελικά κατάφερα να το εγκαταστήσω και όλα δούλευαν μια χαρά όμως όταν έκανα reboot το host και πήγα να μπω στο phpmyadmin μου έβγαλε αυτό:
    “Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.” ενώ το VM και το kippo-graph δουλεύουν.

  5. ratb0y | 05/11/2012 at 18:12

    Καλησπέρα και καλό μήνα.

    Μηχάνημα:

    Ubuntu 11.10 Server edition
    VPS OVZ 512

    Πρόβλημα:
    Προσπαθώ να ρυθμίσω το kippo να τρέχει με το που ξεκινάει ο σέρβερ. Στην αρχή σκέφτηκα να βάλω την εντολή στο rc.local όμως πριν το κάνω αυτό είπα να τρέξω πρώτα την εντολή και μετά να την βάλω στο rc.local.

    Συνεπώς, έτρεξα την εντολή και πείρα το παρακάτω αποτέλεσμα:


    ratb0y@vps:~# /home/ratb0y/kippo/start.sh
    Starting kippo in background...Traceback (most recent call last):
    File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 631, in run
    runApp(config)
    File "/usr/lib/python2.7/dist-packages/twisted/scripts/twistd.py", line 23, in runApp
    _SomeApplicationRunner(config).run()
    File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 374, in run
    self.application = self.createOrGetApplication()
    File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 439, in createOrGetApplication
    application = getApplication(self.config, passphrase)
    --- ---
    File "/usr/lib/python2.7/dist-packages/twisted/application/app.py", line 450, in getApplication
    application = service.loadApplication(filename, style, passphrase)
    File "/usr/lib/python2.7/dist-packages/twisted/application/service.py", line 400, in loadApplication
    application = sob.loadValueFromFile(filename, 'application', passphrase)
    File "/usr/lib/python2.7/dist-packages/twisted/persisted/sob.py", line 203, in loadValueFromFile
    fileObj = open(filename, mode)
    exceptions.IOError: [Errno 2] No such file or directory: 'kippo.tac'

    Failed to load application: [Errno 2] No such file or directory: 'kippo.tac'

    Όταν όμως έτρεξα το start.sh μέσα από τον φάκελο του kippo,δηλαδή μέσα απο το /home/ratb0y/kippo/, ξεκίνησε κανονικά χωρίς πρόβλημα.


    ratb0y@vps:~/kippo$ ./start.sh
    Starting kippo in background...Loading dblog engine: mysql
    ratb0y@Spartak0s:~/kippo$

    Ερώτησης

    1) Αυτό έχει να κάνει με κάποια varibles τα οποία πρέπει να οριστούν ώστε να μπορέσω να τρέξω το kippo χωρίς να είμαι μέσα στον φάκελο του;

    2) Στο rc.local δεν θα τρέξει το kippo σαν root?

    3) Αν το βάλω στο init.d, δεν θα τρέξει σαν root?

    • Ion | 05/11/2012 at 19:59

      Άμα ανοίξεις το start.sh θα δεις ότι στην ουσία τρέχει εσωτερικά μια άλλη εντολή, με συγκεκριμένα αρχεία τα οποία ορίζονται εκεί με την προϋπόθεση ότι τρέχεις το script εντός του φακέλου του Kippo (και relative προς αυτό όπως πχ kippo.tac, log/kippo.log κλπ). Όταν λοιπόν προσπάθησες να το τρέξεις ενώ βρισκόσουν (pwd) αλλού, στο “/” για παράδειγμα, ε τότε δεν τα βρήκε :)

      Παρένθεση, αν το VPS σου είναι online συνεχώς (που λογικά δε βλέπω λόγο να μην είναι) τότε δε χρειάζεται απαραίτητα να βάλεις το Kippo στο startup. Εγώ έχω ένα VPS που έτρεχε το Kippo εδώ και μήνες χωρίς να το πειράξω καθόλου. Αν πάντως θες να το βάλεις για παν ενδεχόμενο θα πρέπει να ψάξεις πώς γίνεται αυτό στο Ubuntu. Υπάρχουν διάφοροι τρόποι να το κάνεις, εγώ θα δοκίμαζα να το βάλω στο crontab με το @reboot directive. Κάνε μια ερώτηση και προς askubuntu μεριά για τη σωστότερη λύση :) (είναι σχετικό κοινό προβλημάτακι)

      • ratb0y | 05/11/2012 at 20:29

        @Ion

        Έχεις απόλυτο δίκιο, δεν μου πέρασε καθόλου από το μυαλό να ανοίξω το star.sh.

        Το kippo όντως μπορεί να τρέξει αν βάλεις την ολοκληρωμένη διαδρομή όπως παρακάτω:


        authbind --deep twistd -y /home/ratb0y/kippo/kippo.tac -l /home/ratb0y/kippo/log/kippo.log --pidfile /home/ratb0y/kippo/kippo.pid

        Όταν εκτέλεσα την παραπάνω εντολή το kippo ξεκίνησε χωρίς πρόβλημα.

        Οπότε λογικά αν φτιάξω ένα σκριπτ στο init.d το οποίο θα τρέχει το τροποποιημένο πλέων ./start.sh θα τρέξει αυτόματα στην επόμενη επανεκκίνηση….αν υποθέσουμε οτι μπορούσε να τρέξει ως root…συνεπώς δέν θα τρέξει απο την στιγμή που το kippo δέν τρέχει ως root.

        Άρα, τώρα το πρόβλημα αλλάζει, πώς θα τρέξεις ένα σκρίπτ κατα την εκκίνηση του υπολογιστή ΑΛΛΑ όχι ως root.

        Με το VPS δέν ξέρω τι γίνετε, είχ τρέξει το kippo, το άφησα καμια ευδομάδα και μετα όταν μπήκα στον σέρβερ το βρήκα κλειστό. Το ίδιο έπαθα πάλι εχθές :-S

        Αν βρω κάτι θα το δημοσιεύσω.

        Ευχαριστώ

      • ratb0y | 05/11/2012 at 22:34

        Βασικά … έφαγα ήτα … δεν μπορώ να καταλάβω..πρίν μου έτρεχε έξω από τον φάκελό του…τώρα όμως μου πετάει σφάλμα:

        ERROR: kippo.cfg is missing!

        Αν και έκανα edit το kippo.tac και του έβαλα πλήρες τοποθεσία kippo.cfg μετά μου πέταξε ένα κατεβατό από σφάλματα…κυρίως για το kippo core.

        Ένη γουέη… αη γκιβ απ

  6. ratb0y | 06/11/2012 at 00:23

    …Προς πληροφόρηση:

    Ο τρόπος με τον οποίο μπορεί κάποιος να τρέξει πρόγραμμα κατα την εκκίνηση του υπολογιστή ως απλός χρήστης είναι να το τρέξεις με
    “sudo -u”.

    Για παράδειγμα:

    Ας υποθέσουμε ότι θέλουμε κατα την εκκίνηση του σερβερ να τρέχει το πρόγραμμα myscript.sh ώς ratb0y και όχι ως root.

    Δημηγορούμε ένα αρχείο (ως root) μέσα στο /etc/init.d με όνομα π.χ autoMyscript. Κάνουμε edit το αρχείο αυτό και στην ουσία του λέμε να τρέξει με την παράμετρο sudo -u το πρόγραμμα myscript.sh που βρίσκετε π.χ στο /home/ratb0y/programs/myscript.sh. Δηλαδή:

    #!/bin/bash
    #
    sudo -u ratb0y /home/ratb0y/programs/myscript.sh

    Αποθηκεύουμε της αλλαγές του αρχείου και το κάνουμε εκτελέσιμο


    chmod +x autoMyScript

    Πάμε στο /etc/rc.local κα προσθέτουμε:


    /etc/init.d/autoMyScript

    Και τέλος


    update-rc.d autoMyScript defaults

    • Ion | 06/11/2012 at 11:27

      Πολύ ωραία! Δεν ήθελα να σου πω αμέσως την απάντηση ώστε να σου μείνει η λύση :) Ένας άλλος τρόπος είναι όπως έγραψα παραπάνω και με με το cron (δοκίμασε το και θα μάθεις και αυτό πώς λειτουργεί, με ένα σμπάρο δυο τριγώνια). Τέλος, στις τελευταίες εκδόσεις του Ubuntu υπάρχει και το upstart (http://upstart.ubuntu.com/) το οποίο υποστηρίζει τα λεγόμενα user jobs (http://upstart.ubuntu.com/cookbook/#user-job).

  7. natasa1 | 04/05/2014 at 23:54

    Καλησπερα, καποιος τρόπος σαν login στην http://IP-του-honeypot/kippo-graph υπαρχει και αν οχι, μηπως θα ηταν καλο στην επομενη εκδοση του προγραμματος να προστεθει και αυτη η δυνατοτητα και να κανουμε login με στοιχεια που θα εχουμε δηλωση στο config.php?

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

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