ვის არ უნახავს, ცეცხლოვანი კედლის (Firewall) შეტყობინება, რომ თქვენს პორტებს ვიღაც ბოროტი ბიძია ასკანირებს. ზოგ ახალბედას ეს საკითხი ცნობისმოყვარეობას უღვივებს, ზოგიც ამ ფანჯარას ყურადღებას არ აქცევს, მაგრამ რას ნიშნავს და რა დანიშნულება აქვს ამ ფანჯარას, ყველას აინტერესებს. და მაინც რა არის პორტების სკანირება?
ამ სტატიაში ვეცდები ზოგადად ავხსნა ეს საკითხი და ასევე შემოგთავაზოთ პატარა მიმოხილვა, თუ როგორ დავასკანიროთ პორტები და როგორ დავიცვათ თავი. იმისათვის, რომ ეს საკითხი კარგად გაიგოთ, საჭიროა, იცოდეთ TCP/IP “ჩაინიკის” დონეზე, არჩევდეთ ლოკალურ და გლობალურ ქსელებს, ასევე იცოდეთ რას წამოადგენენ პორტები. თუ ამის ცოდნაში ეჭვი გეპარებათ გადაიკითხეთ ja_ja-ს სტატია “ყველაფერი პორტებზე და გადამისამართებაზე”.
ჩვენ კომპზე გაშვებულია (რა თქმა უნდა, თუ არ გავთიშავთ) მრავალი სერვერის სერვისი, რომლების ფუნქცია არის ქსელიდან მიღებული ინფორმაციის დამუშავება. მაგალითად, Windows პლატფორმის შემთხვევაში - server-ის სერვისი, რომელიც გამოიყენება “ფაილების გასაზირებლად” (Sharing). თუ მომხმარებელი გაივლის ავტორიზაციას, მიიღებს ამ ფაილებზე წვდომას. ასეთივეა Remote Desktop - რომლის საშუალებითაც დაშორებული მომხმარებელი ავტორიზაციის შემთხვაში ასევე მიიღებს წვდომას თქვენს კომპთან. როგორც მიხვდით, ეს პროგრამები ფონურ რეჟიმში არიან გაშვებული და ელოდებიან ბრძანებებს შესაბამის პორტზე. საინტესოა, რას აკეთებს ბოროტი ხელი, რათა მოიპოვოს წვდომა თქვენს რესურსებზე. რა თქმა უნდა, მან არ იცის რა სერვისებია თქვენს კომპში აქტიური, მან ასევე არ იცის რა სისტემას იყენებთ Win-ს, linux-ს, თუ “ჭ”-ს. ამის გასარკვევად ის იწყებს პორტების სკანირებას. 1 დან რაღაც n პორტამდე, ამისთვის აგზავნის დანიშნულების არმქონე ინფორმაციას - ბიტებს, ჩვენი გაშვებული სერვერი კი ვალდებულია ამ ბიტებს უპასუხოს აგებულების მიხედვით. მაგ, server-ის სერვისი, პასუხობს, რომ არ აქვს უფლება ნახოს გაზიარებული ფაილები (can't access this share). ამის მიხედვით პორტების სკანერი პროგრამა შემტევს ატყობინებს, თუ რა პროგრამაა აქტიური და რომელ პორტზე. შემტევიც, თავისთავად, ამზადებს შეტევას და ამის მერე იწყება რეალური შეტევა. ანუ მხოლოდ პორტების სკანირება საფრთხეს არ წარმოადგენს, თუ უბრალოდ, უსაქმური ამოწმებს ამ მეთოდს.
ამ ყველაფრის უკეთ გასაგებად, მოდით, ცოტა პრაქტიკული გამოცდილება მივიღოთ.
გაითვალისწინეთ, მოცემული სტატია არის შემეცნებითი ხასიათის, არც საიტი და არც სტატიის ავტორი პასუხს არ აგებენ თქვენს ქმედებაზე. საკუთარ ქმედებაზე პასუხისმგებლობას იღებთ თქვენ თავზე. ასევე გაითვალიწინეთ, სხვისი კომპის თუ ქსელის დაზიანება ისჯება კანონით.
პირველ რიგში, გვჭირდება თვითონ პორტების სკანირების პროგრამა, linux-ის და ზოგადად Unix-ს შემთვევაში ეს არის Nmap (Win ვერსიას არ განვიხილავ იმიტომ, რომ ყოველმა მეორე ახალბედამ ქართული ინტერნეტი არ აიკლოს. უბრალოდ ახალბედა ლინუქსის ჩაწერას არ გარისკავს, ხოლო წინ წასული მომხმარებელი შესაბამის პროგრამას ვინდის ქვეშ თვითონაც იპოვნის და უაზრო სკანირებას არ დაიწყებს :-D). მოცემული პროგრამა იშოვება როგორც Debian-ის, ასევე Fedora-ს და სხვა ცნობილი დისტროების რეპოზიტებში, ასე რომ, პირდაპირ შეგიძლიათ გადაწეროთ კომპილირების გარეშე. მოკლედ, ჩავთვალოთ რომ შესაბამისი პროგრამა უკვე დააინსტალირეთ. გაუშვით ტერმინალი (მართალია, არსებობს ამ პროგრამის გრაფიკული გარსი, მაგრამ მე ტემინალიდან მუშაობას განვიხილავ.) და აკრიფეთ nmap + დასასკანირებელი ჰოსტი. მე ჩვენს ჰოსტს დავსკანავ :-P.
nmap compinfo.ge
მივიღებთ დაახლოებით ასეთ შედეგს:
user@eeepc-otosaxel:~$ nmap compinfo.ge
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-03-08 00:31 GET
Interesting ports on 80.83.135.194:
Not shown: 1660 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
81/tcp open hosts2-ns
110/tcp open pop3
111/tcp open rpcbind
135/tcp filtered msrpc
137/tcp filtered netbios-ns
138/tcp filtered netbios-dgm
139/tcp filtered netbios-ssn
143/tcp open imap
443/tcp open https
445/tcp filtered microsoft-ds
993/tcp open imaps
995/tcp open pop3s
1720/tcp filtered H.323/Q.931
3306/tcp open mysql
10000/tcp open snet-sensor-mgmt
Nmap finished: 1 IP address (1 host up) scanned in 4.333 seconds
პროგრამა წერს, რა პორტზე რა სერვისია მიბმული და ასევე წერს რომელი პორტი იფილტრება (Firewall-ით იბლოკება). იდეაში, ეს ინფო ზოგს არ დააკმაყოფილებს (ამ უტილიტით ოპერაციული სისტემის ვერსიისა და სერვისების ვერსიის შესახებ შეიძლება მიიღოთ ინფორმაცია). ვისაც განტერესებთ, თუ როგორ მუშაობს სრულად nmap-ი და კიდევ რა ინფოს მიღება შეიძლება, გადაიკითხეთ nmap-ის Manual-ები - უბრალოდ აკრიფეთ man nmap. მგონი “ჰაკერი” და ჰაკერი რას აკეთებენ გასაგებია, მოდით მივხედოთ თავდაცვას.
სანამ მოვყვებოდე, თუ რა უნდა ვქნათ თავის დასაცავად, ორიოდე სიტყვით, თუ რატომ გადავწყვიტე ამ სტატიის დაწერა. როგორც პრაქტიკამ მაჩვენა, მრავალი კომპ. მომხმარებელი უჩივის პორტების სკანირებას. ეს იმითაა გამოწვეული, რომ ახალი ინტერნეტ კავშირი GeLink-ი, კომპს ანიჭებს პირდაპირ გარე IP-ს. დაახლოებით ისეთი სიტუაციაა, როგორიც USB მოდემების დროს იყო. ამიტომ GeLink-ის შემთხვევაში დაცვის საუკეთესო საშუალებად მიმაჩნია ე.წ. Residental Gateway - უბრალო WAN პორტიანი როუტერი. ასეთი აპარატის დროს პორტების სკანირებას ბოროტმოქმედი ახდენს სწორედ ამ როუტერზე და არა კომპზე, სწორი კონფიგის შემთხვევაში კი როუტერის გატეხვა გაუჭირდება.
ახლა კი მივხედოთ იმათ, ვისაც როუტერის შეძენა არ სურს, ანდა აქვს როუტერი და აბეზარმა მეზობელმა უკვე ტვინი აუხადა სკანირებით :-D. მოდით, მივუბრუნდეთ ისევ საწყისს, სტატიის პირველ ნაწილს. რეალურად უკვე ვიცით თუ რა ინფო მისდის პორტების სკანერს და თუ შევძლებთ იმას, რომ სკანერს ეს ინფო არ მიეწოდოს, იგი უბრალოდ დაანებებს ჩვენს კომპს თავს და გადავა სხვა კომპზე. ამისთვის არსებობს ორი საშუალება, პირველი - გავთიშოთ ყველა პოტენციურად საშიში სერვისი, ან უბრალოდ ფაირვოლით დავბლოკოთ პორტების სკანირება. რა თქმა უნდა, კომბინაციაში ყველაზე უფრო კარგ შედეგს მივიღებთ. ჯერ ვნახოთ რა მდგომარეობაშია ჩვენი კომპი. ამისთვის უბრალოდ ჩავრთოთ კომპი და სხვისი კომპიდან დავასკანიროთ საკუთარი პორტები. მე განვიხილავ Win 2000-ის პორტებს. მართალია, სისტემა ცოტა მივაკონფიგე, მაგრამ სტატიისთვის დაცვების ნაწილი გავთიშე, შესაბამისად, სკანირების შედეგები გამოჩნდება.
დავიწყოთ: დავუშვათ არ ვიცით რომელ IP-ზე რომელ ოპერაციულ სისტემიანი კომპია. ამიტომ, ჯერ შუალედის ნაწილს დავასკანირებ და გავიგებ რომელი IP-ია აქტიური. მივიღებთ ასეთ შედეგს:
user@eeepc-otosaxel:~$ nmap -v -sP 192.168.0.1-5
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-03-08 14:17 GET
Host 192.168.0.1 appears to be up.
Host 192.168.0.2 appears to be down.
Host 192.168.0.3 appears to be up.
Host 192.168.0.4 appears to be down.
Host 192.168.0.5 appears to be up.
ამით მივიღეთ ინფორმაცია იმის შესახებ, თუ რომელი ჰოსტებია ჩართული. როგორც მიხვდით გამოვიყენე ping-ი, ე. ი. თუ თქვენი კომპი "პინგს" არ უპასუხებს, ის არ ჩაითვლება აქტიურად და შემტევიც შეეშვება. აქედან გამოდის, რომ თავდასაცავად, პირველი, რაც უნდა გააკეთოთ, ესაა პინგზე პასუხის გაცემის აკრძალვა.
ახლა დავუშვათ, რომ ბოროტი იუზერი კონკრეტულად ჩვენ გვიტევს. მაგ, შემტევმა გამოიყენა შემდეგი ბრძანება: user@eeepc-otosaxel:~$ sudo nmap -v -O -sV 192.168.0.3. ამ დროს, როგორც ხვდებით, იგი მიიღებს დეტალურ ინფოს. (მართალია, როგორც ზემოთ ვახსენე, ვინდი ცოტა კონფიგურირებულია, მაგრამ მაინც იპოვნა ღია სერვისები):
PORT STATE SERVICE VERSION
135/tcp open mstask Microsoft mstask (task server - c:\winnt\system32\Mstask.exe)
139/tcp open netbios-ssn
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
როგორც ხედავთ ამ პორტებზე აქვს შემტევს შანსი, რომ რამე მოშალოს. თავდაცვისთვის გვაქვს ორი საშუალება. პირველი - ამ პორტებზე წვდომა ფაირვოლით ავუკრძალოთ შემტევს ან მეორე - უბრალოდ ეს სერვისები გავთიშოთ. რომელ ვარიანტს აირჩევთ, ეს თქვენზეა დამოკიდებული, მაგრამ რომელიმე სერვისს თუ არ იყენებთ, სჯობს, საერთოდ გათიშოთ. ამ მოქმედებების მერე პორტების სკანირების დროს შემტევი მიიღებს ინფორმაციას, რომ კომპი არცერთ პორტზე არ პასუხობს და თქვენს კომპს ჩვენი ბოროტი იუზერი თავს დაანებებს. მგონი იდეა გასაგებია.
ახლა კი მეორე მეთოდი განვიხილოთ. ჩემს დანჯღრეულ კომპზე დავაყენებ ერთ საკამოდ ძველ ცეცხლოვან კედელს, რომელსაც აქვს პორტების სკანირების დეტექტირების და აკრძალვის ფუნქცია. ამის მერე დავასკანირებ კომპს და ვნახოთ, რაიმე შედეგს თუ მივიღებთ. მოდით, ამდენ ლაპარაკს, ლოს პრაქტიკუს!
აი რა ინფორმაცია მივიღეთ ამჯერად პორტების სკანირებაზე:
The SYN Stealth Scan took 69.26s to scan 1680 total ports.
Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
Host 192.168.0.3 appears to be up ... good.
All 1680 scanned ports on 192.168.0.3 are filtered
MAC Address: აქ რაღაც იყო :)
Too many fingerprints match this host to give specific OS details
TCP/IP fingerprint:
Sinfo(V=4.11%P=i686-pc-linux-gnu%D=3/8% ...)
Win 2000 ლინუქსად მიიჩნია :), სკანერმა ვერ დააფიქსირა ვერცერთი პორტი. ამის მერე შემტევი უბრალოდ შეეშვება თქვენს კომპს. თან ყველაზე სასიამოვნო ინფო ისაა, რომ ფაირვოლი იმ ხულიგნის IP-ს ჩაიწერს. შემდეგ ეს IP-ი თქვენი სურვილისამებრ, გინდათ, პროვაიდერს გადაეცით, ან უბრალოდ დაბლოკეთ და პრობლემაც ამოიწურება (შეგიძლიათ სამაგიეროც გადაუხადოთ :)). ესეც ჩემი ცეცხლოვანი კედლის ლოგი, რომელიც შეტევის პროცესს აღწერს:
როგორც ხედავთ ხულიგანი გამოჭერილია. თან ვიცით, რა პორტებზე ვერ მიიღო ინფო!
მგონი, არც ისე რთული ყოფილა პორტების სკანირება როგორც ჩანს, თუმცა არც “საბავშვო” გასართობია. ეს ის ეტაპია, რომელსაც თითქმის ყველა შეტევის დროს გადიან.
ესეც ბონუსი, როგორ ასკანირებს ტრინიტი (ფილმ მატრიცას გმირი) ატომური ცენტრის სერვერის პორტებს (მატრიცაში ამის შემჩნევისთვის დიდი მადლობა ბნ. gearge-ს):
ამ კადრის ნახვა შეგიძლიათ ფილმ მატრიცას მეორე ნაწილში, დაახ. 1:43:26-29-ზე :)
როგორც ხედავთ ტრინიტი nmap-ით ასკანირებს ჰოსტს, იგებს, რომ ზედ 22-ე პორტზე გაშვებულია ssh-ის სერვერი და უშვებს ექსპლოიტ sshnuke-ს, რითაც ცვლის root-ის პაროლს. ამის შემდეგ ის ssh-ით უკავშირდება ამ სერვერს :)
რეალობაშიც ასეა, მაგრამ “sshnuke”-ს, რომელიც არის ექსპლოიტი, წერს ჰაკერი, ხოლო უბრალო უსაქმური ვერაფერს გააწყობს კონფიგურებულ სისტემაში. მაგრამ ტრინიტის nmap-ის რომ საშუალებით არ გაეგო, რომ ssh-ია გაშვებული, ხომ ვერაფერს გააწყობდა?
ამიტომ დაიცავით თქვენი სისტემა და ქსელიდან ბევრი უსაქმურისგან გადარჩებით :)
სტატიის ავტორი: otosaxel (ოთარ სახელაშვილი).
აუ თქვენი დახმარება მინდა,რაღაც security warning მეჩითება ეკრანეზე,და დაახლოებით მიწერს რომ გინდათ თუ არა რაღაც საიტზე შესვლაო,და ქვემოთ ftp.რაღაც.caucasus.net იჩითება
იქნებ გამარკვიოთ ვინმემ რა ხდება და თუ რამე საშიშია როგორ დავიცვა კომპი?