入侵滲透思路


http://bbs.chinabaiker.com/?post=38
滲透涉及許多知識和技術,並不是一些人用一兩招就可以搞定的。
一,踩點踩點可以了解目標主機和網絡的一些基本的安全信息,主要有;1,管理員聯系信息,電話號,傳真號;2,IP地址范圍;3,DNS服務器;4,郵件服務器。相關搜索方法:1,搜索網頁。確定目標信息1,為以后發動字典和木馬入侵做准備;尋找網頁源代碼找注釋和隱藏域,尋找隱藏域中的”FORM”標記。例如:
可以發起SQL注入攻擊,為以后入侵數據庫做准備。相關工具:UNIX下的Wget,Windows下的Teleport。2,鏈接搜索目標網站所在的服務器可能有其他具有弱點的網站,可以進行迂回入侵,而且可以發現某些隱含的信息。搜索方法介紹:通過各種搜索引擎:GOOGLE,http://www.dogpile.com,http://www.hotbot.com二,查點A,確定目標的域名和相關的網絡信息。搜索方法;Whois查詢,通過Whois數據庫查詢可以得到以下的信息:1,注冊機構:顯示相關的注冊信息和相關的Whois服務器;2,機構本身:顯示與某個特定機構相關的所有信息;3,域名:顯示與某個特定域名相關的所有信息4,網絡:顯示與某個特定網絡或單個IP地址相關的所有信息;5,聯系點:顯示與某位特定人員相關的所有信息搜索引擎站:http://www.infobear.com/whois.shtml,舉例:Output of: whois 163.com@whois.internic.netRegistrant:Netease.com, Inc.36/F Peace World Plaza, No.362-366Huan Shi Dong RoadGuangzhou, Guangdong 510060CN
Domain Name: 163.COM
Administrative Contact, Technical Contact:Netease.com, Inc. nsadmin@corp.netease.com36/F Peace World Plaza, No.362-366Huan Shi Dong RoadGuangzhou, Guangdong 510060CN+86-20-85525516 fax: +86-20-85525535
Record expires on 24-Jan-2009.Record created on 15-Sep-1997.Database last updated on 10-Feb-2006 03:24:01 EST.
Domain servers in listed order:
NS.NEASE.NET 202.106.185.75NS3.NEASE.NET 220.181.28.3
B,利用ARIN數據庫可以查詢某個域名所對應的網絡地址分配信息。相關搜索地址:http://ws.arin.net/cgi-bin/whois.pl利用http://whois.apnic.net/apnic-bin/whois2.pl進行對IP地址的查詢,以搜集有關的網絡信息:舉例:163.com->202.108.9.16inetnum: 202.108.0.0 – 202.108.255.255netname: CNCGROUP-BJdescr: CNCGROUP Beijing province networkdescr: China Network Communications Group Corporationdescr: No.156,Fu-Xing-Men-Nei Street,descr: Beijing 100031country: CNadmin-c: CH455-APtech-c: SY21-APmnt-by: APNIC-HMmnt-lower: MAINT-CNCGROUP-BJmnt-routes: MAINT-CNCGROUP-RRchanged: hm-changed@apnic.net 20031017status: ALLOCATED PORTABLEchanged: hm-changed@apnic.net 20060124source: APNIC
role: CNCGroup Hostmastere-mail: abuse@cnc-noc.netaddress: No.156,Fu-Xing-Men-Nei Street,address: Beijing,100031,P.R.Chinanic-hdl: CH455-APphone: +86-10-82993155fax-no: +86-10-82993102country: CNadmin-c: CH444-APtech-c: CH444-APchanged: abuse@cnc-noc.net 20041119mnt-by: MAINT-CNCGROUPsource: APNIC
person: sun yingaddress: Beijing Telecommunication Administrationaddress: TaiPingHu DongLi 18, Xicheng Districtaddress: Beijing 100031country: CNphone: +86-10-66198941fax-no: +86-10-68511003e-mail: suny@publicf.bta.net.cnnic-hdl: SY21-APmnt-by: MAINT-CHINANET-BJchanged: suny@publicf.bta.net.cn 19980824source: APNIC知道了目標所在的網絡,可以進行迂回滲透,尋找薄弱點,進入目標網絡,然后在攻擊目標。
C,DNS信息查詢域名系統允許把一個DNS命名空間分割成多個區,各個去分別保存一個或多個DNS域的名字信息。區復制和區傳送:DNS服務器之間是采用區傳送的機制來同步和復制區內數據的。區傳送的安全問題不在於所傳輸的域名信息,而在於其配置是否正確。因為有些域名信息當中包含了不應該公開的內部主機和服務器的域名信息。相關工具:1,Windows下,nslookup,SamSpade;2, UNIX下:nslookup,dig,host,axfr在Windows下的使用方法:c:\>nslookupDefault server: 目標的DNS服務器Address: 目標的IP地址
>set type=ANY//表示接受任何可能的DNS記錄>ls -d 163.com >zone.163.com.txt //獲得目標域的相關記錄,結果保存在zone.163.com.txt
D,通過Traceroute獲得網絡的拓撲結構以及網絡網絡設備的地址。相關工具;Windows下:Tracert 支持ICMP協議UNIX下:Traceroute 支持ICMP和DNS協議,由於多數防火牆已經過濾了ICMP,所以UNIX下的Traceroute是不錯的選擇,而且使用-p n選項可以自己指定使用的端口。
三,網絡掃描面對不同的網絡,應該采用不用的掃描方法:1,對於內部網絡,可用類型很多,ICMP協議是普遍要裝上的,在內部網廣播ICMP數據包可以區分WINDOWS和UNIX系統,發送類型為8的ICMP的ECHO請求,如果可以受到類型為0的ECHO回應,表明對方主機是存活的。相關工具介紹:UNIX下的:fping&gpingWINDOWS下:Pinger 特點:速度快,多線程。2,對於外部網絡,可用類型也很多,涉及到的原理也有很多,例如:TCP掃描,UDP掃描,其實我是很不願意用掃描工具的,很容易使對方感覺到入侵事件的發生,不論是防火牆還是入侵檢測系統都會或多或少的留下我們的腳印,如果遇到一個勤快的管理員的話,那么這次入侵很可能以失敗告終。
但使用與否依各個喜好而定了:),有時候我們在測試網絡或者主機的安全性時,就不能忽視他的存在了,首先,安全測試不是入侵,全面的測試對抵御黑客和蠕蟲的攻擊是必要的,在這里推薦的端口掃描工具是NMAP,因為他帶有躲避IDS檢測的機制,重組了TCP的三次握手機制,慢掃描機制等等都是其他掃描工具無法比擬的,UDP掃描是很不可靠的,原因有下幾點:這種掃描依靠ICMP端口不可達消息,如果發送端給目標一個感興趣的端口發送了一個UDP數據包后,沒有收到ICMP端口不可打消息,那么我們認為該端口處於打開狀態。不可靠的原因:1,路由器可能丟棄UDP分組;2,很多的UDP服務不也不產生響應;3,防火牆的常規配置是丟棄UDP分組(除DNS外);4,休眠狀態的UDP端口是不會發送一個ICMP端口不可到達消息。
還有的掃描工具就是弱點掃描工具,這些工具綜合各種漏洞信息構造漏洞數據庫,去探究存在漏洞沒有打補丁的主機,當然也有針對特定漏洞的檢測發現工具(腳本小子能用,網絡安全人員也弄用–雙刃劍-:)這里詳細介紹對目標操作系統類型的檢測原理:Telnet標識和TCP/IP堆棧指紋:1,網上許多的系統可以直接Telnet到目標,大多會返回歡迎信息的,返回的信息包含了該端口所對應的服務軟件的版本號,這個對於尋找這個版本的軟件的漏洞很重要,如果對方開了Telnet,那么可以直接得到對方的系統類型和版本號,這個對於挖掘系統的漏洞很重要(對於溢出來說,不同版本的系統和語言版本的系統來說,RET地址,JMP ESP,地址是不同的)。2,如今越來越多的管理員懂的了關閉功能標志,甚至提供偽造的歡迎信息。那么TCP/IP堆棧指紋是區分不同系統的好方法。1,FIN掃描給打開的端口發送FIN包,RFC 793規定不返回任何響應,例外的系統是: MS Windows,BSDI,CISCO,HP/UX,MVS和IRIX都返回一個RESET包。2,TCP初始序列號(ISN)采樣這種方法利用了在實現TCP連接時使用不同的ISN模式識別系統,可以分成多種模式:傳統的64K增加(舊UNIX OS),隨機增加(新版的Solaris,IRIX,FreeBSD,Digital UNIX和Cray等),真正隨機(Linux 2.0.*,OpenVMS和新版AIX等),Windows系統使用所謂的“時間依賴性”模型,即ISN的增加同某一個短固定的時間間隔有關系,有些主機始終使用固定的ISN,例如3COM集線器(使用0×803)和AppleLaserWriter打印機(0xC7001)。3,不分片位目前許多系統在他們發送的包中使用IP“不分片”位,這主要是想獲得好的運行性能,不過也不是所有的操作系統都有此功能,即使有,其實現的方式可能也不同。因此利用次位或許有利於我們收集更多的有關目標OS的信息。4,TCP初始窗TCP初始窗只是簡單地測試返回包的窗口尺寸。Queso和Nmap可以對實際的窗口進行窗口跟蹤。在很多操作系統中是一個常數。例如:AIX是唯一使用0×3F25的操作系統。對於完全重新編寫代碼的NT 5的TCP堆棧,使用0×402E.5,ACK值如果發送一個FIN|PSH|URG,許多操作系統設置ACK等於初始序列號,而Windows和某些打印機將發送seq+1.如果發送一個SYN|FIN|PSH|URG到打開的端口,不同的Windows系統的實現將很不一致,有時返回seq,有時返回seq+1,甚至返回完全隨機的數值。6,ICMP錯誤消息機制某些操作系統按照RFC 1812的建議,限制不同錯誤消息的發送速率。例如:Linux內核(在net/ipv4/icmp.h中定義)限制目標不可到達消息的產生速率為4秒種內80個,如果超過這個限制將有1/4的懲罰。測試方法是發送一大串包到某些隨機選取的高端口,然后計算返回的不可到達包的數目。7,ICMP消息引用(Message Quoting)RFC規定:ICMP錯誤消息將引用一小部分導致錯誤消息包的ICMP消息內容。對於端口不可達消息,幾乎所有的實現都只發送所需要的IP頭+8字節。不過Solaris發送的內容更多,而Linux發送的東西最多。這就是我們識別沒有打開任何端口的Linux和Solaris主機。8,ICMP錯誤消息回射完整性主機對端口不可打錯誤消息將送回一小部分於是消息的內容。某些機器送回的包中包括的協議頭部分已經被改變。例如,AIX和BSDI送回的IP總長度是20字節。而系統BSDI,FreeBSD,OpenBSD,ULTRIX和VAXen則將原樣送回你所發送的IP標識符。某些系統(AIX和FreeBSD等)將送回不一致或等於0的校驗和。這同樣適用於UDP校驗和。Nmap對ICMP錯誤消息包進行九種不同的測試以標識系統之間的微笑差別。9,TCP選項是實現TCP/IP協議時可選的一個部分功能,這跟不同的系統實現有關,這些選項都是挖掘可用信息的好方法。原因是:1,他們都是可選項,不是所有主機都可以實現的;2,如果你所發送的包中對某個選項進行了設置,只要目標支持,那么目標主機就返回此選項;3,可以在包中設置所有的選項進行測試。例如:Nmap在每個探測包中設置所有的選項來進行測試:Windows Scale=10;NOP;Max Segment Size=265;Timestamp;End of Ops;從返回的的包中查看這些選項,就知道了什么系統支持他們。
還有一種被動操作系統識別方法,就是監控不同系統之間網絡包的情況來判斷目標的操作系統類型,siphon被用來進行這方面的測試,這個工作原理如下:簽名:主要TCP的四個字段判斷:1,TTL:出站的包的存活時間;2,Window size:窗口大小;3,DF:是否設置了不准分片位;4,TOS:是否設置了服務類型。綜合這些信息可以大概判斷出目標的系統,但不能%100。
四,查點利用查點技術可以得到比前面講的更多更具體的有用信息,例如:帳戶信息等。1,Windows系統查點技術利用NetBIOS規則,首先介紹NetBIOS,NetBOIS位於TCP/IP之上,定義了多個TCP和UDP端口。—-TCP(1),139:nbsession:NetBOIS會話。例如:net use \\IP\ipc$ ” ” /user:” “.(2),42:WINS:Windows Internet名字系統(UDP端口也是42)。—-UDP(1)137:nbname:名字查詢。例如:nbtstat -A IP//03中顯示的不是計算機名就是用戶名(2)138:nbdatagram:UDP數據報服務例如:net send /d:domain-name “Hello”得到用戶名利用到了IPC$空會話和sid工具。sid工具由兩個小工具組成:user2sid和sid2user.user2sid獲得用戶名或組名的sid;sid2user則是輸入一個sid而獲得相應用戶名的和組名,sid就是在創建用戶時而創建的,相當於UNIX系統下的UID,WIN系統權限的檢查就是通過對SID的檢查的。一個sid是由一長串數字組成的,其中包括兩個部分,前一部分用來唯一標識一個域,后一部分唯一標識一個用戶名,這部分數字被稱作rid,既相對標識符,rid有一定的規律,其取值總是從500開始的,超級管理員的rid總是500,而GUEST用戶的rid總是501;而新建立的帳戶的rid從1000開始。具體的步驟:c:\net use \\IP\ipc$ ” ” /user:” ”c:\user2sid \\IP guest //得到了SID的前半部分s-1-5-21-1123561945-1580818891-1957994488-501s是sid的前綴,后面跟的是1表示版本號,5用於標識發放sid的授權實體,5指NT/2000。21-1123561945-1580818891-1957994488唯一地標識域和工作組。不同的用戶只是最后的相對標識符不一樣。現在用sid2user查詢系統的用戶名了:c:\sid2user \\IP 5 21 1123561945 1580818891 1957994488 500name is cookiedomain is condorc:\sid2user \\IP 5 21 1123561945 1580818891 1957994488 1001
SNMP查點:通過默認的管理群字符串PUBLIC讀取特性,可以得到系統的一些信息,具體有:接口表,路由表及ARP表,TCP表和UDP表,設備表和存儲表,進程表和軟件表,用戶表,共享表。SNMP工具,snmputil.exe例如:1,或者網絡接口數目:c:\snmputil get localhost public .1.3.6.1.2.1.2.1.02,顯示所有的SNMP變量內容c:\snmputil walk localhost public .1.32UNIX類系統的查點技術1,$showmount -e www.target.com //前提2049號端口開着(NFS)2,$finger @www.target.com//還有rusers3, $telnet www.target.com 25vrfy root //證實是否有rootexpn admquit五,具體的分析漏洞針對特定目標進行了以上分析后,總結出最好的入侵思路,選擇入侵工具,做好入侵的准備工作是必須,有時入侵時間的選擇也是很重要的,因為會涉及到正常的公司網絡的正常通信,甚至會使惡意的網絡在你入侵測試就發生了,最直接的漏洞利用方法,我認為是溢出漏洞了,因為他直接就可以得到對方的系統權限,返回一個和在本地一樣的SHELL環境,此時無所不能:溢出攻擊的分類有:1,WINDOWS下的和UNIN下的一般原理,就用戶提交的參數范圍超過了在內存中保存的本地變量的范圍,而程序或者系統並沒有對輸入的參數進行合理的長度檢查,導致了被調用函數的返回地址被覆蓋,如果用一個跳轉到我們提交的shellcode的地方的地址代替,那么我們的shellcode就可以運行,成功得到了目標的系統權限。此外還有格式化串漏洞,導致這個漏洞的原因是在處理用戶數據的參數時沒有過濾用戶提交的,格式化符號,例如%n這個將允許輸出的參數的個數保存在內存中,惡意構造此漏洞用戶將會向內存的任何位置寫SHELLCODE的地址。2,常見漏洞類型UNIX下的本地漏洞很多,挖掘起來也較容易,他主要有以下幾種類型:1,環境欺騙一般指PATH環境變量的欺騙,就是說如果一個特權的程序執行了一個外部的命令,那么我們可以簡單的構造這個外部命令程序,然后修改PATH使這個特權程序能夠去首先執行我們構造的外部命令程序,而這個外部的命令程序是一個去得SHELL的程序例如:bash$cat >ps #!/bin/sh>EOF而這個特權程序是:bash$cat >test.c int main()>{>setuid(0);>system(“ps -ef”); /*程序調用了外部命令,但沒有給出這個命令的絕對路徑,這個是PATH欺騙的前提*/>}>EOF編譯后的test文件具有s為,屬主是root.這樣設置是因為程序test執行時會以root身份運行特權命令,這樣在他運行時由於調用的是我們偽造的ps命令程序,所以會產生一個root權限的SHELL環境。2,競爭條件一般指時序競爭,例如:fp=fopen(“test.log”,”w+”);chown(“test.log”,getuid(),getgid());原理也很簡單,就是如果當前的程序運行時權限是euid=root,uid=當前用戶,由於文件test.log在打開會執行將文件的屬主改為當前用戶,所以我們可以在執行完fopen之后,chown之前刪了test.log,而創建了一個到/etc/passwd的符號鏈接,這樣就會將/etc/passwd文件的屬主改為當前的用戶,當前的用戶就可以在passwd文件中將自己的uid改為0,這樣就取得了system權限。3,溢出和格式串漏洞
導致這些漏洞的數據來源主要是:1,命令行參數2,環境變量3,特定格式文件的讀取4,用戶交互十的輸入緩沖溢出的漏洞是有以下一些函數引起的:1,strcpy2, strcat3, sprintf4, vsprintf格式化串的漏洞和以下一些函數有關:1, print/vprintf2, fprintf/vfprintf3, sprintf/vsprintf4, snprintf/vsnprintf利用工具有objdump,elfedump查看目標是否有不安全的以上不安全的函數,如果有可以進行黑盒測試,進而進行返匯編分析程序的上下文和執行流程,利用strings可以靜態查找目標的環境變量。六,攻擊WWW現在的入侵事件,攻擊WWW居多,原因也很簡單,那就是程序員在編寫WEB腳本程序時更本不注重安全因素,導致了上傳shell,提升權限之類的嚴重后果,入侵滲透測試主要通過以下幾個方面進行測試:1,搜索SQL注入點;2,搜索特定目錄和文件,例如:上傳程序文件,這個利用價值也很大;3,尋找管理員登陸網頁,進行字典或者SQL饒過入侵;4,尋找WEB程序的源代碼,進行漏洞挖掘,主要涉及的漏洞類型有:SQL注入,文件包含漏洞,目錄跳轉漏洞,以腳本文件格式保存錯誤日志漏洞,上傳漏洞;5,在代碼審核時,不要忘記對程序員犯的邏輯錯誤進行查看,例如:函數書寫錯誤6,總是,漏洞的成因歸根到底是由於對用戶的輸入沒有進行嚴格的過濾。七,其他的入侵1,針對數據庫MSSQL,MYSQL,ORACLE等數據庫的入侵;2,針對路由,防火牆,IDS等網絡設備的滲透3,無線入侵滲透八,入侵滲透以后1,在成功得到系統級別的權限以后,就要在目標留下后門方便以后進入,當然清楚日志是最為重要的收尾工作,這些方面也有很多的技術可以討論,例如:后門的隱藏(WIN下的ADS是一個不錯的隱藏程序的東東,日志的有選擇刪除及其偽造等等,這里就不詳談了。
本文由花刺Thorns's Blog原創或編輯,轉載請保留鏈接【入侵滲透思路】http://bbs.chinabaiker.com/?post=38 

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com