網(wǎng)絡(luò)發(fā)展到今天,安全技術(shù)層出不窮,目前最常用,技術(shù)最成熟的應(yīng)該還是利用FIREWALL提高安全性,關(guān)于FIREWALL的定義,就仁者見仁,智者見智了,我個人比較贊成的觀點是 "防火墻系統(tǒng)可以是路由器,也可以是個人主機、主系統(tǒng)和一批主系統(tǒng),專門把網(wǎng)絡(luò)或子網(wǎng)同那些可能被子網(wǎng)外的主系統(tǒng)/*或者本地用戶 */濫用的協(xié)議和服務(wù)隔絕,其中還包括合理的過濾規(guī)則的應(yīng)用"
從外部用戶的角度來看,最簡單的例子就是許多時候我們試圖利用TELNET或其他手段連接到遠程主機,經(jīng)過半天的等待以后,往往是"refuse connect"/*當然也可能是對方限制IP登陸*/……:(
比較經(jīng)典的FIREWALL區(qū)分方法是把它分成兩種application proxies and filtering gateways.
我決定在此處省去N字,:)因為關(guān)于FIREWALL原理和實現(xiàn)技術(shù)已經(jīng)有N篇文章講過了……呵呵,你到處都可以找到,中,英文都有。假如有興趣的,我也可以發(fā)給你資料
OK,看完了那些FIREWALL的基本知識之后,讓我們開始從我們習慣的角度來看問題了。:) 有些FIREWALL類型可以被簡單的PORT SCAN所鑒別,例如,CheckPoint's Firewall監(jiān)聽TCP的256.257.258口/*CheckPoint's用來遠程管理用的*/,Microsoft's Proxy server通常監(jiān)聽TCP的1080和1745口,我們可以簡單的利用NMAP去找找看nmap -n -vv -P0 -P256,1080,1745 *.*.*.*/24我要提醒你注意的是-P0是不可以缺少,因為這個選項是禁止在掃描以前ICMP PING目標,而很多FIREWALL是不會響應(yīng)ICMP echo 請求的。
利用traceroute for unix or tracert for winnt&98命令來看,假如是用LINUX的話,可以加-I選項,表示發(fā)送ICMP PACKET。
TRACEROUTE的原理是向目標主機發(fā)送一系列UDP數(shù)據(jù)包。開頭的三個數(shù)據(jù)包的存活期設(shè)置為1,接受到的第一個ROUTER返回一個TTL死亡報文,并且將它丟棄,接著的第二個數(shù)據(jù)包存活期設(shè)置為2,接受到的第二個ROUTER返回一個TTL死亡報文,并且將它丟棄……其他的依此類推。
通常可以看到下面的情況
1 XXX 192.168.55.1 **ms **ms **ms 2 SSS 192.168.52.2 …… 11 WWW 10.63.2.2 12 ZZZ 10.63.5.1 13 QQQ 172.16.11.1 |
1 XXX 192.168.55.1 2 SSS 192.168.52.2 …… 11 WWW 10.63.2.2 12 ZZZ 10.63.5.1 13 QQQ 172.16.11.1 14 * * * 15 * * * |
如何盡可能多的知道FIREWALL的信息呢,我個人還是喜歡用NMAP---作為SCANER,我覺得它是無可挑剔的,總是可以告訴我們盡可能多的東西……/*建議你先去看看NMAP的說明,同時你也許還需要看看TCP的三次握手*/ nmap總是顯示該服務(wù)的服務(wù)名稱,端口號,狀態(tài)以及協(xié)議。狀態(tài)有'open','filtered'和'unfiltered'三種。
'open'就不用多說什么了,大家都明白指的是目標機器將會在該端口接受你的連接請求一般來說,在NMAP中,一個filtered端口表示下面三種情況:
1 沒有收到 SYN/ACK packet
2 沒有收到 RST/ACK packet
3 回復(fù)了一個ICMP 3 類型和13 代碼,表示信宿不可到達/*icmp的3類型就表示目標信宿機不可到達,可以利用不同的碼將它細分為13種情況,如網(wǎng)絡(luò)不可以到達,主機不可以到達,協(xié)議不可以到達,端口不可以到達等……*/
當'filtered'狀態(tài)下,我們利用TCPDUMP具體分析,可以發(fā)現(xiàn)在抓的IP包中,很明確的表示了unreachable,在NMAP中,端口被堵塞的信息是通過ICMP報文中在頭標位置占一個字節(jié)的類型部分表示的,并且經(jīng)過FIREWALL過濾后返回的信息在IP包中占4個字節(jié)表示。
'unfiltered'返回的信息是在各大安全BBS被爭論最多的,在NMAP的說明中,只是簡單的說unfiltered'只有在大多數(shù)的掃描端口都處在'filtered'狀態(tài)下才會出現(xiàn)的。其實它只是在掃描N多端口并且收到一個RST/ACK PACKET時出現(xiàn),在'unfiltered'狀態(tài)下,我們的SCAN也許通過了FIREWALL并且TARGET告訴我們這個端口沒有被監(jiān)聽,換句話說,也就是沒有打開。或者FIREWALL回復(fù)了一個RST/ACK,這種情況也經(jīng)常在掃描某些FIREWALL如CheckPoint(with the REJECT rule)時出現(xiàn),當它從目標回復(fù)一個RST/ACK PACKET并且給一個錯誤的IP地址。當我們同時運行TCPDUMP就可以看到返回的是一個RST/ACK包。/*我個人認為,這是個非常好的辦法*/
還有一些SCANER可以幫助我們
Hping,一個很實用的東東,它通過發(fā)送一個ICP包到目標端口并且報告回復(fù)的包。它可以根據(jù)不同條件而產(chǎn)生多種輸出,利用HPING,我們可以清楚的描述出FIREWALL的控制規(guī)則。
當一個PORT打開并且收到一個連接時,HPING將告訴我們'flags=SA',呵呵就是代表收到一個SYN/ACK包。
當我們用HPIHG掃描*.*.*.*的23口收到一個'ICMP Unreachable type 13 form *.*.*.*'時,通常情況就是遇到了一個PACKET FILTERING ROUTER。假如對方是CISCO的話很可能就是在配置文件中有這一行"access-list 101 deny tcp any any 23 ! telnet" 當我們收到一個RST/ACK包/*'flags=RA'*/一般代表兩種可能:
1,這個包通過了FIREWALL并且TARGET沒有開這個端口
2,F(xiàn)IREWALL拒絕了這個包(就象CheckPoint's reject rule)
假如你先掃描一個IP的23口收到了收到一個'ICMP Unreachable type 13 form *.*.*.*',然后你掃描其他的端口如22,收到的是一個RA包/*'flags=SA'*/,通過綜合判斷,我們可以斷定,是端口22沒有開,而不是被過濾規(guī)則所拒絕。
最后,當FIREWALL完全堵塞了一個PORT,我們通常收不到任何返回包。它告訴我們兩個意思
1,包不能到達TARGET并丟失在途中
2,絕大部分原因是由于FIREWALL的過濾規(guī)則決定將它丟棄。
firewalk也是一個非常好的工具,它可以幫助我們發(fā)現(xiàn)在FIREWALL后面打開的PORT,它是利用an ip TTL calculated to expire one hop past the firewall.其實還是利用回應(yīng)一個"ICMP TTL expired intransit"信息,如果包被FIREWALL’ACL 拒絕,將沒有任何回應(yīng)或者是一個ICMP TYPE 13。不過用firewall進行掃描要注意的一點是,有些FIREWALL在拒絕PACKET EXPIRES時還會給你返回一個ICMPTTL EXPIRED 包,呵呵,很狡猾,在這種情況下,我們將會看到所有的PORT都是打開的:(以上就是我所掌握的一些FIREWALL SCAN技術(shù),希望可以幫助你盡量多的了解FIREWALL后面的情況,也歡迎來信討論。
另,我簡單的談?wù)勍黄?后門的辦法,以后有時間我會慢慢寫出來 ,如果你E文好,那我強烈推薦THC的關(guān)于突破FIREWALL的后門的文章!!!
以下是我根據(jù)THC文章和自己經(jīng)驗的一點綜合,有很多我也不是很了解的地方,還要大家一塊來討論。
1,很多FIREALL,如CHECKPOINT,它默認的DNS LOOKUPS(UDP53)口是打開的,DNS zone transfers(TCP53),RIP(UDP 520)是允許任意HOST連接的,呵呵,利用這個我們就可以指定我們的木馬程序運行在這個PORT上,然后…… 有些時候,數(shù)據(jù)包過濾可以有狀態(tài)包檢查,如果是這樣的話,我們利用DNS口就沒法執(zhí)行自己的命令,但是還有別的辦法……
2,ICMP和UDP 許多FIREWALL允許ICMP ECHO。ICMP ECHO REPLY,UDP包通過,如CHECKPOING DNS,呵呵,可以將自己的數(shù)據(jù)利用ICMP包頭封裝起來,就可以執(zhí)行通過FIREWALL執(zhí)行命令了,在這方面的現(xiàn)有軟件是LOKI&lokid(client&server),等我有啦點心得以后再寫給大家……UDP的后門程序有daemonshell-udp,也是來自[THC] - The Hacker's Choice.
3,利用CGI留后門,呵呵,ROUTER過濾再厲害,它只要允許HTTP訪問,就一定防止不了CGI的后門,在網(wǎng)上很容易找到這類的后門,如GH寫的后門,不過好象都很類似,除了作者的名字以外/老外也搞這套/
4,開個高段的SHELL后門,國內(nèi)現(xiàn)在很多這方面的東西,主要原理是利用有些FIREWALL不檢查到高段PORT,所以可以放置這類后門。
5, 利用.forward文件,開sendmail服務(wù)的也不會比開HTTP的少多少哦……執(zhí)行你的SHELL腳本,至于你要干什么,就自己決定了:)和這個比較類似的方法是利用crontab,最重要還是要看你所希望它們執(zhí)行什么命令……
6,RPC服務(wù),呵呵,很多FIREWALL允許RPC服務(wù),利用RPC的EXPLOITS,就可以出入如無人之境了……


