Το Netcat είναι ένα βοηθητικό πρόγραμμα δικτύου για ανάγνωση και εγγραφή σε συνδέσεις δικτύου χρησιμοποιώντας τα πρωτόκολλα TCP και UPD. Θα το έχετε ακούσει συχνά ως τον ελβετικό σουγιά των εργαλείων δικτύωσης. Σήμερα θα δούμε έναν βασικό οδηγό χρήσης με τις βασικές παραμέτρους και εντολές που χρησιμοποιούνται από μηχανικούς δικτύου, ασφάλειας αλλά και hackers.
Η πιο συνηθισμένη χρήση του Netcat όταν πρόκειται για hacking είναι η δημιουργία reverse / bind shells, για piping και ανακατεύθυνση της ροής του δικτύου ή port listening. Επίσης αρκετά προγράμματα εντοπισμού σφαλμάτων και scripts, το χρησιμοποιούν για ανάλυση σύνδεση και πληροφοριών δικτύου. Σε αυτόν τον οδηγό θα μάθουμε πώς να χρησιμοποιούμε τα βασικά χαρακτηριστικά από το Netcat όπως:
- Banner grabbing
- Raw connections
- Webserver interaction
- File transfers

Banner Grabbing, raw connections και webserver interaction
Τα Service banners χρησιμοποιούνται συχνά από τους διαχειριστές συστημάτων για τη λήψη πληροφοριών των συστημάτων και υπηρεσιών στο δίκτυο. Τα service banners προσδιορίζουν την τρέχουσα υπηρεσία και συχνά την έκδοση της υπηρεσία που τρέχει.
Το Banner grabbing είναι μια τεχνική για την ανάκτηση αυτών των πληροφοριών από μια ανοιχτή θύρα και μπορεί να χρησιμοποιηθεί κατά τη διενέργεια δοκιμής διείσδυσης και την εκτίμηση της ευπάθειας. Όταν λοιπόν χρησιμοποιείτε το Netcat για banner grabbing, στην ουσία πραγματοποιείτε σύνδεση με έναν συγκεκριμένο host σε συγκεκριμένη θύρα. Όταν είναι διαθέσιμο ένα banner, εκτυπώνεται στην κονσόλα. Ας δούμε πώς λειτουργεί αυτό στην πράξη.
Για την εγκατάστασή του ανατρέξτε στον διαχειριστή πακέτων της διανομής σας και αναζητήστε το ως «netcat».
Netcat banner grabbing
Η βασική χρήση του Netcat συνοψίζεται ως εξής :
1 | nc [παράμετροι] [διεύθυνση ip] [θύρα] |
Ας υποθέσουμε τώρα ότι έχουμε έναν FTP server στη θύρα 21:
12 | nc 192.168.100.100 21 220 (vsFTPd 2.3.4) |
Το nc [ip] [θύρα] θα δημιουργήσει μια σύνδεση, η οποία θα επιστρέψει ένα banner εφόσον είναι διαθέσιμο. Το ίδιο μπορείτε να το δοκιμάσετε και στην θύρα 80.
Netcat raw connection
Για να δείξουμε πώς λειτουργεί μια raw connection, θα δώσουμε ορισμένες εντολές FTP αφού συνδεθούμε με τον απομακρυσμένο server στην υπηρεσία FTP.
Ας δούμε αν επιτρέπεται η ανώνυμη πρόσβαση σε αυτόν τον διακομιστή FTP δίνοντας την εντολή USER anonymous και για password PASS.
12345678910111213141516171819202122 | nc ftp .otenet.gr 21 USER anonymous 331 Please specify the password. PASS 230 Login successful. SYST 215 UNIX Type: L8 pwd 257 "/" stat 211-FTP server status: Logged in as ftp TYPE: ASCII No session bandwidth limit Session timeout in seconds is 600 Control connection is plain text Data connections will be plain text At session startup, client count was 58 vsFTPd 2.0.5 - secure, fast, stable 211 End of status quit |
Σε αυτό το παράδειγμα έχουμε χρησιμοποιήσει μια υπηρεσία FTP αλλά αυτό λειτουργεί επίσης και σε άλλες υπηρεσίες, όπως υπηρεσίες SMTP και HTTP.
Web server interaction
Το Netcat μπορεί επίσης να χρησιμοποιηθεί για να αλληλεπιδράσει με webservers μέσω αιτημάτων HTTP. Για παράδειγμα ας δούμε την IP του ebay.com:
123 | ping ebay.com PING ebay.com (66.135.196.249) 56(84) bytes of data |
Οπότε μπορούμε τώρα να δοκιμάσουμε το παρακάτω:
1 | nc 66.135.196.249 80 |
Στη συνέχεια, εκτελέστε αυτό το αίτημα HTTP ακριβώς από κάτω και πατήστε enter:
12345678910111213 | HEAD / HTTP /1 .1 HTTP /1 .1 302 Found X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=31536000 x-xss-protection: 1; mode=block x-frame-options: SAMEORIGIN Location: http: //pages .ebay.com /messages/page_not_found .html Vary: Accept Content-Length: 0 rlogid: undefined Date: Fri, 29 Nov 2019 11:15:36 GMT Connection: keep-alive |
Βλέπουμε λοιπόν ότι με το netcat μπορούμε να εκτελέσουμε κάποια http request όπως κάνει ο browser μας και να συλλέξουμε πληροφορίες
File transfers με Netcat
Σε αυτό το παράδειγμα θα χρησιμοποιήσουμε μια σύνδεση Netcat για να μεταφέρουμε ένα αρχείο κειμένου.
Ας υποθέσουμε ότι έχουμε μια απομακρυσμένη σύνδεση σε υπολογιστή και θέλουμε να μεταφέρουμε ένα αρχείο από τον δικό μας. Πρώτα χρειάζεται να δημιουργήσουμε έναν listener στον απομακρυσμένο και να συνδεθούμε με αυτό από τον δικό μας. Θα χρησιμοποιήσουμε τη θύρα 8080 για αυτό το σκοπό και θα μεταφέρουμε το αρχείο στην επιφάνεια εργασίας:
1 | nc -lvp 8080 > /root/Desktop/transfer .txt |
Στον δικό μας υπολογιστή συνδεόμαστε στη θύρα 8080 και στείλουμε ένα όνομα αρχείου transfer.txt:
1 | nc 192.168.100.107 8080 < /root/Desktop/transfer .txt |
Στη συνέχεια, πατάμε Ctrl + C
για να εμφανίσουμε τα περιεχόμενα του αρχείου τόσο στο δικό μας όσο και στον απομακρυσμένο υπολογιστή.
Ping Ports με Netcat
Έστω ότι έχουμε τον απομακρυσμένο server example.com
και
θέλουμε να μάθουμε ποιες θύρες από το 1 έως 100 είναι διαθέσιμες. Θα
κάνουμε σάρωση των ports και θα εξάγουμε το αποτέλεσμα σε ένα αρχείο που
ονομάζεται output.txt
. Μπορούμε να το κάνουμε αυτό χρησιμοποιώντας την ακόλουθη εντολή:
1 | nc -vv -z example.com 1-100 > /tmp/output .txt 2>&1 |
Αυτή η εντολή εξάγει όλο το αποτέλεσμα από τη σάρωση της θύρας στο αρχείο output.txt
. Μπορούμε να περιορίσουμε το περιεχόμενο του αρχείου, αγνοώντας τις μη επιτυχημένες συνδέσεις συνδυάζοντας την με την Grep. :
1 | nc -vv -z example.com 1-100 2>&1 | grep succeeded > /tmp/output .txt |
Επίλογος
Με το παρόν οδηγό για το netcat απλώς πήραμε μια γεύση, ενώ οι δυνατότητές του δεν τελειώνουν εδώ. Μπορείτε με man netcat
να δείτε όλες τις παραμέτρους και τους συνδυασμούς που μπορείτε να κάνετε. Ελπίζουμε αυτές οι βασικές εντολές στον οδηγό για το netcat να σας κινήσει την περιέργεια ώστε να μάθετε περισσότερα για αυτό το σπουδαίο εργαλείο δικτύων.
Πηγή άρθρου: https://cerebrux.net/