ΠΡΟΣΟΧΗ

Προσοχή! Οι οδηγοί μου είναι μόνο για εκπαιδευτικούς σκοπούς,
εφαρμόζοντας τους κακόβουλα σε τρίτους είναι με δικιά σας ευθύνη καθώς ορισμένοι απο αυτούς είναι παράνομοι


Τετάρτη 22 Οκτωβρίου 2014

Πως κοιταμε αν ενα pdf αρχειο ειναι μολυσμενο και πως αφαιρουμε τον ιο (pdfid,pdf-parser,peepdf)





Τι θα χρειαστειτε;

1.Kali linux


Πολυ απο εσας διαβαζετε βιβλια σε μορφη pdf και συνηθως τα βρισκετε δωρεαν στο διαδικτυο
Καποιος ομως κακοβουλος χρηστης τα ανεβασε δωρεαν στο διαδικτυο με σκοπο να σας μολυνει με ιο


Σε αυτο τον οδηγο θα μαθουμε να κοιταμε τα αρχεια pdf αν εχουνε ιο

Για το παραδειγμα εχω φτιαξει ενα αρχειο pdf χωρις ιο και ενα με ιο

κοιταξτε οταν ανοιγουμε το kalo pdf


και τωρα το kako.pdf


οπως βλεπετε καμια οπτικη διαφορα παρα μονο στο kako.pdf  ειναι λιγο μεγαλυτερο σε kilobyte λογο του ιου που εχω δεσμευσει με το metasploit 

οποτε τωρα με την βοηθεια του pdfid θα δουμε αρχικα αν εχει καποιο javascript η κατι εκτελεσιμο

*αν θελετε να ανιχνευσετε ολοκληρο φακελο με pdf αρχεια τοτε χρησιμοποιηστε
 pdfid -s /fakelos_me_pdf/

ανοιγουμε ενα τερματικο και γραφουμε

pdfid /root/Desktop/kalo.pdf

οπου /root/Desktop/kalo.pdf ειναι η διαδρομη του αρχειου pdf

στην πανω εικονα το αρχειο kalo.pdf κοιταμε τις εξεις γραμμες
αν και ξερω οτι ειναι καθαρο το αρχειο βλεπω /Open action δλδ με το που ανοιξει να τρεξει η να δειξει μια εντολη η ενα script

δειτε τον πινακα κατω 
  • AA :: an additional actions dictionary defining a fields behavior in response to trigger events
  • AcroForm :: PDF files interactive form dictionary
  • endobj :: specifies the end of a object in a PDF file
  • endstream :: the end marker of a stream object in a PDF file
  • JavaScript :: javascript dictionary containing javascript scripts
  • JBIG2Decode :: decompresses data encoded using the JBIG2 standard
  • JS :: a text string or stream containing JavaScript that will be executed when the action is triggered
  • Launch :: launch an application which usually opens a file
  • obj :: the beginning of a object in a PDF file
  • ObjStm :: object stream
  • OpenAction :: destination that shall be displayed or action that will be performed when PDF is opened
  • RichMedia :: interactive PDF elements
  • startxref :: follows trailer keyword and is offset of the cross-reference stream
  • stream :: the beginning marker of a stream object PDF file
  • trailer :: provides a method to quickly find a cross-reference table and certain special objects
  • xref :: notes a cross-reference section in a PDF file
 τωρα με την βοηθεια του peepdf θα δουμε καλυτερα τι ειναι αυτο και τι περιεχει το open action

 οποτε πριν τρεξουμε το peepdf πρεπει να το κανουμε update με την εντολη

peepdf -u


και τωρα αναλυουμε το αρχειο kalo.pdf με την ποιο κατω εντολη

peepdf /root/Desktop/kalo.pdf


εδω το peepdf μας λεει οτι /openAction ειναι στο object 15
ομως θα τρεξουμε το peepdf σε interactive mode με την εντολη

peepdf -i /root/Desktop/kalo.pdf

  

αν πληκτρολογησετε help θα δειτε τις εντολες 

πχ


για δουμε το metadata

εδω βλεπουμε ποτε δημιουργηθηκε το αρχειο ,τον τιτλο, το θεμα και οτι δημιουργηθηκε απο Libreoffice (openoffice)

τωρα ας κοιταξουμε το object 15 το οποιο το peepdf βρηκε υποπτο

και βλεπουμε στο /OpenAction ειναι το object 1 και οτι λεει null null δλδ τιποτα

ας δουμε τωρα το kako.pdf με το pdfid

οπως βλεπετε το pdf εχει javascript ,2 openAction και Launch

ας το κοιταξουμε με το peepdf

οποτε με την εντολη peepdf -i /root/Desktop/kako.pdf


ας κοιταξουμε το object 15

βλεπουμε οτι φερνει ενα αλλο open action στο object 21 οτι το object 17 εχει ονοματα
οποτε κοιταμε το 17

βλεπουμε οτι εχει ενα συνδεδεμενο αρχειο στο object 18

και βλεπουμε το ονομα του αρχειου kalo (δλδ πχ εγω εφτιαξα το kalo.pdf και απο με αυτο το μολυνα με ιο και το ονομασα kako.pdf 
δειτε εικονα κατω

το object 20 ειναι ο ιος


 τωρα ας δουμε το object 21 που μας εβγαλε οτι εχει javascript

 οπως βλεπετε οταν τρεξει το javascript ανοιγει το kalo.pdf

 και το object 22 που ειναι το Launch


με λιγα λογια το javascript τρεχει το αρχειο kalo.pdf ωστε  ο χρηστης να μην καταλαβει τιποτα και επισης τρεχει το object 22 ωστε να πατησει ο χρηστης αποδοχη για να γραφτει στο c:windows/system32 το object 20 που ανοιγει ενα meterpreter session με το θυμα

ας δουμε καλυτερα με το pdf-parser

τρεχουμε σε ενα τερματικο

pdf-parser /root/Desktop/kako.pdf

το pdf-parser θα ανοιξει ολα τα object
πχ 


εμας μας ενδιαφερει το object 19,20,21,22 δλδ αυτα που βρηκαμε με το peepdf

ας υποθεσουμε οτι δεν εχουμε χρησιμοποιησει το pdfid για να δουμε αν εχει ιο το kako.pdf

τρεχουμε την εντολη

pdf-parser -a /root/Desktop/kako.pdf


οπως βλεπουμε εχει 2 action στο object 21 και 22

οποτε με την εντολη κοιταμε το object 21

pdf-parser --object=21 /root/Desktop/kako.pdf

βλεπουμε οτι το javascript κανει export ενα αντικειμενο με το ονομα kalo
και εκτελει και action

τωρα ας δουμε το object 22

pdf-parser --object=22 /root/Desktop/kako.pdf


εδω βλεπουμε το Launch που προσπαθει να εκτελεσει το kalo.pdf δλδ τον ιο
ομως που ειναι ο ιος?

με την εντολη

pdf-parser -r 21 /root/Desktop/kako.pdf

θα δουμε ποια object συνδεονται(reference) με το 21


οποτε βλεπουμε το object 15

 οποτε τωρα κοιταμε το object 17 εφοσον τα 21 το εχουμε κοιταξει

και κοιταμε το object 18


κοιταμε το object 19

 και εδω καταλαβαινουμε οτι απο το αρχειο kalo.pdf φτιαχτηκε το kako.pdf

και βλεπουμε τον ιο στο object 20

τωρα ας δουμε το object 20


βλεπουμε που λεει contains stream

για να δουμε τι περιεχει το stream γραφουμε

pdf-parser -f --object=20 /root/Desktop/kako.pdf


τωρα για να γλυτωσουμε την περιηγηση απο object σε object μεχρι να βρουμε τον ιο απλα γραφουμε 

pdf-parser --searchstream=program /root/Desktop/kako.pdf

και μας βρισκει το object που εχει τον ιο δλδ το 20



ενας αλλος τροπος για να μην κανουμε αυτη την δουλεια απο object σε object θα χρησιμοποιησουμε το pdfobjflow για να φτιαξουμε ενα γραφημα

οποτε κανουμε εγκατασταση το pdfobjflow

γραφουμε apt-get install python-pydot

μετα για να δημιουργησουμε ενα φακελο

mkdir /root/tools/pdflow
πηγαινουμε στο φακελο με την εντολη 
cd /root/tools/pdflow
 για να το κατεβασουμε
wget http://pdfobjflow.googlecode.com/git/pdfobjflow.py
για να το κανουμε εκτελεσιμο
chmod +x pdfobjflow.py
δειτε εικονα

τωρα τρεχουμε την εντολη για να μας φτιαξει το γραφημα

pdf-parser /root/Desktop/kako.pdf | python /root/tools/pdflow/pdfobjflow.py eog pdfobjflow.png

πηγαινουμε και ανοιγουμε το pdfobjflow.png στην τοποθεσια /root


οποτε βλεπουμε ποιο object συσχετιζετε με ποιo

Εφοσον τωρα εχουμε μαθει να κοιταμε τα αρχεια pdf για ιους και βρηκαμε και σε ποιο object τρεχει ο ιος
αν θελουμε μπορουμε να  εξαγουμε τον ιο ωστε να βρουμε την ip του κακοβουλου χρηστη

γραφουμε 

pdf-parser --dump=/root/ios.exe -f --object=20 /root/Desktop/kako.pdf

και το αρχειο ios.exe θα ειναι στη διαδρομη /root/

τωρα αν εχουμε βρει ενα ωραιο βιβλιο pdf και δυστυχως καποιος το εχει μολυνει με ιο το απενεργοποιουμε με το pdfid
στην ουσια αλλαζει τα ονοματα ωστε να μην εκτελεστουνε

pdfid -d /root/Desktop/kako.pdf


με το peepdf μπορουμε να διαγραψουμε η να τροποποιησουμε ενα object πχ το object 20 που ειναι ο ιος θα βγαλουμε το περιεχομενο του


μετα γραφουμε save και exit

ξανατρεχουμε την εντολη peepdf /root/Desktop/kako.pdf

και βλεπουμε οτι στο object 20 δεν εχει τιποτα μεσα










Δεν υπάρχουν σχόλια: