tarpit - anti-scan software

Giorgos Keramidas keramida at ceid.upatras.gr
Sat Mar 29 13:20:04 EET 2003


On 2003-03-29 02:33, Alexandros Papadopoulos <apapadop at cmu.edu> wrote:
>
> Θα ήταν πολύ ωραίο να υπήρχε κάποιο software (kernel module ίσως),
> που να έδινε ψεύτικες πληροφορίες σε portscans. Γνωρίζω μόνο την
> ύπαρξη παρόμοιου module που δίνει fake fingerpring σε nmap scans[0],

> [0]http://www.linuxsecurity.com/articles/intrusion_detection_article-6882.html

Το fingerprinting είναι μια διαδικασία που βασίζεται σε πολύ γνωστά
χαρακτηριστικά συγκεκριμένων OS ή ακόμα και σε heuristics, όταν δεν
μπορεί να βγάλει άκρη με κανένα άλλο τρόπο.  Γι' αυτό και δεν είναι
αξιόπιστος τρόπος να μάθει κάποιος τι τρέχεις.

Ακριβώς επειδή δεν είναι αξιόπιστος τρόπος, δεν έχει νόημα να παλεύεις
να 'κοροιδέψεις το nmap'.  Τουλάχιστον όχι από την πλευρά της αύξησης
στην ασφάλεια που υποθετικά θα προσέφερε κάτι τέτοιο.  Η μόνη
περίπτωση που έχει πρακτικά σημασία κάτι τέτοιο είναι όταν υπάρχει
κάποιο γνωστό exploit για συγκεκριμένη έκδοση του πυρήνα και για
συγκεκριμένο πρόγραμμα (όπως λέει και στο abstract από το [0]).  Αν
αυτή η περίπτωση σε ανησυχεί, τότε η λύση είναι απλή.  Δεν αφήνεις
μηχανήματα να τρέχουν πυρήνες ή προγράμματα για τα οποία υπάρχει
γνωστό exploit :-)

Αν μέσα σε όλα αυτά βάλεις και το γεγονός ότι το fingerprinting τρικ
που ξεγελά το nmap-1.2.3 μπορεί άνετα να μην ξεγελά το 1.2.4 μετά από
μια βδομάδα... μάλλον είναι άχρηστο να κάθεσαι να βασανίζεσαι.  Εκτός
και το κάνεις για να περάσεις την ώρα σου οπότε πάσο.

Για παράδειγμα, το παρακάτω:

  | 5.4. FreeBSD TCP_DROP_SYNFIN
  |
  | FreeBSD kernel has got a special option, TCP_DROP_SYNFIN, which
  | actually drops all packets with the SYN and FIN flags activated
  | (Nmap test #3 sends a SYN+FIN+PSH+URG TCP packet); this special
  | option could be also a valid method for defeating Nmap when
  | performing its tests (be sure to activate it at startup in
  | /etc/rc.conf).

βασίζεται στον τρόπο που γίνεται ΕΝΑ από τα τεστ του nmap όταν
προσπαθεί να κάνει fingerprinting.  Αυτό που δεν λέει παραπάνω όμως,
και είναι σημαντικό για πολλούς servers είναι ότι το να κάνεις χύμα
drop όλα τα πακέτα που έχουν SYN+FIN μπορεί να δημιουργήσει σοβαρά
προβλήματα σε τουλάχιστον δυο σημαντικά πράγματα:

  * Στα T/TCP extensions (transation TCP), που χρησιμοποιούν κάποιοι
    database servers (νομίζω η Oracle είναι μια από τις databases,
    αλλά δεν βάζω και το χέρι μου στη φωτιά).

  * Σε web servers όπως ο Apache (αρκετά συχνό service σε Linux ή
    FreeBSD μηχανήματα).

> αλλά αυτό που θέλω είναι κάτι που να δείχνει *τα πάντα* ανοιχτά
> σε ένα σύστημα, ασχέτως του αν το μηχάνημα έχει listening ports ή
> όχι. Ξέρει κανείς τίποτα που να κάνει αυτή τη δουλειά;

Κάπως έτσι παίζει το portsentry.  Όμως...

Μετά τους πρώτους χαρούμενους αλαλαγμούς όταν το nmap δείξει ότι τα
non-listening ports είναι 'listening' αρχίζει να γίνεται λίγο περίεργο
το πράγμα.  Το portsentry μου έχει κάνει αηδίες μερικές φορές,
καταναλώνοντας μνήμη για να κρατάει resources του πυρήνα σε κατάσταση
που να δείχνει ότι κάποιο connection 'υπάρχει', και έχει τύχει κάποιες
φορές να χάνω κανονικότατα connections λόγω locking races μέσα στον
πυρήνα όταν κάποιο πρόγραμμα πήγε να ανοίξει socket σε port που
εντελώς συμπτωματικά κάποιος βλάκας admin είχα βάλει το portsentry να
ακούει.

Αυτό μπορεί να ήταν bug του FreeBSD που τον τελευταίο χρόνο άλλαξε 2
φορές το locking των pcb δομών στον πυρήνα, και που έχει ακόμα λίγο
περίεργο SMP support, αλλά όπως και νά χει... κάποιος έκανε βλακείες.

Επειδή το portsentry δεν μου προσέφερε και πολλά πέρα από κάποια
περίεργα nmap logs, το βγαλα μετά από λίγο.

> Προς το παρόν σκέφτομαι να γράψω ένα scriptάκι που να σηκώνει μπόλικα
> listening netcats [1] (nc -l -p <port number> > /dev/null), αλλά
> προφανώς δεν είναι ιδιαίτερα ασφαλές.

Μπα.  Απλά κάνε κανένα bastard firewall ruleset from hell, που ακόμα
και για τα icmp έχει state keeping και επιτρέπει μόνο για λίγη ώρα
μετά την αποστολή icmp να περνάνε τα incoming icmp, εκτός από αυτά που
θεωρεί απαραίτητα το internet host requirements rfc Και το internet
gateway requirements rfc.  Μετά, με στενή παρακολούθηση των security
announcements για τα προγράμματα που τρέχεις υποχρεωτικά (γιατί π.χ.
τα χρειάζεται κάποιο service που όντως κάνει χρήσιμη δουλειά) γενικά
έχεις ένα καλό επίπεδο ηρεμίας.

- Γιώργος




More information about the Linux-greek-users mailing list