Malware Analysis: Cuckoo Sandbox


Πριν απο λιγο καιρο μου ζητηθηκε να βοηθησω στην επιλυση ενος προβληματος, το οποιο εκ πρωτης οψεως φαινοταν ως μια ακομα μολυνση ενος Windows συστηματος απο malware. Και οντως ηταν.
legoTo malware, γραμμενο μεσω AutoIt και κανοντας χρηση του default packer που χρησιμοποιει (UPX), ηταν προστατευμενο με κωδικο και ειχε χαμηλο detection rate στο VirusTotal (4/47) την περιοδο της μολυνσης . Ετσι εξηγειται αλλωστε και το γεγονος πως εγκαταστηθηκε στο συστημα χωρις προβλημα, παρα την παρουσια του Avira, του MalwareBytes και του SuperAntispyware. Ο καθαρισμος του δεν ηταν ιδιαιτερα δυσκολος, χαρη στα βασικα εργαλεια που πρεπει να χρησιμοποιει κανεις οταν κανει troubleshooting Windows συστηματα: Το Autoruns και τον Process Explorer. Εν συντομια, τα βηματα ηταν ο εντοπισμος των υποπτων processes, ο ελεγχος των ιδιοτητων τους, η διαγραφη των σχετικων εγραφων απο τη registry και τελος, η διαγραφη των ιδιων των executables. Τιποτα πρωτοτυπο, μια αρκετα τυπικη διαδικασια σε τετοιες περιπτωσεις.

Στη συγκεκριμενη περιπτωση το “μειονεκτημα” των εργαλειων που ανεφερα ειναι πως απαιτειται ανθρωπινη παρεμβαση. Η οποια ανθρωπινη παρεμβαση προυποθετει την χρηση του ιδιου λειτουργικου για το οποιο ειναι γραμμενο το malware, με αλλα λογια Windows. Οταν μου ζητηθηκε να βοηθησω ημουν εκτος εδρας και μακρυα απο το desktop μου. Αποτελεσμα, ο ελεγχος του malware θα επρεπε να γινει στο Macbook Pro, το οποιο στη περιπτωση μου εχει ενα και μοναδικο OS. Μικρο το κακο, ας ειναι καλα το VMWare Fusion και οι virtual machines. Επι τη ευκαιρια αποφασισα να παω ενα βημα παραπερα, την αυτοματοποιηση της ολης διαδικασιας: Cuckoo Sandbox.

Σχετικα με την ανθρωπινη παρεμβαση την οποια ανεφερα ως μειονεκτημα. Αποτελει μειονεκτημα για την συγκεκριμενη περιπτωση, οπου δεν μιλαμε για καποιο εξειδικευμενο malware, παραγωγο του SpyEye, του Kelihos, κλπ, κλπ, αλλα για καποιο, απλουστερης μορφης, οπου δεν ειναι απαραιτητη η αναλυση απο ανθρωπο, για τυχον εξωτικες λειτουργιες του. Μεχρι αποδειξεως του εναντιου προφανως.

Προβλημα πρωτο: Ειμαι σε Mac. Το Cuckoo (και τα προαπαιτουμενα του) λειτουργει σε GNU/Linux διανομες. Φυσικα με λιγο(?) κοπο πιθανοτατα θα μπορεσει να λειτουργησει αρμονικα και με το OSX. To googling επι του θεματος οδηγησε σε τοιχο. Αντι να μπλεξω με iptables στο OSX, MacPorts/pip για να προσπαθησω να καλυψω τα προαπαιτουμενα του Cuckoo και ολα αυτα σε συνδυασμο με το Fusion το οποιο δεν βρισκεται μεσα στη λιστα με τα υποστηριζομενα VM περιβαλλοντα, προτιμησα να ακολουθησω την πεπατημενη:

 

Κubuntu ως server, Windows XP SP3 ως client σε VMWare Workstation. Και ολα αυτα VM inside a VM inside a VMμεσα στο Fusion. Προφανως το ολο setup δεν αποτελει το απαυγασμα της λειτουργικοτητας. Με λιγο tweaking στα χαρακτηριστικα της καθε VM, λειτουργησε και λειτουργει χωρις προβλημα για το σκοπο για τον οποιο δημιουργηθηκε. Δεν θα αναπτυξω την διαδικασια εγκαταστασης του Cuckoo μια και ο οδηγος στο site του ειναι κατι παραπανω απο κατατοπιστικος. Θα παραθεσω μονο τα edits των configuration files που χρησιμοποιησα, μαζι με το network setup της καθε VM, καθως και μερικες διαφοροποιησεις που χρειαστηκαν στα iptables rules.

 

cuckoo.conf

  • # Specify the name of the machine manager module to use, this module will
    # define the interaction between Cuckoo and your virtualization software
    # of choice.
    machine_manager = vmware
  • [resultserver]
    # The Result Server is used to receive in real time the behavioral logs
    # produced by the analyzer.
    # Specify the IP address of the host. The analysis machines should be able
    # to contact the host through such address, so make sure it’s valid.
    ip = 192.168.1.73
  • # Specify the network interface name on which tcpdump should monitor the
    # traffic. Make sure the interface is active.
    interface = vmnet1

FYI, αναλογα με τη διανομη, ισως χρειαστει edit και το path του tcdump, το οποιο δεν αναφερω.

 

vmware.conf

  • # Specify a comma-separated list of available machines to be used. For each
    # specified ID you have to define a dedicated section containing the details
    # on the respective machine. (E.g. cuckoo1,cuckoo2,cuckoo3)
    machines = cuckoo1
  • [cuckoo1]
    # Specify the path to vmx file of the current machine
    # and the comma-separated current snapshot
    label = /home/gi0/vm/WindowsXP.vmwarevm/WindowsXP.vmx,snapshot
  • # Specify the IP address of the current machine. Make sure that the IP address
    # is valid and that the host machine is able to reach it. If not, the analysis
    # will fail.
    ip = 192.168.15.128

 

Προαιρετικη ειναι η αλλαγη του VirusTotal API key, το οποιο προυποθετει τη δημιουργια λογαριασμου στο site.

processing.conf 

  • [virustotal]
    enabled = yes
    # Add your VirusTotal API key here. The default API key, kindly provided
    # by the VirusTotal team, should enable you with a sufficient throughput
    # and while being shared with all our users, it shouldn’t affect your use.
    key = 030679c81c42918d0ac0a570065053f51bd2994c9fdce884630edab**********

 

Οπως φαινεται και απο το configuration, το kubuntu (host) ‘μιλαει’ με τα Windows (guest) στο 192.168.15.1/24, με τον guest να εχει ip 192.168.15.128.  Οπως αναφερεται και στο installation guide, o guest ενδεικνυται να ‘μιλαει’ μονο με τον server. Προκειμενου να ‘δει’ το internet και παραλληλα να μπορουμε να κανουμε capture ολη την κινηση του με το tcpdump, δινουμε

  • sudo iptables -A FORWARD -o eth0 -i vmnet1 -s 192.168.15.128 -m conntrack –ctstate NEW -j ACCEPT

Σε περιπτωση που ο guest δεν εχει σταθερη ip (192.168.15.128), μπορουμε να παραλλαξουμε την παραπανω εντολη

  • sudo iptables -A FORWARD -o eth0 -i vmnet1 -s 192.168.15.1/24 -m conntrack –ctstate NEW -j ACCEPT

Τα παραπανω ακολουθουνται απο

  • sudo iptables -A FORWARD -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT
  • sudo iptables -A POSTROUTING -t nat -j MASQUERADE
  • sudo sysctl -w net.ipv4.ip_forward=1

Τελος, προτεινω και μια βολτα απο το /utils directory του Cuckoo και συγκεκριμενα το community.py, μεσω του οποιου μπορει να γινει εγκατασταση επιπλεον modules και signatures απο το repository της κοινοτητας του Cuckoo. Για την εγκατασταση ολων των παραπανω, με μια εντολη:

  • python community.py -a

Οι καρποι των παραπανω κοπων ερχονται συγκεντρωμενοι σε ενα html report: searchindexer.exe malware. Για τους παρατηρητικους, το detection rate εχει αυξηθει σημαντικα πια (17/48). Και ολα αυτα μεσα σε περιπου 5 λεπτα, χωρις παρεμβαση. Εναλλακτικα θα μπορουσε να γινει χρηση του Process Monitor, σε VM και παλι. Capture μερικων log files καποιων χιλιαδων εγγραφων, εφαρμογη καταλληλων φιλτρων και πολλαπλασιο χρονικο διαστημα αναλυσης τους, προκειμενου να οδηγηθει κανεις σε αποτελεσματα αναλογης ποιοτητας με το Cuckoo.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.