ΠΡΟΣΟΧΗ

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


Τρίτη 8 Σεπτεμβρίου 2015

Πως κανουμε επιθεση DOS σε μια ιστοσελιδα (Siege)



Τι θα χρειαστειτε;

1.Kali linux

DOS (Denial Of Service) επιθεση αρνησης εξυπηρετησης εχει σκοπο να καταστησει εναν υπολογιστη(server) η μια υπηρεσια ανικανη ωστε να μην μπορει να δεχτει αλλες συνδεσεις με συνεπεια να μην εξυπηρετουντε οι χρηστες

Σε αυτο τον οδηγο θα χρησιμοποιησουμε το Siege

Το Siege ειναι ενα εργαλειο το οποιο προσομοιωνει ταυτοχρονα πολλους χρηστες στην ιστοσελιδα σας ετσι ωστε να δειτε αν μπορει να αντεξει ολο αυτο το φορτιο και να εξυπηρετισει ολους τους χρηστες
εμεις θα το χρησιμοποιησουμε για να κανουμε επιθεση αρνησης εξυπηρετησης

οποτε ας αρχισουμε

ανοιγουμε ενα τερματικο και γραφουμε siege


στην πανω εικονα βλεπετε τις επιλογες που σας δινει

ο στοχος μου γιαυτο το παραδειγμα θα ειναι η ιστοσελιδα www.chef.wc.lt την οποια την εφτιαξα σε ενα δωρεαν hosting


γραφουμε στο τερματικο

siege http://chef.wc.lt/ -c 1 -t 60s

οπου
-c ποσους χρηστες θελετε να προσoμοιωσετε στην σελιδα
-t ποσο λεπτα,δευτερολεπτα,ωρες να τρεξετε το siege


στην πανω εικονα προσομοιωσα 1 χρηστη και σε 1 λεπτο εκανε 68 hits (requests)
βλεπετε και το availability ειναι 100% οποτε η σελιδα ειναι μια χαρα

τωρα για να ριξουμε την σελιδα γραφουμε σε ενα τερματικο

siege http://chef.wc.lt/ -t 60s


στην πανω εικονα βλεπετε οτι με 15 χρηστες μεσα σε ενα λεπτο εκανε την σελιδα να ειναι μονο 22.24% διαθεσιμη

και οταν καποιος παει να ανοιξει την σελιδα σε αυτο το λεπτο

τωρα προσομειωνω 50 χρηστες για 2 λεπτα και εχω ενεργοποιημενο το verbose ωστε να βλεπω τι γινετε

siege http://chef.wc.lt/ -c 50 -t 2m -v

κατα την διαρκεια βλεπω


508 ειναι limit reached
200 ειναι fullfilled request

βλεπω οτι το siege δεν ετρεξε για 2 λεπτα , εκλεισε στα 25,3 δευτερολεπτα και η διαθεσιμοτητα ειναι 7.50%
Το siege εκλεισε στα 25,3 δευτερολεπτα γιατι στις προκαθορισμενες ρυθμισεις κλεινει στις 1024 αποτυχημενες συνδεσεις (failed transtactions)


οποτε για να ριξουμε τελειως την ιστοσελιδα πρεπει να ρυθμισουμε το siege
γραφουμε σε ενα τερματικο

nano /etc/siege/siegerc


αλλαζουμε το failures οπως στην εικονα πανω παταμε ctrl+x ,y και enter για να αποθηκευσει

τωρα τρεχουμε  με 300 χρηστες για 2 λεπτα

siege http://chef.wc.lt/ -c 300 -t 2m -v


αν το τρεξουμε περισσοτερο τοτε θα μας εμφανισει socket connection timed out γιατι πλεον δεν θα μπορουμε να ενωθουμε εφοσον η σελιδα δεν ειναι πλεον online


και η ιστοσελιδα θα εχει πεσει
*στην κατω εικονα η σελιδα ανοιξε με διαφορετικο δικτυο απο το δικτυο που εκανα την επιθεση*


 και μετα απο λιγο πηρα ενα email......


*Αναλογα με την ιστοσελιδα που θελετε να ελενξετε αν πεφτει πρεπει να κανετε και τις αναλογες ρυθμισεις στο siege*
Μερικες ιστοσελιδες δεν ειναι τοσο ευκολο ωστε να τις ριξετε μονο απο εναν υπολογιστη θα χρειαστει πανω απο 2 η ακομα και χιλιαδες υπολογιστες

Πως να προστατευτειτε;

Αν δεν εχετε δικο σας server και ειστε με shared hosting,η free hosting τοτε κοιταξτε το αρχειο καταγραφης πχ


οταν δειτε την ιδια ip με πολλες επισκεψεις και περιηγητη αγνωστο πχ λεει οτι ειναι joedog~siege (βεβαια αυτο αλλαζει)
τοτε πηγαινετε στο menu και καντε block αυτη την ip
εγω εκανα επιθεση με proxychains μεσω Tor γιαυτο εμφανισε αλλη χωρα
μπορειτε επισης να ρυθμισετε το domain σας να περναει απο το cloudflare
πατηστε εδω  και ακολουθηστε τις ρυθμισεις

αν εχετε δικο σας server και ειναι apache τοτε αλλαζετε το αρχειο apache.conf


και αλλαζετε σε    *αναλογα με τις προτιμησεις σας*

<IfModule prefork.c>
  StartServers        50
  MinSpareServers     15
  MaxSpareServers     25
  MaxClients         300
  MaxRequestsPerChild  0
</IfModule>
 
μια αλλη προσωρινη λυση ειναι να αλλαξετε ποια user agent θελετε να αφηνετε να δουν την ιστοσελιδα σας(που και παλι ο επιτεθομενος μπορει να το αλλαξει) αλλα θα σταματαει τους αρχαριους
μπορειτε επισης να εχετε load balancing στον server σας

Πέμπτη 9 Ιουλίου 2015

Πως εισβαλουμε σε ενα συστημα διαχειρησης βασης δεδομενων





Τι θα χρειαστειτε;

1.Kali Linux


Μια δυναμικη ιστοσελιδα χρειαζετε βαση δεδομενων και προφανως ενα συστημα διαχειρισης βασης δεδομενων
Τα ποιο γνωστα συστηματα διαχειρισης ειναι (MySQL,PostgreSQL,Oracle,Microsoft SQL)

Εμεις σε αυτο τον οδηγο θα επιτεθουμε με dictionary attack σε ενα τετοιο συστημα διαχειρησης

Οποτε ας αρχισουμε ,

ανοιγουμε ενα τερματικο και γραφουμε

nmap www.sail0r.com -Pn

οπου οπως καταλαβατε ο στοχος μου ειναι η ιστοσελιδα www.sail0r.com
και τρεχει τοπικα στο δικτυο μου (192.168.1.15)

το nmap ανιχνευσε  ποιες θυρες ειναι ανοικτες και ποιες υπηρεσιες τρεχουνε σε αυτες τις θυρες


βλεπουμε στην εικονα πανω οτι στην θυρα 3306 τρεχει Mysql

γραφουμε στο τερματικο hexorbase

θα μας ανοιξει το hexorbase
επιλεγουμε  BrutalForce Database Users


επιλεγουμε το συστημα διαχειρησης βασης δεδοδομενων
γραφουμε το domain της ιστοσελιδας η την ip του server
επιλεγουμε και βαζουμε λιστες για χρηστες και κωδικους
*θα πρεπει να εχετε λιστες αν δεν εχετε δικιες σας τοτε κοιταξτε στην διαδρομη
/usr/share/wordlist*


τελος παταμε Launch Attack

και κατω βλεπουμε τα αποτελεσματα


το Hexorbase βρηκε τον χρηστη root με κωδικο 12345 και τον χρηστη guest με κενο κωδικο

οποτε εμεις θα ενωθουμε σαν root
κλεινουμε το BrutalForce
βαζουμε το ονομα χρηστη και τον κωδικο
και επιλεγουμε Lock as Default Login


επιλεγουμε το συστημα διαχειρησης πχ MySQL


βαζουμε το domain της ιστοσελιδας και επιλεγουμε ok


και εχουμε μπει στο συστημα διαχειρησης

τωρα επιλεγουμε οποια βαση θελουμε να δουμε και επιλεγουμε show tables


για να δουμε τους πινακες γραφουμε στο SQL Query
select * from onomapinaka και παταμε το πληκτρο f5 πχ


και βλεπουμε τα ονοματα χρηστων και τους κωδικους τους


για να αλλαξουμε κατι πχ θελω να αλλαξω το ονομα admin σε nickthesail0r

γραφω στο SQL Query

UPDATE `dvwa`.`users` SET `user` = 'nickthesail0r' WHERE `users`.`user_id` =1 LIMIT 1 ;

και παταω f5


αν θελω να αλλαξω το first_name ,Last_name και κωδικο γραφω

UPDATE `dvwa`.`users` SET `first_name` = 'kostas',
`last_name` = 'kitsoglomplou',
`password` = 'hacked12345' WHERE `users`.`user_id` =1 LIMIT 1


με αυτη την εντολη ειναι σαν να λεμε

"ανανεωσε την βαση dvwa στους πινακες users αλλαξε στης στηλες first_name σε kostas,last_name σε kitsoglomplou,κωδικο σε hacked12345 στην πρωτη σειρα"

και


αν θελετε να σβησετε ολη την γραμμη γραφετε

delete from `dvwa`.`users` where `users`.`user_id` = 1 LIMIT 1

και


αν θελω να εισαγω ενα χρηστη τοτε γραφω

INSERT INTO `dvwa`.`users` (`user_id` ,
`first_name` ,
`last_name` ,
`user` ,
`password`
)
VALUES (

'1', 'nick', 'barkarhs', 'nickthesail0r', '12345'
);
και

οι υπολοιποι κωδικοι επειδη γραφτηκανε απο τους χρηστες ειναι σε MD5 hash κρυπτογραφημενοι και αυτο γινεται για να μην μπορει ουτε ο διαχειριστης αλλα ουτε αυτος που πηρε προσβαση να μπορει να τους δει σε αναγνωσιμη μορφη βεβαια εμεις μπορουμε να τους σπασουμε *κοιταξτε σε παλιοτερους οδηγους πως*

Για να εξασκηθειτε κοιταξτε εδω

Σάββατο 9 Μαΐου 2015

Πως ανιχνευουμε και εισβαλουμε σε μια ιστοσελιδα(jSQL + Uniscan)


Τι θα χρειαστειτε;

1.Kali linux


Σε αυτο τον οδηγο θα μαθουμε πως εισβαλουμε σε μια ιστοσελιδα με την μεθοδο Sql injection

Αυτη η μεθοδος μας επιτρεπει να εχουμε απομακρυσμενη προσβαση στην βαση δεδομενων μιας ιστοσελιδας εφοσον εχει καποιο σφαλμα στην SQL

Τα εργαλεια που θα χρησιμοποιησουμε ειναι το uniscan , jSQL,hash-identifier, findmyhash και dirb

To uniscan ειναι ενα εργαλειο το οποιο μας βοηθαει να βρουμε ευπαθειες σε μια ιστοσελιδα οπως RFI, LFI, RCE, XSS , SQLi κτλ

Βεβαια σε αυτο τον οδηγο θα περιοριστουμε σε SQLi

Η επιλογη για να κανει αναζητηση το uniscan για σελιδες ευαλωτες σε SQLi ειναι

uniscan -o inurl:article.php?id= οπου

-ο βαζουμε sql google dorks που θα μας βρουνε ευαλωτες ιστοσελιδες σε sqli

ομως επειδη πλεον η google εχει βαλει captcha ωστε να επιβεβαιωση οτι ειστε ανθρωπος δεν θα σας βγαζει καποιο αποτελεσμα

πχ
και οταν παμε για να κανουμε μια αναζητηση απο το browser μας τοτε

αναγκαστικα θα πρεπει να τους κανετε εσεις αναζητηση πχ


τωρα για να βρειτε αλλα google dorks θα κοιταξουμε στην GHDB (Google Hacking Database) πατηστε εδω 


οποτε στο free text search γραφουμε sqli και επιλεγουμε search
επιλεγουμε σε οποιο συνδεσμο θελουμε

 πχ

και


για να  δειτε αν μια σελιδα ειναι ευαλωτη σε sqli απλα βαλτε ' στο τελος του συνδεσμου ,αν σας εμφανισει σφαλμα στην SQL τοτε ειναι ευαλωτη

πχ
 
 αν θελουμε να επιτεθουμε σε στοχευμενη σελιδα τοτε κανουμε την ανιχνευση με το uniscan

πχ εμενα η στοχευμενη σελιδα μου ειναι www.sail0r.com

οποτε ανοιγουμε ενα τερματικο και γραφουμε

uniscan -u http://www.sail0r.com/ -qweds

-u βαζουμε την στοχευμενη ιστοσελιδα
-q για να ανιχνευσει για διευθυνσεις (directories)
-w για να ανιχνευσει αρχεια
-e για να βρει το αρχειο robots.txt , sitemap.xml κτλ
-d κανει δυναμικα tests
-s κανει στατικα tests

εμεις ομως εφοσον θελουμε για sqli τοτε θα επιλεξουμε μονο -d

 οποτε τρεχουμε την εντολη

uniscan -u http://www.sail0w.com/ -d

θα μας δειξει ολα τα αποτελεσματα στο τερματικο πχ για sqli

 και θα μας πει οτι τελειωσε και τα αποτελεσματα αποθηκευτηκανε στο αρχειο report/www.istoselida.com.html


για να δουμε  τα αποτελεσματα που εχουν αποθηκευτει γραφουμε στo τερματικο

iceweasel /usr/share/uniscan/report/www.sail0r.com.html

και μας ανοιγει το iceweasel τα αποτελεσματα

πχ

και κατω κατω

τωρα περνουμε τον συνδεσμο που εχει βρει οτι ειναι ευαλωτος σε sqli και τον ανοιγουμε στο browser μας
οπως παρατηρησατε μας εμφανισε αυτοματα το σφαλμα γιατι το uniscan το εξακριβωσε

το uniscan μπορειτε να το τρεξετε και σε γραφικη μορφη ειτε απο το  menu kali linux - web applications - web vulnerability scanners - uniscan-gui η γραφετε στο τερματικο uniscan-gui


 και open log file για να δειτε τα αποτελεσματα


τωρα για να εισβαλουμε στην βαση δεδομενων γραφουμε στο τερματικο

jsql η πηγαινουμε απο το menu kali linux - Vulnerability Analysis - Database Assessment - jsql
οταν μας ανοιξει το jSQL τοτε βαζουμε τον ευαλωτο συνδεσμο και επιλεγουμε connect


τωρα εφοσον μας εμφανισε ολες τις βασεις δεδομενων επιλεγουμε τι θελουμε να δουμε πχ οταν επιλεξουμε μια βαση θα μας δειξει μια μπαρα να φορτωνει και θα μας δειξει τους συγκεκριμενους πινακες  οποτε εμεις πρεπει να επιλεξουμε τι στειλες θελουμε να μας δειξει
οποτε με δεξι κλικ στους πινακες ( πχ εδω ειναι users) επιλεγω LOAD/STOP και εφοσον εχω επιλεξει id,password,username τις στηλες αναλογα τι θελω να δω θα μου εμφανισει, οποτε ανακτα αυτες τις σειρες  και δεξια βλεπουμε τα στοιχεια


δεξια βλεπουμε οτι ο κωδικος για τον user1 ειναι κρυπτογραφημενος
 οποτε πρεπει να τον σπασουμε (αποκρυπτογραφισουμε)
για να αναγνωρισουμε τι κρυπτογραφιση εχει ετσι ωστε να τον σπασουμε  θα χρησιμοποιησουμε το hash-identifier

οποτε αντιγραφουμε το hash πχ 769b9b0cc6c92f2ffad367b4ef0d2f5c
και γραφουμε σε ενα τερματικο

hash-identifier

κανουμε επικολληση το hash και μας λεει τι κρυπτογραφηση εχει


συγκεκριμενα εβγαλε η md5 η md4 εγω θα υποθεσω οτι ειναι md5 γιατι το md4 σπανια το χρησιμοποιουν εφοσον το md5 εχει αντικαταστησει το md4

οποτε τωρα μενει να το σπασουμε

πρωτου αρχισουμε να το σπαμε θα δοκιμασουμε ενα αλλο εργαλειο το findmyhash ωστε να γλιτωσουμε χρονο

το findmyhash ψαχνει σε σελιδες που σπανε η κρυπτογραφουν hashes και μας εμφανιζει τα αποτελεσματα, εφοσον καποιος το εχει σπασει η καποιος εχει κρυπτογραφησει τον ιδιο κωδικο με την ιδια κρυπτογραφηση σε αυτες τις σελιδες τοτε θα μας το εμφανισει

οποτε γραφουμε στο τερματικο

findmyhash MD5 -h 769b9b0cc6c92f2ffad367b4ef0d2f5c


και τιποτα

για να καταλαβετε καλυτερα πως δουλευει το findmyhash

κρυπτογραφω το κωδικο soublaki88 σε md5 στην σελιδα MD5online την οποια χρησιμοποιει για αναζητηση το findmyhash

οποτε τωρα το md5 hash για το soublaki88 ειναι 37e2b459179d94599fdf17376f575a85

τρεχω παλι την εντολη

findmyhash MD5 -h 37e2b459179d94599fdf17376f575a85

και


τωρα ας συνεχισουμε

εφοσον το findmyhash δεν μας βρηκε τιποτα θα πρεπει να το σπασουμε εμεις
για να το σπασουμε υπαρχουνε παρα πολλα εργαλεια εμεις ομως θα χρησιμοποιησουμε το jSQL

οποτε αντιγραφουμε το hash και πηγαινουμε στην καρτελα Brutal Force
κανουμε επικολληση επιλεγουμε τους χαρακτηρες που νομιζουμε οτι εχει ο κωδικος το μεγεθος πχ απο 6 εως 12 και επιλεγουμε start


οπως βλεπετε ο χρονος ειναι αρνητικος γιατι ειναι πολλοι οι συνδιασμοι με ολους τους χαρακτηρες και με λιγα λογια αυτο θα παρει αιωνες....
εφοσον ομως γνωριζουμε οτι για να μπορει καποιος να θυμαται εναν κωδικο τοτε θα εχει μικρα γραμματα και αριθμους (τα κεφαλαια τα αποφευγουνε γιατι μπερδευοντε) μερικες ιστοσελιδες για λογους ασφαλειας δεν αφηνουν κατω απο 6 χαρακτηρες και κανεις δεν μπορει να θυμηθει εναν κωδικο πανω απο 12 γραμματα εκτος και αν ειναι μια λεξη την οποια θα μπορει να θυμαται,βεβαια αυτα ειναι απλες υποθεσεις

οπως και να εχει αναλογα κανουμε τις ρυθμισεις

οποτε οταν μας βρει τον κωδικο πχ


μας μενει να βρουμε το admin panel της σελιδας αν δεν σας το εμφανισε
το uniscan πχ με robots.txt τοτε θα χρησιμοποιησετε το dirb

οποτε ανοιγουμε ενα τερματικο και γραφουμε

dirb http://www.sail0r.com/ /usr/share/webslayer/wordlist/general/admin-panels.txt

οταν δειτε  code 200 και size πανω απο 0 τοτε βρηκατε το admin panel πχ


τοτε κανουμε login στην ιστοσελιδα

και


το παραδειγμα εγινε σε ελενχομενο-τροποποιημενο περιβαλλον ωστε να δειτε την διαδικασια και τα εργαλεια που μπορουμε να χρησιμοποιησουμε

Αν θελετε και εσεις να δοκιμασετε τοτε κοιταξτε εδω