2007年5月23日 星期三

網路攻防戰(Port Scanner)

網路上的絕對安全,我想每個有上網的人應該都知道是不可能的,但是要怎樣可以取得一個相對安全的環境,就是大家所努力的目標,先不論您用什麼防毒軟體、防火牆、掃廣告或木馬軟體等,您還是可以針對自己電腦上網時的安全,做個小小的測試

(筆者先聲明,限對自己的電腦檢測,不然會被視為入侵他人電腦的駭客)

首先,大家要先瞭解一下,網路上所有的服務都會經過一個稱為Port的通道來傳送,例:80是http、21是ftp...等,基本上除了常用的一些Port號之外(網路上大家共同使用的Port),其它的Port就是隨機開啟的通道,目前認可的Port數共有66536個(0~65535)

有了這個概念之後,其實再怎麼強的駭客程式也是要經由這個通道來進出,所以如果您能夠把這些port管理的很好的話,就可以大大的減少被駭的可能性


只是有一點比較麻煩的事,那就是這些Port號,經常都是會有共用的,例如:80是http預設使用的Port,但是像有些IM軟體(MsnSkype...等)當它們原先的port號無法跟外界溝通時,一樣會經由80這個Port號與外界連上線,所以這只是一個小小的防護及檢測手段

下面筆者介紹一下在不同系統平台查看Ports的方法

Windows

指令:netstat[-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]

C:...>netstat -a (可查看所有與電腦的連線狀態,不過太繁雜了)
C:...>netstat -p tcp/udp (可查看與電腦的tcp/udp的連線狀態,常用)

-------------------------------
Proto   Local Address     Foreign Address     State
(服務)  (本機)       (遠端)      (連線狀態)
 TCP  xx-pc:1476  nz-in-f191.google.com:http   Established

其中比較難瞭解的部份應該是State那一欄,它是指TCP的狀態

Established:代表連線已建立
Listening:代表這個Port號正再等待連線(Server端常見)
Time_Wait:代表連線已逾時

如果真的還想知道更多的話,可以利用netstat/?的方式來查詢其它用法

那如果想要知道別人電腦開了什麼Port的話呢?(就是筆者所說的危險
在Windows系統中,筆者沒有找到什麼指令可以掃描遠端的Port,不過在網路上這樣子的相關軟體到是挺多的,就拿很多人愛用的NetView(NetBrute Scanner)來說,您可以從官網的下載點(1.0.0.9版)取得這個小程式

筆者裡不做詳細的說明,它本身就包含NetBrute、PortScan和WebBrute三種模式可應用,它原本的用意是用來檢測自己的電腦,但是常被人拿來做為刺探它人所用,所以如果濫用的話,後果就要自行負責了,其中的PortScan就可以針對遠端進行Port的掃描

Linux

指令:netstat(本機端)、nmap(遠端)

netstat的用法與Windows下雷同,只是有些參數部份不一樣

常用的 option:
    -t:針對TCP服務
    -l:針對在listening的Port,指Server端服務居多
    -u:針對UDP服務
    -n:電腦名稱的部份改以數字代表,例:Localhost --> 127.0.0.1
    -p:針對那些相對的應用程式

其它更多的用法可以用man netstat來查詢

nmap的用法很簡單,其實它原本預設的功能已經很強大了

例:nmap localhost(查詢自己所有開放的port,結果與netstat類似)
  nmap IP(查詢某特定IP開放的port)
  nmap 192.168.1.0(查詢192.168.1.0~192.168.1.254開放的port)
  nmap 192.168.0-10(查詢192.168.1.0~192.168.1.10開放的port)
  nmap -sT/-sU IP(查詢某特定IP開放有關TCP/UDP的port)

其它更多的用法可以用man nmap來查詢(man就是所謂的說明文件)

不過因為nmap這個指令太過強大,筆者極度建議只針對本機端使用,除非你是網路管理者,不然很有可能因為這指令的強大惹上麻煩


文中的NetBrute軟體,也許也是利用相關的指令方式來測試遠端電腦

不過還是有些是傳統的使用者會利用ping的方式來查詢,不過現在絕大數的防火牆軟硬體都不會回應ping這個指令了,所以這跟上面的使用方法是不一樣的喔!

不過,不要以為開了Port就一定是不好的喔!因為重點是在你開啟這個Port的應用軟體,而不是這個Port有問題,因為筆者一開始就說過了,它只是一個通道呀!

你在高速公路上逛大街,危險的是「高速公路」,還是在上頭的「」呢?