Dec 05 2011

Installing Kippo SSH Honeypot on Ubuntu

I decided to setup a simple ssh honeypot in a small VPS (192MB RAM) to see if they actually record attacks. The honeypot that I chose was Kippo , a simple SSH honeypot written in Python with several possibilities. Here is a guide for the installation and configuration of Kippo, in accordance with the procedure I personally followed. The setup applies to Ubuntu Server (tested on 11.04 and 14.04) distro, but the procedure on any other Ubuntu/Debian-based system should be the same.

  1. First we login as root in our box and proceed to update and upgrade the system:
apt-get update && apt-get upgrade
  1. Kippo “listens” on port 2222 by default, which is fine for testing purposes, but it actually reduces the chances to record any attacks (because the usual automated tools that hackers run target the default SSH port 22). Thus, it would be good to make Kippo listen to port 22. To do this you must first change the port your ssh server uses, in order to be able to connect back to the system properly. So we change the configuration file of the ssh server (sshd):
nano /etc/ssh/sshd_config

We change the option Port 22, choosing another, eg 2222. We then restart the ssh server:

/etc/init.d/ssh restart

At this point it would be good to disconnect from the system and then reconnect using the new port.

  1. We continue installing the required software packages for Kippo:
apt-get install python-dev openssl python-openssl python-pyasn1 python-twisted

We can download the latest stable version of Kippo (0.9) but it is better to use the latest development version directly from the GitHub. For this reason we need git:

apt-get install git

Another issue about port 22 that we want to use, is the problem that in Linux only the root user is allowed to use ports below port 1024 and we should not run Kippo as root for safety reasons. Kippo’s website offers several solutions on how to run a honeypot on port 22, but the simplest one is using the application authbind:

apt-get install authbind
  1. Before you go any further, create a new non-root user to run Kippo as:
adduser kippo

and add him to the list of users that can use the sudo command:

visudo

where we add the line:

kippo ALL=(ALL:ALL) ALL

under the “root” user.

We finish the required steps for using port 22:

touch /etc/authbind/byport/22
chown kippo:kippo /etc/authbind/byport/22
chmod 777 /etc/authbind/byport/22

At this point we enter the system as ‘kippo’ user and go to the /home directory.

  1. Download the latest Kippo version from GitHub:
git clone https://github.com/desaster/kippo.git

Change the port in Kippo’s configuration file from 2222 to 22:

cp kippo.cfg.dist kippo.cfg
nano kippo.cfg
  1. Finally, edit the Kippo start script:
nano start.sh

changing the following command from

twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid

to

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

so that it uses authbind to “listen” on port 22, and run the honeypot:

./start.sh
  1. We check that our port has actually opened and Kippo is “listening”:
sudo netstat -antp

where there should be a line like this:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 22627/python

We are ready. Now any attempt to connect to port 22 of the system will be recorded by Kippo and log files will be stored in the corresponding folder.

Nov 24 2011

Έλληνες σε Security Conferences

Κάνοντας μια μικρή αναζήτηση για να δω αν έχουν υπάρξει Έλληνες ομιλητές σε διάφορα γνωστά Security Conferences, ανακάλυψα με χαρά δύο ερευνητές που έχουν κάνει παρουσιάσεις σε δύο από τα μεγαλύτερα συνέδρια ασφάλειας υπολογιστών.

Πρώτος ο κύριος Θανάσης Γιαννέτσος ο οποίος συμμετείχε στο Black Hat Europe 2010 στη Βαρκελώνη και Black Hat USA 2011 στο Las Vegas. Το βιογραφικό του όπως αναρτήθηκε στην επίσημη σελίδα του συνεδρίου: https://www.blackhat.com/html/bh-eu-10/bh-eu-10-speakerbios.html#Giannetsos

Η ομιλία του “Weaponizing Wireless Networks: An Attack Tool for Launching Attacks against Sensor Networks” βρίσκεται εδώ:

και οι διαφάνειες είναι διαθέσιμες εδώ.

Δεύτερος ο κύριος Δημήτριος Πετρόπουλος ο οποίος συμμετείχε στο HackInTheBox 2009 στην Μαλαισία και 2010 στο Ντουμπάι (με το ίδιο θέμα). Το βιογραφικό του όπως αναρτήθηκε στην επίσημη σελίδα του συνεδρίου: http://conference.hitb.org/hitbsecconf2009kl/index.html%3Fpage_id=459.html

Η ομιλία του “Having fun with ATMs & HSMs” βρίσκεται εδώ:

και οι διαφάνειες είναι διαθέσιμες εδώ.

Nov 19 2011

Εγκατάσταση του Kippo SSH Honeypot (Ubuntu 11.04)

Για να πάρω μια γεύση με το αντικείμενο με το οποίο θα ασχοληθώ κατά την πτυχιακή εργασία μου, αποφάσισα να στήσω ένα απλό ssh honeypot σε ένα μικρό vps (192MB RAM) για να δω αν όντως θα καταγραφούν επιθέσεις. Το honeypot που επέλεξα (ανάμεσα σε δύο) ήταν το Kippo, ένα απλό SSH honeypot γραμμένο σε Python με αρκετές δυνατότητες. Ακολουθεί οδηγός στα ελληνικά για την εγκατάσταση και λειτουργία του, σύμφωνα με τη διαδικασία που ακολούθησα. Τα παρακάτω αφορούν διανομή Ubuntu server 11.04 (32-bit).

1. Καταρχήν κάνουμε login ως root στο box μας και προχωρούμε σε ανανέωση και αναβάθμιση του συστήματος:

apt-get update && apt-get upgrade

2. Το Kippo “ακούει” by default στη θύρα 2222, το οποίο για δοκιμή είναι μια χαρά, αλλά στην πραγματικότητα ελαττώνει πολύ τις πιθανότητες να δεχτούμε κάποια επίθεση (γιατί τα συνήθη αυτοματοποιημένα εργαλεία που τρέχουν οι hackers ελέγχουν τη θύρα 22 του ssh). Καλό θα ήταν να κάνουμε το Kippo να ακούει στη standard port 22. Για να γίνει αυτό θα πρέπει πρώτα να αλλάξουμε τη θύρα του ssh server μας ώστε αργότερα να μπορούμε και εμείς να συνδεθούμε κανονικά στο σύστημα. Ξεκινάμε λοιπόν και επεξεργαζόμαστε το αρχείο ρυθμίσεων του ssh server μας (sshd):

vi /etc/ssh/sshd_config

Αλλάζουμε την επιλογή Port 22, επιλέγοντας κάποια άλλη, πχ 2222. Κάνουμε επανεκκίνηση του ssh server:

/etc/init.d/ssh restart

Σε αυτό το σημείο καλό θα ήταν να αποσυνδεθούμε από το σύστημα και να ξανασυνδεθούμε στη νέα θύρα.

3. Συνεχίζουμε εγκαθιστώντας τα απαιτούμενα πακέτα για το Kippo:

apt-get install python-dev openssl python-openssl python-pyasn1 python-twisted

Μπορούμε να κατεβάσουμε την τελευταία stable έκδοση του Kippo (0.5) αλλά είναι καλύτερο να χρησιμοποιήσουμε την πιο πρόσφατη έκδοση κατευθείαν από τον SVN server του. Για το λόγο αυτό χρειαζόμαστε το subversion:

apt-get install subversion

Επίσης, σχετικά με τη θύρα που θέλουμε να χρησιμοποιήσουμε, υπάρχει το πρόβλημα ότι στο linux μόνο ο root user επιτρέπεται να χρησιμοποιεί ports κάτω του 1024 και εμείς ΔΕΝ πρέπει για λόγους ασφαλείας να τρέχουμε το Kippo ως root. Στη σελίδα του Kippo υπάρχουν διάφορες λύσεις για το πώς να τρέξεις το honeypot στη θύρα 22, αλλά η πιο απλή είναι με τη βοήθεια της εφαρμογής authbind:

apt-get install authbind

4. Πριν προχωρήσουμε παρακάτω, προσθέτουμε στο σύστημα ένα νέο non-root χρήστη για να τρέχουμε το Kippo:

adduser kippo

και τον προσθέτουμε στη λίστα με τους χρήστες που μπορούν να χρησιμοποιήσουν την εντολή sudo:

visudo

όπου προσθέτουμε τη γραμμή:

kippo ALL=(ALL:ALL) ALL

κάτω από το χρήστη root.

Ολοκληρώνουμε τις ρυθμίσεις για χρήση της θύρας 22:

touch /etc/authbind/byport/22
chown kippo:kippo /etc/authbind/byport/22
chmod 777 /etc/authbind/byport/22

Σε αυτό το σημείο μπαίνουμε στο σύστημα ως χρήστης ‘kippo’ και πηγαίνουμε στον κατάλογο /home.

5. Κατεβάζουμε την τελευταία έκδοση του Kippo:

svn checkout http://kippo.googlecode.com/svn/trunk/ ./kippo

Αλλάζουμε τη θύρα στο αρχείο ρυθμίσεων του Kippo από 2222 σε 22:

mv kippo.cfg.dist kippo.cfg
vi kippo.cfg

6. Τέλος, στο αρχείο εκκίνησης του Kippo:

vi start.sh

αλλάζουμε την εντολή

twistd -y kippo.tac -l log/kippo.log --pidfile kippo.pid

σε

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

ώστε αυτό να χρησιμοποιεί την εφαρμογή authbind για να μπορεί να “ακούει” στη θύρα 22, και τρέχουμε το honeypot:

./start.sh

7. Ελέγχουμε ότι όντως άνοιξε η θύρα μας και το Kippo “ακούει”:

sudo netstat -antp

όπου θα πρέπει να υπάρχει μια γραμμή σαν την παρακάτω:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 22627/python

Είμαστε έτοιμοι. Τώρα κάθε προσπάθεια σύνδεσης στη θύρα 22 του συστήματος θα καταγράφεται από το Kippo και τα log files θα αποθηκεύονται στον αντίστοιχο κατάλογο.

Video

Ραλφ Λάνγκνερ: Aναλύωντας το Stuxnet, το κυβερνο-όπλο του 21ου αιώνα

Video

Μίκο Χίπονεν: Πολεμώντας ιούς, υπερασπίζοντας το Διαδίκτυο

Aug 06 2011

Πώς να ενεργοποιήσετε το Nessus στο BackTrack 5

Το πολύ γνωστό vulnerability scanner Nessus από την Tenable είναι προεγκατεστημένο στο BackTrack 5 αλλά δεν είναι ενεργοποιημένο. Αυτό που χρειάζεται για να λειτουργήσει, είναι τα βήματα παρακάτω.

1) Κάνουμε εγγραφή στην Tenable ζητώντας ένα Home Feed πατώντας εδώ. Αυτός είναι ένας κωδικός που χαρακτηρίζει την εγκατάσταση μας και μας δίνει τη δυνατότητα να χρησιμοποιούμε το Nessus. Το Home Feed είναι δωρεάν αλλά επιτρέπει το σκανάρισμα μόνο 16 IPs σε κάθε scan. Είναι πάντως αρκετές για να κάνει κάποιος τη δουλειά του.

2) Ανοίγουμε το terminal στο BackTrack και δίνουμε (όπου XXXX βάζετε τον κωδικό που ήρθε στο email σας):

root@bt:~# /opt/nessus/bin/nessus-fetch --register XXXX-XXXX-XXXX-XXXX
Your activation code has been registered properly - thank you.
Now fetching the newest plugin set from plugins.nessus.org...
Your Nessus installation is now up-to-date.
If auto_update is set to 'yes' in nessusd.conf, Nessus will
update the plugins by itself.

3) Πρέπει να δημιουργήσουμε έναν admin user ο οποίος θα συνδέεται στην υπηρεσία του Nessus, θα μπορεί να επεξεργάζετε policies, να τρέχει scans κλπ. Το κάνουμε ως εξής, πάλι στο ίδιο terminal:

root@bt:~# /opt/nessus/sbin/nessus-adduser
Login : nessus
Login password :
Login password (again) :
Do you want this user to be a Nessus 'admin' user ? (can upload plugins, etc...) (y/n) [n]: y
User rules
----------
nessusd has a rules system which allows you to restrict the hosts that bruteforce has the right to test.
For instance, you may want him to be able to scan his own host only.
Please see the nessus-adduser manual for the rules syntax.
Enter the rules for this user, and enter a BLANK LINE once you are done :

(the user can have an empty rules set)

Login             : nessus
Password          : ***********

This user will have 'admin' privileges within the Nessus server
Rules             :
Is that ok ? (y/n) [y]

User added

4) Τέλος, εκκινούμε την υπηρεσία Nessus:

root@bt:~# /etc/init.d/nessusd start
Starting Nessus : .

Μπορούμε τώρα να συνδεθούμε στον Nessus server με τα στοιχεία του χρήστη που δώσαμε παραπάνω και να τρέξουμε τα scan μας πηγαίνοντας στη διεύθυνση https://localhost:8834/

Aug 01 2011

VIDEO: Οδηγός SQL Injection

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

Παρεπιπτόντως λόγω των δύο παραπάνω λόγων, πραγματοποιήθηκαν και οι επιθέσεις στην Sony πριν κάποιον καιρό, με τους χάκερς να κλέβουν πάνω από ένα εκατομμύριο λογαριασμούς χρηστών! Οι οποίοι λογαριασμοί (όνομα χρήστη, κωδικός, email, κλπ) κυκλοφόρησαν στο internet, με αποτέλεσμα βανδαλισμούς σε πολλά άλλα sites για τα οποία χρησιμοποιούνταν τα ίδια στοιχεία πρόσβασης (να και ένας ακόμα λόγος να μην χρησιμοποιούμε παντού τον ίδιο κωδικό).

Το παρακάτω βίντεο και εξήγηση είναι από την Acunetix. Σε αυτό το άρθρο περιγράφεται η SQL Injection και στο βίντεο γίνεται επίδειξη της επίθεσης χρησιμοποιώντας το εργαλείο της ίδιας της εταιρείας φυσικά.

Βέβαια, έχουν κάνει και λάθος στη λύση του προβλήματος, καθώς αυτή θα αποτρέψει μεν το SQL injection αλλά θα δημιουργήσει πρόβλημα στο site. To $_GET είναι πάντα string ενώ το is_int() τσεκάρει για ακέραιο αριθμό. Άρα to is_int(“1”) θα επιστρέφει πάντα false. Το σωστό λοιπόν δεν είναι is_int() αλλά is_numeric().

ΥΓ. Καλό μήνα! 🙂

Page 30 of 31« First...1020...2728293031