簡單識別服務器操作系統
1、判斷***對象的操作系統—>2、描掃端口,判斷開放了那些服務(這兩步有可能同時進行)—>3、跟據操作系統和所開放的服務選擇***方法,通常有“溢出”和“弱口猜測”兩種方法—>4、獲得系統的最高權限。
由上面可以知道,在整個過程當中對操作系統類型的判斷識別是最基本也是很關係的一步。可想而知,如果你連對方的操作系統是什麼都不知道,要想***跟本無從談起。
也許很少人問過自己,我們爲什麼要先了解對方的操作系統呢?其實,我們瞭解操作系統的原因是因爲我們要了解系統內存的工作況態,瞭解它是以什麼方式,基於什麼樣的技術來控制內存,以及怎麼樣來處理輸入與輸出的數據的。世上任何東西都不可能是盡善盡美的(當然這也是我們人類不斷追求的動力所在),作爲複雜的計算機系統更如此,它在控制內存與處理數據的過程中總是有可能出錯的(特別是在安裝了其它的應用程序以後),系統本身也會存在各種各樣的弱點與不足之處。***之所以能夠***,就是利用了這些弱點與錯誤。現在網上流行的各種各樣的***工具,都是***在分析了系統的弱點及存在的錯之後編寫出來的。(其中以“緩衝區溢出”最爲常見)
作爲一般的***,我們只要善於使用現成的***工具,就可以達到我們***的目的。但是因爲不同的系統,其工作原理不一樣,所以不同的***工具只能針對相應的操作系統。因此,對操作系統的識別是必不可少的,這就需要我們對操作系統有相當的瞭解,對網絡有一定的基礎識(要作***還是不那麼容易的),關於各類操作系統的介紹,在網上有成堆的文章,大家可以自己去查閱。
在此介紹一此簡單的操作系統識別方法給大家,希望對大家有用。
一、用ping來識別操作系統
C:\>ping10.1.1.2
Pinging10.1.1.2with32bytesofdata:
Replyfrom10.1.1.2:bytes=32time<10msTTL=128
Replyfrom10.1.1.2:bytes=32time<10msTTL=128
Replyfrom10.1.1.2:bytes=32time<10msTTL=128
Replyfrom10.1.1.2:bytes=32time<10msTTL=128
Pingstatisticsfor10.1.1.2:
Packets:Sent=4,Received=4,Lost=0(0%loss),
Approximateroundtriptimesinmilli-seconds:
Minimum=0ms,Maximum=0ms,Average=0ms
C:\>
C:\>ping10.1.1.6
Pinging10.1.1.6with32bytesofdata:
Requesttimedout.
Replyfrom10.1.1.6:bytes=32time=250msTTL=237
Replyfrom10.1.1.6:bytes=32time=234msTTL=237
Replyfrom10.1.1.6:bytes=32time=234msTTL=237
Pingstatisticsfor10.1.1.6:
Packets:Sent=4,Received=3,Lost=1(25%loss),
Approximateroundtriptimesinmilli-seconds:
Minimum=234ms,Maximum=250ms,Average=179ms
我們跟據ICMP報文的TTL的值,我們就可以大概知道主機的類型。如:TTL=125左右的主機應該是windows系列的機子,TTL=235左右的主機應該是UINX系列的機子。如上面的兩個例子,10.1.1.2就是win2000的機子,而10.1.1.6則是UINX(Sunos5.8)的機子。這是因爲不同操作系統的機子對ICMP報文的處理與應答是有所不同的,TTL值每過一個路由器會減1。所以造成了TTL回覆值的不同。對於TTL值與操作系統類型的對應,還要靠大家平時多注意觀察和積累。
二、直接通過聯接端口根據其返回的信息來判操作系統
這種方法應該說是用得最多的一種方法,下面我們來看幾個實例。
1、如果機子開了80端口,我們可以telnet(當然如果有NC最好用NC,它可以不用盲打)它的80端口。
Microsoftwindows2000[Version5.00.2195]
(C)版權所有1985-1998MicrosoftCorp.
C:\>telnet10.1.1.280
輸入get回車(注意這裏是盲打)
如果返回,
HTTP/1.1400BadRequest
Server:Microsoft-IIS/5.0
Date:Fri,11Jul200302:31:55GMT
Content-Type:text/html
Content-Length:87
Theparameterisincorrect.
遺失對主機的連接。
C:\>
那麼這臺就肯定是windows的機子。
如果返回,
MethodNotImplemented
getto/not
supported.
Invalidmethodinrequestget
Apache/1.3.27Serveratgosiuniversity.comPort80
遺失對主機的連接。
C:\>
那麼多數就是UINX系統的機子了。
2、如果機子開了21端口,我們可以直接FTP上去
C:\>ftp10.1.1.2
如果返回,
Connectedto10.1.1.2.
220sgyyq-c43s950MicrosoftFTPService(Version5.0).
User(10.1.1.2none)):
那麼這就肯定是一臺win2000的機子了,我們還可以知道主機名呢,主機名就是sgyyq-c43s950。這個FTP是windows的IIS自帶的一個FTP服務器。
如果返回,
Connectedto10.1.1.3.
220Serv-UFTPServerv4.0forWinSockready…
User(10.1.1.3none)):
也可以肯定它是windows的機子,因爲Serv-UFTP是一個專爲windows平臺開發的FTP服務器。
如果返回,
Connectedto10.1.1.3.
220ready,dude(vsFTPd1.1.0:beatme,breakme)
User(10.1.1.3none)):
那麼這就是一臺UINX的機子了。
3、如果開了23端口,這個就簡單了,直接telnet上去。
如果返回,
Microsoft(R)windows(TM)Version5.00(Build2195)
WelcometoMicrosoftTelnetService
TelnetServerBuild5.00.99201.1
login:
那麼這肯定是一臺windows的機子了
如果返回,
SunOS5.8
login:
不用說了,這當然是一臺UINX的機子了,並且版本是SunOS5.8的。
三、利用專門的軟件來識別
這種有識別操作系統功能的軟件,多數採用的是操作系統協議棧識別技術。這是因爲不同的廠家在編寫自己操作系統時,TCP/IP協議雖然是統一的,但對TCP/IP協議棧是沒有做統一的規定的,廠家可以按自己的要求來編寫TCP/IP協議棧,從而造成了操作系統之間協議棧的不同。因此我們可以通過分析協議棧的不同來區分不同的操作系統,只要建立起協議棧與操作系統對應的數據庫,我們就可以準確的識別操作系統了。目前來說,用這種技術識別操作系統是最準確,也是最科學的。因此也被稱爲識別操作系統的“指紋技術”。當然識別的能力與準確性,就要看各軟件的數據庫建立情況了。
由上面可以知道,在整個過程當中對操作系統類型的判斷識別是最基本也是很關係的一步。可想而知,如果你連對方的操作系統是什麼都不知道,要想***跟本無從談起。
也許很少人問過自己,我們爲什麼要先了解對方的操作系統呢?其實,我們瞭解操作系統的原因是因爲我們要了解系統內存的工作況態,瞭解它是以什麼方式,基於什麼樣的技術來控制內存,以及怎麼樣來處理輸入與輸出的數據的。世上任何東西都不可能是盡善盡美的(當然這也是我們人類不斷追求的動力所在),作爲複雜的計算機系統更如此,它在控制內存與處理數據的過程中總是有可能出錯的(特別是在安裝了其它的應用程序以後),系統本身也會存在各種各樣的弱點與不足之處。***之所以能夠***,就是利用了這些弱點與錯誤。現在網上流行的各種各樣的***工具,都是***在分析了系統的弱點及存在的錯之後編寫出來的。(其中以“緩衝區溢出”最爲常見)
作爲一般的***,我們只要善於使用現成的***工具,就可以達到我們***的目的。但是因爲不同的系統,其工作原理不一樣,所以不同的***工具只能針對相應的操作系統。因此,對操作系統的識別是必不可少的,這就需要我們對操作系統有相當的瞭解,對網絡有一定的基礎識(要作***還是不那麼容易的),關於各類操作系統的介紹,在網上有成堆的文章,大家可以自己去查閱。
在此介紹一此簡單的操作系統識別方法給大家,希望對大家有用。
一、用ping來識別操作系統
C:\>ping10.1.1.2
Pinging10.1.1.2with32bytesofdata:
Replyfrom10.1.1.2:bytes=32time<10msTTL=128
Replyfrom10.1.1.2:bytes=32time<10msTTL=128
Replyfrom10.1.1.2:bytes=32time<10msTTL=128
Replyfrom10.1.1.2:bytes=32time<10msTTL=128
Pingstatisticsfor10.1.1.2:
Packets:Sent=4,Received=4,Lost=0(0%loss),
Approximateroundtriptimesinmilli-seconds:
Minimum=0ms,Maximum=0ms,Average=0ms
C:\>
C:\>ping10.1.1.6
Pinging10.1.1.6with32bytesofdata:
Requesttimedout.
Replyfrom10.1.1.6:bytes=32time=250msTTL=237
Replyfrom10.1.1.6:bytes=32time=234msTTL=237
Replyfrom10.1.1.6:bytes=32time=234msTTL=237
Pingstatisticsfor10.1.1.6:
Packets:Sent=4,Received=3,Lost=1(25%loss),
Approximateroundtriptimesinmilli-seconds:
Minimum=234ms,Maximum=250ms,Average=179ms
我們跟據ICMP報文的TTL的值,我們就可以大概知道主機的類型。如:TTL=125左右的主機應該是windows系列的機子,TTL=235左右的主機應該是UINX系列的機子。如上面的兩個例子,10.1.1.2就是win2000的機子,而10.1.1.6則是UINX(Sunos5.8)的機子。這是因爲不同操作系統的機子對ICMP報文的處理與應答是有所不同的,TTL值每過一個路由器會減1。所以造成了TTL回覆值的不同。對於TTL值與操作系統類型的對應,還要靠大家平時多注意觀察和積累。
二、直接通過聯接端口根據其返回的信息來判操作系統
這種方法應該說是用得最多的一種方法,下面我們來看幾個實例。
1、如果機子開了80端口,我們可以telnet(當然如果有NC最好用NC,它可以不用盲打)它的80端口。
Microsoftwindows2000[Version5.00.2195]
(C)版權所有1985-1998MicrosoftCorp.
C:\>telnet10.1.1.280
輸入get回車(注意這裏是盲打)
如果返回,
HTTP/1.1400BadRequest
Server:Microsoft-IIS/5.0
Date:Fri,11Jul200302:31:55GMT
Content-Type:text/html
Content-Length:87
Theparameterisincorrect.
遺失對主機的連接。
C:\>
那麼這臺就肯定是windows的機子。
如果返回,
MethodNotImplemented
getto/not
supported.
Invalidmethodinrequestget
Apache/1.3.27Serveratgosiuniversity.comPort80
遺失對主機的連接。
C:\>
那麼多數就是UINX系統的機子了。
2、如果機子開了21端口,我們可以直接FTP上去
C:\>ftp10.1.1.2
如果返回,
Connectedto10.1.1.2.
220sgyyq-c43s950MicrosoftFTPService(Version5.0).
User(10.1.1.2none)):
那麼這就肯定是一臺win2000的機子了,我們還可以知道主機名呢,主機名就是sgyyq-c43s950。這個FTP是windows的IIS自帶的一個FTP服務器。
如果返回,
Connectedto10.1.1.3.
220Serv-UFTPServerv4.0forWinSockready…
User(10.1.1.3none)):
也可以肯定它是windows的機子,因爲Serv-UFTP是一個專爲windows平臺開發的FTP服務器。
如果返回,
Connectedto10.1.1.3.
220ready,dude(vsFTPd1.1.0:beatme,breakme)
User(10.1.1.3none)):
那麼這就是一臺UINX的機子了。
3、如果開了23端口,這個就簡單了,直接telnet上去。
如果返回,
Microsoft(R)windows(TM)Version5.00(Build2195)
WelcometoMicrosoftTelnetService
TelnetServerBuild5.00.99201.1
login:
那麼這肯定是一臺windows的機子了
如果返回,
SunOS5.8
login:
不用說了,這當然是一臺UINX的機子了,並且版本是SunOS5.8的。
三、利用專門的軟件來識別
這種有識別操作系統功能的軟件,多數採用的是操作系統協議棧識別技術。這是因爲不同的廠家在編寫自己操作系統時,TCP/IP協議雖然是統一的,但對TCP/IP協議棧是沒有做統一的規定的,廠家可以按自己的要求來編寫TCP/IP協議棧,從而造成了操作系統之間協議棧的不同。因此我們可以通過分析協議棧的不同來區分不同的操作系統,只要建立起協議棧與操作系統對應的數據庫,我們就可以準確的識別操作系統了。目前來說,用這種技術識別操作系統是最準確,也是最科學的。因此也被稱爲識別操作系統的“指紋技術”。當然識別的能力與準確性,就要看各軟件的數據庫建立情況了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.