Τρίτη, 18 Απριλίου 2017

CIA: Πρόγραμμα HammerDrill v2.0

Το πρόγραμμα HammerDrill της αμερικανικής CIA (Central Intelligence Agency, Κεντρική Υπηρεσία Πληροφοριών) είναι ένα κακόβουλο πρόγραμμα υπολογιστών που στόχο έχει να υποκλέπτει οτιδήποτε προσπαθεί κάποιος να γράψει σε CD ή DVD. Το πρόγραμμα αυτό διέρρευσε μέσω της ιστοσελίδας Wikileaks πριν από λίγες εβδομάδες και σε αυτό το άρθρο θα δούμε τι ακριβώς είναι και πως λειτουργεί.
Πηγή: TechCrunch.com

Μέχρι και σήμερα η διάδοση δεδομένων μέσω οπτικών μέσων όπως CD και DVD είναι πολύ δημοφιλής. Είναι αξιοσημείωτο άλλωστε ότι πρόσφατα έχουμε δει αμέτρητα CD και DVD με εκπαιδευτικό υλικό τρομοκρατικών οργανώσεων στις μεγάλες εμπόλεμες ζώνες της Μέσης Ανατολής. Με βάση αυτό, το Information Operations Center (Κέντρο Επιχειρήσεων Πληροφοριών) της CIA κατασκεύασε το HammerDrill (ή στα ελληνικά, Κρουστικό Δράπανο). Σύμφωνα με τη διαρροή το πρόγραμμα ανήκει στο OSB (Operational Support Branch, Τομέας Επιχειρησιακής Υποστήριξης) και χρησιμοποιείται ενεργά στην επιχείρηση με κωδικό όνομα JQJCRUSH για την οποία όμως δεν έχουμε κανένα άλλο στοιχείο πέρα από το κωδικό της όνομα.

Πηγή: WikiLeaks.org

Το πρόγραμμα HammerDrill έχει χαρακτηρισμό S (Secret, Απόρρητο) και NOFORN (No Foreign Nationals, Όχι για ξένα έθνη) και ήταν μέρος της συλλογής Vault 7 της CIA. Η επίσημη περιγραφή του προγράμματος, όπως αυτή διέρρευσε, μεταφρασμένη στα ελληνικά είναι η ακόλουθη.


Το HammerDrill είναι ένα εργαλείο συλλογής δεδομένων CD/DVD το οποίο αντιγράφει φακέλους και αρχεία σε ένα προκαθορισμένο μοτίβο φακέλων και αρχείων όπως επίσης καταγράφει τις εισαγωγές και αφαιρέσεις μέσων CD/DVD. Η έκδοση 2.0 προσθέτει μία ικανότητα αναπήδησης κενών που εκμεταλλεύεται τα εκτελέσιμα αρχεία των 32-bit όταν αυτά γράφονται σε οπτικά μέσα με το πρόγραμμα Nero. Επιπρόσθετα, η έκδοση 2.0 προσθέτει δυνατότητες κατάστασης, τερματισμού και κατά βούληση συλλογή δεδομένων ελεγχόμενη από τα αρχεία HammerDrillStatus.dll, HammerDrillKiller.dll, και HammerDrillCollector.dll. Η καταγραφή πλέον ταυτοποιεί τα οπτικά μέσα βάση των δεδομένων των δύο πρώτων τομέων του ISO, το οποίο επιτρέπει μοναδική αναγνώριση από οπτικά μέσα πολλαπλών εγγραφών ακόμα και καθώς τα δεδομένα προστίθεται ή αφαιρούνται. Η καταγραφή επίσης κρατάει στοιχεία κάθε φορά που το HammerDrill μολύνει ένα πρόγραμμα που εντοπίζει σε οπτικά μέσα.




Πηγή: NationalReview.com

Οπότε, για να είναι καλύτερα κατανοητό στους αναγνώστες μας, χωρίσαμε τις δυνατότητες του HammerDrill v2.0 στις ακόλουθες βάση της περιγραφής της CIA που είδαμε παραπάνω.

  • Όταν κάποιος τοποθετεί ή αφαιρεί ένα CD/DVD το HammerDrill αντιγράφει τα περιεχόμενα του καθώς και πότε τοποθετήθηκε και πότε αφαιρέθηκε.

  • Όταν κάποιος γράφει ένα CD/DVD με το πρόγραμμα Nero, το HammerDrill μολύνει τα εκτελέσιμα προγράμματα προτού αντιγραφούν ώστε να μολύνει οποιονδήποτε τα εκτελέσει από το CD/DVD.

  • Όλα τα CD/DVD ταυτοποιούνται ώστε η CIA να μπορεί να γνωρίζει ακριβώς ποιος έγραψε το συγκεκριμένο CD/DVD εάν ο υπολογιστής ήταν μολυσμένος με το πρόγραμμα HammerDrill.

  • Το HammerDrill κρατάει στοιχεία για το κάθε πρόγραμμα που έχει μολύνει.
Πηγή: WikiLeaks.org

Όπως βλέπετε, στη διαρροή συμπεριλαμβάνονταν και οι σημειώσεις των προγραμματιστών του HammerDrill που είναι πολύ σημαντικό για να κατανοήσουμε το πως ακριβώς λειτουργεί. Όπως γράφουν οι σημειώσεις, η έκδοση 2.0 διαφέρει από την έκδοση 1.1 μόνο κατά μία δυνατότητα. Τη δυνατότητα μόλυνσης των εκτελέσιμων αρχείων τη στιγμή που γράφονται σε ένα CD/DVD. Στη συνέχεια θα δούμε πως ακριβώς γίνεται αυτό σε βάθος.

Πηγή: TheHackerNews.com

Το λειτουργικό σύστημα Microsoft Windows έχει ένα υποσύστημα που ονομάζεται WMI (Windows Management Instrumentation, Σύστημα Διαχείρισης Windows) και έχει στόχο να προσφέρει στους προγραμματιστές έναν εύκολο τρόπο διεπαφής με το λειτουργικό σύστημα. Το πρόγραμμα HammerDrill της CIA χρησιμοποιεί δύο ασύγχρονες κλήσεις στο WMI για τη δημιουργία και διαγραφή νέων αντικειμένων Win32_Process, δηλαδή νέων εκτελέσεων προγραμμάτων στο σύστημα. Με απλά λόγια, μέσω του WMI παρακολουθεί πότε γίνεται η εκτέλεση ή το κλείσιμο ενός προγράμματος.

Πηγή: TechNet.microsoft.com/en-us/library/bb684733.aspx

Στη συνέχεια το HammerDrill ελέγχει εάν οποιοδήποτε από τα προγράμματα που μόλις εκτελέστηκαν έχει όνομα που ταιριάζει με τα ακόλουθα.

  • NERO.EXE
  • NEROEXPRESS.EXE
  • NEROSTARTSMART.EXE
Αυτά τα τρία προγράμματα είναι μέρος του ιδιαίτερα δημοφιλούς προγράμματος εγγραφής CD/DVD που ονομάζεται Nero Burning ROM. Εάν συμβεί αυτό, τότε το HammerDrill αυτόματα αποκρυπτογραφεί, αποσυμπιέζει και γράφει το πρόγραμμα μόλυνσης MemoryLoadShimDLL στη μνήμη του Nero με την εντολή 1. Για το πρόγραμμα MemoryLoadShimDLL δεν υπάρχουν στοιχεία μέχρι σήμερα αλλά φαίνεται να είναι ένα πρόγραμμα που επιτρέπει στη CIA να φορτώνει κακόβουλο κώδικα σε εκτελέσιμα αρχεία για Windows. Η εντολή 1 του MemoryLoadShimDLL περιγράφεται στις σημειώσεις των προγραμματιστών της CIA. Η εντολή αυτή αυτόματα μολύνει το πρόγραμμα και καλεί το DLLMain με την εντολή PROCESS_ATTACH το οποίο επιτρέπει εκτέλεση κώδικα κατά βούληση. Στη συνέχεια αποκρυπτογραφεί, αποσυμπιέζει και φορτώνει στη μνήμη οτιδήποτε βρίσκεται στο NeroHookDLL.
Πηγή: CNET.com

Το NeroHookDLL είναι ένα πρόγραμμα που λειτουργεί όπως τα προγράμματα προστασίας από ιούς κάνοντας χρήση της λειτουργίας detour (παράκαμψη) των Microsoft Windows. Η λειτουργία αυτή επιτρέπει την εκτέλεση ενδιάμεσων προγραμμάτων. Κανονικά, το NeroHookDLL φορτώνει μέρος του προγράμματος Nero αλλά με χρήση της τεχνολογίας detour το HammerDrill παρακάμπτει τις κλήσεις στη συνάρτηση ReadFile() η οποία ανοίγει και διαβάζει αρχεία που το Nero θέλει να γράψει στα οπτικά μέσα καθώς και να επιβεβαιώσει ότι τα αρχεία γράφτηκαν σωστά. Το πρόγραμμα παράκαμψης του HammerDrill ανακτά τα δεδομένα του αρχείου που ζητήθηκε, ελέγχει εάν είναι εκτελέσιμο αρχείο για Windows, και εάν είναι, τότε καλεί τη συνάρτηση TrojanBinary() του HammerDrill που μολύνει το πρόγραμμα αυτό προτού το στείλει για εγγραφή μέσω του Nero.

Πηγή: KY3.com

Για την ακρίβεια, η συνάρτηση TrojanBinary() κάνει μία σειρά από ελέγχους προτού μολύνει το πρόγραμμα που αντιγράφεται στο CD/DVD. Ο λόγος είναι ότι δε θέλουν να εντοπιστεί από λάθος. Για την ακρίβεια, οι έλεγχοι που εκτελεί είναι οι ακόλουθοι.

  • Η κεφαλίδα DOS του προγράμματος έχει το αναγνωριστικό (e_magic) IMAGE_DOS_SIGNATURE που δείχνει ότι είναι εκτελέσιμο πρόγραμμα.

  • Η κεφαλίδα PE του προγράμματος (Signature) έχει το μοναδικό αναγνωριστικό IMAGE_NT_SIGNATURE που δείχνει ότι είναι εκτελέσιμο πρόγραμμα για Windows.

  • Ο τύπος συστήματος του εκτελέσιμο αρχείου (FileHeader.Machine) είναι 0x14c (IMAGE_FILE_MACHINE_I386) που δείχνει ότι είναι για 32-bit συστήματα.

  • Το αρχείο πρέπει να είναι 32-bit και εκτελέσιμο και αυτό ελέγχεται και μέσω του FileHeader.Characteristics με τη τιμή 0x102 που αναπαριστά τα IMAGE_FILE_EXECUTABLE_IMAGE και IMAGE_FILE_32BIT_MACHINE.

  • Ελέγχει ότι το αρχείο δεν είναι βιβλιοθήκη DLL με χρήση της μεθόδου !FileHeader.Characteristics & 0x2000.

  • Ελέγχει ότι το πρόγραμμα δεν είναι γραμμένο σε γλώσσα προγραμματισμού .NET ή VisualBasic μέσω του IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR.
Εάν υποθέσουμε ότι οι παραπάνω έλεγχοι ήταν επιτυχημένοι και η συνάρτηση TrojanBinary() προχωράει στη μόλυνση του προγράμματος προς εγγραφή. Για να το επιτύχει αυτό εκμεταλλεύεται τα «κενά» που έχει μέσα το αρχείο. Αρχικά εντοπίζει σε ποιο τομέα του αρχείου είναι αποθηκευμένος ο εκτελέσιμος κώδικας (αυτό μπορεί να είναι είτε στο .text, στο CODE, ή στο entryPoint) και αναζητά κενά ή μηδενισμένες περιοχές. Εάν βρει συνολικά 279 Bytes ελεύθερα ή παραπάνω, ελέγχει εάν το αρχείο είναι ήδη μολυσμένο. Εάν δεν είναι αντιγράφει τον κώδικα μόλυνσης μεγέθους 279 Bytes, υπολογίζει τη διεύθυνση του και αντικαθιστά τη διεύθυνση του προγράμματος με αυτή του κακόβουλου προγράμματος ώστε να εκτελεστεί πρώτα αυτό και μετά το κανονικό πρόγραμμα. Στη συνέχεια το TrojanBinary() επιστρέφει αυτό το τροποποιημένο αρχείο στο Nero για εγγραφή στο CD/DVD. Μετά την εγγραφή το Nero θα προσπαθήσει να επιβεβαιώσει ότι το έγραψε σωστά αλλά εφόσον η διαδικασία θα είναι η ίδια, το TrojanBinary() θα του επιστρέψει το ίδιο τροποποιημένο αρχείο που όντως θα ταιριάζει με αυτό που έγραψε στο CD/DVD.

Όταν κάποιος τοποθετήσει το μολυσμένο οπτικό μέσο και εκτελέσει το πρόγραμμα που μόλυνε όπως περιγράψαμε το HammerDrill, θα συμβεί το εξής. Το πρόγραμμα μόλυνσης έχει κρυπτογραφημένο κώδικα σε 16-bit που φορτώνει μέσω της συνάρτησης LoadLibraryA() των Windows τη βιβλιοθήκη urlmon.dll και από εκεί χρησιμοποιεί τη συνάρτηση UrlDownloadToCacheFileA() για να κατεβάσει κάποιο κρυφό πρόγραμμα απομακρυσμένης πρόσβασης από τη CIA. Για να το κατεβάσει διαβάζει το περιεχόμενο της μεταβλητής περιβάλλοντος PATHEXT που είναι κρυπτογραφημένη με XOR (περισσότερα για αυτό στο άρθρο μας «Πολεμικά Παίγνια: OTW Natas #11»). Τη μεταβλητή PATHEXT τη διαβάζει μέσω της συνάρτησης συστήματος GetEnvironmentVariableA(). Εάν η PATHEXT είναι άδεια το πρόγραμμα αμέσως επιστρέφει στη κανονική λειτουργία. Μάλιστα, οι προγραμματιστές της CIA γράφουν ότι το πρόγραμμα προστασίας Kaspersky δεν επιστρέφει τη σωστή τιμή από τη μεταβλητή PATHEXT και έτσι το HammerDrill μπορεί να εκτελεστεί χωρίς να εντοπιστεί καθώς είναι σε θέση να αναγνωρίζει εάν το εκτέλεσε το Kaspersky ή κάποιος πραγματικός χρήστης. Τέλος, χρησιμοποιεί το αποκρυπτογραφημένο περιεχόμενο της PATHEXT στη συνάρτηση συστήματος UrlDownloadToCacheFileA() για να κατεβάσει και να εγκαταστήσει το λογισμικό παρακολούθησης στο σύστημα από όπου εκτελέστηκε.
Πηγή: Sott.net

Με προγράμματα όπως το HammerDrill, η CIA συχνά αφήνει εις γνώσιν της επικίνδυνες πληροφορίες να διακινούνται μέσω οπτικών μέσων (CD/DVD) καθώς έτσι μπορεί να μάθει που ακριβώς πηγαίνουν, ποιοι τις χρησιμοποιούν και τις διανέμουν. Δυστυχώς, δεν έχουμε πρόσβαση στο εργαλείο ή σε άλλες πηγές για να κάνουμε εκτενέστερη αναφορά των υπόλοιπων λειτουργιών του αλλά γι’αυτό ονομάσαμε και το άρθρο μας HammerDrill v2.0. Γιατί συγκεντρωθήκαμε περισσότερο στη 2.0 έκδοση του προγράμματος.

http://24wro.com.gr/1154381/tourkokipria-me-erotika-vitsia-efage-xilo-apo-ton-erasti-tis-eno-ekane-erota-me-ton-sizigo-tis/