Mythic

Reading time: 8 minutes

Τι είναι το Mythic;

Το Mythic είναι ένα ανοιχτού κώδικα, αρθρωτό πλαίσιο διοίκησης και ελέγχου (C2) σχεδιασμένο για red teaming. Επιτρέπει στους επαγγελματίες ασφάλειας να διαχειρίζονται και να αναπτύσσουν διάφορους πράκτορες (payloads) σε διαφορετικά λειτουργικά συστήματα, συμπεριλαμβανομένων των Windows, Linux και macOS. Το Mythic παρέχει μια φιλική προς το χρήστη διαδικτυακή διεπαφή για τη διαχείριση των πρακτόρων, την εκτέλεση εντολών και τη συλλογή αποτελεσμάτων, καθιστώντας το ένα ισχυρό εργαλείο για την προσομοίωση πραγματικών επιθέσεων σε ελεγχόμενο περιβάλλον.

Εγκατάσταση

Για να εγκαταστήσετε το Mythic, ακολουθήστε τις οδηγίες στο επίσημο Mythic repo.

Πράκτορες

Το Mythic υποστηρίζει πολλούς πράκτορες, οι οποίοι είναι οι payloads που εκτελούν εργασίες στα παραβιασμένα συστήματα. Κάθε πράκτορας μπορεί να προσαρμοστεί σε συγκεκριμένες ανάγκες και μπορεί να εκτελείται σε διαφορετικά λειτουργικά συστήματα.

Από προεπιλογή, το Mythic δεν έχει εγκατεστημένους πράκτορες. Ωστόσο, προσφέρει μερικούς ανοιχτού κώδικα πράκτορες στο https://github.com/MythicAgents.

Για να εγκαταστήσετε έναν πράκτορα από αυτό το repo, απλώς χρειάζεται να εκτελέσετε:

bash
sudo ./mythic-cli install github https://github.com/MythicAgents/<agent-name>
sudo ./mythic-cli install github https://github.com/MythicAgents/apfell

Μπορείτε να προσθέσετε νέους πράκτορες με την προηγούμενη εντολή ακόμη και αν το Mythic εκτελείται ήδη.

C2 Προφίλ

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

Από προεπιλογή, το Mythic εγκαθίσταται χωρίς προφίλ, ωστόσο, είναι δυνατή η λήψη ορισμένων προφίλ από το repo https://github.com/MythicC2Profiles εκτελώντας:

bash
sudo ./mythic-cli install github https://github.com/MythicC2Profiles/<c2-profile>>
sudo ./mythic-cli install github https://github.com/MythicC2Profiles/http

Apollo Agent

Ο Apollo είναι ένας πράκτορας Windows γραμμένος σε C# χρησιμοποιώντας το .NET Framework 4.0, σχεδιασμένος για να χρησιμοποιείται στις προσφορές εκπαίδευσης της SpecterOps.

Εγκαταστήστε το με:

bash
./mythic-cli install github https://github.com/MythicAgents/Apollo.git

Αυτός ο πράκτορας έχει πολλές εντολές που τον κάνουν πολύ παρόμοιο με το Beacon του Cobalt Strike με μερικά επιπλέον χαρακτηριστικά. Μεταξύ αυτών, υποστηρίζει:

Κοινές ενέργειες

  • cat: Εκτύπωση του περιεχομένου ενός αρχείου
  • cd: Αλλαγή του τρέχοντος καταλόγου εργασίας
  • cp: Αντιγραφή ενός αρχείου από μια τοποθεσία σε άλλη
  • ls: Λίστα αρχείων και καταλόγων στον τρέχοντα κατάλογο ή σε καθορισμένη διαδρομή
  • pwd: Εκτύπωση του τρέχοντος καταλόγου εργασίας
  • ps: Λίστα τρεχουσών διεργασιών στο σύστημα στόχο (με πρόσθετες πληροφορίες)
  • download: Λήψη ενός αρχείου από το σύστημα στόχο στη τοπική μηχανή
  • upload: Ανέβασμα ενός αρχείου από τη τοπική μηχανή στο σύστημα στόχο
  • reg_query: Ερώτηση κλειδιών και τιμών μητρώου στο σύστημα στόχο
  • reg_write_value: Γράψτε μια νέα τιμή σε ένα καθορισμένο κλειδί μητρώου
  • sleep: Αλλαγή του διαστήματος ύπνου του πράκτορα, το οποίο καθορίζει πόσο συχνά ελέγχει με τον διακομιστή Mythic
  • Και πολλές άλλες, χρησιμοποιήστε help για να δείτε τη πλήρη λίστα διαθέσιμων εντολών.

Ανάβαση δικαιωμάτων

  • getprivs: Ενεργοποίηση όσων περισσότερων δικαιωμάτων είναι δυνατά στο τρέχον νήμα
  • getsystem: Άνοιγμα ενός χεριού στο winlogon και αντιγραφή του διακριτικού, αυξάνοντας αποτελεσματικά τα δικαιώματα στο επίπεδο SYSTEM
  • make_token: Δημιουργία νέας συνεδρίας σύνδεσης και εφαρμογή της στον πράκτορα, επιτρέποντας την αναπαράσταση άλλου χρήστη
  • steal_token: Κλοπή ενός κύριου διακριτικού από άλλη διεργασία, επιτρέποντας στον πράκτορα να αναπαραστήσει τον χρήστη αυτής της διεργασίας
  • pth: Επίθεση Pass-the-Hash, επιτρέποντας στον πράκτορα να πιστοποιηθεί ως χρήστης χρησιμοποιώντας το NTLM hash τους χωρίς να χρειάζεται ο απλός κωδικός πρόσβασης
  • mimikatz: Εκτέλεση εντολών Mimikatz για εξαγωγή διαπιστευτηρίων, hashes και άλλων ευαίσθητων πληροφοριών από τη μνήμη ή τη βάση δεδομένων SAM
  • rev2self: Επαναφορά του διακριτικού του πράκτορα στο κύριο διακριτικό του, μειώνοντας αποτελεσματικά τα δικαιώματα στο αρχικό επίπεδο
  • ppid: Αλλαγή της γονικής διεργασίας για εργασίες μετά την εκμετάλλευση καθορίζοντας μια νέα ταυτότητα γονικής διεργασίας, επιτρέποντας καλύτερο έλεγχο του πλαισίου εκτέλεσης εργασιών
  • printspoofer: Εκτέλεση εντολών PrintSpoofer για παράκαμψη των μέτρων ασφαλείας του εκτυπωτή, επιτρέποντας την ανάβαση δικαιωμάτων ή την εκτέλεση κώδικα
  • dcsync: Συγχρονισμός των κλειδιών Kerberos ενός χρήστη στη τοπική μηχανή, επιτρέποντας την εκτός σύνδεσης διάσπαση κωδικών πρόσβασης ή περαιτέρω επιθέσεις
  • ticket_cache_add: Προσθήκη ενός εισιτηρίου Kerberos στη τρέχουσα συνεδρία σύνδεσης ή σε μια καθορισμένη, επιτρέποντας την επαναχρησιμοποίηση εισιτηρίων ή την αναπαράσταση

Εκτέλεση διεργασιών

  • assembly_inject: Επιτρέπει την έγχυση ενός φορτωτή .NET assembly σε μια απομακρυσμένη διεργασία
  • execute_assembly: Εκτελεί μια .NET assembly στο πλαίσιο του πράκτορα
  • execute_coff: Εκτελεί ένα αρχείο COFF στη μνήμη, επιτρέποντας την εκτέλεση κωδικοποιημένου κώδικα στη μνήμη
  • execute_pe: Εκτελεί μια unmanaged εκτελέσιμη (PE)
  • inline_assembly: Εκτελεί μια .NET assembly σε μια προσωρινή AppDomain, επιτρέποντας την προσωρινή εκτέλεση κώδικα χωρίς να επηρεάζεται η κύρια διεργασία του πράκτορα
  • run: Εκτελεί ένα δυαδικό αρχείο στο σύστημα στόχο, χρησιμοποιώντας το PATH του συστήματος για να βρει το εκτελέσιμο
  • shinject: Εγχύει shellcode σε μια απομακρυσμένη διεργασία, επιτρέποντας την εκτέλεση κώδικα στη μνήμη
  • inject: Εγχύει shellcode του πράκτορα σε μια απομακρυσμένη διεργασία, επιτρέποντας την εκτέλεση του κώδικα του πράκτορα στη μνήμη
  • spawn: Δημιουργεί μια νέα συνεδρία πράκτορα στο καθορισμένο εκτελέσιμο, επιτρέποντας την εκτέλεση shellcode σε μια νέα διεργασία
  • spawnto_x64 και spawnto_x86: Αλλαγή του προεπιλεγμένου δυαδικού που χρησιμοποιείται σε εργασίες μετά την εκμετάλλευση σε μια καθορισμένη διαδρομή αντί να χρησιμοποιεί το rundll32.exe χωρίς παραμέτρους, το οποίο είναι πολύ θορυβώδες.

Mithic Forge

Αυτό επιτρέπει να φορτώσετε αρχεία COFF/BOF από το Mythic Forge, το οποίο είναι ένα αποθετήριο προ-συγκεντρωμένων payloads και εργαλείων που μπορούν να εκτελούνται στο σύστημα στόχο. Με όλες τις εντολές που μπορούν να φορτωθούν, θα είναι δυνατή η εκτέλεση κοινών ενεργειών εκτελώντας τις στη τρέχουσα διαδικασία του πράκτορα ως BOFs (συνήθως πιο διακριτικά).

Ξεκινήστε την εγκατάσταση τους με:

bash
./mythic-cli install github https://github.com/MythicAgents/forge.git

Στη συνέχεια, χρησιμοποιήστε forge_collections για να εμφανίσετε τα COFF/BOF modules από το Mythic Forge ώστε να μπορείτε να τα επιλέξετε και να τα φορτώσετε στη μνήμη του πράκτορα για εκτέλεση. Από προεπιλογή, οι παρακάτω 2 συλλογές προστίθενται στο Apollo:

  • forge_collections {"collectionName":"SharpCollection"}
  • forge_collections {"collectionName":"SliverArmory"}

Αφού φορτωθεί ένα module, θα εμφανιστεί στη λίστα ως άλλη εντολή όπως forge_bof_sa-whoami ή forge_bof_sa-netuser.

Εκτέλεση Powershell & scripting

  • powershell_import: Εισάγει ένα νέο PowerShell script (.ps1) στη μνήμη του πράκτορα για μελλοντική εκτέλεση
  • powershell: Εκτελεί μια εντολή PowerShell στο πλαίσιο του πράκτορα, επιτρέποντας προηγμένο scripting και αυτοματοποίηση
  • powerpick: Εισάγει μια assembly loader PowerShell σε μια θυσιαστική διαδικασία και εκτελεί μια εντολή PowerShell (χωρίς logging powershell).
  • psinject: Εκτελεί PowerShell σε μια καθορισμένη διαδικασία, επιτρέποντας στοχευμένη εκτέλεση scripts στο πλαίσιο άλλης διαδικασίας
  • shell: Εκτελεί μια εντολή shell στο πλαίσιο του πράκτορα, παρόμοια με την εκτέλεση μιας εντολής στο cmd.exe

Πλευρική Κίνηση

  • jump_psexec: Χρησιμοποιεί την τεχνική PsExec για να μετακινηθεί πλευρικά σε μια νέα υποδοχή αντιγράφοντας πρώτα το εκτελέσιμο του πράκτορα Apollo (apollo.exe) και εκτελώντας το.
  • jump_wmi: Χρησιμοποιεί την τεχνική WMI για να μετακινηθεί πλευρικά σε μια νέα υποδοχή αντιγράφοντας πρώτα το εκτελέσιμο του πράκτορα Apollo (apollo.exe) και εκτελώντας το.
  • wmiexecute: Εκτελεί μια εντολή στο τοπικό ή καθορισμένο απομακρυσμένο σύστημα χρησιμοποιώντας WMI, με προαιρετικά διαπιστευτήρια για μίμηση.
  • net_dclist: Ανακτά μια λίστα ελεγκτών τομέα για τον καθορισμένο τομέα, χρήσιμη για την αναγνώριση πιθανών στόχων για πλευρική κίνηση.
  • net_localgroup: Λίστα τοπικών ομάδων στον καθορισμένο υπολογιστή, προεπιλεγμένα στον localhost αν δεν έχει καθοριστεί υπολογιστής.
  • net_localgroup_member: Ανακτά την τοπική συμμετοχή ομάδας για μια καθορισμένη ομάδα στον τοπικό ή απομακρυσμένο υπολογιστή, επιτρέποντας την καταμέτρηση χρηστών σε συγκεκριμένες ομάδες.
  • net_shares: Λίστα απομακρυσμένων κοινών και της προσβασιμότητάς τους στον καθορισμένο υπολογιστή, χρήσιμη για την αναγνώριση πιθανών στόχων για πλευρική κίνηση.
  • socks: Ενεργοποιεί έναν proxy συμβατό με SOCKS 5 στο δίκτυο στόχο, επιτρέποντας τη διέλευση της κίνησης μέσω της παραβιασμένης υποδοχής. Συμβατό με εργαλεία όπως το proxychains.
  • rpfwd: Ξεκινά να ακούει σε μια καθορισμένη θύρα στην υποδοχή στόχο και προωθεί την κίνηση μέσω του Mythic σε μια απομακρυσμένη IP και θύρα, επιτρέποντας απομακρυσμένη πρόσβαση σε υπηρεσίες στο δίκτυο στόχο.
  • listpipes: Λίστα όλων των ονομασμένων σωλήνων στο τοπικό σύστημα, που μπορεί να είναι χρήσιμη για πλευρική κίνηση ή κλιμάκωση προνομίων μέσω αλληλεπίδρασης με μηχανισμούς IPC.

Διάφορες Εντολές

  • help: Εμφανίζει λεπτομερείς πληροφορίες σχετικά με συγκεκριμένες εντολές ή γενικές πληροφορίες σχετικά με όλες τις διαθέσιμες εντολές στον πράκτορα.
  • clear: Σημαίνει τις εργασίες ως 'καθαρές' ώστε να μην μπορούν να επιλεγούν από τους πράκτορες. Μπορείτε να καθορίσετε all για να καθαρίσετε όλες τις εργασίες ή task Num για να καθαρίσετε μια συγκεκριμένη εργασία.

Poseidon Agent

Ο Poseidon είναι ένας πράκτορας Golang που μεταγλωττίζεται σε εκτελέσιμα Linux και macOS.

bash
./mythic-cli install github https://github.com/MythicAgents/Poseidon.git

Όταν ο χρήστης είναι σε linux, έχει μερικές ενδιαφέρουσες εντολές:

Κοινές ενέργειες

  • cat: Εκτύπωση του περιεχομένου ενός αρχείου
  • cd: Αλλαγή του τρέχοντος καταλόγου εργασίας
  • chmod: Αλλαγή των δικαιωμάτων ενός αρχείου
  • config: Προβολή τρέχουσας ρύθμισης και πληροφοριών φιλοξενίας
  • cp: Αντιγραφή ενός αρχείου από μια τοποθεσία σε άλλη
  • curl: Εκτέλεση ενός μόνο αιτήματος ιστού με προαιρετικές κεφαλίδες και μέθοδο
  • upload: Μεταφόρτωση ενός αρχείου στον στόχο
  • download: Λήψη ενός αρχείου από το σύστημα στόχο στον τοπικό υπολογιστή
  • Και πολλά άλλα

Αναζήτηση Ευαίσθητων Πληροφοριών

  • triagedirectory: Βρείτε ενδιαφέροντα αρχεία μέσα σε έναν κατάλογο σε έναν υπολογιστή, όπως ευαίσθητα αρχεία ή διαπιστευτήρια.
  • getenv: Λάβετε όλες τις τρέχουσες μεταβλητές περιβάλλοντος.

Κίνηση οριζόντια

  • ssh: SSH στον υπολογιστή χρησιμοποιώντας τα καθορισμένα διαπιστευτήρια και ανοίξτε ένα PTY χωρίς να δημιουργήσετε ssh.
  • sshauth: SSH σε καθορισμένο υπολογιστή(ές) χρησιμοποιώντας τα καθορισμένα διαπιστευτήρια. Μπορείτε επίσης να το χρησιμοποιήσετε για να εκτελέσετε μια συγκεκριμένη εντολή στους απομακρυσμένους υπολογιστές μέσω SSH ή να το χρησιμοποιήσετε για SCP αρχεία.
  • link_tcp: Σύνδεση σε άλλο πράκτορα μέσω TCP, επιτρέποντας άμεση επικοινωνία μεταξύ των πρακτόρων.
  • link_webshell: Σύνδεση σε έναν πράκτορα χρησιμοποιώντας το προφίλ P2P του webshell, επιτρέποντας απομακρυσμένη πρόσβαση στη διεπαφή ιστού του πράκτορα.
  • rpfwd: Ξεκινήστε ή σταματήστε μια Αντίστροφη Προώθηση Θύρας, επιτρέποντας απομακρυσμένη πρόσβαση σε υπηρεσίες στο δίκτυο στόχο.
  • socks: Ξεκινήστε ή σταματήστε έναν διακομιστή SOCKS5 στο δίκτυο στόχο, επιτρέποντας τη σήραγγα της κυκλοφορίας μέσω του παραβιασμένου υπολογιστή. Συμβατό με εργαλεία όπως το proxychains.
  • portscan: Σάρωση υπολογιστή(ών) για ανοιχτές θύρες, χρήσιμο για την αναγνώριση πιθανών στόχων για οριζόντια κίνηση ή περαιτέρω επιθέσεις.

Εκτέλεση διαδικασίας

  • shell: Εκτέλεση μιας μόνο εντολής shell μέσω /bin/sh, επιτρέποντας άμεση εκτέλεση εντολών στο σύστημα στόχο.
  • run: Εκτέλεση μιας εντολής από το δίσκο με παραμέτρους, επιτρέποντας την εκτέλεση δυαδικών ή σεναρίων στο σύστημα στόχο.
  • pty: Άνοιγμα ενός διαδραστικού PTY, επιτρέποντας άμεση αλληλεπίδραση με το shell στο σύστημα στόχο.